61 template <
class TYieldSurfaceType>
124 const double UniaxialStress,
128 const double CharacteristicLength
133 const int softening_type = r_material_properties[SOFTENING_TYPE];
134 double damage_parameter;
135 TYieldSurfaceType::CalculateDamageParameter(rValues, damage_parameter, CharacteristicLength);
137 switch (softening_type)
140 CalculateLinearDamage(UniaxialStress, rThreshold, damage_parameter, CharacteristicLength, rValues, rDamage);
146 KRATOS_ERROR <<
"SOFTENING_TYPE not defined or wrong..." << softening_type << std::endl;
149 rPredictiveStressVector *= (1.0 - rDamage);
161 const double UniaxialStress,
162 const double Threshold,
163 const double DamageParameter,
164 const double CharacteristicLength,
169 double initial_threshold;
170 TYieldSurfaceType::GetInitialUniaxialThreshold(rValues, initial_threshold);
171 rDamage = 1.0 - (initial_threshold / UniaxialStress) * std::exp(DamageParameter *
172 (1.0 - UniaxialStress / initial_threshold));
184 const double UniaxialStress,
185 const double Threshold,
186 const double DamageParameter,
187 const double CharacteristicLength,
192 double initial_threshold;
193 TYieldSurfaceType::GetInitialUniaxialThreshold(rValues, initial_threshold);
194 rDamage = (1.0 - initial_threshold / UniaxialStress) / (1.0 + DamageParameter);
207 TYieldSurfaceType::GetInitialUniaxialThreshold(rValues, rThreshold);
216 KRATOS_ERROR_IF_NOT(rMaterialProperties.
Has(SOFTENING_TYPE)) <<
"SOFTENING_TYPE is not a defined value" << std::endl;
217 return TYieldSurfaceType::Check(rMaterialProperties);
: This object integrates the predictive stress using the isotropic the d+d- damage theory
Definition: generic_tension_cl_integrator.h:63
static constexpr SizeType VoigtSize
The define the Voigt size, already defined in the yield surface.
Definition: generic_tension_cl_integrator.h:76
virtual ~GenericTensionConstitutiveLawIntegratorDplusDminusDamage()
Destructor.
Definition: generic_tension_cl_integrator.h:101
static void CalculateLinearDamage(const double UniaxialStress, const double Threshold, const double DamageParameter, const double CharacteristicLength, ConstitutiveLaw::Parameters &rValues, double &rDamage)
This computes the damage variable according to linear softening.
Definition: generic_tension_cl_integrator.h:183
static void GetInitialUniaxialThreshold(ConstitutiveLaw::Parameters &rValues, double &rThreshold)
This method returns the initial uniaxial stress threshold.
Definition: generic_tension_cl_integrator.h:202
KRATOS_CLASS_POINTER_DEFINITION(GenericTensionConstitutiveLawIntegratorDplusDminusDamage)
Counted pointer of GenericTensionConstitutiveLawIntegratorDplusDminusDamage.
TYieldSurfaceType YieldSurfaceType
The type of yield surface.
Definition: generic_tension_cl_integrator.h:70
GenericTensionConstitutiveLawIntegratorDplusDminusDamage()
Initialization constructor.
Definition: generic_tension_cl_integrator.h:85
YieldSurfaceType::PlasticPotentialType PlasticPotentialType
The type of plastic potential.
Definition: generic_tension_cl_integrator.h:79
static void CalculateExponentialDamage(const double UniaxialStress, const double Threshold, const double DamageParameter, const double CharacteristicLength, ConstitutiveLaw::Parameters &rValues, double &rDamage)
This computes the damage variable according to exponential softening.
Definition: generic_tension_cl_integrator.h:160
GenericTensionConstitutiveLawIntegratorDplusDminusDamage & operator=(GenericTensionConstitutiveLawIntegratorDplusDminusDamage const &rOther)
Assignment operator.
Definition: generic_tension_cl_integrator.h:95
GenericTensionConstitutiveLawIntegratorDplusDminusDamage(GenericTensionConstitutiveLawIntegratorDplusDminusDamage const &rOther)
Copy constructor.
Definition: generic_tension_cl_integrator.h:90
static int Check(const Properties &rMaterialProperties)
This method defines in the CL integrator.
Definition: generic_tension_cl_integrator.h:214
static constexpr SizeType Dimension
The define the working dimension size, already defined in the yield surface.
Definition: generic_tension_cl_integrator.h:73
static void IntegrateStressVector(array_1d< double, VoigtSize > &rPredictiveStressVector, const double UniaxialStress, double &rDamage, double &rThreshold, ConstitutiveLaw::Parameters &rValues, const double CharacteristicLength)
This method integrates the predictive stress vector with the CL using linear or exponential softening...
Definition: generic_tension_cl_integrator.h:122
Properties encapsulates data shared by different Elements or Conditions. It can store any type of dat...
Definition: properties.h:69
bool Has(TVariableType const &rThisVariable) const
Definition: properties.h:578
#define KRATOS_ERROR
Definition: exception.h:161
#define KRATOS_ERROR_IF_NOT(conditional)
Definition: exception.h:163
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
std::size_t SizeType
The definition of the size type.
Definition: mortar_classes.h:43
Definition: constitutive_law.h:189
const Properties & GetMaterialProperties()
Definition: constitutive_law.h:457