49 if (s ==
"PlasticDamageSecant")
57 OGS_FATAL(
"Not valid string '{:s}' to create a tangent type from.", s);
68 P const& beta_,
P const& gamma_,
69 P const& delta_,
P const& epsilon_,
70 P const& m_,
P const& alpha_p_,
71 P const& beta_p_,
P const& gamma_p_,
72 P const& delta_p_,
P const& epsilon_p_,
73 P const& m_p_,
P const& kappa_,
74 P const& hardening_coefficient_)
186template <
typename KelvinVector>
191 double const eps_p_eff_)
192 :
D(std::move(eps_p_D_)),
V(eps_p_V_),
eff(eps_p_eff_){};
220template <
int DisplacementDim>
222 :
public MechanicsBase<DisplacementDim>::MaterialStateVariables
256 <<
"eps_p_D: " << m.
eps_p.D <<
"\n"
257 <<
"eps_p_eff: " << m.
eps_p.eff <<
"\n"
261 <<
"eps_p_eff_prev: " << m.
eps_p_prev.eff <<
"\n"
271template <
int DisplacementDim>
291 return std::make_unique<StateVariables<DisplacementDim>>();
304 std::unique_ptr<DamagePropertiesParameters>&& damage_properties,
314 material_state_variables)
const override;
318 DisplacementDim>::MaterialStateVariables>,
325 material_state_variables)
const override;
327 std::vector<typename MechanicsBase<DisplacementDim>::InternalVariable>
340 return _mp.
K(t, x)[0];
double _kappa_d
damage driving variable
Damage(double const kappa_d, double const value)
double _value
isotropic damage variable
std::vector< typename MechanicsBase< DisplacementDim >::InternalVariable > getInternalVariables() const override
MaterialPropertiesParameters _mp
NumLib::NewtonRaphsonSolverParameters const _nonlinear_solver_parameters
static int const KelvinVectorSize
Eigen::Matrix< double, JacobianResidualSize, JacobianResidualSize, Eigen::RowMajor > JacobianMatrix
TangentType const _tangent_type
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
std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariables > createMaterialStateVariables() const override
MaterialProperties evaluatedMaterialProperties(double const t, ParameterLib::SpatialPosition const &x) const
static int const JacobianResidualSize
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > KelvinVector
std::unique_ptr< DamagePropertiesParameters > _damage_properties
double getBulkModulus(double const t, ParameterLib::SpatialPosition const &x, KelvinMatrix const *const) const override
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > KelvinMatrix
Eigen::Matrix< double, JacobianResidualSize, 1 > ResidualVectorType
SolidEhlers(NumLib::NewtonRaphsonSolverParameters nonlinear_solver_parameters, MaterialPropertiesParameters material_properties, std::unique_ptr< DamagePropertiesParameters > &&damage_properties, TangentType tangent_type)
DamageProperties evaluatedDamageProperties(double const t, ParameterLib::SpatialPosition const &x) const
double computeFreeEnergyDensity(double const, ParameterLib::SpatialPosition const &, double const, KelvinVector const &eps, KelvinVector const &sigma, typename MechanicsBase< DisplacementDim >::MaterialStateVariables const &material_state_variables) const override
TangentType makeTangentType(std::string const &s)
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
DamageProperties(double const t, ParameterLib::SpatialPosition const &x, DamagePropertiesParameters const &dp)
P const & hardening_coefficient
MaterialPropertiesParameters(P const &G_, P const &K_, P const &alpha_, P const &beta_, P const &gamma_, P const &delta_, P const &epsilon_, P const &m_, P const &alpha_p_, P const &beta_p_, P const &gamma_p_, P const &delta_p_, P const &epsilon_p_, P const &m_p_, P const &kappa_, P const &hardening_coefficient_)
P const & kappa
hardening parameter
double const hardening_coefficient
MaterialProperties(double const t, ParameterLib::SpatialPosition const &x, MaterialPropertiesParameters const &mp)
double V
volumetric strain
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
PlasticStrain(KelvinVector eps_p_D_, double const eps_p_V_, double const eps_p_eff_)
KelvinVector D
deviatoric plastic strain
double eff
effective plastic strain
void pushBackState() override
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
Damage damage_prev
damage part of the state.
void setInitialConditions()
Damage damage
damage part of the state.
static int const KelvinVectorSize
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > KelvinVector
PlasticStrain< KelvinVector > eps_p
plastic part of the state.
double getEquivalentPlasticStrain() const override
PlasticStrain< KelvinVector > eps_p_prev
plastic part of the state.
friend std::ostream & operator<<(std::ostream &os, StateVariables< DisplacementDim > const &m)