23 #include "custom_constitutive/linear_plane_strain.h"
56 template <
class TConstLawIntegratorTensionType,
class TConstLawIntegratorCompressionType>
58 :
public std::conditional<TConstLawIntegratorTensionType::VoigtSize == 6, ElasticIsotropic3D, LinearPlaneStrain >
::type
65 static constexpr
SizeType Dimension = TConstLawIntegratorTensionType::Dimension;
68 static constexpr
SizeType VoigtSize = TConstLawIntegratorTensionType::VoigtSize;
83 static constexpr
double tolerance = std::numeric_limits<double>::epsilon();
86 double DamageTension = 0.0;
87 double DamageCompression = 0.0;
88 double ThresholdTension = 0.0;
89 double ThresholdCompression = 0.0;
92 double UniaxialTensionStress = 0.0;
93 double UniaxialCompressionStress = 0.0;
109 ConstitutiveLaw::Pointer
Clone()
const override
111 return Kratos::make_shared<GenericSmallStrainDplusDminusDamage<TConstLawIntegratorTensionType, TConstLawIntegratorCompressionType>>(*this);
119 mTensionDamage(rOther.mTensionDamage),
120 mTensionThreshold(rOther.mTensionThreshold),
121 mNonConvTensionDamage(rOther.mNonConvTensionDamage),
122 mNonConvTensionThreshold(rOther.mNonConvTensionThreshold),
123 mCompressionDamage(rOther.mCompressionDamage),
124 mCompressionThreshold(rOther.mCompressionThreshold),
125 mNonConvCompressionDamage(rOther.mNonConvCompressionDamage),
126 mNonConvCompressionThreshold(rOther.mNonConvCompressionThreshold)
173 bool IntegrateStressTensionIfNecessary(
174 const double F_tension,
184 bool IntegrateStressCompressionIfNecessary(
185 const double F_compression,
194 void CalculateIntegratedStressVector(
195 Vector& IntegratedStressVectorTension,
207 void InitializeMaterial(
210 const Vector& rShapeFunctionsValues
221 void FinalizeSolutionStep(
224 const Vector& rShapeFunctionsValues,
280 const double& rValue,
340 double& CalculateValue(
343 double& rValue)
override;
466 double mTensionDamage = 0.0;
467 double mTensionThreshold = 0.0;
470 double mNonConvTensionDamage = 0.0;
471 double mNonConvTensionThreshold = 0.0;
473 double mCompressionDamage = 0.0;
474 double mCompressionThreshold = 0.0;
478 double mNonConvCompressionDamage = 0.0;
479 double mNonConvCompressionThreshold = 0.0;
481 double mTensionUniaxialStress = 0.0;
482 double mCompressionUniaxialStress = 0.0;
519 void save(
Serializer &rSerializer)
const override
522 rSerializer.
save(
"TensionDamage", mTensionDamage);
523 rSerializer.
save(
"TensionThreshold", mTensionThreshold);
524 rSerializer.
save(
"NonConvTensionDamage", mNonConvTensionDamage);
525 rSerializer.
save(
"NonConvTensionThreshold", mNonConvTensionThreshold);
526 rSerializer.
save(
"CompressionDamage", mCompressionDamage);
527 rSerializer.
save(
"CompressionThreshold", mCompressionThreshold);
528 rSerializer.
save(
"NonConvCompressionnDamage", mNonConvCompressionDamage);
529 rSerializer.
save(
"NonConvCompressionThreshold", mNonConvCompressionThreshold);
535 rSerializer.
load(
"TensionDamage", mTensionDamage);
536 rSerializer.
load(
"TensionThreshold", mTensionThreshold);
537 rSerializer.
load(
"NonConvTensionDamage", mNonConvTensionDamage);
538 rSerializer.
load(
"NonConvTensionThreshold", mNonConvTensionThreshold);
539 rSerializer.
load(
"CompressionDamage", mCompressionDamage);
540 rSerializer.
load(
"CompressionThreshold", mCompressionThreshold);
541 rSerializer.
load(
"NonConvCompressionnDamage", mNonConvCompressionDamage);
542 rSerializer.
load(
"NonConvCompressionThreshold", mNonConvCompressionThreshold);
Definition: constitutive_law.h:47
This class is the base class which define all the constitutive laws for damage in small deformation.
Definition: generic_small_strain_d_plus_d_minus_damage.h:59
ConstitutiveLaw::Pointer Clone() const override
Definition: generic_small_strain_d_plus_d_minus_damage.h:109
double & GetCompressionThreshold()
Definition: generic_small_strain_d_plus_d_minus_damage.h:431
std::conditional< VoigtSize==6, ElasticIsotropic3D, LinearPlaneStrain >::type BaseType
Definition of the base class.
Definition: generic_small_strain_d_plus_d_minus_damage.h:71
Geometry< NodeType > GeometryType
The geometry definition.
Definition: generic_small_strain_d_plus_d_minus_damage.h:80
void SetCompressionDamage(const double toDamage)
Definition: generic_small_strain_d_plus_d_minus_damage.h:437
double & GetNonConvCompressionDamage()
Definition: generic_small_strain_d_plus_d_minus_damage.h:434
GenericSmallStrainDplusDminusDamage()
Definition: generic_small_strain_d_plus_d_minus_damage.h:102
void SetNonConvTensionThreshold(const double toThreshold)
Definition: generic_small_strain_d_plus_d_minus_damage.h:427
double & GetNonConvTensionDamage()
Definition: generic_small_strain_d_plus_d_minus_damage.h:423
double & GetTensionThreshold()
Definition: generic_small_strain_d_plus_d_minus_damage.h:420
bool RequiresFinalizeMaterialResponse() override
If the CL requires to initialize the material response, called by the element in InitializeSolutionSt...
Definition: generic_small_strain_d_plus_d_minus_damage.h:320
bool RequiresInitializeMaterialResponse() override
If the CL requires to initialize the material response, called by the element in InitializeSolutionSt...
Definition: generic_small_strain_d_plus_d_minus_damage.h:328
double & GetTensionDamage()
Definition: generic_small_strain_d_plus_d_minus_damage.h:421
void SetNonConvCompressionDamage(const double toDamage)
Definition: generic_small_strain_d_plus_d_minus_damage.h:439
void SetTensionThreshold(const double toThreshold)
Definition: generic_small_strain_d_plus_d_minus_damage.h:425
void SetNonConvCompressionThreshold(const double toThreshold)
Definition: generic_small_strain_d_plus_d_minus_damage.h:438
void SetCompressionThreshold(const double toThreshold)
Definition: generic_small_strain_d_plus_d_minus_damage.h:436
Node NodeType
The node definition.
Definition: generic_small_strain_d_plus_d_minus_damage.h:77
void SetCompressionStress(const double toS)
Definition: generic_small_strain_d_plus_d_minus_damage.h:442
KRATOS_CLASS_POINTER_DEFINITION(GenericSmallStrainDplusDminusDamage)
Counted pointer of GenericYieldSurface.
GenericSmallStrainDplusDminusDamage(const GenericSmallStrainDplusDminusDamage &rOther)
Definition: generic_small_strain_d_plus_d_minus_damage.h:117
~GenericSmallStrainDplusDminusDamage() override
Definition: generic_small_strain_d_plus_d_minus_damage.h:133
void SetTensionStress(const double toS)
Definition: generic_small_strain_d_plus_d_minus_damage.h:441
void SetTensionDamage(const double toDamage)
Definition: generic_small_strain_d_plus_d_minus_damage.h:426
void SetNonConvTensionDamage(const double toDamage)
Definition: generic_small_strain_d_plus_d_minus_damage.h:428
double & GetCompressionDamage()
Definition: generic_small_strain_d_plus_d_minus_damage.h:432
double & GetNonConvTensionThreshold()
Definition: generic_small_strain_d_plus_d_minus_damage.h:422
double & GetNonConvCompressionThreshold()
Definition: generic_small_strain_d_plus_d_minus_damage.h:433
Geometry base class.
Definition: geometry.h:71
This class defines the node.
Definition: node.h:65
This class provides to Kratos a data structure for I/O based on the standard of JSON.
Definition: kratos_parameters.h:59
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
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_d_plus_d_minus_damage.h:85
array_1d< double, VoigtSize > CompressionStressVector
Definition: generic_small_strain_d_plus_d_minus_damage.h:91
array_1d< double, VoigtSize > TensionStressVector
Definition: generic_small_strain_d_plus_d_minus_damage.h:90