9#include <kernel/assembly/base.hpp>
10#include <kernel/cubature/dynamic_factory.hpp>
19 template<
typename Space_,
typename DataType_>
20 struct EvalPolicyFetcher
22 typedef typename Space_::TrafoType TrafoType;
23 typedef typename TrafoType::ShapeType ShapeType;
24 typedef typename TrafoType::template Evaluator<ShapeType, DataType_>::Type TrafoEvalType;
25 typedef typename TrafoEvalType::EvalPolicy EvalPolicy;
28 template<
typename TrafoEvaluator_>
33 typedef typename TrafoEvaluator_::EvalPolicy EvalPolicy;
36 typedef typename EvalPolicy::DataType DataType;
39 typedef typename EvalPolicy::ShapeType ShapeType;
42 typedef typename EvalPolicy::DomainPointType DomainPointType;
45 typedef Cubature::Rule<ShapeType, DataType, DataType, DomainPointType> RuleType;
82 public Intern::EvalPolicyFetcher<Space_, DataType_>::EvalPolicy
104 typedef typename TrafoType::template Evaluator<ShapeType, DataType>::Type
TrafoEvaluator;
110 typedef typename SpaceType::template Evaluator<TrafoEvaluator>::Type
SpaceEvaluator;
122 static constexpr SpaceTags space_config = space_config_;
123 static constexpr SpaceTags test_config = space_config_;
124 static constexpr SpaceTags trial_config = space_config_;
125 static constexpr SpaceTags mult_config = space_config_;
128 typedef typename SpaceEvaluator::template ConfigTraits<space_config> SpaceConfigTraits;
129 static constexpr TrafoTags space_trafo_config = SpaceConfigTraits::trafo_config;
130 static constexpr TrafoTags test_trafo_config = SpaceConfigTraits::trafo_config;
131 static constexpr TrafoTags trial_trafo_config = SpaceConfigTraits::trafo_config;
132 static constexpr TrafoTags mult_trafo_config = SpaceConfigTraits::trafo_config;
138 typedef typename TrafoEvaluator::template ConfigTraits<trafo_config>::EvalDataType
TrafoEvalData;
142 typedef typename SpaceEvaluator::template ConfigTraits<space_config>::EvalDataType
SpaceEvalData;
161 static constexpr int domain_dim = TrafoEvaluator::domain_dim;
163 static constexpr int image_dim = TrafoEvaluator::image_dim;
167 static constexpr int max_local_test_dofs = TestEvaluator::max_local_dofs;
168 static constexpr int max_local_trial_dofs = TrialEvaluator::max_local_dofs;
169 static constexpr int max_local_mult_dofs = MultEvaluator::max_local_dofs;
172 template<
typename Value_>
174 template<
typename Value_>
176 template<
typename Value_>
178 template<
typename Value_>
182 template<
typename Value_>
221 typename TrialSpace_,
226 public Intern::EvalPolicyFetcher<TestSpace_, DataType_>::EvalPolicy
246 typedef typename TrafoType::template Evaluator<ShapeType, DataType>::Type
TrafoEvaluator;
252 typedef typename TestSpaceType::template Evaluator<TrafoEvaluator>::Type
TestEvaluator;
253 typedef typename TrialSpaceType::template Evaluator<TrafoEvaluator>::Type TrialEvaluator;
254 typedef TrialEvaluator MultEvaluator;
258 typedef typename TrialEvaluator::SpaceEvalTraits TrialEvalTraits;
259 typedef TrialEvalTraits MultEvalTraits;
262 static constexpr SpaceTags test_config = test_config_;
263 static constexpr SpaceTags trial_config = trial_config_;
264 static constexpr SpaceTags mult_config = trial_config_;
267 typedef typename TestEvaluator::template ConfigTraits<test_config> TestConfigTraits;
268 typedef typename TrialEvaluator::template ConfigTraits<trial_config> TrialConfigTraits;
269 static constexpr TrafoTags test_trafo_config = TestConfigTraits::trafo_config;
270 static constexpr TrafoTags trial_trafo_config = TrialConfigTraits::trafo_config;
271 static constexpr TrafoTags mult_trafo_config = TrialConfigTraits::trafo_config;
277 typedef typename TrafoEvaluator::template ConfigTraits<trafo_config>::EvalDataType
TrafoEvalData;
281 typedef typename TestEvaluator::template ConfigTraits<test_config>::EvalDataType
TestEvalData;
282 typedef typename TrialEvaluator::template ConfigTraits<trial_config>::EvalDataType TrialEvalData;
283 typedef TrialEvalData MultEvalData;
287 typedef typename TrialEvalData::BasisDataType TrialBasisData;
288 typedef TrialBasisData MultBasisData;
292 typedef typename TrialSpaceType::DofMappingType TrialDofMapping;
293 typedef TrialDofMapping MultDofMapping;
296 static constexpr int domain_dim = TrafoEvaluator::domain_dim;
298 static constexpr int image_dim = TrafoEvaluator::image_dim;
302 static constexpr int max_local_trial_dofs = TrialEvaluator::max_local_dofs;
303 static constexpr int max_local_mult_dofs = MultEvaluator::max_local_dofs;
306 template<
typename Value_>
308 template<
typename Value_>
310 template<
typename Value_>
314 template<
typename Value_>
356 typename TrialSpace_,
363 public Intern::EvalPolicyFetcher<TestSpace_, DataType_>::EvalPolicy
383 typedef typename TrafoType::template Evaluator<ShapeType, DataType>::Type
TrafoEvaluator;
389 typedef typename TestSpaceType::template Evaluator<TrafoEvaluator>::Type
TestEvaluator;
390 typedef typename TrialSpaceType::template Evaluator<TrafoEvaluator>::Type TrialEvaluator;
391 typedef typename MultSpaceType::template Evaluator<TrafoEvaluator>::Type MultEvaluator;
395 typedef typename TrialEvaluator::SpaceEvalTraits TrialEvalTraits;
396 typedef typename MultEvaluator::SpaceEvalTraits MultEvalTraits;
399 static constexpr SpaceTags test_config = test_config_;
400 static constexpr SpaceTags trial_config = trial_config_;
401 static constexpr SpaceTags mult_config = mult_config_;
404 typedef typename TestEvaluator::template ConfigTraits<test_config> TestConfigTraits;
405 typedef typename TrialEvaluator::template ConfigTraits<trial_config> TrialConfigTraits;
406 typedef typename MultEvaluator::template ConfigTraits<mult_config> MultConfigTraits;
407 static constexpr TrafoTags test_trafo_config = TestConfigTraits::trafo_config;
408 static constexpr TrafoTags trial_trafo_config = TrialConfigTraits::trafo_config;
409 static constexpr TrafoTags mult_trafo_config = MultConfigTraits::trafo_config;
415 typedef typename TrafoEvaluator::template ConfigTraits<trafo_config>::EvalDataType
TrafoEvalData;
419 typedef typename TestEvaluator::template ConfigTraits<test_config>::EvalDataType
TestEvalData;
420 typedef typename TrialEvaluator::template ConfigTraits<trial_config>::EvalDataType TrialEvalData;
421 typedef typename MultEvaluator::template ConfigTraits<trial_config>::EvalDataType MultEvalData;
425 typedef typename TrialEvalData::BasisDataType TrialBasisData;
426 typedef typename MultEvalData::BasisDataType MultBasisData;
430 typedef typename TrialSpaceType::DofMappingType TrialDofMapping;
431 typedef typename MultSpaceType::DofMappingType MultDofMapping;
434 static constexpr int domain_dim = TrafoEvaluator::domain_dim;
436 static constexpr int image_dim = TrafoEvaluator::image_dim;
440 static constexpr int max_local_trial_dofs = TrialEvaluator::max_local_dofs;
441 static constexpr int max_local_mult_dofs = MultEvaluator::max_local_dofs;
444 template<
typename Value_>
446 template<
typename Value_>
448 template<
typename Value_>
452 template<
typename Value_>
Common single-space assembly traits class template.
TrafoType::template Evaluator< ShapeType, DataType >::Type TrafoEvaluator
trafo evaluator type
SpaceEvalData::BasisDataType SpaceBasisData
basis function data types
SpaceEvaluator::template ConfigTraits< space_config >::EvalDataType SpaceEvalData
space evaluation data types
SpaceType TrialSpaceType
trial-space type
DataType_ DataType
data type
SpaceType MultSpaceType
multiplier space type
Intern::CubatureTraits< TrafoEvaluator >::RuleType CubatureRuleType
cubature rule type
TrafoType::MeshType MeshType
mesh type
SpaceType TestSpaceType
test-space type
TrafoEvaluator::CellIterator CellIterator
trafo cell iterator type
static constexpr int max_local_dofs
maximum local dofs
SpaceType::TrafoType TrafoType
trafo type
SpaceEvaluator::SpaceEvalTraits SpaceEvalTraits
space evaluator traits
TrafoType::ShapeType ShapeType
shape type
static constexpr int domain_dim
trafo domain dimension
SpaceType::DofMappingType DofMapping
dof-mapping types
static constexpr int image_dim
trafo image dimension
TrafoEvaluator::template ConfigTraits< trafo_config >::EvalDataType TrafoEvalData
trafo evaluation data type
static constexpr TrafoTags trafo_config
assembly trafo config: derive from user-defined trafo config
SpaceType::template Evaluator< TrafoEvaluator >::Type SpaceEvaluator
space evaluator types
Space_ SpaceType
space type
Common test-/trial-space assembly traits class template.
TestSpaceType::DofMappingType TestDofMapping
dof-mapping types
static constexpr TrafoTags trafo_config
trafo config: combine space and assembly trafo configs
TrafoType::ShapeType ShapeType
shape type
Intern::CubatureTraits< TrafoEvaluator >::RuleType CubatureRuleType
cubature rule type
TrafoType::template Evaluator< ShapeType, DataType >::Type TrafoEvaluator
trafo evaluator type
static constexpr int domain_dim
trafo domain dimension
static constexpr int image_dim
trafo image dimension
TrialSpace_ TrialSpaceType
trial-space type
TestSpace_ TestSpaceType
test-space type
DataType_ DataType
data type
TestEvalData::BasisDataType TestBasisData
basis function data types
TestSpaceType::template Evaluator< TrafoEvaluator >::Type TestEvaluator
space evaluator types
TestEvaluator::SpaceEvalTraits TestEvalTraits
space evaluator traits
TrafoEvaluator::CellIterator CellIterator
trafo cell iterator type
TestSpaceType::TrafoType TrafoType
trafo type
TrialSpaceType MultSpaceType
mult-space type
TrafoType::MeshType MeshType
mesh type
TestEvaluator::template ConfigTraits< test_config >::EvalDataType TestEvalData
space evaluation data types
TrafoEvaluator::template ConfigTraits< trafo_config >::EvalDataType TrafoEvalData
trafo evaluation data type
static constexpr int max_local_test_dofs
maximum local dofs
Common test-/trial-/mult-space assembly traits class template.
TrafoEvaluator::template ConfigTraits< trafo_config >::EvalDataType TrafoEvalData
trafo evaluation data type
TestEvaluator::template ConfigTraits< test_config >::EvalDataType TestEvalData
space evaluation data types
TrialSpace_ TrialSpaceType
trial-space type
MultSpace_ MultSpaceType
mult-space type
TrafoType::MeshType MeshType
mesh type
TrafoType::ShapeType ShapeType
shape type
TestEvaluator::SpaceEvalTraits TestEvalTraits
space evaluator traits
TestSpaceType::DofMappingType TestDofMapping
dof-mapping types
static constexpr int image_dim
trafo image dimension
TestSpaceType::template Evaluator< TrafoEvaluator >::Type TestEvaluator
space evaluator types
static constexpr int domain_dim
trafo domain dimension
DataType_ DataType
data type
TrafoEvaluator::CellIterator CellIterator
trafo cell iterator type
Intern::CubatureTraits< TrafoEvaluator >::RuleType CubatureRuleType
cubature rule type
static constexpr int max_local_test_dofs
maximum local dofs
TestSpaceType::TrafoType TrafoType
trafo type
TrafoType::template Evaluator< ShapeType, DataType >::Type TrafoEvaluator
trafo evaluator type
TestEvalData::BasisDataType TestBasisData
basis function data types
static constexpr TrafoTags trafo_config
trafo config: combine space and assembly trafo configs
TestSpace_ TestSpaceType
test-space type
Tiny Matrix class template.
Tiny Vector class template.
SpaceTags
Space configuration tags enum.
TrafoTags
Trafo configuration tags enum.
@ jac_det
specifies whether the trafo should supply jacobian determinants