62 double const E_i = E_i_p_(t, x)[0];
63 double const E_a = E_a_p_(t, x)[0];
64 double const nu_i = nu_ii_p_(t, x)[0];
65 double const nu_ia = nu_ia_p_(t, x)[0];
67 double const nu_ai = nu_ia * (E_a / E_i);
69 double const nu_ia_p_nu_ai = nu_ia * nu_ai;
70 double const nu_i_p2 = nu_i * nu_i;
71 double const E_i_p2 = E_i * E_i;
73 double const one_over_D =
74 (E_i_p2 * E_a) / (1.0 - nu_i_p2 - 2.0 * (1.0 + nu_i) * nu_ia_p_nu_ai);
76 double const fac1 = one_over_D / (E_i * E_a);
77 double const fac2 = one_over_D / E_i_p2;
78 double const a_ii = (1.0 - nu_ia_p_nu_ai) * fac1;
79 double const a_ai = (1.0 - nu_i_p2) * fac2;
80 double const b_ii = (nu_i + nu_ia_p_nu_ai) * fac1;
81 double const b_ai = (nu_ia * (1.0 + nu_i)) * fac2;
86 if (DisplacementDim == 2)
91 C_ortho.template topLeftCorner<3, 3>() << a_ii, b_ai, b_ii, b_ai, a_ai,
92 b_ai, b_ii, b_ai, a_ii;
96 C_ortho.template topLeftCorner<3, 3>() << a_ii, b_ii, b_ai, b_ii, a_ii,
97 b_ai, b_ai, b_ai, a_ai;
110 double const G_a = G_ia_p_(t, x)[0];
111 double const c_ai = G_a;
115 C_ortho.template bottomRightCorner<1, 1>().diagonal() << 2 * c_ai;
119 if (!local_coordinate_system_)
124 Eigen::Matrix<double, 2, 2> R = Eigen::Matrix<double, 2, 2>::Identity();
125 R.template topLeftCorner<2, 2>().noalias() =
126 local_coordinate_system_->transformation<2>(x);
127 return fourthOrderRotationMatrix(R);
132 return Q * C_ortho * Q.transpose();
143 double const E_i = E_i_p_(t, x)[0];
144 double const nu_i = nu_ii_p_(t, x)[0];
145 double const G_a = G_ia_p_(t, x)[0];
147 double const c_ii = E_i / (2.0 * (1 + nu_i));
148 double const c_ai = G_a;
152 C_ortho.template bottomRightCorner<3, 3>().diagonal() << 2.0 * c_ii,
157 if (!local_coordinate_system_)
161 Eigen::Matrix3d R = Eigen::Matrix3d::Identity();
162 R.template topLeftCorner<3, 3>().noalias() =
163 local_coordinate_system_->transformation<3>(x);
164 return fourthOrderRotationMatrix(R);
169 return Q * C_ortho * Q.transpose();
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