22template <
typename GEO,
int ess>
25 static constexpr int myDim = GEO::mydimension;
28 using AnsatzType = Eigen::Matrix<double, strainSize, enhancedStrainSize>;
29 using DType = Eigen::Matrix<double, enhancedStrainSize, enhancedStrainSize>;
32 explicit EX(
const GEO& geometry)
33 :
geometry_{std::make_optional<GEO>(geometry)},
44template <
typename GEO>
55 explicit E0(
const GEO& geo)
71template <
typename GEO>
82 explicit E4(
const GEO& geo)
88 const double xi = quadPos[0];
89 const double eta = quadPos[1];
90 M(0, 0) = 2 * xi - 1.0;
91 M(1, 1) = 2 * eta - 1.0;
92 M(2, 2) = 2 * xi - 1.0;
93 M(2, 3) = 2 * eta - 1.0;
94 const double detJ = this->
geometry_->integrationElement(quadPos);
107template <
typename GEO>
118 explicit E5(
const GEO& geo)
124 const double xi = quadPos[0];
125 const double eta = quadPos[1];
126 M(0, 0) = 2 * xi - 1.0;
127 M(1, 1) = 2 * eta - 1.0;
128 M(2, 2) = 2 * xi - 1.0;
129 M(2, 3) = 2 * eta - 1.0;
130 M(2, 4) = (2 * xi - 1.0) * (2 * eta - 1.0);
131 const double detJ = this->
geometry_->integrationElement(quadPos);
144template <
typename GEO>
155 explicit E7(
const GEO& geo)
161 const double xi = quadPos[0];
162 const double eta = quadPos[1];
163 M(0, 0) = 2 * xi - 1.0;
164 M(1, 1) = 2 * eta - 1.0;
165 M(2, 2) = 2 * xi - 1.0;
166 M(2, 3) = 2 * eta - 1.0;
167 M(0, 4) = (2 * xi - 1.0) * (2 * eta - 1.0);
168 M(1, 5) = (2 * xi - 1.0) * (2 * eta - 1.0);
169 M(2, 6) = (2 * xi - 1.0) * (2 * eta - 1.0);
170 const double detJ = this->
geometry_->integrationElement(quadPos);
185template <
typename GEO>
196 explicit E11(
const GEO& geo)
202 const double xi = quadPos[0];
203 const double eta = quadPos[1];
204 const double xi_t = 2 * xi - 1;
205 const double eta_t = 2 * eta - 1;
207 const double xi2 = xi_t * xi_t;
208 const double eta2 = eta_t * eta_t;
209 const double xi_eta = xi_t * eta_t;
211 M(0, 0) = 1 - 3 * xi2;
212 M(0, 1) = eta_t - 3 * xi2 * eta_t;
213 M(0, 2) = eta2 - 3 * xi2 * eta2;
215 M(1, 3) = 1 - 3 * eta2;
216 M(1, 4) = xi_t - 3 * xi_t * eta2;
217 M(1, 5) = xi2 - 3 * xi2 * eta2;
219 M(2, 6) = 1 - 3 * xi2;
220 M(2, 7) = 1 - 3 * eta2;
221 M(2, 8) = eta_t - 3 * xi2 * eta_t;
222 M(2, 9) = xi_t - 3 * xi_t * eta2;
223 M(2, 10) = 1 - 3 * (xi2 + eta2) + 9 * xi2 * eta2;
225 const double detJ = this->
geometry_->integrationElement(quadPos);
238template <
typename GEO>
249 explicit E9(
const GEO& geo)
255 const double xi = quadPos[0];
256 const double eta = quadPos[1];
257 const double zeta = quadPos[2];
258 M(0, 0) = 2 * xi - 1.0;
259 M(1, 1) = 2 * eta - 1.0;
260 M(2, 2) = 2 * zeta - 1.0;
261 M(3, 3) = 2 * eta - 1.0;
262 M(3, 4) = 2 * zeta - 1.0;
263 M(4, 5) = 2 * xi - 1.0;
264 M(4, 6) = 2 * zeta - 1.0;
265 M(5, 7) = 2 * xi - 1.0;
266 M(5, 8) = 2 * eta - 1.0;
267 const double detJ = this->
geometry_->integrationElement(quadPos);
280template <
typename GEO>
291 explicit E21(
const GEO& geo)
297 const double xi = quadPos[0];
298 const double eta = quadPos[1];
299 const double zeta = quadPos[2];
300 M(0, 0) = 2 * xi - 1.0;
301 M(1, 1) = 2 * eta - 1.0;
302 M(2, 2) = 2 * zeta - 1.0;
303 M(3, 3) = 2 * eta - 1.0;
304 M(3, 4) = 2 * zeta - 1.0;
305 M(4, 5) = 2 * xi - 1.0;
306 M(4, 6) = 2 * zeta - 1.0;
307 M(5, 7) = 2 * xi - 1.0;
308 M(5, 8) = 2 * eta - 1.0;
310 M(3, 9) = (2 * xi - 1.0) * (2 * eta - 1.0);
311 M(3, 10) = (2 * xi - 1.0) * (2 * zeta - 1.0);
312 M(4, 11) = (2 * xi - 1.0) * (2 * eta - 1.0);
313 M(4, 12) = (2 * eta - 1.0) * (2 * zeta - 1.0);
314 M(5, 13) = (2 * xi - 1.0) * (2 * zeta - 1.0);
315 M(5, 14) = (2 * eta - 1.0) * (2 * zeta - 1.0);
317 M(0, 15) = (2 * xi - 1.0) * (2 * eta - 1.0);
318 M(0, 16) = (2 * xi - 1.0) * (2 * zeta - 1.0);
319 M(1, 17) = (2 * xi - 1.0) * (2 * eta - 1.0);
320 M(1, 18) = (2 * eta - 1.0) * (2 * zeta - 1.0);
321 M(2, 19) = (2 * xi - 1.0) * (2 * zeta - 1.0);
322 M(2, 20) = (2 * eta - 1.0) * (2 * zeta - 1.0);
324 const double detJ = this->
geometry_->integrationElement(quadPos);
Helper for the Eigen::Tensor types.
Definition of the certain helper functions used to transform strain measures.
Definition: easfunctions/displacementgradient.hh:21
Interface for displacement-based EAS elements, where linear or Green-Lagrange strains are enhanced.
Definition: linearandglstrains.hh:24
Eigen::Matrix< double, enhancedStrainSize, enhancedStrainSize > DType
Definition: linearandglstrains.hh:29
Eigen::Matrix< double, strainSize, strainSize > T0InverseTransformed_
Definition: linearandglstrains.hh:38
std::optional< GEO > geometry_
Definition: linearandglstrains.hh:37
static constexpr int strainSize
Definition: linearandglstrains.hh:26
static constexpr int myDim
Definition: linearandglstrains.hh:25
static constexpr int enhancedStrainSize
Definition: linearandglstrains.hh:27
Eigen::Matrix< double, strainSize, enhancedStrainSize > AnsatzType
Definition: linearandglstrains.hh:28
EX(const GEO &geometry)
Definition: linearandglstrains.hh:32
Dummy struct for displacement-based EAS elements, i.e. 0 enhanced modes.
Definition: linearandglstrains.hh:46
auto operator()(const Dune::FieldVector< double, myDim > &) const
Definition: linearandglstrains.hh:59
typename Base::DType DType
Definition: linearandglstrains.hh:52
static constexpr int myDim
Definition: linearandglstrains.hh:48
E0(const GEO &geo)
Definition: linearandglstrains.hh:55
static constexpr int strainSize
Definition: linearandglstrains.hh:49
typename Base::AnsatzType AnsatzType
Definition: linearandglstrains.hh:51
static constexpr int enhancedStrainSize
Definition: linearandglstrains.hh:50
E4 structure for EAS with linear strains and 4 enhanced modes.
Definition: linearandglstrains.hh:73
E4(const GEO &geo)
Definition: linearandglstrains.hh:82
static constexpr int enhancedStrainSize
Definition: linearandglstrains.hh:77
typename Base::DType DType
Definition: linearandglstrains.hh:79
AnsatzType operator()(const Dune::FieldVector< double, myDim > &quadPos) const
Definition: linearandglstrains.hh:85
typename Base::AnsatzType AnsatzType
Definition: linearandglstrains.hh:78
static constexpr int myDim
Definition: linearandglstrains.hh:75
static constexpr int strainSize
Definition: linearandglstrains.hh:76
Structure representing EAS for Q1 with 5 enhanced strains.
Definition: linearandglstrains.hh:109
E5(const GEO &geo)
Definition: linearandglstrains.hh:118
static constexpr int enhancedStrainSize
Definition: linearandglstrains.hh:113
static constexpr int strainSize
Definition: linearandglstrains.hh:112
static constexpr int myDim
Definition: linearandglstrains.hh:111
AnsatzType operator()(const Dune::FieldVector< double, myDim > &quadPos) const
Definition: linearandglstrains.hh:121
typename Base::DType DType
Definition: linearandglstrains.hh:115
typename Base::AnsatzType AnsatzType
Definition: linearandglstrains.hh:114
Structure representing EAS for Q1 with 7 enhanced strains.
Definition: linearandglstrains.hh:146
static constexpr int strainSize
Definition: linearandglstrains.hh:149
static constexpr int enhancedStrainSize
Definition: linearandglstrains.hh:150
E7(const GEO &geo)
Definition: linearandglstrains.hh:155
static constexpr int myDim
Definition: linearandglstrains.hh:148
typename Base::DType DType
Definition: linearandglstrains.hh:152
typename Base::AnsatzType AnsatzType
Definition: linearandglstrains.hh:151
AnsatzType operator()(const Dune::FieldVector< double, myDim > &quadPos) const
Definition: linearandglstrains.hh:158
Structure representing EAS for Q2 with 11 enhanced strains.
Definition: linearandglstrains.hh:187
typename Base::AnsatzType AnsatzType
Definition: linearandglstrains.hh:192
static constexpr int strainSize
Definition: linearandglstrains.hh:190
static constexpr int enhancedStrainSize
Definition: linearandglstrains.hh:191
E11(const GEO &geo)
Definition: linearandglstrains.hh:196
AnsatzType operator()(const Dune::FieldVector< double, myDim > &quadPos) const
Definition: linearandglstrains.hh:199
static constexpr int myDim
Definition: linearandglstrains.hh:189
typename Base::DType DType
Definition: linearandglstrains.hh:193
Structure representing EAS for H1 with 9 enhanced strains.
Definition: linearandglstrains.hh:240
static constexpr int myDim
Definition: linearandglstrains.hh:242
AnsatzType operator()(const Dune::FieldVector< double, myDim > &quadPos) const
Definition: linearandglstrains.hh:252
typename Base::DType DType
Definition: linearandglstrains.hh:246
E9(const GEO &geo)
Definition: linearandglstrains.hh:249
static constexpr int strainSize
Definition: linearandglstrains.hh:243
typename Base::AnsatzType AnsatzType
Definition: linearandglstrains.hh:245
static constexpr int enhancedStrainSize
Definition: linearandglstrains.hh:244
Structure representing EAS for H1 with 21 enhanced strains.
Definition: linearandglstrains.hh:282
static constexpr int enhancedStrainSize
Definition: linearandglstrains.hh:286
static constexpr int myDim
Definition: linearandglstrains.hh:284
E21(const GEO &geo)
Definition: linearandglstrains.hh:291
typename Base::DType DType
Definition: linearandglstrains.hh:288
static constexpr int strainSize
Definition: linearandglstrains.hh:285
AnsatzType operator()(const Dune::FieldVector< double, myDim > &quadPos) const
Definition: linearandglstrains.hh:294
typename Base::AnsatzType AnsatzType
Definition: linearandglstrains.hh:287
Definition: utils/dirichletvalues.hh:32