13 #if !defined(KRATOS_NON_ASSOCIATIVE_EXPLICIT_PLASTIC_FLOW_RULE_H_INCLUDED)
14 #define KRATOS_NON_ASSOCIATIVE_EXPLICIT_PLASTIC_FLOW_RULE_H_INCLUDED
22 #include "custom_constitutive/custom_flow_rules/flow_rule.hpp"
104 FlowRule::Pointer Clone()
const override;
112 void InitializeMaterial (
const Properties& rMaterialProperties)
override;
114 virtual bool CalculateReturnMappingImpl(
RadialReturnVariables& rReturnMappingVariables,
const Matrix &rIncrementalDeformationGradient,
Matrix& rStressMatrix,
Matrix& rNewElasticLeftCauchyGreen);
118 virtual bool CalculateReturnMappingExpl(
RadialReturnVariables& rReturnMappingVariables,
const Matrix &rIncrementalDeformationGradient,
Matrix& rStressMatrix,
Matrix& rNewElasticLeftCauchyGreen);
120 bool CalculateReturnMapping(
RadialReturnVariables& rReturnMappingVariables,
const Matrix &rIncrementalDeformationGradient,
Matrix& rStressMatrix,
Matrix& rNewElasticLeftCauchyGreen)
override;
122 virtual bool CalculateReturnMappingImplex(
RadialReturnVariables& rReturnMappingVariables,
const Matrix &rIncrementalDeformationGradient,
Matrix& rStressMatrix,
Matrix& rNewElasticLeftCauchyGreen);
124 virtual bool CalculateReturnMappingImplex2(
RadialReturnVariables& rReturnMappingVariables,
const Matrix &rIncrementalDeformationGradient,
Matrix& rStressMatrix,
Matrix& rNewElasticLeftCauchyGreen);
129 void ComputeElastoPlasticTangentMatrix(
const RadialReturnVariables& rReturnMappingVariables,
const Matrix& rLeftCauchyGreenMatrix,
const double& rAlpha,
Matrix& rElasticMatrix)
override;
133 KRATOS_THROW_ERROR( std::logic_error,
"calling not the base class but another function in FlowRule ... illegal operation!!",
"" )
137 Matrix ComputeKirchhoffStressMatrix(
const Matrix & rLeftCauchyGreenMatrix)
override;
195 bool& EvaluateElastoPlasticUnloadingCondition(
bool& rUnloadingCondition,
const Matrix& rElasticLeftCauchyGreen,
const Matrix& rDeltaDeformationGradient,
const InternalVariables& rPlasticVariables,
const double & rTolerance);
197 void CalculateOneExplicitPlasticStep(
const Matrix& rDeltaDeformationGradient,
const Matrix& rPreviousElasticLeftCauchyGreen,
const double& rPreviousEquivalentPlasticStrain,
Matrix& rNewElasticLeftCauchyGreen,
double& rNewEquivalentPlasticStrain,
double& rNewPlasticShearStrain,
double& rDeltaPlastic);
201 KRATOS_THROW_ERROR( std::logic_error,
"Calling the base class function in NonAss FlowRule ... illegal operation!",
"" )
206 KRATOS_THROW_ERROR( std::logic_error,
"Calling the base class function in NonAss FlowRule ... illegal operation!",
"" )
209 Matrix ConvertHenckyStrainToCauchyGreenTensor(
const Vector& rElasticHenckyStrain);
211 Vector ConvertCauchyGreenTensorToHenckyStrain(
const Matrix& rCauchyGreenTensor);
213 void UpdateDerivatives(
const Vector& rHenckyElasticStrain, AuxiliarDerivativesStructure & rAuxiliarDerivatives,
const double& EquivalentPlasticStrian) ;
217 KRATOS_THROW_ERROR( std::logic_error,
"Calling the base class function in NonAss FlowRule ... illegal operation!",
"" )
220 void ComputeSubstepIncrementalDeformationGradient(
const Matrix& rDeformationGradient,
const double& rReferenceConfiguration,
const double& rFinalConfiguration,
Matrix& rIncrementalDeformationGradient);
223 void CalculateOneExplicitStep(
const Matrix& rDeltaDeformationGradient,
const Matrix& rPreviousElasticLeftCauchyGreen,
const RadialReturnVariables& rReturnMappingVariables,
Matrix& rNewElasticLeftCauchyGreen,
Vector& rNewStressVector,
const bool& rElastoPlasticBool, ExplicitStressUpdateInformation& rStressUpdateInformation);
226 void CalculateExplicitSolutionWithChange(
const Matrix& rDeltaDeformationGradient,
const Matrix& rPreviousElasticLeftCauchyGreen, RadialReturnVariables& rReturnMappingVariables,
Matrix& rNewElasticLeftCauchyGreen,
Vector& rNewStressVector,
const double& rTolerance);
228 void CalculateExplicitSolution(
const Matrix & rDeltaDeformationGradient,
const Matrix& rPreviousElasticLeftCauchyGreen, RadialReturnVariables& rReturnMappingVariables,
Matrix& rNewElasticLeftCauchyGreen,
Vector& rNewStressVector,
const bool& rElastoPlasticBool,
const double& rTolerance);
231 void CalculateKirchhoffStressVector(
const Matrix& rElasticLeftCauchyGreen,
Vector& rStressVector);
233 void UpdateRadialReturnVariables(RadialReturnVariables& rReturnMappingVariables,
const ExplicitStressUpdateInformation& rStressUpdateInformation);
237 void ReturnStressToYieldSurface4( RadialReturnVariables& rReturnMappingVariables,
Matrix& rElasticLeftCauchyGreen,
Vector& rStressVector,
double& rDrift,
const double& rTolerance);
239 void ReturnStressToYieldSurface( RadialReturnVariables& rReturnMappingVariables,
Matrix& rElasticLeftCauchyGreen,
Vector& rStressVector,
double& rDrift,
const double& rTolerance);
243 void PerformSomeSortOfLineSearch(
Vector& rHenckyElastic,
double& rGamma,
double& rAlpha,
const Vector& rHenckyTrialElastic,
const double& rAlphaTrial,
double& rReidualNorm,
const double& rPreviousError,
const Vector& rDeltaX);
296 void save(
Serializer& rSerializer)
const override;
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
Short class definition.
Definition: flow_rule.hpp:51
HardeningLaw::Pointer HardeningLawPointer
Definition: flow_rule.hpp:57
YieldCriterion::Pointer YieldCriterionPointer
Definition: flow_rule.hpp:56
Short class definition.
Definition: non_associative_explicit_flow_rule.hpp:55
virtual void ComputeElasticMatrix(const Vector &rElasticStrainVector, Matrix &rElasticMatrix)
Definition: non_associative_explicit_flow_rule.hpp:131
KRATOS_CLASS_POINTER_DEFINITION(NonAssociativeExplicitPlasticFlowRule)
Pointer definition of NonLinearAssociativePlasticFlowRule.
virtual void CalculateKirchhoffStressVector(const Vector &rElasticHenckyStrain, Vector &rNewStressVector)
Definition: non_associative_explicit_flow_rule.hpp:199
virtual void CalculatePlasticPotentialDerivatives(const Vector &rPrincipalStress, Vector &rFirstDerivative, Matrix &rSecondDerivative)
Definition: non_associative_explicit_flow_rule.hpp:215
virtual void ComputePlasticHardeningParameter(const Vector &rStressVector, const double &rAlpha, double &rH)
Definition: non_associative_explicit_flow_rule.hpp:204
double mPlasticMultiplierVelocity
Definition: non_associative_explicit_flow_rule.hpp:182
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_THROW_ERROR(ExceptionType, ErrorMessage, MoreInfo)
Definition: define.h:77
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
def load(f)
Definition: ode_solve.py:307
Definition: flow_rule.hpp:175
Definition: flow_rule.hpp:121
Definition: non_associative_explicit_flow_rule.hpp:60
Vector YieldFunctionD
Definition: non_associative_explicit_flow_rule.hpp:62
Matrix PlasticPotentialDD
Definition: non_associative_explicit_flow_rule.hpp:64
Vector PlasticPotentialD
Definition: non_associative_explicit_flow_rule.hpp:61