61 template <
class TYieldSurfaceType>
124 const double UniaxialStress,
128 const double CharacteristicLength
132 const int softening_type = r_material_properties.
Has(SOFTENING_TYPE_COMPRESSION) ? r_material_properties[SOFTENING_TYPE_COMPRESSION] : r_material_properties[SOFTENING_TYPE];
133 double damage_parameter;
136 switch (softening_type)
139 CalculateLinearDamage(UniaxialStress, rThreshold, damage_parameter, CharacteristicLength, rValues, rDamage);
145 KRATOS_ERROR <<
"SOFTENING_TYPE not defined or wrong..." << softening_type << std::endl;
148 rPredictiveStressVector *= (1.0 - rDamage);
158 double& rDamageParameter,
159 const double CharacteristicLength
162 const double fracture_energy_compression = rValues.
GetMaterialProperties()[FRACTURE_ENERGY_COMPRESSION];
165 r_properties.
SetValue(FRACTURE_ENERGY, fracture_energy_compression);
167 TYieldSurfaceType::CalculateDamageParameter(modified_values, rDamageParameter, CharacteristicLength);
181 if (YieldSurfaceType::IsWorkingWithTensionThreshold()) {
185 material_props.
SetValue(YIELD_STRESS_TENSION, yield_compression);
187 TYieldSurfaceType::GetInitialUniaxialThreshold(modified_ones, rThreshold);
189 TYieldSurfaceType::GetInitialUniaxialThreshold(rValues, rThreshold);
202 const double UniaxialStress,
203 const double Threshold,
204 const double DamageParameter,
205 const double CharacteristicLength,
210 double initial_threshold;
212 rDamage = 1.0 - (initial_threshold / UniaxialStress) * std::exp(DamageParameter *
213 (1.0 - UniaxialStress / initial_threshold));
225 const double UniaxialStress,
226 const double Threshold,
227 const double DamageParameter,
228 const double CharacteristicLength,
233 double initial_threshold;
235 rDamage = (1.0 - initial_threshold / UniaxialStress) / (1.0 + DamageParameter);
244 KRATOS_ERROR_IF_NOT(rMaterialProperties.
Has(SOFTENING_TYPE)) <<
"MAXIMUM_STRESS is not a defined value" << std::endl;
245 KRATOS_ERROR_IF_NOT(rMaterialProperties.
Has(YIELD_STRESS_TENSION)) <<
"YIELD_STRESS_TENSION is not a defined value" << std::endl;
246 KRATOS_ERROR_IF_NOT(rMaterialProperties.
Has(YIELD_STRESS_COMPRESSION)) <<
"YIELD_STRESS_COMPRESSION is not a defined value" << std::endl;
247 KRATOS_ERROR_IF_NOT(rMaterialProperties.
Has(YOUNG_MODULUS)) <<
"YOUNG_MODULUS is not a defined value" << std::endl;
248 KRATOS_ERROR_IF_NOT(rMaterialProperties.
Has(FRACTURE_ENERGY)) <<
"FRACTURE_ENERGY is not a defined value" << std::endl;
250 return TYieldSurfaceType::Check(rMaterialProperties);
: This object integrates the predictive stress using the isotropic the d+d- damage theory
Definition: generic_compression_cl_integrator.h:63
static void GetInitialUniaxialThreshold(ConstitutiveLaw::Parameters &rValues, double &rThreshold)
This method returns the initial uniaxial stress threshold.
Definition: generic_compression_cl_integrator.h:175
TYieldSurfaceType YieldSurfaceType
The type of yield surface.
Definition: generic_compression_cl_integrator.h:70
GenericCompressionConstitutiveLawIntegratorDplusDminusDamage(GenericCompressionConstitutiveLawIntegratorDplusDminusDamage const &rOther)
Copy constructor.
Definition: generic_compression_cl_integrator.h:90
static int Check(const Properties &rMaterialProperties)
This method defines in the CL integrator.
Definition: generic_compression_cl_integrator.h:242
YieldSurfaceType::PlasticPotentialType PlasticPotentialType
The type of plastic potential.
Definition: generic_compression_cl_integrator.h:79
virtual ~GenericCompressionConstitutiveLawIntegratorDplusDminusDamage()
Destructor.
Definition: generic_compression_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_compression_cl_integrator.h:224
KRATOS_CLASS_POINTER_DEFINITION(GenericCompressionConstitutiveLawIntegratorDplusDminusDamage)
Counted pointer of GenericCompressionConstitutiveLawIntegratorDplusDminusDamage.
static constexpr SizeType VoigtSize
The define the Voigt size, already defined in the yield surface.
Definition: generic_compression_cl_integrator.h:76
static void CalculateDamageParameterCompression(ConstitutiveLaw::Parameters &rValues, double &rDamageParameter, const double CharacteristicLength)
This method returns the initial uniaxial stress threshold.
Definition: generic_compression_cl_integrator.h:156
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_compression_cl_integrator.h:122
static constexpr SizeType Dimension
The define the working dimension size, already defined in the yield surface.
Definition: generic_compression_cl_integrator.h:73
GenericCompressionConstitutiveLawIntegratorDplusDminusDamage()
Initialization constructor.
Definition: generic_compression_cl_integrator.h:85
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_compression_cl_integrator.h:201
GenericCompressionConstitutiveLawIntegratorDplusDminusDamage & operator=(GenericCompressionConstitutiveLawIntegratorDplusDminusDamage const &rOther)
Assignment operator.
Definition: generic_compression_cl_integrator.h:95
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
void SetValue(TVariableType const &rV, typename TVariableType::Type const &rValue)
Definition: properties.h:287
#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
void SetMaterialProperties(const Properties &rMaterialProperties)
Definition: constitutive_law.h:406
const Properties & GetMaterialProperties()
Definition: constitutive_law.h:457