123template <
int DisplacementDim>
137 P const& E_i,
P const& E_a,
P const& nu_ii,
P const& nu_ia,
139 std::optional<ParameterLib::CoordinateSystem>
const&
140 local_coordinate_system)
160 return eps.dot(sigma) / 2;
164 std::tuple<typename MechanicsBase<DisplacementDim>::KelvinVector,
166 DisplacementDim>::MaterialStateVariables>,
173 material_state_variables)
const override;
177 double const T)
const;
183 const double E_i =
E_i_p_(t, x)[0];
184 const double E_a =
E_a_p_(t, x)[0];
185 const double nu_i =
nu_ii_p_(t, x)[0];
186 const double nu_ia =
nu_ia_p_(t, x)[0];
189 double const E_av = 2. * E_i / 3. + E_a / 3.;
193 const double nu_ai = nu_ia * E_a / E_i;
198 const double nu_av = (nu_ai + nu_ia + nu_i) / 3.0;
200 return E_av / 3 / (1 - 2 * nu_av);
217 std::optional<ParameterLib::CoordinateSystem>
const&
Linear transverse isotropic elastic model.
P const & nu_ii_p_
It is the in-plane Poisson’s ratio, .
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > KelvinMatrix
KelvinMatrix getElasticTensorLeftTopCorner(double const t, ParameterLib::SpatialPosition const &x) const
LinearElasticTransverseIsotropic(P const &E_i, P const &E_a, P const &nu_ii, P const &nu_ia, P const &G_ia, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system)
double getBulkModulus(double const t, ParameterLib::SpatialPosition const &x, KelvinMatrix const *const) const override
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > KelvinVector
P const & E_i_p_
It is the in-plane Young’s modulus, .
std::optional< ParameterLib::CoordinateSystem > const & local_coordinate_system_
KelvinMatrix getElasticTensor(double const t, ParameterLib::SpatialPosition const &x, double const T) const
std::optional< std::tuple< typename MechanicsBase< DisplacementDim >::KelvinVector, std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariables >, typename MechanicsBase< DisplacementDim >::KelvinMatrix > > integrateStress(MaterialPropertyLib::VariableArray const &variable_array_prev, MaterialPropertyLib::VariableArray const &variable_array, double const t, ParameterLib::SpatialPosition const &x, double const dt, typename MechanicsBase< DisplacementDim >::MaterialStateVariables const &material_state_variables) const override
static int const KelvinVectorSize
double computeFreeEnergyDensity(double const, ParameterLib::SpatialPosition const &, double const, KelvinVector const &eps, KelvinVector const &sigma, typename MechanicsBase< DisplacementDim >::MaterialStateVariables const &) const override
constexpr int kelvin_vector_dimensions(int const displacement_dim)
Kelvin vector dimensions for given displacement dimension.
Eigen::Matrix< double, kelvin_vector_dimensions(DisplacementDim), 1, Eigen::ColMajor > KelvinVectorType
Eigen::Matrix< double, kelvin_vector_dimensions(DisplacementDim), kelvin_vector_dimensions(DisplacementDim), Eigen::RowMajor > KelvinMatrixType
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > KelvinMatrix