62template <
int DisplacementDim>
81 double const GM0_s_eff =
GM0 * s_eff;
82 GK =
GK0 * std::exp(
mK * GM0_s_eff);
97 double GK = std::numeric_limits<double>::quiet_NaN();
98 double etaK = std::numeric_limits<double>::quiet_NaN();
99 double etaM = std::numeric_limits<double>::quiet_NaN();
103template <
int DisplacementDim>
108 :
public MechanicsBase<DisplacementDim>::MaterialStateVariables
153 return std::unique_ptr<
180 _mp(material_properties)
191 material_state_variables)
const override
194 &material_state_variables) !=
nullptr);
196 material_state_variables));
198 auto const& eps_K = state.
eps_K_j;
199 auto const& eps_K_prev = state.
eps_K_t;
201 auto const& eps_M = state.
eps_M_j;
203 auto local_lubby2_properties =
208 auto const& P_dev = Invariants::deviatoric_projection;
215 double sig_eff = Invariants::equivalentStress(sigd_j);
216 local_lubby2_properties.update(sig_eff);
218 auto const& eta_K = local_lubby2_properties.etaK;
222 return (eps - eps_K - eps_M).dot(sigma) / 2 +
223 eps_K.dot(sigma - eta_K * (eps_K - eps_K_prev) / dt) / 2;
235 DisplacementDim>::MaterialStateVariables>,
242 material_state_variables)
const override;
std::optional< std::tuple< KelvinVector, std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariables >, 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
NumLib::NewtonRaphsonSolverParameters const _nonlinear_solver_parameters
double computeFreeEnergyDensity(double const t, ParameterLib::SpatialPosition const &x, double const dt, KelvinVector const &eps, KelvinVector const &sigma, typename MechanicsBase< DisplacementDim >::MaterialStateVariables const &material_state_variables) const override
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > KelvinMatrix
Lubby2(NumLib::NewtonRaphsonSolverParameters nonlinear_solver_parameters, Lubby2MaterialProperties &material_properties)
Eigen::Matrix< double, JacobianResidualSize, 1 > ResidualVector
Lubby2MaterialProperties _mp
Eigen::Matrix< double, JacobianResidualSize, JacobianResidualSize, Eigen::RowMajor > JacobianMatrix
double getBulkModulus(double const t, ParameterLib::SpatialPosition const &x, KelvinMatrix const *const) const override
static int const JacobianResidualSize
static int const KelvinVectorSize
std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariables > createMaterialStateVariables() const override
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > KelvinVector
void calculateJacobianBurgers(double const t, ParameterLib::SpatialPosition const &x, double const dt, JacobianMatrix &Jac, double s_eff, const KelvinVector &sig_i, const KelvinVector &eps_K_i, detail::LocalLubby2Properties< DisplacementDim > const &properties) const
Calculates the 18x18 Jacobian.
void calculateResidualBurgers(double const dt, const KelvinVector &strain_curr, const KelvinVector &strain_t, const KelvinVector &stress_curr, const KelvinVector &stress_t, const KelvinVector &strain_Kel_curr, const KelvinVector &strain_Kel_t, const KelvinVector &strain_Max_curr, const KelvinVector &strain_Max_t, ResidualVector &res, detail::LocalLubby2Properties< DisplacementDim > const &properties) const
Calculates the 18x1 residual vector.
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
Lubby2MaterialProperties(P const &GK0_, P const &GM0_, P const &KM0_, P const &etaK0_, P const &etaM0_, P const &mK_, P const &mvK_, P const &mvM_)
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > KelvinVector
void setInitialConditions()
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > KelvinMatrix
void pushBackState() override
LocalLubby2Properties(double const t, ParameterLib::SpatialPosition const &x, Lubby2MaterialProperties const &mp)
void update(double const s_eff)