22 #include "custom_constitutive/elastic_isotropic_3d.h"
23 #include "custom_constitutive/linear_plane_strain.h"
57 template <
class TPlasticityIntegratorType,
class TDamageIntegratorType>
59 :
public std::conditional<TPlasticityIntegratorType::VoigtSize == 6, ElasticIsotropic3D, LinearPlaneStrain >
::type
69 static constexpr
SizeType Dimension = TPlasticityIntegratorType::Dimension;
72 static constexpr
SizeType VoigtSize = TPlasticityIntegratorType::VoigtSize;
93 static constexpr
double tolerance = std::numeric_limits<double>::epsilon();
99 double DamageIndicator = 0.0;
100 double PlasticityIndicator = 0.0;
104 double DamageIncrement = 0.0;
105 double PlasticConsistencyIncrement = 0.0;
106 double UniaxialStressPlasticity = 0.0;
107 double UniaxialStressDamage = 0.0;
108 double HardeningParameterDamage = 0.0;
109 double DamageDissipationIncrement = 0.0;
111 double CharacteristicLength = 0.0;
113 double PlasticDissipation = 0.0;
114 double DamageDissipation = 0.0;
115 double DamageThreshold = 0.0;
116 double PlasticityThreshold = 0.0;
117 double PlasticDenominator = 0.0;
118 double UndamagedFreeEnergy = 0.0;
134 ConstitutiveLaw::Pointer
Clone()
const override
136 return Kratos::make_shared<GenericSmallStrainPlasticDamageModel<TPlasticityIntegratorType, TDamageIntegratorType>>(*this);
144 mPlasticDissipation(rOther.mPlasticDissipation),
145 mThresholdPlasticity(rOther.mThresholdPlasticity),
146 mPlasticStrain(rOther.mPlasticStrain),
147 mThresholdDamage(rOther.mThresholdDamage),
148 mDamage(rOther.mDamage)
197 void InitializeMaterial(
200 const Vector& rShapeFunctionsValues
279 const double& rValue,
351 double& CalculateValue(
354 double& rValue)
override;
416 double CalculateDamageParameters(
417 PlasticDamageParameters& rParameters,
418 const Matrix& rElasticMatrix,
429 void CalculateIndicatorsFactors(
431 double& rTensileIndicatorFactor,
432 double& rCompressionIndicatorFactor,
433 double& rSumPrincipalStresses,
440 void CheckInternalVariable(
441 double& rInternalVariable);
461 void CalculateIncrementsPlasticDamageCase(
462 PlasticDamageParameters& rParameters,
463 const Matrix& rElasticMatrix);
482 double CalculatePlasticParameters(
483 PlasticDamageParameters& rParameters,
484 const Matrix& rConstitutiveMatrix,
496 void CalculatePlasticDenominator(
499 const Matrix& rConstitutiveMatrix,
500 double& rHardeningParameter,
502 double& rPlasticDenominator);
568 double mPlasticDissipation = 0.0;
569 double mThresholdPlasticity = 0.0;
571 double mThresholdDamage = 0.0;
572 double mDamage = 0.0;
573 double mDamageDissipation = 0.0;
576 double mUniaxialStress = 0.0;
608 void save(
Serializer &rSerializer)
const override
611 rSerializer.
save(
"PlasticDissipation", mPlasticDissipation);
612 rSerializer.
save(
"ThresholdPlasticity", mThresholdPlasticity);
613 rSerializer.
save(
"PlasticStrain", mPlasticStrain);
614 rSerializer.
save(
"ThresholdDamage", mThresholdDamage);
615 rSerializer.
save(
"Damage", mDamage);
616 rSerializer.
save(
"DamageDissipation", mDamageDissipation);
622 rSerializer.
load(
"PlasticDissipation", mPlasticDissipation);
623 rSerializer.
load(
"ThresholdPlasticity", mThresholdPlasticity);
624 rSerializer.
load(
"PlasticStrain", mPlasticStrain);
625 rSerializer.
load(
"ThresholdDamage", mThresholdDamage);
626 rSerializer.
load(
"Damage", mDamage);
627 rSerializer.
load(
"DamageDissipation", mDamageDissipation);
Definition: constitutive_law.h:47
This class is the base class which define the Plastic Damage model developed by Luccioni B....
Definition: generic_small_strain_plastic_damage_model.h:60
void SetPlasticDissipation(const double PlasticDissipation)
Definition: generic_small_strain_plastic_damage_model.h:539
void SetPlasticStrain(const array_1d< double, VoigtSize > &rPlasticStrain)
Definition: generic_small_strain_plastic_damage_model.h:540
KRATOS_CLASS_POINTER_DEFINITION(GenericSmallStrainPlasticDamageModel)
Counted pointer of GenericSmallStrainPlasticDamageModel.
double & GetPlasticDissipation()
Definition: generic_small_strain_plastic_damage_model.h:535
Node NodeType
The node definition.
Definition: generic_small_strain_plastic_damage_model.h:87
array_1d< double, VoigtSize > BoundedArrayType
The definition of the Voigt array type.
Definition: generic_small_strain_plastic_damage_model.h:78
~GenericSmallStrainPlasticDamageModel() override
Definition: generic_small_strain_plastic_damage_model.h:155
void SetThresholdPlasticity(const double ThresholdPlasticity)
Definition: generic_small_strain_plastic_damage_model.h:538
Vector & GetPlasticStrain()
Definition: generic_small_strain_plastic_damage_model.h:536
GenericSmallStrainPlasticDamageModel()
Definition: generic_small_strain_plastic_damage_model.h:127
bool RequiresFinalizeMaterialResponse() override
If the CL requires to initialize the material response, called by the element in InitializeSolutionSt...
Definition: generic_small_strain_plastic_damage_model.h:339
std::size_t IndexType
Definition: generic_small_strain_plastic_damage_model.h:66
Geometry< NodeType > GeometryType
The geometry definition.
Definition: generic_small_strain_plastic_damage_model.h:90
ConstitutiveLaw::Pointer Clone() const override
Definition: generic_small_strain_plastic_damage_model.h:134
std::conditional< VoigtSize==6, ElasticIsotropic3D, LinearPlaneStrain >::type BaseType
Definition of the base class.
Definition: generic_small_strain_plastic_damage_model.h:75
double & GetThresholdPlasticity()
Definition: generic_small_strain_plastic_damage_model.h:534
bool RequiresInitializeMaterialResponse() override
If the CL requires to initialize the material response, called by the element in InitializeSolutionSt...
Definition: generic_small_strain_plastic_damage_model.h:331
BoundedMatrix< double, Dimension, Dimension > BoundedMatrixType
The definition of the bounded matrix type.
Definition: generic_small_strain_plastic_damage_model.h:81
GenericSmallStrainPlasticDamageModel(const GenericSmallStrainPlasticDamageModel &rOther)
Definition: generic_small_strain_plastic_damage_model.h:142
Geometry base class.
Definition: geometry.h:71
Definition: amatrix_interface.h:41
This class defines the node.
Definition: node.h:65
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
Properties encapsulates data shared by different Elements or Conditions. It can store any type of dat...
Definition: properties.h:69
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
void load(std::string const &rTag, TDataType &rObject)
Definition: serializer.h:207
void save(std::string const &rTag, std::array< TDataType, TDataSize > const &rObject)
Definition: serializer.h:545
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_SERIALIZE_LOAD_BASE_CLASS(Serializer, BaseType)
Definition: define.h:815
bool Has(const std::string &ModelerName)
Checks if the modeler is registered.
Definition: modeler_factory.cpp:24
Parameters GetValue(Parameters &rParameters, const std::string &rEntry)
Definition: add_kratos_parameters_to_python.cpp:53
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
KratosZeroVector< double > ZeroVector
Definition: amatrix_interface.h:561
std::size_t SizeType
The definition of the size type.
Definition: mortar_classes.h:43
def SetValue(entity, variable, value)
Definition: coupling_interface_data.py:256
type
Definition: generate_gid_list_file.py:35
def load(f)
Definition: ode_solve.py:307
Definition: constitutive_law.h:189
Definition: generic_small_strain_plastic_damage_model.h:95
array_1d< double, VoigtSize > PlasticityGFLux
Definition: generic_small_strain_plastic_damage_model.h:97
array_1d< double, VoigtSize > PlasticStrain
Definition: generic_small_strain_plastic_damage_model.h:101
array_1d< double, VoigtSize > StrainVector
Definition: generic_small_strain_plastic_damage_model.h:102
array_1d< double, VoigtSize > DamageYieldFLux
Definition: generic_small_strain_plastic_damage_model.h:98
array_1d< double, VoigtSize > PlasticStrainIncrement
Definition: generic_small_strain_plastic_damage_model.h:110
array_1d< double, VoigtSize > StressVector
Definition: generic_small_strain_plastic_damage_model.h:103
array_1d< double, VoigtSize > PlasticityFFLux
Definition: generic_small_strain_plastic_damage_model.h:96