18 #ifndef ASSEMBLY_BASE_HH_ 19 #define ASSEMBLY_BASE_HH_ 33 template <
unsigned int dim>
99 ASSERT_DBG( cell_side.
dim() > 0 ).error(
"Invalid cell dimension, must be 1, 2 or 3!\n");
105 ASSERT_DBG( cell_side.
dim() > 1 ).error(
"Invalid cell dimension, must be 2 or 3!\n");
111 ASSERT_DBG( cell_side.
dim() > 0 ).error(
"Invalid cell dimension, must be 1, 2 or 3!\n");
118 std::shared_ptr<BulkIntegral>
bulk_;
119 std::shared_ptr<EdgeIntegral>
edge_;
UpdateFlags
Enum type UpdateFlags indicates which quantities are to be recomputed on each finite element cell...
Quadrature * quad_low_
Quadrature used in assembling methods (dim-1).
int active_integrals_
Holds mask of active integrals.
std::shared_ptr< CouplingIntegral > coupling_
Coupling integrals between elements of dimensions dim and dim-1.
unsigned int dim() const
Return dimension of element appropriate to the side.
Range< EdgePoint > edge_points(const DHCellSide &cell_side) const
Return EdgePoint range of appropriate dimension.
std::array< std::shared_ptr< CouplingIntegral >, 2 > coupling_
Coupling integrals between elements of dimensions 1-2, 2-3.
Directing class of FieldValueCache.
Cell accessor allow iterate over DOF handler cells.
virtual void begin()
Method prepares object before assemblation (e.g. balance, ...).
void dimjoin_intergral(FMT_UNUSED DHCellAccessor cell_lower_dim, FMT_UNUSED DHCellSide neighb_side)
Assembles the fluxes between elements of different dimensions.
std::shared_ptr< BulkIntegral > bulk_
Bulk integrals of elements.
void boundary_side_integral(FMT_UNUSED DHCellSide cell_side)
Assembles the fluxes on the boundary.
virtual void end()
Method finishes object after assemblation (e.g. balance, ...).
DimIntegrals integrals_
Set of used integrals.
Enum type UpdateFlags indicates which quantities are to be recomputed on each finite element cell...
Base class for quadrature rules on simplices in arbitrary dimensions.
Symmetric Gauss-Legendre quadrature formulae on simplices.
std::array< std::shared_ptr< EdgeIntegral >, 3 > edge_
Edge integrals between elements of dimensions 1, 2, 3.
Set of integral of given dimension necessary in assemblation.
Range< BulkPoint > bulk_points(unsigned int element_patch_idx) const
Return BulkPoint range of appropriate dimension.
int n_active_integrals() const
Getter of active_integrals.
void edge_integral(FMT_UNUSED RangeConvert< DHEdgeSide, DHCellSide > edge_side_range)
Assembles the fluxes between sides on the edge.
std::array< std::shared_ptr< BulkIntegral >, 3 > bulk_
Bulk integrals of elements of dimensions 1, 2, 3.
std::shared_ptr< EdgeIntegral > edge_
Edge integrals between elements of same dimensions.
void create_integrals(std::shared_ptr< EvalPoints > eval_points, AssemblyIntegrals &integrals)
Create integrals according to dim of assembly object.
void cell_integral(FMT_UNUSED DHCellAccessor cell, FMT_UNUSED unsigned int element_patch_idx)
Assembles the volume integrals on cell.
std::array< std::shared_ptr< BoundaryIntegral >, 3 > boundary_
Boundary integrals betwwen elements of dimensions 1, 2, 3 and boundaries.
AssemblyBase(unsigned int quad_order)
Constructor.
Definitions of particular quadrature rules on simplices.
Range< CouplingPoint > coupling_points(const DHCellSide &cell_side) const
Return CouplingPoint range of appropriate dimension.
Range< BoundaryPoint > boundary_points(const DHCellSide &cell_side) const
Return BoundaryPoint range of appropriate dimension.
Quadrature * quad_
Quadrature used in assembling methods.
Side accessor allows to iterate over sides of DOF handler cell.
Set of all used integral necessary in assemblation.
std::string print_update_flags(UpdateFlags u) const
Print update flags to string format.
ElementCacheMap * element_cache_map_
ElementCacheMap shared with GenericAssembly object.
std::shared_ptr< BoundaryIntegral > boundary_
Boundary integrals betwwen side and boundary element of dim-1.