18 #ifndef GENERIC_ASSEMBLY_HH_
19 #define GENERIC_ASSEMBLY_HH_
47 virtual void assemble(std::shared_ptr<DOFHandlerMultiDim> dh) = 0;
68 template <
template<
IntDim...>
class DimAssembly>
124 void assemble(std::shared_ptr<DOFHandlerMultiDim> dh)
override {
129 bool add_into_patch =
false;
130 for(
auto cell_it = dh->local_range().begin(); cell_it != dh->local_range().end(); )
132 unsigned int cell_dim = cell_it->dim();
133 if (!add_into_patch) {
135 add_into_patch =
true;
139 bool is_patch_full =
false;
140 switch ( cell_dim ) {
151 ASSERT(
false).error(
"Should not happen!");
158 add_into_patch =
false;
164 add_into_patch =
false;
169 if (add_into_patch) {
static unsigned int get()
Return number of stored elements.
Provides the numbering of the finite element degrees of freedom on the computational mesh.
Directing class of FieldValueCache.
unsigned int get_simd_rounded_size()
Returns number of eval. points with addition of max simd duplicates due to regions.
void start_elements_update()
Start update of cache.
void finish_elements_update()
Finish update after reading data to cache.
void clear_element_eval_points_map()
Reset all items of elements_eval_points_map.
void create_patch()
Create patch of cached elements before reading data to cache.
RevertableList< EvalPointData > eval_point_data_
void init(std::shared_ptr< EvalPoints > eval_points)
Init cache.
void make_paermanent_eval_points()
Mark eval_point_data_ as permanent.
AssemblyInternals asm_internals_
Holds shared internals data.
virtual ~GenericAssemblyBase()
GenericAssemblyBase(MixedPtr< FiniteElement > fe)
std::shared_ptr< EvalPoints > eval_points() const
Getter to EvalPoints object.
virtual void assemble(std::shared_ptr< DOFHandlerMultiDim > dh)=0
Generic class of assemblation.
GenericAssembly(typename DimAssembly< 1 >::EqData *eq_data)
MixedPtr< DimAssembly, 1 > multidim_assembly_
Assembly object.
void assemble_integrals()
Call assemblations when patch is filled.
void assemble(std::shared_ptr< DOFHandlerMultiDim > dh) override
General assemble method.
void patch_reinit()
Reinit PatchFeValues object during construction of patch.
const ElementCacheMap & cache_map() const
Return ElementCacheMap.
GenericAssembly(typename DimAssembly< 1 >::EqData *eq_data, DOFHandlerMultiDim *dh)
void initialize()
Common part of GenericAssemblz constructors.
void set_min_edge_sides(unsigned int val)
Allows to rewrite number of minimal edge sides.
MixedPtr< DimAssembly, 1 > multidim_assembly() const
Getter to set of assembly objects.
void init_finalize()
Finalize initialization, creates child (patch) arena and passes it to PatchPointValue objects.
void add_patch_points(const DimIntegrals< dim > &integrals, ElementCacheMap *element_cache_map, std::shared_ptr< EvalPoints > eval_points)
Add elements, sides and quadrature points registered on patch.
void make_permanent_ppv_data()
Marks data of last successfully added element to patch as permanent.
void clean_elements_map()
Clear elements_map, set values to (-1)
void reinit_patch()
Reinit data.
void reset()
Reset PatchpointValues structures.
unsigned int IntDim
A dimension index type.
Class FEValues calculates finite element data on the actual cells such as shape function values,...
Definitions of particular quadrature rules on simplices.
Holds common data shared between GenericAssemblz and Assembly<dim> classes.
PatchFEValues< 3 > fe_values_
Common FEValues object over all dimensions.
ElementCacheMap element_cache_map_
ElementCacheMap according to EvalPoints.
std::shared_ptr< EvalPoints > eval_points_
EvalPoints object shared by all integrals.
std::size_t revert_temporary()
Erase temporary part of data.
#define END_TIMER(tag)
Ends a timer with specified tag.
#define START_TIMER(tag)
Starts a timer with specified tag.