KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
|
This law defines a parallel rule of mixture (classic law of mixture) More...
#include <associative_plastic_damage_model.h>
Classes | |
struct | PlasticDamageParameters |
Public Member Functions | |
Lyfe Cycle | |
AssociativePlasticDamageModel () | |
Default constructor. More... | |
~AssociativePlasticDamageModel () override | |
Destructor. More... | |
Type Definitions | |
The define the working dimension size, already defined in the integrator The definition of the size type | |
typedef std::size_t | SizeType |
typedef ProcessInfo | ProcessInfoType |
The definition of the process info. More... | |
typedef std::conditional< VoigtSize==6, ElasticIsotropic3D, LinearPlaneStrain >::type | BaseType |
The definition of the CL base class. More... | |
typedef Node | NodeType |
The node definition. More... | |
typedef Geometry< NodeType > | GeometryType |
The geometry definition. More... | |
typedef array_1d< double, VoigtSize > | BoundedVectorType |
The definition of the Voigt array type. More... | |
typedef BoundedMatrix< double, VoigtSize, VoigtSize > | BoundedMatrixType |
The definition of the bounded matrix type. More... | |
typedef std::function< double(const double, const double, ConstitutiveLaw::Parameters &, PlasticDamageParameters &)> | ResidualFunctionType |
The definition of the lambdas to compute implicitly the threshold. More... | |
static constexpr SizeType | Dimension = TYieldSurfaceType::Dimension |
static constexpr SizeType | VoigtSize = TYieldSurfaceType::VoigtSize |
The define the Voigt size, already defined in the integrator. More... | |
static constexpr double | machine_tolerance = std::numeric_limits<double>::epsilon() |
Definition of the machine precision tolerance. More... | |
static constexpr double | tolerance = 1.0e-8 |
KRATOS_CLASS_POINTER_DEFINITION (AssociativePlasticDamageModel) | |
Pointer definition of AssociativePlasticDamageModel. More... | |
Serialization | |
class | Serializer |
Operations | |
ConstitutiveLaw::Pointer | Clone () const override |
Clone operation. More... | |
AssociativePlasticDamageModel (const AssociativePlasticDamageModel &rOther) | |
bool | RequiresInitializeMaterialResponse () override |
If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. More... | |
bool | RequiresFinalizeMaterialResponse () override |
If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. More... | |
bool | Has (const Variable< double > &rThisVariable) override |
Returns whether this constitutive Law has specified variable (double) More... | |
bool | Has (const Variable< Vector > &rThisVariable) override |
Returns whether this constitutive Law has specified variable (Vector) More... | |
double & | GetValue (const Variable< double > &rThisVariable, double &rValue) override |
Returns the value of a specified variable (double) More... | |
Vector & | GetValue (const Variable< Vector > &rThisVariable, Vector &rValue) override |
Returns the value of a specified variable (Vector) More... | |
void | SetValue (const Variable< double > &rThisVariable, const double &rValue, const ProcessInfo &rCurrentProcessInfo) override |
Sets the value of a specified variable (double) More... | |
void | SetValue (const Variable< Vector > &rThisVariable, const Vector &rValue, const ProcessInfo &rCurrentProcessInfo) override |
Sets the value of a specified variable (Vector) More... | |
double & | CalculateValue (ConstitutiveLaw::Parameters &rParameterValues, const Variable< double > &rThisVariable, double &rValue) override |
Calculates the value of a specified variable (double) More... | |
void | InitializeMaterial (const Properties &rMaterialProperties, const GeometryType &rElementGeometry, const Vector &rShapeFunctionsValues) override |
This is to be called at the very beginning of the calculation. More... | |
void | CalculateMaterialResponsePK1 (ConstitutiveLaw::Parameters &rValues) override |
Computes the material response in terms of 1st Piola-Kirchhoff stresses and constitutive tensor. More... | |
void | CalculateMaterialResponsePK2 (ConstitutiveLaw::Parameters &rValues) override |
Computes the material response in terms of 2nd Piola-Kirchhoff stresses and constitutive tensor. More... | |
void | CalculateMaterialResponseKirchhoff (ConstitutiveLaw::Parameters &rValues) override |
Computes the material response in terms of Kirchhoff stresses and constitutive tensor. More... | |
void | CalculateMaterialResponseCauchy (ConstitutiveLaw::Parameters &rValues) override |
Computes the material response in terms of Cauchy stresses and constitutive tensor. More... | |
void | InitializeMaterialResponsePK1 (ConstitutiveLaw::Parameters &rValues) override |
Initialize the material response in terms of 1st Piola-Kirchhoff stresses. More... | |
void | InitializeMaterialResponsePK2 (ConstitutiveLaw::Parameters &rValues) override |
Initialize the material response in terms of 2nd Piola-Kirchhoff stresses. More... | |
void | InitializeMaterialResponseKirchhoff (ConstitutiveLaw::Parameters &rValues) override |
Initialize the material response in terms of Kirchhoff stresses. More... | |
void | InitializeMaterialResponseCauchy (ConstitutiveLaw::Parameters &rValues) override |
Initialize the material response in terms of Cauchy stresses. More... | |
void | FinalizeMaterialResponsePK1 (ConstitutiveLaw::Parameters &rValues) override |
Finalize the material response in terms of 1st Piola-Kirchhoff stresses. More... | |
void | FinalizeMaterialResponsePK2 (ConstitutiveLaw::Parameters &rValues) override |
Finalize the material response in terms of 2nd Piola-Kirchhoff stresses. More... | |
void | FinalizeMaterialResponseKirchhoff (ConstitutiveLaw::Parameters &rValues) override |
Finalize the material response in terms of Kirchhoff stresses. More... | |
void | FinalizeMaterialResponseCauchy (ConstitutiveLaw::Parameters &rValues) override |
Finalize the material response in terms of Cauchy stresses. More... | |
int | Check (const Properties &rMaterialProperties, const GeometryType &rElementGeometry, const ProcessInfo &rCurrentProcessInfo) const override |
This function is designed to be called once to perform all the checks needed on the input provided. Checks can be "expensive" as the function is designed to catch user's errors. More... | |
void | CalculateTangentTensor (ConstitutiveLaw::ConstitutiveLaw::Parameters &rValues, PlasticDamageParameters &rPlasticDamageParameters) |
This method computes the tangent tensor. More... | |
void | CalculateElasticComplianceMatrix (BoundedMatrixType &rConstitutiveMatrix, const Properties &rMaterialProperties) |
This method computes the compliance elasatic matrix (https://en.wikiversity.org/wiki/Introduction_to_Elasticity/Constitutive_relations) More... | |
void | AddIfPositive (double &rToBeAdded, const double Increment) |
This method add somehting if the increment is positive. More... | |
double | MacaullyBrackets (const double Number) |
This method evaluates the Macaulay brackets. More... | |
void | CalculatePlasticDissipationIncrement (const Properties &rMaterialProperties, PlasticDamageParameters &rPlasticDamageParameters) |
This method computes the normalized plastic dissipation. More... | |
void | CalculateDamageDissipationIncrement (const Properties &rMaterialProperties, PlasticDamageParameters &rPlasticDamageParameters) |
This method computes the normalized plastic dissipation. More... | |
void | CalculateThresholdAndSlope (ConstitutiveLaw::Parameters &rValues, PlasticDamageParameters &rPlasticDamageParameters) |
This method computes the threshold and the dThreshold/dKappa according to energy dissipation. More... | |
void | CalculateFlowVector (ConstitutiveLaw::Parameters &rValues, PlasticDamageParameters &rPlasticDamageParameters) |
This method computes the plastic flow (dF/dS) More... | |
void | CalculatePlasticStrainIncrement (ConstitutiveLaw::Parameters &rValues, PlasticDamageParameters &rPlasticDamageParameters) |
This method computes the Plastic Strain increment. More... | |
void | CalculateComplianceMatrixIncrement (ConstitutiveLaw::Parameters &rValues, PlasticDamageParameters &rPlasticDamageParameters) |
This method computes the Compliance matrix increment. More... | |
void | CalculatePlasticConsistencyIncrement (ConstitutiveLaw::Parameters &rValues, PlasticDamageParameters &rPlasticDamageParameters) |
This method computes the plastic consistency increment. More... | |
void | IntegrateStressPlasticDamageMechanics (ConstitutiveLaw::Parameters &rValues, PlasticDamageParameters &rPlasticDamageParameters) |
This method integrates the stress. More... | |
void | CalculateConstitutiveMatrix (ConstitutiveLaw::Parameters &rValues, PlasticDamageParameters &rPlasticDamageParameters) |
This method computes the constitutive matrix. More... | |
void | UpdateInternalVariables (PlasticDamageParameters &rPlasticDamageParameters) |
This method updates all the internal variables. More... | |
void | CheckMinimumFractureEnergy (ConstitutiveLaw::Parameters &rValues, PlasticDamageParameters &rPDParameters) |
This method updates all the internal variables. More... | |
void | InitializePlasticDamageParameters (const BoundedVectorType &rStrainVector, const Properties &rMaterialProperties, const double CharateristicLength, PlasticDamageParameters &rPlasticDamageParameters) |
This method initializes all the values in the PlasticDamageParameters. More... | |
void | CalculateAnalyticalTangentTensor (ConstitutiveLaw::Parameters &rValues, PlasticDamageParameters &rParam) |
This method computes the continuum analytical tangent tensor. More... | |
void | AddNonLinearDissipation (PlasticDamageParameters &rPDParameters) |
This method increases the damage and plastic dissipation with the increment. More... | |
double | CalculatePlasticDenominator (ConstitutiveLaw::Parameters &rValues, PlasticDamageParameters &rParam) |
This method computes the denominator of the expression for computing the plastic multiplier. More... | |
double | CalculateThresholdImplicitExpression (ResidualFunctionType &rF, ResidualFunctionType &rdF_dk, ConstitutiveLaw::Parameters &rValues, PlasticDamageParameters &rPDParameters, const double MaxThreshold=std::numeric_limits< double >::max()) |
This method solves a non-linear equation that related the dissipation with the threshold. More... | |
double | CalculateSlopeFiniteDifferences (ResidualFunctionType &rF, ResidualFunctionType &rdF_dk, ConstitutiveLaw::Parameters &rValues, PlasticDamageParameters &rPDParameters, const double MaxThreshold=std::numeric_limits< double >::max()) |
This method computes the slope or d(threshold)/d(dissipation) by finite differences. More... | |
ResidualFunctionType | ExponentialSofteningImplicitFunction () |
Implicit function that relates the plastic-damage energy dissipation with the uniaxial stress threshold. More... | |
ResidualFunctionType | ExponentialSofteningImplicitFunctionDerivative () |
Implicit function derivative to be used in the minimization of the implicit function. More... | |
ResidualFunctionType | ExponentialHardeningImplicitFunction () |
Implicit function that relates the plastic-damage energy dissipation with the uniaxial stress threshold. More... | |
ResidualFunctionType | ExponentialHardeningImplicitFunctionDerivative () |
Implicit function derivative to be used in the minimization of the implicit function. More... | |
static double | CalculateVolumetricFractureEnergy (const Properties &rMaterialProperties, PlasticDamageParameters &rPDParameters) |
This method computes an averaged volumetric fracture energy depending if it is in tension or compression. More... | |
This law defines a parallel rule of mixture (classic law of mixture)
This constitutive law unifies the High cycle, Ultra Low cycle and Low cicle fatigue processes by means of a plastic damage model. Source: A thermodynamically consistent plastic-damage framework for localized failure in quasi-brittle solids: Material model and strain localization analysis (Wu and Cervera https://doi.org/10.1016/j.ijsolstr.2016.03.005)
typedef std::conditional<VoigtSize == 6, ElasticIsotropic3D, LinearPlaneStrain >::type Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::BaseType |
The definition of the CL base class.
typedef BoundedMatrix<double, VoigtSize, VoigtSize> Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::BoundedMatrixType |
The definition of the bounded matrix type.
typedef array_1d<double, VoigtSize> Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::BoundedVectorType |
The definition of the Voigt array type.
typedef Geometry<NodeType> Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::GeometryType |
The geometry definition.
typedef Node Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::NodeType |
The node definition.
typedef ProcessInfo Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::ProcessInfoType |
The definition of the process info.
typedef std::function<double(const double, const double, ConstitutiveLaw::Parameters& , PlasticDamageParameters &)> Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::ResidualFunctionType |
The definition of the lambdas to compute implicitly the threshold.
typedef std::size_t Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::SizeType |
|
inline |
Default constructor.
|
inlineoverride |
Destructor.
|
inline |
Copy constructor.
|
inline |
This method add somehting if the increment is positive.
|
inline |
This method increases the damage and plastic dissipation with the increment.
void Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::CalculateAnalyticalTangentTensor | ( | ConstitutiveLaw::Parameters & | rValues, |
PlasticDamageParameters & | rParam | ||
) |
This method computes the continuum analytical tangent tensor.
void Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::CalculateComplianceMatrixIncrement | ( | ConstitutiveLaw::Parameters & | rValues, |
PlasticDamageParameters & | rPlasticDamageParameters | ||
) |
This method computes the Compliance matrix increment.
void Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::CalculateConstitutiveMatrix | ( | ConstitutiveLaw::Parameters & | rValues, |
PlasticDamageParameters & | rPlasticDamageParameters | ||
) |
This method computes the constitutive matrix.
void Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::CalculateDamageDissipationIncrement | ( | const Properties & | rMaterialProperties, |
PlasticDamageParameters & | rPlasticDamageParameters | ||
) |
This method computes the normalized plastic dissipation.
void Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::CalculateElasticComplianceMatrix | ( | BoundedMatrixType & | rConstitutiveMatrix, |
const Properties & | rMaterialProperties | ||
) |
This method computes the compliance elasatic matrix (https://en.wikiversity.org/wiki/Introduction_to_Elasticity/Constitutive_relations)
rValues | The constitutive law parameters and flags |
void Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::CalculateFlowVector | ( | ConstitutiveLaw::Parameters & | rValues, |
PlasticDamageParameters & | rPlasticDamageParameters | ||
) |
This method computes the plastic flow (dF/dS)
|
override |
Computes the material response in terms of Cauchy stresses and constitutive tensor.
|
override |
Computes the material response in terms of Kirchhoff stresses and constitutive tensor.
|
override |
Computes the material response in terms of 1st Piola-Kirchhoff stresses and constitutive tensor.
|
override |
Computes the material response in terms of 2nd Piola-Kirchhoff stresses and constitutive tensor.
void Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::CalculatePlasticConsistencyIncrement | ( | ConstitutiveLaw::Parameters & | rValues, |
PlasticDamageParameters & | rPlasticDamageParameters | ||
) |
This method computes the plastic consistency increment.
double Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::CalculatePlasticDenominator | ( | ConstitutiveLaw::Parameters & | rValues, |
PlasticDamageParameters & | rParam | ||
) |
This method computes the denominator of the expression for computing the plastic multiplier.
void Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::CalculatePlasticDissipationIncrement | ( | const Properties & | rMaterialProperties, |
PlasticDamageParameters & | rPlasticDamageParameters | ||
) |
This method computes the normalized plastic dissipation.
void Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::CalculatePlasticStrainIncrement | ( | ConstitutiveLaw::Parameters & | rValues, |
PlasticDamageParameters & | rPlasticDamageParameters | ||
) |
This method computes the Plastic Strain increment.
double Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::CalculateSlopeFiniteDifferences | ( | ResidualFunctionType & | rF, |
ResidualFunctionType & | rdF_dk, | ||
ConstitutiveLaw::Parameters & | rValues, | ||
PlasticDamageParameters & | rPDParameters, | ||
const double | MaxThreshold = std::numeric_limits<double>::max() |
||
) |
This method computes the slope or d(threshold)/d(dissipation) by finite differences.
void Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::CalculateTangentTensor | ( | ConstitutiveLaw::ConstitutiveLaw::Parameters & | rValues, |
PlasticDamageParameters & | rPlasticDamageParameters | ||
) |
This method computes the tangent tensor.
rValues | The constitutive law parameters and flags |
void Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::CalculateThresholdAndSlope | ( | ConstitutiveLaw::Parameters & | rValues, |
PlasticDamageParameters & | rPlasticDamageParameters | ||
) |
This method computes the threshold and the dThreshold/dKappa according to energy dissipation.
double Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::CalculateThresholdImplicitExpression | ( | ResidualFunctionType & | rF, |
ResidualFunctionType & | rdF_dk, | ||
ConstitutiveLaw::Parameters & | rValues, | ||
PlasticDamageParameters & | rPDParameters, | ||
const double | MaxThreshold = std::numeric_limits<double>::max() |
||
) |
This method solves a non-linear equation that related the dissipation with the threshold.
|
override |
Calculates the value of a specified variable (double)
rParameterValues | the needed parameters for the CL calculation |
rThisVariable | the variable to be returned |
rValue | a reference to the returned value |
rValue | output: the value of the specified variable |
|
static |
This method computes an averaged volumetric fracture energy depending if it is in tension or compression.
|
override |
This function is designed to be called once to perform all the checks needed on the input provided. Checks can be "expensive" as the function is designed to catch user's errors.
rMaterialProperties | |
rElementGeometry | |
rCurrentProcessInfo |
void Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::CheckMinimumFractureEnergy | ( | ConstitutiveLaw::Parameters & | rValues, |
PlasticDamageParameters & | rPDParameters | ||
) |
This method updates all the internal variables.
|
override |
Clone operation.
AssociativePlasticDamageModel< TYieldSurfaceType >::ResidualFunctionType Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::ExponentialHardeningImplicitFunction |
Implicit function that relates the plastic-damage energy dissipation with the uniaxial stress threshold.
AssociativePlasticDamageModel< TYieldSurfaceType >::ResidualFunctionType Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::ExponentialHardeningImplicitFunctionDerivative |
Implicit function derivative to be used in the minimization of the implicit function.
AssociativePlasticDamageModel< TYieldSurfaceType >::ResidualFunctionType Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::ExponentialSofteningImplicitFunction |
Implicit function that relates the plastic-damage energy dissipation with the uniaxial stress threshold.
AssociativePlasticDamageModel< TYieldSurfaceType >::ResidualFunctionType Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::ExponentialSofteningImplicitFunctionDerivative |
Implicit function derivative to be used in the minimization of the implicit function.
|
override |
Finalize the material response in terms of Cauchy stresses.
|
override |
Finalize the material response in terms of Kirchhoff stresses.
|
override |
Finalize the material response in terms of 1st Piola-Kirchhoff stresses.
|
override |
Finalize the material response in terms of 2nd Piola-Kirchhoff stresses.
|
override |
Returns the value of a specified variable (double)
rThisVariable | the variable to be returned |
rValue | a reference to the returned value |
|
override |
Returns the value of a specified variable (Vector)
rThisVariable | the variable to be returned |
rValue | a reference to the returned value |
|
override |
Returns whether this constitutive Law has specified variable (double)
rThisVariable | the variable to be checked for |
|
override |
Returns whether this constitutive Law has specified variable (Vector)
rThisVariable | the variable to be checked for |
|
override |
This is to be called at the very beginning of the calculation.
(e.g. from InitializeElement) in order to initialize all relevant attributes of the constitutive law
rMaterialProperties | the Properties instance of the current element |
rElementGeometry | the geometry of the current element |
rShapeFunctionsValues | the shape functions values in the current integration point |
|
override |
Initialize the material response in terms of Cauchy stresses.
|
override |
Initialize the material response in terms of Kirchhoff stresses.
|
override |
Initialize the material response in terms of 1st Piola-Kirchhoff stresses.
|
override |
Initialize the material response in terms of 2nd Piola-Kirchhoff stresses.
|
inline |
This method initializes all the values in the PlasticDamageParameters.
void Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::IntegrateStressPlasticDamageMechanics | ( | ConstitutiveLaw::Parameters & | rValues, |
PlasticDamageParameters & | rPlasticDamageParameters | ||
) |
This method integrates the stress.
Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::KRATOS_CLASS_POINTER_DEFINITION | ( | AssociativePlasticDamageModel< TYieldSurfaceType > | ) |
Pointer definition of AssociativePlasticDamageModel.
|
inline |
This method evaluates the Macaulay brackets.
|
inlineoverride |
If the CL requires to initialize the material response, called by the element in InitializeSolutionStep.
|
inlineoverride |
If the CL requires to initialize the material response, called by the element in InitializeSolutionStep.
|
override |
Sets the value of a specified variable (double)
rThisVariable | the variable to be returned |
rValue | new value of the specified variable |
rCurrentProcessInfo | the process info |
|
override |
Sets the value of a specified variable (Vector)
rThisVariable | the variable to be returned |
rValue | new value of the specified variable |
rCurrentProcessInfo | the process info |
void Kratos::AssociativePlasticDamageModel< TYieldSurfaceType >::UpdateInternalVariables | ( | PlasticDamageParameters & | rPlasticDamageParameters | ) |
This method updates all the internal variables.
|
friend |
|
staticconstexpr |
|
staticconstexpr |
Definition of the machine precision tolerance.
|
staticconstexpr |
|
staticconstexpr |
The define the Voigt size, already defined in the integrator.