9#include <kernel/space/parametric_evaluator.hpp>
10#include <kernel/space/dof_mapping_common.hpp>
32 typename TrafoEvaluator_,
33 typename SpaceEvalTraits_,
34 typename Shape_ =
typename Space_::ShapeType>
44 typename TrafoEvaluator_,
45 typename SpaceEvalTraits_>
46 class Evaluator<Space_, TrafoEvaluator_, SpaceEvalTraits_, Shape::Simplex<2> > :
74 typedef typename SpaceEvalTraits::DataType
DataType;
107 template<
typename EvalData_>
112 data.phi[0].ref_value =
DataType(1) - point[0] - point[1];
113 data.phi[1].ref_value = point[0];
114 data.phi[2].ref_value = point[1];
126 template<
typename EvalData_>
131 data.phi[0].ref_grad[0] = -
DataType(1);
132 data.phi[0].ref_grad[1] = -
DataType(1);
133 data.phi[1].ref_grad[0] =
DataType(1);
134 data.phi[1].ref_grad[1] =
DataType(0);
135 data.phi[2].ref_grad[0] =
DataType(0);
136 data.phi[2].ref_grad[1] =
DataType(1);
147 typename TrafoEvaluator_,
148 typename SpaceEvalTraits_>
149 class Evaluator<Space_, TrafoEvaluator_, SpaceEvalTraits_, Shape::Simplex<3> > :
177 typedef typename SpaceEvalTraits::DataType
DataType;
210 template<
typename EvalData_>
215 data.phi[0].ref_value =
DataType(1) - point[0] - point[1] - point[2];
216 data.phi[1].ref_value = point[0];
217 data.phi[2].ref_value = point[1];
218 data.phi[3].ref_value = point[2];
230 template<
typename EvalData_>
235 data.phi[0].ref_grad[0] = -
DataType(1);
236 data.phi[0].ref_grad[1] = -
DataType(1);
237 data.phi[0].ref_grad[2] = -
DataType(1);
238 data.phi[1].ref_grad[0] =
DataType(1);
239 data.phi[1].ref_grad[1] =
DataType(0);
240 data.phi[1].ref_grad[2] =
DataType(0);
241 data.phi[2].ref_grad[0] =
DataType(0);
242 data.phi[2].ref_grad[1] =
DataType(1);
243 data.phi[2].ref_grad[2] =
DataType(0);
244 data.phi[3].ref_grad[0] =
DataType(0);
245 data.phi[3].ref_grad[1] =
DataType(0);
246 data.phi[3].ref_grad[2] =
DataType(1);
257 typename TrafoEvaluator_,
258 typename SpaceEvalTraits_>
259 class Evaluator<Space_, TrafoEvaluator_, SpaceEvalTraits_, Shape::Hypercube<1> > :
265 Shape::Hypercube<1> >,
287 typedef typename SpaceEvalTraits::DataType
DataType;
320 template<
typename EvalData_>
338 template<
typename EvalData_>
343 data.phi[0].ref_grad[0] =
DataType(-0.5);
344 data.phi[1].ref_grad[0] =
DataType( 0.5);
355 typename TrafoEvaluator_,
356 typename SpaceEvalTraits_>
357 class Evaluator<Space_, TrafoEvaluator_, SpaceEvalTraits_, Shape::Hypercube<2> > :
363 Shape::Hypercube<2> >,
385 typedef typename SpaceEvalTraits::DataType
DataType;
418 template<
typename EvalData_>
438 template<
typename EvalData_>
461 typename TrafoEvaluator_,
462 typename SpaceEvalTraits_>
463 class Evaluator<Space_, TrafoEvaluator_, SpaceEvalTraits_, Shape::Hypercube<3> > :
469 Shape::Hypercube<3> >,
491 typedef typename SpaceEvalTraits::DataType
DataType;
524 template<
typename EvalData_>
548 template<
typename EvalData_>
SpaceEvalTraits_ SpaceEvalTraits
space evaluation traits
void eval_ref_gradients(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function gradients on the reference cell.
int get_num_local_dofs() const
Returns the number of local DOFs.
SpaceEvalTraits::EvalPolicy EvalPolicy
evaluation policy
EvalPolicy::DomainPointType DomainPointType
domain point type
ParametricEvaluator< Evaluator, TrafoEvaluator_, SpaceEvalTraits_, ref_caps > BaseClass
base-class typedef
Evaluator(const SpaceType &space)
Constructor.
Space_ SpaceType
space type
void eval_ref_values(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function values on the reference cell.
SpaceEvalTraits::DataType DataType
data type
Space_ SpaceType
space type
ParametricEvaluator< Evaluator, TrafoEvaluator_, SpaceEvalTraits_, ref_caps > BaseClass
base-class typedef
void eval_ref_gradients(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function gradients on the reference cell.
SpaceEvalTraits::EvalPolicy EvalPolicy
evaluation policy
int get_num_local_dofs() const
Returns the number of local DOFs.
void eval_ref_values(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function values on the reference cell.
Evaluator(const SpaceType &space)
Constructor.
SpaceEvalTraits::DataType DataType
data type
SpaceEvalTraits_ SpaceEvalTraits
space evaluation traits
EvalPolicy::DomainPointType DomainPointType
domain point type
SpaceEvalTraits::DataType DataType
data type
Space_ SpaceType
space type
int get_num_local_dofs() const
Returns the number of local DOFs.
EvalPolicy::DomainPointType DomainPointType
domain point type
ParametricEvaluator< Evaluator, TrafoEvaluator_, SpaceEvalTraits_, ref_caps > BaseClass
base-class typedef
Evaluator(const SpaceType &space)
Constructor.
void eval_ref_values(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function values on the reference cell.
SpaceEvalTraits::EvalPolicy EvalPolicy
evaluation policy
void eval_ref_gradients(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function gradients on the reference cell.
SpaceEvalTraits_ SpaceEvalTraits
space evaluation traits
void eval_ref_values(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function values on the reference cell.
void eval_ref_gradients(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function gradients on the reference cell.
ParametricEvaluator< Evaluator, TrafoEvaluator_, SpaceEvalTraits_, ref_caps > BaseClass
base-class typedef
int get_num_local_dofs() const
Returns the number of local DOFs.
SpaceEvalTraits_ SpaceEvalTraits
space evaluation traits
SpaceEvalTraits::EvalPolicy EvalPolicy
evaluation policy
EvalPolicy::DomainPointType DomainPointType
domain point type
Evaluator(const SpaceType &space)
Constructor.
Space_ SpaceType
space type
SpaceEvalTraits::DataType DataType
data type
SpaceEvalTraits::DataType DataType
data type
int get_num_local_dofs() const
Returns the number of local DOFs.
SpaceEvalTraits_ SpaceEvalTraits
space evaluation traits
Space_ SpaceType
space type
EvalPolicy::DomainPointType DomainPointType
domain point type
ParametricEvaluator< Evaluator, TrafoEvaluator_, SpaceEvalTraits_, ref_caps > BaseClass
base-class typedef
Evaluator(const SpaceType &space)
Constructor.
void eval_ref_values(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function values on the reference cell.
SpaceEvalTraits::EvalPolicy EvalPolicy
evaluation policy
void eval_ref_gradients(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function gradients on the reference cell.
Lagrange-1 Element Evaluator class template declaration.
Finite-Element Parametric Evaluator CRTP base-class template.
static constexpr SpaceTags ref_caps
Lagrange-1 Element Evaluator reference capabilities.
SpaceTags
Space configuration tags enum.
@ ref_value
specifies whether the space should supply reference basis function values
@ ref_grad
specifies whether the space should supply reference basis function gradients