35 template <
typename ScalarType_>
37 [[nodiscard]]
constexpr std::string
nameImpl()
const {
return "StVenantKirchhoff"; }
47 using StrainMatrix = Eigen::Matrix<ScalarType, worldDimension, worldDimension>;
70 template <
typename Derived>
72 static_assert(Concepts::EigenMatrixOrVoigtNotation3<Derived>);
74 const ScalarType traceE = E.template segment<3>(0).sum();
76 = E.template segment<3>(0).squaredNorm() + E.template segment<3>(3).squaredNorm() /
ScalarType(2.0);
79 const auto traceE = E.trace();
91 template <
bool voigt,
typename Derived>
93 static_assert(Concepts::EigenMatrixOrVoigtNotation3<
decltype(E.eval())>);
94 const auto& Ed = E.derived();
95 if constexpr (!voigt) {
97 static_assert(Concepts::EigenVector6<Derived>);
98 Eigen::Matrix<ScalarType, 3, 3> S;
99 const ScalarType traceE = Ed.template segment<3>(0).sum();
107 static_assert(Concepts::EigenMatrix33<Derived>);
113 static_assert(Concepts::EigenVector6<Derived>);
114 Eigen::Matrix<ScalarType, 6, 1> S;
115 const ScalarType traceE = Ed.template segment<3>(0).sum();
118 S.template segment<3>(3)
122 Eigen::Matrix<ScalarType, 6, 1> S;
140 template <
bool voigt,
typename Derived>
142 static_assert(Concepts::EigenMatrixOrVoigtNotation3<Derived>);
143 if constexpr (!voigt) {
144 Eigen::TensorFixedSize<ScalarType, Eigen::Sizes<3, 3, 3, 3>> moduli;
149 Eigen::Matrix<ScalarType, 6, 6> moduli;
163 template <
typename ScalarTypeOther>
Helper for the Eigen::Tensor types.
Contains the Material interface class and related template functions for material properties.
auto symmetricIdentityFourthOrder()
Generates a symmetric identity fourth-order tensor.
Definition: tensorutils.hh:60
auto identityFourthOrder()
Generates an identity fourth-order tensor.
Definition: tensorutils.hh:101
Definition: simpleassemblers.hh:21
StVenantKirchhoffT< double > StVenantKirchhoff
Alias for StVenantKirchhoffT with double as the default scalar type.
Definition: svk.hh:174
Interface classf or materials.
Definition: interface.hh:75
Implementation of the Saint Venant-Kirchhoff material model.The energy is computed as.
Definition: svk.hh:36
static constexpr bool stressAcceptsVoigt
Definition: svk.hh:55
static constexpr auto tangentModuliTag
Definition: svk.hh:52
Eigen::Matrix< ScalarType, worldDimension, worldDimension > StrainMatrix
Definition: svk.hh:47
static constexpr bool energyAcceptsVoigt
Definition: svk.hh:53
ScalarType storedEnergyImpl(const Eigen::MatrixBase< Derived > &E) const
Computes the stored energy in the Saint Venant-Kirchhoff material model.
Definition: svk.hh:71
auto stressesImpl(const Eigen::MatrixBase< Derived > &E) const
Computes the stresses in the Saint Venant-Kirchhoff material model.
Definition: svk.hh:92
static constexpr int worldDimension
Definition: svk.hh:46
ScalarType_ ScalarType
Definition: svk.hh:45
StVenantKirchhoffT(const LamesFirstParameterAndShearModulus &mpt)
Constructor for StVenantKirchhoffT.
Definition: svk.hh:43
static constexpr bool stressToVoigt
Definition: svk.hh:54
constexpr std::string nameImpl() const
Definition: svk.hh:37
StrainMatrix StressMatrix
Definition: svk.hh:48
auto tangentModuliImpl(const Eigen::MatrixBase< Derived > &E) const
Computes the tangent moduli in the Saint Venant-Kirchhoff material model.
Definition: svk.hh:141
auto rebind() const
Rebinds the material to a different scalar type.
Definition: svk.hh:164
static constexpr double derivativeFactor
Definition: svk.hh:62
static constexpr bool moduliToVoigt
Definition: svk.hh:56
static constexpr bool moduliAcceptsVoigt
Definition: svk.hh:57
LamesFirstParameterAndShearModulus materialParameter
Definition: svk.hh:168
static constexpr auto stressTag
Definition: svk.hh:51
static constexpr auto strainTag
Definition: svk.hh:50
Definition: physicshelper.hh:143
double lambda
Definition: physicshelper.hh:144
double mu
Definition: physicshelper.hh:145
Concept defining the requirements for Eigen vectors.
Definition: concepts.hh:381