45 if (s ==
"PlasticDamageSecant")
53 OGS_FATAL(
"Not valid string '{:s}' to create a tangent type from.", s);
64 P const& beta_,
P const& gamma_,
65 P const& delta_,
P const& epsilon_,
66 P const& m_,
P const& alpha_p_,
67 P const& beta_p_,
P const& gamma_p_,
68 P const& delta_p_,
P const& epsilon_p_,
69 P const& m_p_,
P const& kappa_,
70 P const& hardening_coefficient_)
182template <
typename KelvinVector>
187 double const eps_p_eff_)
188 :
D(std::move(eps_p_D_)),
V(eps_p_V_),
eff(eps_p_eff_){};
216template <
int DisplacementDim>
218 :
public MechanicsBase<DisplacementDim>::MaterialStateVariables
252 <<
"eps_p_D: " << m.
eps_p.D <<
"\n"
253 <<
"eps_p_eff: " << m.
eps_p.eff <<
"\n"
257 <<
"eps_p_eff_prev: " << m.
eps_p_prev.eff <<
"\n"
267template <
int DisplacementDim>
287 return std::make_unique<StateVariables<DisplacementDim>>();
300 std::unique_ptr<DamagePropertiesParameters>&& damage_properties,
310 material_state_variables)
const override;
321 material_state_variables)
const override;
323 std::vector<typename MechanicsBase<DisplacementDim>::InternalVariable>
336 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
ParameterLib::Parameter< double > P
DamageProperties(double const t, ParameterLib::SpatialPosition const &x, DamagePropertiesParameters const &dp)
ParameterLib::Parameter< double > P
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
MathLib::KelvinVector::Invariants< KelvinVectorSize > Invariants
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)