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:117
 
double lambda
Definition: physicshelper.hh:118
 
double mu
Definition: physicshelper.hh:119
 
Concept defining the requirements for Eigen vectors.
Definition: concepts.hh:381