25 template <
int dim,
int spacedim>
27 const unsigned int polynomial_degree)
33 template <
int dim,
int spacedim>
42 template <
int dim,
int spacedim>
55 template <
int dim,
int spacedim>
56 std::unique_ptr<Mapping<dim, spacedim>>
59 return std_cxx14::make_unique<MappingQCache<dim, spacedim>>(*this);
64 template <
int dim,
int spacedim>
73 template <
int dim,
int spacedim>
89 template <
int dim,
int spacedim>
95 &compute_points_on_cell)
101 std::make_shared<std::vector<std::vector<std::vector<Point<spacedim>>>>>(
103 for (
unsigned int l = 0;
l < triangulation.
n_levels(); ++
l)
107 triangulation.
begin(),
112 (*support_point_cache)[cell->level()][cell->index()] =
113 compute_points_on_cell(cell);
118 std::function<void(void *)>(),
127 template <
int dim,
int spacedim>
132 return sizeof(*
this) +
135 return sizeof(*this);
140 template <
int dim,
int spacedim>
141 std::vector<Point<spacedim>>
146 ExcMessage(
"Must call MappingQCache::initialize() before " 147 "using it or after mesh has changed!"));
150 AssertIndexRange(cell->index(), (*support_point_cache)[cell->level()].size());
157 #include "mapping_q_cache.inst" virtual bool preserves_vertex_locations() const override
#define AssertDimension(dim1, dim2)
unsigned int n_raw_cells(const unsigned int level) const
#define AssertIndexRange(index, range)
cell_iterator begin(const unsigned int level=0) const
unsigned int n_levels() const
constexpr T pow(const T base, const int iexp)
std::size_t memory_consumption() const
cell_iterator end() const
virtual std::unique_ptr< Mapping< dim, spacedim > > clone() const override
static ::ExceptionBase & ExcMessage(std::string arg1)
#define Assert(cond, exc)
#define DEAL_II_NAMESPACE_CLOSE
void initialize(const Triangulation< dim, spacedim > &triangulation, const MappingQGeneric< dim, spacedim > &mapping)
unsigned int get_degree() const
boost::signals2::connection clear_signal
#define DEAL_II_NAMESPACE_OPEN
MappingQCache(const unsigned int polynomial_degree)
virtual std::vector< Point< spacedim > > compute_mapping_support_points(const typename Triangulation< dim, spacedim >::cell_iterator &cell) const
void run(const std::vector< std::vector< Iterator >> &colored_iterators, Worker worker, Copier copier, const ScratchData &sample_scratch_data, const CopyData &sample_copy_data, const unsigned int queue_length=2 *MultithreadInfo::n_threads(), const unsigned int chunk_size=8)
static unsigned int n_threads()
virtual std::vector< Point< spacedim > > compute_mapping_support_points(const typename Triangulation< dim, spacedim >::cell_iterator &cell) const override
const ::parallel::distributed::Triangulation< dim, spacedim > * triangulation
std::shared_ptr< std::vector< std::vector< std::vector< Point< spacedim > > > > > support_point_cache
std::enable_if< std::is_fundamental< T >::value, std::size_t >::type memory_consumption(const T &t)
Tensor< 2, dim, Number > l(const Tensor< 2, dim, Number > &F, const Tensor< 2, dim, Number > &dF_dt)