19 #ifndef EVAL_SUBSET_HH_ 20 #define EVAL_SUBSET_HH_ 42 <<
"Element of Idx: " << EI_ElementIdx::val <<
" is not stored in 'Field value data cache'.\n" 43 <<
"Value can't be computed.\n");
61 unsigned int dim()
const {
81 :
BaseIntegral(eval_points, dim), subset_index_(eval_points->n_subsets(dim)) {}
108 EdgeIntegral(std::shared_ptr<EvalPoints>
eval_points,
unsigned int dim,
unsigned int n_permutations,
unsigned int points_per_side);
120 return subset_index_;
128 return perm_indices_[i_side][i_perm][i_point];
156 CouplingIntegral(std::shared_ptr<EdgeIntegral> edge_integral, std::shared_ptr<BulkIntegral> bulk_integral);
163 return edge_integral_->get_subset_idx();
168 return bulk_integral_->get_subset_idx();
200 return edge_integral_->get_subset_idx();
219 : local_point_idx_(0) {}
223 : dh_cell_(dh_cell), integral_(bulk_integral), local_point_idx_(loc_point_idx), elm_cache_map_(elm_cache_map) {}
226 std::shared_ptr<const BulkIntegral>
integral()
const {
232 return integral_->eval_points();
236 template<
unsigned int dim>
246 return dh_cell_.element_cache_index();
256 return elm_cache_map_;
261 return local_point_idx_;
293 : local_point_idx_(0), elm_cache_map_(nullptr) {}
297 : cell_side_(cell_side), integral_(edge_integral), local_point_idx_(local_point_idx),
298 permutation_idx_( cell_side.element()->permutation_idx( cell_side_.side_idx() ) ), elm_cache_map_(elm_cache_map) {}
301 std::shared_ptr<const EdgeIntegral>
integral()
const {
307 return integral_->eval_points();
311 template<
unsigned int dim>
313 return this->
eval_points()->local_point<
dim>( this->eval_point_idx() );
321 return cell_side_.cell().element_cache_index();
331 return permutation_idx_;
336 return elm_cache_map_;
341 return integral_->perm_idx_ptr(cell_side_.side_idx(), permutation_idx_, local_point_idx_);
std::shared_ptr< const EdgeIntegral > integral_
Pointer to edge point set.
std::shared_ptr< EdgeIntegral > edge_integral_
Integral according to side subset part (element of higher dim) in EvalPoints object.
unsigned int n_sides() const
Getter of n_sides.
const ElementCacheMap * elm_cache_map() const
Point accessor allow iterate over bulk quadrature points defined in local element coordinates...
void inc()
Iterates to next point.
Point accessor allow iterate over quadrature points of given side defined in local element coordinate...
int get_subset_idx() const
Return index of data block according to subset in EvalPoints object.
unsigned int dim() const
Returns dimension.
int perm_idx_ptr(uint i_side, uint i_perm, uint i_point) const
Returns structure of permutation indices.
const ElementCacheMap * elm_cache_map_
Pointer ElementCacheMap needed for point evaluation.
DHCellAccessor dh_cell() const
Return DH cell accessor.
BulkPoint()
Default constructor.
BulkIntegral()
Default constructor.
EdgePoint(DHCellSide cell_side, const ElementCacheMap *elm_cache_map, std::shared_ptr< const EdgeIntegral > edge_integral, unsigned int local_point_idx)
Constructor.
int get_subset_low_idx() const
Return index of data block according to subset of lower dim in EvalPoints object. ...
int get_subset_idx() const
Return index of data block according to subset in EvalPoints object.
Directing class of FieldValueCache.
Cell accessor allow iterate over DOF handler cells.
unsigned int eval_point_idx() const
Return index in EvalPoints object.
BaseIntegral()
Default constructor.
unsigned int permutation_idx() const
unsigned int element_cache_index() const
Return index of element in data cache.
bool operator==(const EdgePoint &other)
Comparison of accessors.
DHCellSide dh_cell_side() const
Return DH cell accessor.
std::shared_ptr< EvalPoints > eval_points_
Pointer to EvalPoints.
DHCellAccessor dh_cell_
DOF handler accessor of element.
std::shared_ptr< const EdgeIntegral > integral() const
Getter of EdgeIntegral.
unsigned int eval_point_idx() const
Return index in EvalPoints object.
std::shared_ptr< EdgeIntegral > edge_integral_
Boundary integral according to edge integral (? but need own special data members and methods ...
std::shared_ptr< BulkIntegral > bulk_integral_
Integral according to bulk subset part (element of lower dim) in EvalPoints object.
unsigned int dim_
Dimension of points.
unsigned int *** perm_indices_
Indices to EvalPoints for different sides and permutations reflecting order of points.
int get_subset_high_idx() const
Return index of data block according to subset of higher dim in EvalPoints object.
BaseIntegral(std::shared_ptr< EvalPoints > eval_points, unsigned int dim)
Constructor of bulk (n_permutations==0) or side subset.
bool operator==(const BulkPoint &other)
Comparison of accessors.
unsigned int local_point_idx_
Index of the local point in the composed quadrature.
unsigned int subset_index_
Index of data block according to subset in EvalPoints object.
std::shared_ptr< const BulkIntegral > integral() const
Getter of BulkIntegral.
unsigned int element_cache_index() const
Return index of element in data cache.
void inc()
Iterates to next point.
CouplingIntegral()
Default constructor.
std::shared_ptr< EvalPoints > eval_points() const
Getter of EvalPoints.
unsigned int local_point_idx_
Index of the local point in bulk point set.
unsigned int n_permutations_
Number of permutations (value 0 indicates bulk set)
unsigned int permutation_idx_
Permutation index corresponding with DHCellSide.
unsigned int subset_index_
Index of data block according to subset in EvalPoints object.
virtual ~BaseIntegral()
Destructor.
const ElementCacheMap * elm_cache_map() const
arma::vec::fixed< dim > loc_coords() const
Local coordinates within element.
arma::vec::fixed< dim > loc_coords() const
TYPEDEF_ERR_INFO(EI_ElementIdx, unsigned int)
BulkIntegral(std::shared_ptr< EvalPoints > eval_points, unsigned int dim)
Constructor of bulk integral.
Class holds local coordinations of evaluating points (bulk and sides) specified by element dimension...
std::shared_ptr< EvalPoints > eval_points() const
Getter of evaluation points.
unsigned int n_sides_
Number of sides (value 0 indicates bulk set)
BulkPoint(DHCellAccessor dh_cell, const ElementCacheMap *elm_cache_map, std::shared_ptr< const BulkIntegral > bulk_integral, unsigned int loc_point_idx)
Constructor.
std::shared_ptr< const BulkIntegral > integral_
Pointer to bulk integral.
BoundaryIntegral()
Default constructor.
DECLARE_EXCEPTION(ExcElementNotInCache,<< "Element of Idx: "<< EI_ElementIdx::val<< " is not stored in 'Field value data cache'.\n"<< "Value can't be computed.\n")
const ElementCacheMap * elm_cache_map_
Pointer ElementCacheMap needed for point evaluation.
EdgeIntegral()
Default constructor.
int get_subset_idx() const
Return index of data block according to subset in EvalPoints object.
DHCellSide cell_side_
DOF handler accessor of element side.
std::shared_ptr< EvalPoints > eval_points() const
Getter of eval_points.
EdgePoint()
Default constructor.
Implementation of range helper class.
Side accessor allows to iterate over sides of DOF handler cell.