9#include <kernel/space/evaluator_base.hpp> 
   10#include <kernel/space/details.hpp> 
   19      template<
bool _enable>
 
   20      struct ParamBasisEvalHelper;
 
   44      typename SpaceEvaluator_,
 
   45      typename TrafoEvaluator_,
 
   46      typename SpaceEvalTraits_,
 
   49      public EvaluatorBase<SpaceEvaluator_, TrafoEvaluator_, SpaceEvalTraits_>
 
   91      static constexpr int domain_dim = SpaceEvalTraits::domain_dim;
 
   93      static constexpr int image_dim = SpaceEvalTraits::image_dim;
 
  100      template<SpaceTags cfg_>
 
  151      template<SpaceTags space_cfg_>
 
  154        const typename SpaceEvalTraits::DomainPointType& 
dom_point)
 const 
  165      template<SpaceTags space_cfg_, TrafoTags trafo_cfg_>
 
  171        cast().reference_eval(space_data, trafo_data.
dom_point);
 
  174        Intern::ParamBasisEvalHelper<*(space_cfg_ & 
SpaceTags::value)>::trans_values(space_data, trafo_data);
 
  176        Intern::ParamBasisEvalHelper<*(space_cfg_ & 
SpaceTags::grad)>::trans_gradients(space_data, trafo_data);
 
  178        Intern::ParamBasisEvalHelper<*(space_cfg_ & 
SpaceTags::hess)>::trans_hessians(space_data, trafo_data);
 
  185      template<
bool _enable>
 
  186      struct ParamBasisEvalHelper
 
  188        template<
typename SpaceData_, 
typename Evaluator_, 
typename DomPo
int_>
 
  189        static void eval_ref_values(SpaceData_&, 
const Evaluator_&, 
const DomPoint_&) {}
 
  191        template<
typename SpaceData_, 
typename Evaluator_, 
typename DomPo
int_>
 
  192        static void eval_ref_gradients(SpaceData_&, 
const Evaluator_&, 
const DomPoint_&) {}
 
  194        template<
typename SpaceData_, 
typename Evaluator_, 
typename DomPo
int_>
 
  195        static void eval_ref_hessians(SpaceData_&, 
const Evaluator_&, 
const DomPoint_&) {}
 
  197        template<
typename SpaceData_, 
typename TrafoData_>
 
  198        static void trans_values(SpaceData_&, 
const TrafoData_&) {}
 
  200        template<
typename SpaceData_, 
typename TrafoData_>
 
  201        static void trans_gradients(SpaceData_&, 
const TrafoData_&) {}
 
  203        template<
typename SpaceData_, 
typename TrafoData_>
 
  204        static void trans_hessians(SpaceData_&, 
const TrafoData_&) {}
 
  208      struct ParamBasisEvalHelper<true>
 
  210        template<
typename SpaceData_, 
typename Evaluator_, 
typename DomPo
int_>
 
  211        static void eval_ref_values(SpaceData_& space_data, 
const Evaluator_& evaluator, 
const DomPoint_& dom_point)
 
  213          evaluator.eval_ref_values(space_data, dom_point);
 
  216        template<
typename SpaceData_, 
typename Evaluator_, 
typename DomPo
int_>
 
  217        static void eval_ref_gradients(SpaceData_& space_data, 
const Evaluator_& evaluator, 
const DomPoint_& dom_point)
 
  219          evaluator.eval_ref_gradients(space_data, dom_point);
 
  222        template<
typename SpaceData_, 
typename Evaluator_, 
typename DomPo
int_>
 
  223        static void eval_ref_hessians(SpaceData_& space_data, 
const Evaluator_& evaluator, 
const DomPoint_& dom_point)
 
  225          evaluator.eval_ref_hessians(space_data, dom_point);
 
  228        template<
typename SpaceData_, 
typename TrafoData_>
 
  229        static void trans_values(SpaceData_& space_data, 
const TrafoData_&)
 
  231          ParametricEvalHelper::trans_values(space_data);
 
  234        template<
typename SpaceData_, 
typename TrafoData_>
 
  235        static void trans_gradients(SpaceData_& space_data, 
const TrafoData_& trafo_data)
 
  237          ParametricEvalHelper::trans_gradients(space_data, trafo_data.jac_inv);
 
  240        template<
typename SpaceData_, 
typename TrafoData_>
 
  241        static void trans_hessians(SpaceData_& space_data, 
const TrafoData_& trafo_data)
 
  243          ParametricEvalHelper::trans_hessians(space_data, trafo_data.jac_inv, trafo_data.hess_inv);
 
Space evaluation data structure.
Basic Space Evaluator CRTP base-class template.
Finite-Element Parametric Evaluator CRTP base-class template.
TrafoEvaluator_ TrafoEvaluator
trafo evaluator type
static constexpr int image_dim
image dimension
SpaceEvaluator_ SpaceEvaluator
space evaluator type
SpaceEvalTraits_ SpaceEvalTraits
space evaluator traits
static constexpr SpaceTags eval_caps
our evaluation capabilities
static constexpr int domain_dim
domain dimension
TrafoEvaluator::EvalTraits TrafoEvalTraits
trafo evaluator traits
static constexpr int max_local_dofs
maximum number of local dofs
EvaluatorBase< SpaceEvaluator_, TrafoEvaluator_, SpaceEvalTraits_ > BaseClass
base class typedef
static constexpr TrafoTags trafo_caps
the capabilities of the trafo evaluator
void operator()(EvalData< SpaceEvalTraits, space_cfg_ > &space_data, const Trafo::EvalData< TrafoEvalTraits, trafo_cfg_ > &trafo_data) const
Space evaluation operator.
void reference_eval(EvalData< SpaceEvalTraits, space_cfg_ > &space_ref_data, const typename SpaceEvalTraits::DomainPointType &dom_point) const
Space reference evaluation function.
Trafo evaluation data structure.
EvalTraits::DomainPointType dom_point
domain point
SpaceTags
Space configuration tags enum.
@ value
specifies whether the space should supply basis function values
@ hess
specifies whether the space should supply basis function hessians
@ ref_value
specifies whether the space should supply reference basis function values
@ ref_hess
specifies whether the space should supply reference basis function hessians
@ ref_grad
specifies whether the space should supply reference basis function gradients
@ grad
specifies whether the space should supply basis function gradients
TrafoTags
Trafo configuration tags enum.
@ hess_inv
specifies whether the trafo should supply inverse hessian tensors
@ dom_point
specifies whether the trafo should supply domain point coordinates
@ jac_inv
specifies whether the trafo should supply inverse jacobian matrices
Space configuration traits class template.
static constexpr TrafoTags trafo_config
trafo evaluation configuration
Space::EvalData< SpaceEvalTraits, config > EvalDataType
evaluation data typedef
static constexpr SpaceTags config
space evaluation config