FEAT 3
Finite Element Analysis Toolbox
Loading...
Searching...
No Matches
eval_data.hpp
1// FEAT3: Finite Element Analysis Toolbox, Version 3
2// Copyright (C) 2010 by Stefan Turek & the FEAT group
3// FEAT3 is released under the GNU General Public License version 3,
4// see the file 'copyright.txt' in the top level directory for details.
5
6#pragma once
7
8// includes, FEAT
9#include <kernel/trafo/base.hpp>
10
11namespace FEAT
12{
13 namespace Trafo
14 {
29 template<
30 typename EvalTraits_,
31 TrafoTags cfg_tags_>
33 {
34 public:
36 typedef EvalTraits_ EvalTraits;
37
38 // Note:
39 // The following members are ordered by non-ascending size
40 // to avoid unnecessary data alignment padding.
41
43 typename EvalTraits::HessianInverseType hess_inv;
45 typename EvalTraits::HessianTensorType hess_ten;
47 typename EvalTraits::JacobianInverseType jac_inv;
49 typename EvalTraits::JacobianMatrixType jac_mat;
51 typename EvalTraits::NormalVectorType normal;
53 typename EvalTraits::ImagePointType img_point;
55 typename EvalTraits::DomainPointType dom_point;
57 typename EvalTraits::JacobianDeterminantType jac_det;
58
60 static constexpr TrafoTags config = cfg_tags_;
61
62#if defined(DEBUG) && !defined(__CUDA_ARCH__)
63 EvalData()
64 {
65 // format all values to NaN
66 const auto qnan = Math::nan<typename EvalTraits_::DataType>();
67 hess_inv = qnan;
68 hess_ten = qnan;
69 jac_inv = qnan;
70 jac_mat = qnan;
71 normal = qnan;
72 img_point = qnan;
73 dom_point = qnan;
74 jac_det = qnan;
75 }
76#endif // DEBUG
77
78 void format()
79 {
80 typedef typename EvalTraits_::DataType DataType;
81 hess_inv = DataType(0);
82 hess_ten = DataType(0);
83 jac_inv = DataType(0);
84 jac_mat = DataType(0);
85 normal = DataType(0);
86 img_point = DataType(0);
87 dom_point = DataType(0);
88 jac_det = DataType(0);
89 }
90 }; // class EvalData<...>
91 } // namespace Trafo
92} // namespace FEAT
Trafo evaluation data structure.
Definition: eval_data.hpp:33
EvalTraits::DomainPointType dom_point
domain point
Definition: eval_data.hpp:55
EvalTraits::JacobianMatrixType jac_mat
jacobian matrix
Definition: eval_data.hpp:49
EvalTraits_ EvalTraits
trafo evaluation traits
Definition: eval_data.hpp:36
EvalTraits::ImagePointType img_point
image point
Definition: eval_data.hpp:53
EvalTraits::JacobianDeterminantType jac_det
jacobian determinant
Definition: eval_data.hpp:57
EvalTraits::HessianTensorType hess_ten
hessian tensor
Definition: eval_data.hpp:45
EvalTraits::NormalVectorType normal
normal vector (only defined by Assembly::TraceAssembler)
Definition: eval_data.hpp:51
static constexpr TrafoTags config
our trafo configuration
Definition: eval_data.hpp:60
EvalTraits::JacobianInverseType jac_inv
inverse jacobian matrix
Definition: eval_data.hpp:47
EvalTraits::HessianInverseType hess_inv
inverse hessian tensor
Definition: eval_data.hpp:43
FEAT namespace.
Definition: adjactor.hpp:12
TrafoTags
Trafo configuration tags enum.
Definition: eval_tags.hpp:22