19 #ifndef INTEGRAL_DATA_HH_
20 #define INTEGRAL_DATA_HH_
25 #include <unordered_set>
26 #include <unordered_map>
27 #include <boost/functional/hash.hpp>
156 for (
auto &rl :
vec_list_) rl.make_permanent();
162 for (
auto &rl :
vec_list_) rl.revert_temporary();
200 return boost::hash_value( tpl );
205 return std::make_tuple(dim, quad_size);
211 template<
typename Integral>
216 template<
unsigned int dim>
229 std::size_t
operator()(std::tuple<std::string, uint> tpl)
const {
230 return boost::hash_value( tpl );
234 static std::tuple<std::string, uint>
op_tuple(std::string op_type,
uint quad_size) {
235 return std::make_tuple(op_type, quad_size);
241 template<
typename Operation>
#define ASSERT_GE(a, b)
Definition of comparative assert macro (Greater or Equal) only for debug mode.
Cell accessor allow iterate over DOF handler cells.
Side accessor allows to iterate over sides of DOF handler cell.
Class allows to iterate over sides of edge.
Iter< Object > make_iter(Object obj)
std::unordered_map< std::tuple< std::string, uint >, Operation *, OperationTplHash > OperationMap
Alias for unordered_map of Operation pointer with custom hash.
std::unordered_map< std::tuple< uint, uint >, std::shared_ptr< Integral >, IntegralTplHash > IntegralPtrMap
Alias for unordered_map of shared_ptr<Integral> with custom hash.
Implementation of range helper class.
BoundaryIntegralData()
Default constructor.
BoundaryIntegralData(unsigned int bdr_idx, DHCellSide dhside, unsigned int side_idx)
Constructor with data mebers initialization.
BoundaryIntegralData(const BoundaryIntegralData &other)
Copy constructor.
unsigned int bdr_subset_index
Index (order) of subset on boundary element in EvalPoints object.
unsigned int side_subset_index
Index (order) of subset on side of bulk element in EvalPoints object.
DHCellSide side
Specified cell side (bulk element)
BulkIntegralData()
Default constructor.
BulkIntegralData(const BulkIntegralData &other)
Copy constructor.
BulkIntegralData(DHCellAccessor dhcell, unsigned int subset_idx)
Constructor with data mebers initialization.
DHCellAccessor cell
Specified cell (element)
unsigned int subset_index
Index (order) of subset in EvalPoints object.
unsigned int bulk_subset_index
Index (order) of lower dim subset in EvalPoints object.
DHCellSide side
Specified cell side (higher dim element)
CouplingIntegralData(const CouplingIntegralData &other)
Copy constructor.
CouplingIntegralData()
Default constructor.
CouplingIntegralData(DHCellAccessor dhcell, unsigned int bulk_idx, DHCellSide dhside, unsigned int side_idx)
Constructor with data mebers initialization.
unsigned int side_subset_index
Index (order) of higher dim subset in EvalPoints object.
Set of integral of given dimension necessary in assemblation.
IntegralPtrMap< BoundaryIntegralAcc< dim > > boundary_
Boundary integrals betwwen side and boundary element of dim-1.
IntegralPtrMap< EdgeIntegralAcc< dim > > edge_
Edge integrals between elements of same dimensions.
IntegralPtrMap< BulkIntegralAcc< dim > > bulk_
Bulk integrals of elements.
IntegralPtrMap< CouplingIntegralAcc< dim > > coupling_
Coupling integrals between elements of dimensions dim and dim-1.
EdgeIntegralData(const EdgeIntegralData &other)
Copy constructor.
unsigned int subset_index
Index (order) of subset in EvalPoints object.
EdgeIntegralData()
Default constructor.
RangeConvert< DHEdgeSide, DHCellSide > edge_side_range
Specified cell side (element)
EdgeIntegralData(RangeConvert< DHEdgeSide, DHCellSide > range, unsigned int subset_idx)
Constructor with data mebers initialization.
Set of integral data of given dimension used in assemblation.
RevertableListVector< CouplingIntegralData > coupling_
Holds data for computing couplings integrals.
RevertableListVector< BulkIntegralData > bulk_
Holds data for computing bulk integrals.
RevertableListVector< BoundaryIntegralData > boundary_
Holds data for computing boundary integrals.
RevertableListVector< EdgeIntegralData > edge_
Holds data for computing edge integrals.
Define Integral Tuple hash function - helper struct of IntegralPtrMap.
std::size_t operator()(std::tuple< uint, uint > tpl) const
static std::tuple< uint, uint > integral_tuple(uint dim, uint quad_size)
Create tuple from dimennsion and size of Quadrature.
Define Integral Tuple hash function - helper struct of OperationMap.
static std::tuple< std::string, uint > op_tuple(std::string op_type, uint quad_size)
Create tuple from typeid(Operation).name and size of Quadrature.
std::size_t operator()(std::tuple< std::string, uint > tpl) const
std::vector< RevertableList< Type > > vec_list_
RevertableListVector(uint list_size)
Constructor, initialize vec_list_.
void set_size(uint new_size)
Set size of vec_list_.
RevertableList< Type > & operator[](std::size_t item)
const RevertableList< Type > & operator[](std::size_t item) const
void revert_temporary()
Erase temporary part of data.
void make_permanent()
Finalize temporary part of data.
RevertableListVector()
Default constructor.
void reset()
Clear the list.
Struct is a container that encapsulates variable size arrays.