18 #ifndef GENERIC_ASSEMBLY_HH_
19 #define GENERIC_ASSEMBLY_HH_
61 virtual void assemble(std::shared_ptr<DOFHandlerMultiDim> dh) = 0;
82 template <
template<
IntDim...>
class DimAssembly>
138 void assemble(std::shared_ptr<DOFHandlerMultiDim> dh)
override {
143 bool add_into_patch =
false;
144 for(
auto cell_it = dh->local_range().begin(); cell_it != dh->local_range().end(); )
146 unsigned int cell_dim = cell_it->dim();
147 if (!add_into_patch) {
149 add_into_patch =
true;
153 bool is_patch_full =
false;
154 switch ( cell_dim ) {
165 ASSERT(
false).error(
"Should not happen!");
172 add_into_patch =
false;
178 add_into_patch =
false;
183 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.
Class holds local coordinations of evaluating points (bulk and sides) specified by element dimension.
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.
void reallocate_cache()
Calls cache_reallocate method on.
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.
AssemblyInternals(MixedPtr< FiniteElement > fe)
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.