23 #include "custom_constitutive/elastic_isotropic_3d.h"
24 #include "custom_constitutive/linear_plane_strain.h"
26 #include "custom_utilities/constitutive_law_utilities.h"
60 template<
class TYieldSurfaceType>
62 :
public std::conditional<TYieldSurfaceType::VoigtSize == 6, ElasticIsotropic3D, LinearPlaneStrain >
::type
72 static constexpr
SizeType Dimension = TYieldSurfaceType::Dimension;
75 static constexpr
SizeType VoigtSize = TYieldSurfaceType::VoigtSize;
84 static constexpr
double machine_tolerance = std::numeric_limits<double>::epsilon();
86 static constexpr
double tolerance = 1.0e-8;
114 double NonLinearIndicator = 0.0;
115 double PlasticConsistencyIncrement = 0.0;
116 double UniaxialStress = 0.0;
117 double DamageDissipation = 0.0;
118 double DamageDissipationIncrement = 0.0;
119 double PlasticDissipation = 0.0;
120 double PlasticDissipationIncrement = 0.0;
121 double TotalDissipation = 0.0;
122 double CharacteristicLength = 0.0;
123 double Threshold = 0.0;
125 double PlasticDamageProportion = 0.5;
157 ConstitutiveLaw::Pointer Clone()
const override;
164 mPlasticDissipation(rOther.mPlasticDissipation),
165 mDamageDissipation(rOther.mDamageDissipation),
166 mThreshold(rOther.mThreshold),
167 mPlasticStrain(rOther.mPlasticStrain),
168 mOldStrain(rOther.mOldStrain),
169 mComplianceMatrix(rOther.mComplianceMatrix),
170 mComplianceMatrixCompression(rOther.mComplianceMatrixCompression)
234 const double& rValue,
257 double& CalculateValue(
270 void InitializeMaterial(
273 const Vector& rShapeFunctionsValues
367 void CalculateTangentTensor(
368 ConstitutiveLaw::ConstitutiveLaw::Parameters& rValues,
369 PlasticDamageParameters &rPlasticDamageParameters);
377 void CalculateElasticComplianceMatrix(
378 BoundedMatrixType& rConstitutiveMatrix,
387 const double Increment
390 if (Increment > machine_tolerance)
391 rToBeAdded += Increment;
399 return (Number > machine_tolerance) ? Number : 0.0;
406 void CalculatePlasticDissipationIncrement(
408 PlasticDamageParameters &rPlasticDamageParameters);
414 void CalculateDamageDissipationIncrement(
416 PlasticDamageParameters &rPlasticDamageParameters);
422 void CalculateThresholdAndSlope(
424 PlasticDamageParameters &rPlasticDamageParameters);
429 void CalculateFlowVector(
431 PlasticDamageParameters &rPlasticDamageParameters);
436 void CalculatePlasticStrainIncrement(
438 PlasticDamageParameters &rPlasticDamageParameters);
443 void CalculateComplianceMatrixIncrement(
445 PlasticDamageParameters &rPlasticDamageParameters);
450 void CalculatePlasticConsistencyIncrement(
452 PlasticDamageParameters &rPlasticDamageParameters);
457 void IntegrateStressPlasticDamageMechanics(
459 PlasticDamageParameters &rPlasticDamageParameters);
464 void CalculateConstitutiveMatrix(
466 PlasticDamageParameters &rPlasticDamageParameters);
471 void UpdateInternalVariables(
472 PlasticDamageParameters &rPlasticDamageParameters
478 void CheckMinimumFractureEnergy(
480 PlasticDamageParameters &rPDParameters
490 const double CharateristicLength,
496 rPlasticDamageParameters.
TotalDissipation = mPlasticDissipation + mDamageDissipation;
497 rPlasticDamageParameters.
Threshold = mThreshold;
510 void CalculateAnalyticalTangentTensor(
512 PlasticDamageParameters &rParam
542 static double CalculateVolumetricFractureEnergy(
544 PlasticDamageParameters &rPDParameters
552 double CalculatePlasticDenominator(
554 PlasticDamageParameters &rParam);
561 double CalculateThresholdImplicitExpression(
562 ResidualFunctionType &rF,
563 ResidualFunctionType &rdF_dk,
565 PlasticDamageParameters &rPDParameters,
573 double CalculateSlopeFiniteDifferences(
574 ResidualFunctionType &rF,
575 ResidualFunctionType &rdF_dk,
577 PlasticDamageParameters &rPDParameters,
585 ResidualFunctionType ExponentialSofteningImplicitFunction();
591 ResidualFunctionType ExponentialSofteningImplicitFunctionDerivative();
598 ResidualFunctionType ExponentialHardeningImplicitFunction();
604 ResidualFunctionType ExponentialHardeningImplicitFunctionDerivative();
633 double mPlasticDissipation = 0.0;
634 double mDamageDissipation = 0.0;
635 double mThreshold = 0.0;
636 BoundedVectorType mPlasticStrain =
ZeroVector(VoigtSize);
637 BoundedVectorType mOldStrain =
ZeroVector(VoigtSize);
638 BoundedMatrixType mComplianceMatrix =
ZeroMatrix(VoigtSize, VoigtSize);
639 BoundedMatrixType mComplianceMatrixCompression =
ZeroMatrix(VoigtSize, VoigtSize);
660 void save(
Serializer &rSerializer)
const override
663 rSerializer.
save(
"PlasticDissipation", mPlasticDissipation);
664 rSerializer.
save(
"DamageDissipation", mDamageDissipation);
665 rSerializer.
save(
"Threshold", mThreshold);
666 rSerializer.
save(
"PlasticStrain", mPlasticStrain);
667 rSerializer.
save(
"OldStrain", mOldStrain);
668 rSerializer.
save(
"ComplianceMatrix", mComplianceMatrix);
669 rSerializer.
save(
"ComplianceMatrixCompression", mComplianceMatrixCompression);
675 rSerializer.
load(
"PlasticDissipation", mPlasticDissipation);
676 rSerializer.
load(
"DamageDissipation", mDamageDissipation);
677 rSerializer.
load(
"Threshold", mThreshold);
678 rSerializer.
load(
"PlasticStrain", mPlasticStrain);
679 rSerializer.
load(
"OldStrain", mOldStrain);
680 rSerializer.
load(
"ComplianceMatrix", mComplianceMatrix);
681 rSerializer.
load(
"ComplianceMatrixCompression", mComplianceMatrixCompression);
This law defines a parallel rule of mixture (classic law of mixture)
Definition: associative_plastic_damage_model.h:63
ProcessInfo ProcessInfoType
The definition of the process info.
Definition: associative_plastic_damage_model.h:78
Node NodeType
The node definition.
Definition: associative_plastic_damage_model.h:89
std::size_t SizeType
Definition: associative_plastic_damage_model.h:70
void AddNonLinearDissipation(PlasticDamageParameters &rPDParameters)
This method increases the damage and plastic dissipation with the increment.
Definition: associative_plastic_damage_model.h:519
void InitializePlasticDamageParameters(const BoundedVectorType &rStrainVector, const Properties &rMaterialProperties, const double CharateristicLength, PlasticDamageParameters &rPlasticDamageParameters)
This method initializes all the values in the PlasticDamageParameters.
Definition: associative_plastic_damage_model.h:487
std::conditional< VoigtSize==6, ElasticIsotropic3D, LinearPlaneStrain >::type BaseType
The definition of the CL base class.
Definition: associative_plastic_damage_model.h:81
bool RequiresFinalizeMaterialResponse() override
If the CL requires to initialize the material response, called by the element in InitializeSolutionSt...
Definition: associative_plastic_damage_model.h:185
BoundedMatrix< double, VoigtSize, VoigtSize > BoundedMatrixType
The definition of the bounded matrix type.
Definition: associative_plastic_damage_model.h:98
AssociativePlasticDamageModel(const AssociativePlasticDamageModel &rOther)
Definition: associative_plastic_damage_model.h:162
std::function< double(const double, const double, ConstitutiveLaw::Parameters &, PlasticDamageParameters &)> ResidualFunctionType
The definition of the lambdas to compute implicitly the threshold.
Definition: associative_plastic_damage_model.h:129
void AddIfPositive(double &rToBeAdded, const double Increment)
This method add somehting if the increment is positive.
Definition: associative_plastic_damage_model.h:385
bool RequiresInitializeMaterialResponse() override
If the CL requires to initialize the material response, called by the element in InitializeSolutionSt...
Definition: associative_plastic_damage_model.h:177
AssociativePlasticDamageModel()
Default constructor.
Definition: associative_plastic_damage_model.h:137
KRATOS_CLASS_POINTER_DEFINITION(AssociativePlasticDamageModel)
Pointer definition of AssociativePlasticDamageModel.
array_1d< double, VoigtSize > BoundedVectorType
The definition of the Voigt array type.
Definition: associative_plastic_damage_model.h:95
~AssociativePlasticDamageModel() override
Destructor.
Definition: associative_plastic_damage_model.h:143
Geometry< NodeType > GeometryType
The geometry definition.
Definition: associative_plastic_damage_model.h:92
double MacaullyBrackets(const double Number)
This method evaluates the Macaulay brackets.
Definition: associative_plastic_damage_model.h:397
Definition: constitutive_law.h:47
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
static double max(double a, double b)
Definition: GeometryFunctions.h:79
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
KratosZeroMatrix< double > ZeroMatrix
Definition: amatrix_interface.h:559
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
TABLE_NUMBER_ANGULAR_VELOCITY TABLE_NUMBER_MOMENT I33 BEAM_INERTIA_ROT_UNIT_LENGHT_Y KRATOS_DEFINE_APPLICATION_VARIABLE(DEM_APPLICATION, double, BEAM_INERTIA_ROT_UNIT_LENGHT_Z) typedef std double
Definition: DEM_application_variables.h:182
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: associative_plastic_damage_model.h:103
BoundedMatrixType ComplianceMatrixCompression
Definition: associative_plastic_damage_model.h:106
double CharacteristicLength
Definition: associative_plastic_damage_model.h:122
double PlasticDissipationIncrement
Definition: associative_plastic_damage_model.h:120
double PlasticDissipation
Definition: associative_plastic_damage_model.h:119
double Threshold
Definition: associative_plastic_damage_model.h:123
double PlasticDamageProportion
Definition: associative_plastic_damage_model.h:125
BoundedVectorType PlasticStrain
Definition: associative_plastic_damage_model.h:110
double DamageDissipationIncrement
Definition: associative_plastic_damage_model.h:118
BoundedMatrixType ComplianceMatrix
Definition: associative_plastic_damage_model.h:105
BoundedVectorType StrainVector
Definition: associative_plastic_damage_model.h:112
double DamageDissipation
Definition: associative_plastic_damage_model.h:117
double TotalDissipation
Definition: associative_plastic_damage_model.h:121
Definition: constitutive_law.h:189