48 static constexpr
double tolerance = std::numeric_limits<double>::epsilon();
67 ConstitutiveLaw::Pointer Clone()
const override;
157 double& rValue)
override;
206 const double& rValue,
261 bool ValidateInput(
const Properties& rMaterialProperties)
override;
280 bool IsIncremental()
override;
290 void InitializeMaterial(
293 const Vector& rShapeFunctionsValues)
override;
299 void InitializeMaterialResponsePK2 (
313 const Vector& rShapeFunctionsValues,
324 void FinalizeSolutionStep(
327 const Vector& rShapeFunctionsValues,
389 const Vector& rShapeFunctionsValues)
override;
395 void GetLawFeatures(
Features& rFeatures)
override;
409 const ProcessInfo& rCurrentProcessInfo)
const override;
412 void CalculateMaterialResponse(
const Vector& StrainVector,
413 const Matrix& DeformationGradient,
415 Matrix& AlgorithmicTangent,
419 const Vector& rShapeFunctionsValues,
420 bool CalculateStresses =
true,
421 int CalculateTangent =
true,
422 bool SaveInternalVariables =
true);
430 bool InitializeDamageLaw =
false;
435 double PreviousThresholdTension = 0.0;
double PreviousThresholdCompression = 0.0;
438 double CurrentThresholdTension = 0.0;
double CurrentThresholdCompression = 0.0;
439 double ThresholdTension = 0.0;
double ThresholdCompression = 0.0;
442 double DamageParameterTension = 0.0;
double DamageParameterCompression = 0.0;
443 double UniaxialStressTension = 0.0;
double UniaxialStressCompression = 0.0;
446 double InitialCharacteristicLength = 0.0;
449 double CurrentDeltaTime = 0.0;
450 double PreviousDeltaTime = 0.0;
453 double TemporaryImplicitThresholdTension = 0.0;
454 double TemporaryImplicitThresholdTCompression = 0.0;
470 void InitializeCalculationData(
480 void CalculateElasticityMatrix(
487 void TensionCompressionSplit(
494 void ConstructProjectionTensors(
502 void CalculateEquivalentStressTension(
504 double& UniaxialStressTension);
511 void CalculateEquivalentStressCompression(
513 double& UniaxialStressCompression);
522 void CalculateDamageTension(
524 double internal_variable,
525 double& rDamageTension);
574 void CalculateDamageCompression(
576 double internal_variable,
586 void ComputeBezierEnergy(
587 double& rBezierEnergy,
588 double& rBezierEnergy1,
589 double s_p,
double s_k,
double s_r,
590 double e_p,
double e_j,
double e_k,
double e_r,
double e_u);
597 double EvaluateBezierArea(
598 double x1,
double x2,
double x3,
599 double y1,
double y2,
double y3);
607 void ApplyBezierStretcherToStrains(
608 double stretcher,
double e_p,
double& e_j,
609 double& e_k,
double& e_r,
double& e_u);
618 void EvaluateBezierCurve(
619 double& rDamageParameter,
double xi,
620 double x1,
double x2,
double x3,
621 double y1,
double y2,
double y3);
628 void ComputeCharacteristicLength(
630 double& rCharacteristicLength);
638 void CalculateMaterialResponseInternal(
639 const Vector& strain_vector,
649 void CheckDamageLoadingUnloading(
650 bool& is_damaging_tension,
651 bool& is_damaging_compression);
660 void CalculateTangentTensor(
672 void CalculateSecantTensor(
711 void save(
Serializer& rSerializer)
const override
Definition: constitutive_law.h:47
StrainMeasure
Definition: constitutive_law.h:52
StressMeasure
Definition: constitutive_law.h:69
Definition: plane_stress_d_plus_d_minus_damage_masonry_2d.h:33
~DamageDPlusDMinusMasonry2DLaw() override
Definition: plane_stress_d_plus_d_minus_damage_masonry_2d.h:60
SizeType WorkingSpaceDimension() override
returns the working space dimension of the current constitutive law
Definition: plane_stress_d_plus_d_minus_damage_masonry_2d.h:72
SizeType GetStrainSize() const override
returns the size of the strain vector of the current constitutive law
Definition: plane_stress_d_plus_d_minus_damage_masonry_2d.h:80
KRATOS_CLASS_POINTER_DEFINITION(DamageDPlusDMinusMasonry2DLaw)
Geometry base class.
Definition: geometry.h:71
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
#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
void InitializeSolutionStep(ConstructionUtility &rThisUtil, std::string ThermalSubModelPartName, std::string MechanicalSubModelPartName, std::string HeatFluxSubModelPartName, std::string HydraulicPressureSubModelPartName, bool thermal_conditions, bool mechanical_conditions, int phase)
Definition: add_custom_utilities_to_python.cpp:45
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
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
x2
Definition: generate_frictional_mortar_condition.py:122
x1
Definition: generate_frictional_mortar_condition.py:121
data
Definition: mesh_to_mdpa_converter.py:59
def load(f)
Definition: ode_solve.py:307
Definition: constitutive_law.h:137
Definition: constitutive_law.h:189
Definition: plane_stress_d_plus_d_minus_damage_masonry_2d.h:85
double BiaxialCompressionMultiplier
Definition: plane_stress_d_plus_d_minus_damage_masonry_2d.h:99
Matrix ProjectionTensorCompression
Definition: plane_stress_d_plus_d_minus_damage_masonry_2d.h:104
double ResidualStressCompression
Definition: plane_stress_d_plus_d_minus_damage_masonry_2d.h:96
double BezierControllerC3
Definition: plane_stress_d_plus_d_minus_damage_masonry_2d.h:98
double DamageOnsetStressCompression
Definition: plane_stress_d_plus_d_minus_damage_masonry_2d.h:95
array_1d< double, 3 > EffectiveStressVector
Definition: plane_stress_d_plus_d_minus_damage_masonry_2d.h:102
double FractureEnergyTension
Definition: plane_stress_d_plus_d_minus_damage_masonry_2d.h:92
array_1d< double, 3 > EffectiveCompressionStressVector
Definition: plane_stress_d_plus_d_minus_damage_masonry_2d.h:103
double PoissonRatio
Definition: plane_stress_d_plus_d_minus_damage_masonry_2d.h:88
Matrix ElasticityMatrix
Definition: plane_stress_d_plus_d_minus_damage_masonry_2d.h:89
double CharacteristicLength
Definition: plane_stress_d_plus_d_minus_damage_masonry_2d.h:107
int TensionYieldModel
Definition: plane_stress_d_plus_d_minus_damage_masonry_2d.h:108
double BezierControllerC1
Definition: plane_stress_d_plus_d_minus_damage_masonry_2d.h:97