29 #ifndef EVAL_SUBSET_HH_
30 #define EVAL_SUBSET_HH_
180 unsigned int side_idx()
const override;
208 unsigned int side_idx()
const override;
236 unsigned int side_idx()
const override;
271 unsigned int dim()
const {
308 auto bgn_it = make_iter<BulkPoint>(
BulkPoint(elm_cache_map, element_patch_idx,
begin_idx_));
309 auto end_it = make_iter<BulkPoint>(
BulkPoint(elm_cache_map, element_patch_idx,
end_idx_));
358 auto bgn_it = make_iter<EdgePoint>(
EdgePoint(
359 BulkPoint(elm_cache_map, element_patch_idx, 0),
this, begin_idx));
360 auto end_it = make_iter<EdgePoint>(
EdgePoint(
394 CouplingIntegral(std::shared_ptr<EdgeIntegral> edge_integral, std::shared_ptr<BulkIntegral> bulk_integral);
419 BulkPoint(elm_cache_map, element_patch_idx, 0),
this, begin_idx) );
443 BoundaryIntegral(std::shared_ptr<EdgeIntegral> edge_integral, std::shared_ptr<BulkIntegral> bulk_integral);
471 BulkPoint(elm_cache_map, element_patch_idx, 0),
this, begin_idx) );
#define ASSERT_PERMANENT(expr)
Allow use shorter versions of macro names if these names is not used with external library.
#define ASSERT_EQ(a, b)
Definition of comparative assert macro (EQual) only for debug mode.
#define ASSERT_PTR(ptr)
Definition of assert macro checking non-null pointer (PTR) only for debug mode.
BaseIntegral(std::shared_ptr< EvalPoints > eval_points, unsigned int dim)
Constructor of bulk or side subset.
unsigned int dim() const
Returns dimension.
std::shared_ptr< EvalPoints > eval_points() const
Getter of eval_points.
unsigned int dim_
Dimension of the cell on which points are placed.
BaseIntegral()
Default constructor.
std::shared_ptr< EvalPoints > eval_points_
Pointer to EvalPoints.
virtual ~BaseIntegral()
Destructor.
std::shared_ptr< EdgeIntegral > edge_integral_
Integral according to higher dim (bulk) element subset part in EvalPoints object.
Range< BoundaryPoint > points(const DHCellSide &cell_side, const ElementCacheMap *elm_cache_map) const
Returns range of bulk local points for appropriate cell accessor.
int get_subset_low_idx() const
Return index of data block according to subset of lower dim (boundary) in EvalPoints object.
~BoundaryIntegral()
Destructor.
BoundaryIntegral()
Default constructor.
std::shared_ptr< BulkIntegral > bulk_integral_
Integral according to kower dim (boundary) element subset part in EvalPoints object.
friend class BoundaryPoint
int get_subset_high_idx() const
Return index of data block according to subset of higher dim in EvalPoints object.
Point accessor allow iterate over quadrature points of given side defined in local element coordinate...
BulkPoint point_bdr(ElementAccessor< 3 > bdr_elm) const
Return corresponds BulkPoint on boundary element.
const BoundaryIntegral * integral_
Pointer to edge point set.
bool operator==(const BoundaryPoint &other)
Comparison of accessors.
BoundaryPoint()
Default constructor.
unsigned int side_idx() const override
Intermediate step in implementation of PatcFEValues.
int get_subset_idx() const
Return index of data block according to subset in EvalPoints object.
BulkIntegral(std::shared_ptr< EvalPoints > eval_points, unsigned int dim, uint i_subset)
Constructor of bulk integral.
~BulkIntegral()
Destructor.
Range< BulkPoint > points(unsigned int element_patch_idx, const ElementCacheMap *elm_cache_map) const
Returns range of bulk local points for appropriate cell accessor.
BulkIntegral()
Default constructor.
unsigned int subset_index_
Index of data block according to subset in EvalPoints object.
Base point accessor class.
const ElementCacheMap * elm_cache_map_
unsigned int elem_patch_idx_
Index of element in the patch.
BulkPoint(const ElementCacheMap *elm_cache_map, uint elem_idx, uint loc_point_idx)
Constructor.
BulkPoint()
Default constructor.
std::shared_ptr< EvalPoints > eval_points() const
Getter of EvalPoints object.
bool operator==(const BulkPoint &other)
Comparison of accessors.
const ElementCacheMap * elm_cache_map() const
unsigned int elem_patch_idx() const
unsigned int local_point_idx_
Index of the local point in the integral object.
void inc()
Iterates to next point.
unsigned int eval_point_idx() const
Return index in EvalPoints object.
Range< CouplingPoint > points(const DHCellSide &cell_side, const ElementCacheMap *elm_cache_map) const
Returns range of side local points for appropriate cell side accessor.
int get_subset_high_idx() const
Return index of data block according to subset of higher dim in EvalPoints object.
int get_subset_low_idx() const
Return index of data block according to subset of lower dim in EvalPoints object.
CouplingIntegral()
Default constructor.
std::shared_ptr< BulkIntegral > bulk_integral_
Integral according to bulk subset part (element of lower dim) in EvalPoints object.
std::shared_ptr< EdgeIntegral > edge_integral_
Integral according to side subset part (element of higher dim) in EvalPoints object.
~CouplingIntegral()
Destructor.
friend class CouplingPoint
Point accessor allow iterate over quadrature points of given side defined in local element coordinate...
unsigned int side_idx() const override
Intermediate step in implementation of PatcFEValues.
const CouplingIntegral * integral_
Pointer to edge point set.
CouplingPoint()
Default constructor.
bool operator==(const CouplingPoint &other)
Comparison of accessors.
BulkPoint lower_dim(DHCellAccessor cell_lower) const
Return corresponds EdgePoint of neighbour side of same dimension (computing of side integrals).
Cell accessor allow iterate over DOF handler cells.
ElementAccessor< 3 > elm() const
Return ElementAccessor to element of loc_ele_idx_.
Side accessor allows to iterate over sides of DOF handler cell.
unsigned int dim() const
Return dimension of element appropriate to the side.
ElementAccessor< 3 > element() const
unsigned int side_idx() const
int get_subset_idx() const
Return index of data block according to subset in EvalPoints object.
EdgeIntegral()
Default constructor.
uint n_points_per_side_
Number of points. TODO: pass this to the constructor, avoid extraction from the eval_points.
unsigned int n_sides() const
Getter of n_sides.
unsigned int subset_index_
~EdgeIntegral()
Destructor.
unsigned int n_sides_
Number of sides (value 0 indicates bulk set)
Range< EdgePoint > points(const DHCellSide &cell_side, const ElementCacheMap *elm_cache_map) const
Returns range of side local points for appropriate cell side accessor.
uint side_begin(const DHCellSide &cell_side) const
Point accessor allow iterate over quadrature points of given side defined in local element coordinate...
bool operator==(const EdgePoint &other)
Comparison of accessors.
EdgePoint()
Default constructor.
EdgePoint point_on(const DHCellSide &edg_side) const
Return corresponds EdgePoint of neighbour side of same dimension (computing of side integrals).
unsigned int side_idx() const override
Intermediate step in implementation of PatcFEValues.
const EdgeIntegral * integral_
unsigned int idx() const
We need this method after replacing Region by RegionIdx, and movinf RegionDB instance into particular...
Directing class of FieldValueCache.
std::shared_ptr< EvalPoints > eval_points() const
Getter of eval_points object.
unsigned int position_in_cache(unsigned mesh_elm_idx, bool bdr=false) const
Return position of element stored in ElementCacheMap.
Class holds local coordinations of evaluating points (bulk and sides) specified by element dimension.
General point a+ side_begin_ + ccessor allow iterate over quadrature points of given side defined in ...
virtual unsigned int side_idx() const =0
Intermediate step in implementation of PatcFEValues.
SidePoint(BulkPoint bulk, uint side_begin)
Constructor.
SidePoint()
Default constructor.
unsigned int side_begin_
Index of side in element.
bool operator==(const SidePoint &other)
Comparison of accessors.
SidePoint(DHCellSide cell_side, const ElementCacheMap *elm_cache_map, const EdgeIntegral *edge_integral, unsigned int local_point_idx)
Constructor.
unsigned int eval_point_idx() const
Return index in EvalPoints object.
unsigned int local_point_idx() const
Return local index in quadrature. Temporary method - intermediate step in implementation of PatcFEVal...
Implementation of range helper class.