9#include <kernel/space/parametric_evaluator.hpp> 
   10#include <kernel/space/discontinuous/variant.hpp> 
   16    namespace Discontinuous
 
   20        typename TrafoEvaluator_,
 
   21        typename SpaceEvalTraits_,
 
   23        typename Shape_ = 
typename Space_::ShapeType>
 
   28        typename TrafoEvaluator_,
 
   29        typename SpaceEvalTraits_,
 
   31      class Evaluator<Space_, TrafoEvaluator_, SpaceEvalTraits_, Variant::StdPolyP<0>, Shape_> :
 
   33          Evaluator<Space_, TrafoEvaluator_, SpaceEvalTraits_, Variant::StdPolyP<0>, Shape_>,
 
   45        typedef typename SpaceEvalTraits::DataType 
DataType;
 
   78        template<SpaceTags space_cfg_, TrafoTags trafo_cfg_>
 
   91        typename TrafoEvaluator_,
 
   92        typename SpaceEvalTraits_,
 
  100            Variant::StdPolyP<1>,
 
  101            Shape::Simplex<shape_dim_> >,
 
  123        typedef typename SpaceEvalTraits::DataType 
DataType;
 
  144          return (shape_dim_ + 1);
 
  156        template<
typename EvalData_>
 
  161          data.phi[0].ref_value = 
DataType(1);
 
  162          for(
int i(0); i < shape_dim_; ++i)
 
  163            data.phi[0].ref_value -= (data.phi[i+1].ref_value = point[i]);
 
  175        template<
typename EvalData_>
 
  180          for(
int i(0); i < shape_dim_; ++i)
 
  182            data.phi[0].ref_grad[i] = -
DataType(1);
 
  183            for(
int j(0); j < shape_dim_; ++j)
 
  184              data.phi[i+1].ref_grad[j] = 
DataType(i == j ? 1 : 0);
 
  191        typename TrafoEvaluator_,
 
  192        typename SpaceEvalTraits_,
 
  196          Evaluator<Space_, TrafoEvaluator_, SpaceEvalTraits_, Variant::StdPolyP<1>, Shape::Hypercube<shape_dim_>>,
 
  223        typedef typename SpaceEvalTraits::DataType 
DataType;
 
  240        template<SpaceTags cfg_>
 
  247          static constexpr TrafoTags trafo_config = TrafoTags::img_point;
 
  290          return Index(shape_dim_ + 1);
 
  309          _inv_lin_mat = trafo_data.jac_inv;
 
  310          _inv_lin_vec = trafo_data.img_point;
 
  314        template<SpaceTags space_cfg_, TrafoTags trafo_cfg_>
 
  321          pt.set_mat_vec_mult(_inv_lin_mat, trafo_data.
img_point - _inv_lin_vec);
 
  325          for(
int i(0); i < shape_dim_; ++i)
 
  330        template<SpaceTags space_cfg_, TrafoTags trafo_cfg_>
 
  337          pt.set_mat_vec_mult(_inv_lin_mat, trafo_data.
img_point - _inv_lin_vec);
 
  340          for(
int i(0); i < (shape_dim_+1); ++i)
 
  343            for(
int j(0); j < shape_dim_; ++j)
 
  344              loc_grad[j] = 
DataType(i == (j+1) ? 1 : 0);
 
  347            data.
phi[i].
grad.set_vec_mat_mult(loc_grad, _inv_lin_mat);
 
EvalTraits_::BasisValueType value
basis function value object
EvalTraits_::BasisGradientType grad
basis gradient object
virtual ~Evaluator()
virtual destructor
TrafoEvaluator_::EvalTraits TrafoEvalTraits
trafo evaluation traits
Evaluator(const Space_ &space)
Constructor.
void eval_values(EvalData< SpaceEvalTraits, space_cfg_ > &data, const Trafo::EvalData< TrafoEvalTraits, trafo_cfg_ > &trafo_data) const
Evaluates the basis function values on the real cell.
SpaceEvalTraits::DataType DataType
basis value coefficient type
int get_num_local_dofs() const
Returns the number of local DOFs.
SpaceEvalTraits_ SpaceEvalTraits
space evaluation traits
Evaluator(const SpaceType &space)
Constructor.
int get_num_local_dofs() const
Returns the number of local DOFs.
SpaceEvalTraits_ SpaceEvalTraits
space evaluation traits
Space_ SpaceType
space type
ParametricEvaluator< Evaluator, TrafoEvaluator_, SpaceEvalTraits_, ref_caps_p1 > BaseClass
base-class typedef
SpaceEvalTraits::DataType DataType
data type
EvalPolicy::DomainPointType DomainPointType
domain point type
void eval_ref_gradients(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function gradients on the reference cell.
SpaceEvalTraits::EvalPolicy EvalPolicy
evaluation policy
void eval_ref_values(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function values on the reference cell.
EvalPolicy::JacobianInverseType JacobianInverseType
jacobian inverse matrix type
EvalPolicy::ImagePointType ImagePointType
image point type
SpaceEvalTraits_ SpaceEvalTraits
space evaluation traits
EvalPolicy::DomainPointType DomainPointType
domain point type
Evaluator(const SpaceType &space)
Constructor.
void prepare(const TrafoEvaluator &trafo_eval)
Prepares the evaluator for a given cell.
SpaceEvalTraits::EvalPolicy EvalPolicy
evaluation policy
virtual ~Evaluator()
virtual destructor
int get_num_local_dofs() const
Returns the number of local DOFs.
TrafoEvaluator::template ConfigTraits< inv_lin_trafo_config >::EvalDataType InvLinTrafoData
inverse linearized trafo data
TrafoEvaluator::TrafoType TrafoType
trafo type
Space_ SpaceType
space type
void eval_values(EvalData< SpaceEvalTraits, space_cfg_ > &data, const Trafo::EvalData< TrafoEvalTraits, trafo_cfg_ > &trafo_data) const
Evaluates the basis function values on the real cell.
TrafoEvaluator::EvalTraits TrafoEvalTraits
trafo evaluator traits
void eval_gradients(EvalData< SpaceEvalTraits, space_cfg_ > &data, const Trafo::EvalData< TrafoEvalTraits, trafo_cfg_ > &trafo_data) const
JacobianInverseType _inv_lin_mat
inverse linearized trafo matrix
TrafoType::MeshType MeshType
mesh type
EvalPolicy::JacobianMatrixType JacobianMatrixType
jacobian matrix type
EvaluatorBase< Evaluator, TrafoEvaluator_, SpaceEvalTraits_ > BaseClass
base-class typedef
TrafoEvaluator_ TrafoEvaluator
trafo evaluator type
SpaceEvalTraits::DataType DataType
data type
Space evaluation data structure.
BasisDataType phi[max_local_dofs]
the basis function data vector
Basic Space Evaluator CRTP base-class template.
Finite-Element Parametric Evaluator CRTP base-class template.
Trafo evaluation data structure.
EvalTraits::ImagePointType img_point
image point
SpaceTags
Space configuration tags enum.
@ value
specifies whether the space should supply basis function values
@ grad
specifies whether the space should supply basis function gradients
std::uint64_t Index
Index data type.
TrafoTags
Trafo configuration tags enum.
@ img_point
specifies whether the trafo should supply image point coordinates
@ dom_point
specifies whether the trafo should supply domain point coordinates
@ jac_inv
specifies whether the trafo should supply inverse jacobian matrices
Hypercube shape tag struct template.
Simplex shape tag struct template.
Space::EvalData< SpaceEvalTraits, config > EvalDataType
evaluation data typedef