10 #if !defined(KRATOS_NON_ASSOCIATIVE_PLASTICITY_MODEL_H_INCLUDED)
11 #define KRATOS_NON_ASSOCIATIVE_PLASTICITY_MODEL_H_INCLUDED
19 #include "custom_utilities/stress_invariants_utilities.hpp"
61 template<
class TElasticityModel,
class TYieldSurface>
104 mStressMatrix(rOther.mStressMatrix) {}
117 ConstitutiveModel::Pointer
Clone()
const override
119 return Kratos::make_shared<NonAssociativePlasticityModel>(*
this);
144 if ( rThisVariable == STRESS_INV_P)
149 else if ( rThisVariable == STRESS_INV_J2)
154 else if ( rThisVariable == STRESS_INV_THETA)
160 else if ( rThisVariable == PLASTIC_VOL_DEF) {
161 rValue = mInternal.Variables[1];
163 else if ( rThisVariable == NONLOCAL_PLASTIC_VOL_DEF) {
164 rValue = mInternal.Variables[4];
181 this->mElasticityModel.SetValue( rVariable, rValue, rCurrentProcessInfo);
194 Matrix ConstitutiveMatrix(6,6);
196 this->CalculateStressAndConstitutiveTensors( rValues, rStressMatrix, ConstitutiveMatrix);
211 rConstitutiveMatrix.
clear();
214 this->CalculateStressAndConstitutiveTensors( rValues, StressMatrix, rConstitutiveMatrix);
226 double Tolerance = 1
e-6;
232 this->mElasticityModel.CalculateStressTensor(rValues,rStressMatrix);
234 Variables.TrialStateFunction = this->mYieldSurface.CalculateYieldCondition( Variables, Variables.TrialStateFunction);
236 Matrix ConstitutiveMatrix(6,6);
239 if ( Variables.State().Is(ConstitutiveModelData::IMPLEX_ACTIVE) )
242 RecoverPreviousElasticLeftCauchyGreen( rDeltaDeformationMatrix, rValues.
StrainMatrix );
244 this->CalculateImplexPlasticStep(rValues, Variables, rStressMatrix, rDeltaDeformationMatrix);
246 rConstitutiveMatrix.
clear();
247 this->mElasticityModel.CalculateConstitutiveTensor(rValues, ConstitutiveMatrix);
248 rConstitutiveMatrix = SetConstitutiveMatrixToTheApropiateSize( rConstitutiveMatrix, ConstitutiveMatrix, rStressMatrix);
251 else if ( Variables.TrialStateFunction < Tolerance) {
254 rConstitutiveMatrix.
clear();
255 this->mElasticityModel.CalculateConstitutiveTensor(rValues, ConstitutiveMatrix);
256 rConstitutiveMatrix = SetConstitutiveMatrixToTheApropiateSize( rConstitutiveMatrix, ConstitutiveMatrix, rStressMatrix);
262 RecoverPreviousElasticLeftCauchyGreen( rDeltaDeformationMatrix, rValues.
StrainMatrix );
264 double InitialYieldFunction;
265 this->mElasticityModel.CalculateStressTensor(rValues,rStressMatrix);
266 InitialYieldFunction = this->mYieldSurface.CalculateYieldCondition( Variables, InitialYieldFunction);
268 if ( InitialYieldFunction > 10.0*Tolerance) {
270 this->ReturnStressToYieldSurface( rValues, Variables);
273 if ( (InitialYieldFunction < -Tolerance) && (Variables.TrialStateFunction > Tolerance) )
276 ComputeSolutionWithChange( rValues, Variables, rDeltaDeformationMatrix);
278 bool UnloadingCondition =
false;
280 UnloadingCondition = EvaluateUnloadingCondition( rValues, Variables, rDeltaDeformationMatrix);
281 if (UnloadingCondition) {
283 ComputeSolutionWithChange( rValues, Variables, rDeltaDeformationMatrix);
287 ComputeSubsteppingElastoPlasticProblem( rValues, Variables, rDeltaDeformationMatrix);
291 this->ReturnStressToYieldSurface( rValues, Variables);
295 this->mElasticityModel.CalculateConstitutiveTensor(rValues, ConstitutiveMatrix);
296 this->ComputeElastoPlasticTangentMatrix( rValues, Variables, ConstitutiveMatrix);
297 rConstitutiveMatrix = SetConstitutiveMatrixToTheApropiateSize( rConstitutiveMatrix, ConstitutiveMatrix, rStressMatrix );
301 if ( rValues.
State.
Is(ConstitutiveModelData::UPDATE_INTERNAL_VARIABLES) ) {
302 this->UpdateInternalVariables( rValues, Variables, rStressMatrix );
324 std::string
Info()
const override
326 std::stringstream buffer;
327 buffer <<
"NonAssociativePlasticityModel" ;
334 rOStream <<
"NonAssociativePlasticityModel";
340 rOStream <<
"NonAssociativePlasticityModel Data";
383 }
else if ( rI > rJ) {
384 index = AuxiliarCompressTensor( rJ, rI, rVoigtNumber);
413 noalias(Identity) = identity_matrix<double>(3);
415 unsigned int indexi, indexj;
416 for (
unsigned int i = 0;
i < 3;
i++) {
417 for (
unsigned int j = 0;
j < 3;
j++) {
418 for (
unsigned int k = 0;
k < 3;
k++) {
419 for (
unsigned int l = 0;
l < 3;
l++) {
420 double voigtNumber = 1.0;
421 indexi = AuxiliarCompressTensor(
i,
j, voigtNumber);
422 indexj = AuxiliarCompressTensor(
k,
l, voigtNumber);
423 ExtraMatrix(indexi, indexj) -= voigtNumber * (Identity(
i,
k)*rStressMatrix(
j,
l) + Identity(
j,
k) * rStressMatrix(
i,
l) );
428 rConstMatrixBig += ExtraMatrix;
435 if ( rConstitutiveMatrix.size1() == 6) {
436 noalias( rConstitutiveMatrix ) = rConstMatrixBig;
437 }
else if ( rConstitutiveMatrix.size1() == 3 ) {
438 rConstitutiveMatrix(0,0) = rConstMatrixBig(0,0);
439 rConstitutiveMatrix(0,1) = rConstMatrixBig(0,1);
440 rConstitutiveMatrix(0,2) = rConstMatrixBig(0,3);
442 rConstitutiveMatrix(1,0) = rConstMatrixBig(1,0);
443 rConstitutiveMatrix(1,1) = rConstMatrixBig(1,1);
444 rConstitutiveMatrix(1,2) = rConstMatrixBig(1,3);
446 rConstitutiveMatrix(2,0) = rConstMatrixBig(3,0);
447 rConstitutiveMatrix(2,1) = rConstMatrixBig(3,1);
448 rConstitutiveMatrix(2,2) = rConstMatrixBig(3,3);
450 }
else if ( rConstitutiveMatrix.size1() == 4 ) {
451 for (
unsigned int i = 0;
i < 4;
i++) {
452 for (
unsigned int j = 0;
j < 4;
j++) {
453 rConstitutiveMatrix(
i,
j) = rConstMatrixBig(
i,
j);
458 return rConstitutiveMatrix;
470 double Tolerance = 1
e-6;
477 for (
unsigned int i = 0;
i < 150;
i++) {
479 Matrix ElasticMatrix(6,6);
481 this->mElasticityModel.CalculateConstitutiveTensor( rValues, ElasticMatrix);
483 VectorType DeltaStressYieldCondition = this->mYieldSurface.CalculateDeltaStressYieldCondition( rVariables, DeltaStressYieldCondition);
485 PlasticPotentialDerivative = DeltaStressYieldCondition;
487 double H = this->mYieldSurface.GetHardeningRule().CalculateDeltaHardening( rVariables,
H);
493 ConvertHenckyVectorToCauchyGreenTensor( -DeltaGamma * PlasticPotentialDerivative / 2.0, UpdateMatrix);
499 this->mElasticityModel.CalculateStressTensor( rValues, StressMatrix);
501 double & rPlasticVolDef = rVariables.Internal.Variables[1];
502 for (
unsigned int i = 0;
i < 3;
i++)
503 rPlasticVolDef += DeltaGamma * DeltaStressYieldCondition(
i);
523 Matrix ElasticMatrix(6,6);
525 this->mElasticityModel.CalculateConstitutiveTensor( rValues, ElasticMatrix);
527 VectorType DeltaStressYieldCondition = this->mYieldSurface.CalculateDeltaStressYieldCondition( rVariables, DeltaStressYieldCondition);
529 PlasticPotentialDerivative = DeltaStressYieldCondition;
531 double H = this->mYieldSurface.GetHardeningRule().CalculateDeltaHardening( rVariables,
H);
536 Matrix PlasticUpdateMatrix(6,6);
539 for (
unsigned int i = 0;
i < 6;
i++) {
540 denom += AuxF(
i)*PlasticPotentialDerivative(
i);
541 for (
unsigned int j = 0;
j < 6;
j++) {
542 PlasticUpdateMatrix(
i,
j) = AuxF(
i) * AuxG(
j);
546 rEPMatrix -= PlasticUpdateMatrix / (
H + denom);
558 double Tolerance = 1
e-6;
560 double InitialTime = 0;
double EndTime = 1;
double HalfTime;
561 double InitialStateFunction(-1), EndStateFunction(1), HalfTimeStateFunction;
566 for (
unsigned int i = 0;
i < 150;
i++)
568 HalfTime = 0.5*(InitialTime + EndTime);
570 ComputeSubstepIncrementalDeformationGradient( rDeltaDeformationMatrix, 0, HalfTime, HalfTimeDeformationGradient);
572 AuxMatrix =
prod( InitialLeftCauchyGreen,
trans(HalfTimeDeformationGradient));
573 AuxMatrix =
prod( HalfTimeDeformationGradient, AuxMatrix);
576 this->mElasticityModel.CalculateStressTensor(rValues,StressMatrix);
577 HalfTimeStateFunction = this->mYieldSurface.CalculateYieldCondition( rVariables, HalfTimeStateFunction);
579 if ( HalfTimeStateFunction < 0.0) {
580 InitialStateFunction = HalfTimeStateFunction;
581 InitialTime = HalfTime;
583 EndStateFunction = HalfTimeStateFunction;
587 double ErrorMeasure1 = fabs( InitialStateFunction - EndStateFunction);
588 double ErrorMeasure2 = fabs( InitialTime-EndTime);
590 if ( (ErrorMeasure1 < Tolerance) && (ErrorMeasure2 < Tolerance) )
597 ComputeSubstepIncrementalDeformationGradient( rDeltaDeformationMatrix, HalfTime, 1,RemainingDeformationGradient);
599 ComputeSubsteppingElastoPlasticProblem( rValues, rVariables, RemainingDeformationGradient);
612 VectorType DeltaStressYieldCondition = this->mYieldSurface.CalculateDeltaStressYieldCondition( rVariables, DeltaStressYieldCondition);
616 noalias(DeltaStrainMatrix) =
prod( rDeltaDeformationMatrix,
trans( rDeltaDeformationMatrix) );
618 ConvertCauchyGreenTensorToHenckyVector( DeltaStrainMatrix, DeltaStrain);
620 Matrix ElasticMatrix(6,6);
622 this->mElasticityModel.CalculateConstitutiveTensor( rValues, ElasticMatrix);
652 double Tolerance = 1.0E-5;
653 double TimeStep = 0.25;
654 double MinTimeStep = 1.0e-4;
655 double DoneTimeStep = 0.0;
656 double MaxTimeStep = 0.5;
662 while (DoneTimeStep < 1.0) {
667 if ( DoneTimeStep + TimeStep >= 1.0) {
668 TimeStep = 1.0 - DoneTimeStep;
671 ComputeSubstepIncrementalDeformationGradient( rDeltaDeformationMatrix, DoneTimeStep, DoneTimeStep + TimeStep, SubstepDeformationGradient);
674 ErrorMeasure = ComputeElastoPlasticProblem( rValues, rVariables, SubstepDeformationGradient);
675 if ( ErrorMeasure < Tolerance) {
676 DoneTimeStep += TimeStep;
677 }
else if ( TimeStep <= MinTimeStep) {
678 if ( ErrorMeasure > 50*Tolerance) {
679 std::cout <<
" ExplicitStressIntegrationDidNotConvege: StressError: " << ErrorMeasure << std::endl;
681 DoneTimeStep += TimeStep;
684 rVariables.Internal = InitialInternalVariables;
687 TimeStep *= pow( Tolerance / ( ErrorMeasure + 1
e-8), 0.5);
688 TimeStep =
std::max(TimeStep, MinTimeStep);
689 TimeStep =
std::min(TimeStep, MaxTimeStep);
712 this->mElasticityModel.CalculateStressTensor( rValues, Stress1);
713 this->ComputeOneStepElastoPlasticProblem( rValues, rVariables, rSubstepDeformationGradient);
717 unsigned int nSteps = 3;
719 rVariables.Internal = InitialInternalVariables;
720 this->mElasticityModel.CalculateStressTensor( rValues, Stress2);
725 for (
unsigned int i = 0;
i < nSteps;
i++) {
728 ComputeSubstepIncrementalDeformationGradient( rSubstepDeformationGradient, tBegin, tEnd, IncrementalDefGradient);
729 this->ComputeOneStepElastoPlasticProblem( rValues, rVariables, IncrementalDefGradient);
732 double ErrorMeasure = 0;
734 for (
unsigned int i = 0;
i < 3;
i++) {
735 for (
unsigned int j = 0;
j < 3;
j++) {
741 if ( fabs(Denom) > 1.0E-5)
742 ErrorMeasure /= Denom;
743 ErrorMeasure = sqrt(ErrorMeasure);
761 double & rPlasticVolDef = rVariables.Internal.Variables[1];
762 double & rPlasticMultiplier = rVariables.Internal.Variables[0];
763 double & rPlasticDevDef = rVariables.Internal.Variables[2];
765 Matrix ElasticMatrix(6,6);
767 this->mElasticityModel.CalculateConstitutiveTensor( rValues, ElasticMatrix);
769 VectorType DeltaStressYieldCondition = this->mYieldSurface.CalculateDeltaStressYieldCondition( rVariables, DeltaStressYieldCondition);
771 PlasticPotentialDerivative = DeltaStressYieldCondition;
773 double H = this->mYieldSurface.GetHardeningRule().CalculateDeltaHardening( rVariables,
H);
775 MatrixType StrainMatrix =
prod( rDeltaDeformationMatrix,
trans( rDeltaDeformationMatrix) );
777 ConvertCauchyGreenTensorToHenckyVector( StrainMatrix, StrainVector);
780 AuxVector =
prod( ElasticMatrix, StrainVector);
786 DeltaGamma /= Denominador;
792 ConvertHenckyVectorToCauchyGreenTensor( -DeltaGamma * PlasticPotentialDerivative / 2.0, UpdateMatrix);
793 UpdateMatrix =
prod( rDeltaDeformationMatrix, UpdateMatrix);
799 this->mElasticityModel.CalculateStressTensor( rValues, StressMatrix);
801 rPlasticMultiplier += DeltaGamma;
802 for (
unsigned int i = 0;
i < 3;
i++)
803 rPlasticVolDef += DeltaGamma * DeltaStressYieldCondition(
i);
806 for (
unsigned int i = 0;
i < 3;
i++)
807 update += pow( DeltaGamma * ( DeltaStressYieldCondition(
i) - rPlasticVolDef/3.0) , 2.0);
808 for (
unsigned int i = 3;
i < 6;
i++)
809 update += 2.0 * pow( DeltaGamma * DeltaStressYieldCondition(
i) /2.0 , 2.0);
810 rPlasticDevDef += sqrt(update);
825 HenckyTensor.
clear();
828 ConvertHenckyTensorToCauchyGreenTensor( HenckyTensor, rStrainMatrix);
841 EigenVectors.
clear();
843 rStrainMatrix.
clear();
846 for (
unsigned int i = 0;
i < 3;
i++)
847 rStrainMatrix(
i,
i) = std::exp( 2.0* rStrainMatrix(
i,
i));
861 EigenVectors.
clear();
863 rHenckyStrain.
clear();
866 for (
unsigned int i = 0;
i < 3;
i++)
867 rHenckyStrain(
i,
i) = std::log( rHenckyStrain(
i,
i))/2.0;
882 ConvertCauchyGreenTensorToHenckyTensor( rStrainMatrix, HenckyStrain);
899 DeformationGradientReference = rReferenceConfiguration * rDeltaDeformationMatrix + (1.0 - rReferenceConfiguration) * Identity;
900 DeformationGradientFinal = rFinalConfiguration * rDeltaDeformationMatrix + (1.0 - rFinalConfiguration) * Identity;
903 rSubstepDeformationGradient.
clear();
905 rSubstepDeformationGradient =
prod( DeformationGradientFinal, rSubstepDeformationGradient);
918 InverseMatrix.
clear();
920 rInitialLeftCauchyGreen =
prod( InverseMatrix, rInitialLeftCauchyGreen);
921 rInitialLeftCauchyGreen =
prod( rInitialLeftCauchyGreen,
trans(InverseMatrix));
941 KRATOS_ERROR <<
"calling initialize PlasticityModel .. StrainMeasure provided is inconsistent" << std::endl;
949 KRATOS_ERROR <<
"calling initialize PlasticityModel .. StrainMeasure provided is inconsistent" << std::endl;
954 KRATOS_ERROR <<
"calling initialize PlasticityModel .. StressMeasure provided is inconsistent" << std::endl;
969 rVariables.SetModelData(rValues);
971 rValues.
State.
Set(ConstitutiveModelData::PLASTIC_REGION,
false);
973 rValues.
State.
Set(ConstitutiveModelData::IMPLEX_ACTIVE,
false);
975 rValues.
State.
Set(ConstitutiveModelData::IMPLEX_ACTIVE,
true);
978 rVariables.SetState(rValues.
State);
981 rVariables.RateFactor = 0;
984 rVariables.Internal = mInternal;
987 rVariables.DeltaInternal.Variables.clear();
990 rVariables.TrialStateFunction = 0;
991 rVariables.StressNorm = 0;
1004 Precon = (this->mYieldSurface).GetHardeningRule().CalculateHardening( rVariables, Precon);
1005 rVariables.Internal.Variables[3] = Precon;
1007 for (
unsigned int i = 0;
i < 5;
i++) {
1008 double & rCurrentPlasticVariable = rVariables.Internal.Variables[
i];
1009 double & rPreviousPlasticVariable = mInternal.Variables[
i];
1011 mPreviousInternal.Variables[
i] = rPreviousPlasticVariable;
1012 rPreviousPlasticVariable = rCurrentPlasticVariable;
1025 double & rPlasticVolDef = rVariables.Internal.Variables[1];
1026 double & rPlasticDevDef = rVariables.Internal.Variables[2];
1028 const double & rPlasticMultiplierOld = mPreviousInternal.Variables[0];
1029 double & rPlasticMultiplier = rVariables.Internal.Variables[0];
1030 double DeltaPlasticMultiplier = (rPlasticMultiplier - rPlasticMultiplierOld);
1032 if ( DeltaPlasticMultiplier < 0)
1033 DeltaPlasticMultiplier = 0;
1036 this->mElasticityModel.CalculateStressTensor(rValues,rStressMatrix);
1038 VectorType DeltaStressYieldCondition = this->mYieldSurface.CalculateDeltaStressYieldCondition( rVariables, DeltaStressYieldCondition);
1040 PlasticPotentialDerivative = DeltaStressYieldCondition;
1044 ConvertHenckyVectorToCauchyGreenTensor( -DeltaPlasticMultiplier * PlasticPotentialDerivative / 2.0, UpdateMatrix);
1045 UpdateMatrix =
prod( rDeltaDeformationMatrix, UpdateMatrix);
1051 this->mElasticityModel.CalculateStressTensor( rValues, rStressMatrix);
1053 rPlasticMultiplier += DeltaPlasticMultiplier;
1054 for (
unsigned int i = 0;
i < 3;
i++)
1055 rPlasticVolDef += DeltaPlasticMultiplier * DeltaStressYieldCondition(
i);
1057 double update = 0.0;
1058 for (
unsigned int i = 0;
i < 3;
i++)
1059 update += pow( DeltaPlasticMultiplier * ( DeltaStressYieldCondition(
i) - rPlasticVolDef/3.0) , 2.0);
1060 for (
unsigned int i = 3;
i < 6;
i++)
1061 update += 2.0 * pow( DeltaPlasticMultiplier * DeltaStressYieldCondition(
i) /2.0 , 2.0);
1062 rPlasticDevDef += sqrt(update);
1113 void save(
Serializer& rSerializer)
const override
1116 rSerializer.
save(
"InternalVariables",mInternal);
1117 rSerializer.
save(
"PreviousInternalVariables",mPreviousInternal);
1123 rSerializer.
load(
"InternalVariables",mInternal);
1124 rSerializer.
load(
"PreviousInternalVariables",mPreviousInternal);
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
StressMeasureType
Definition: constitutive_model_data.hpp:83
@ StressMeasure_Kirchhoff
StrainMeasureType
Definition: constitutive_model_data.hpp:75
static void StrainTensorToVector(const MatrixType &rMatrix, array_1d< double, 6 > &rVector)
Definition: constitutive_model_utilities.hpp:646
static void InvertMatrix3(const MatrixType &InputMatrix, MatrixType &InvertedMatrix, double &InputMatrixDet)
Definition: constitutive_model_utilities.hpp:1043
static MatrixType & StrainVectorToTensor(const array_1d< double, 6 > &rVector, MatrixType &rMatrix)
Definition: constitutive_model_utilities.hpp:619
void Set(const Flags ThisFlag)
Definition: flags.cpp:33
bool Is(Flags const &rOther) const
Definition: flags.h:274
Definition: amatrix_interface.h:41
void clear()
Definition: amatrix_interface.h:284
Various mathematical utilitiy functions.
Definition: math_utils.h:62
static double Norm(const Vector &a)
Calculates the norm of vector "a".
Definition: math_utils.h:703
static double Dot(const Vector &rFirstVector, const Vector &rSecondVector)
Performs the dot product of two vectors of arbitrary size.
Definition: math_utils.h:669
Short class definition.
Definition: non_associative_plasticity_model.hpp:63
void CalculateStressAndConstitutiveTensors(ModelDataType &rValues, MatrixType &rStressMatrix, Matrix &rConstitutiveMatrix) override
Definition: non_associative_plasticity_model.hpp:222
void CalculateConstitutiveTensor(ModelDataType &rValues, Matrix &rConstitutiveMatrix) override
Definition: non_associative_plasticity_model.hpp:206
BaseType::VectorType VectorType
Definition: non_associative_plasticity_model.hpp:83
virtual void ReturnStressToYieldSurface(ModelDataType &rValues, PlasticDataType &rVariables)
Definition: non_associative_plasticity_model.hpp:466
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: non_associative_plasticity_model.hpp:338
void ConvertHenckyTensorToCauchyGreenTensor(const MatrixType &rHenckyTensor, MatrixType &rStrainMatrix)
Definition: non_associative_plasticity_model.hpp:836
BaseType::Pointer BaseTypePointer
Definition: non_associative_plasticity_model.hpp:79
BaseType::ModelDataType ModelDataType
Definition: non_associative_plasticity_model.hpp:84
KRATOS_CLASS_POINTER_DEFINITION(NonAssociativePlasticityModel)
Pointer definition of NonAssociativePlasticityModel.
NonAssociativePlasticityModel & operator=(NonAssociativePlasticityModel const &rOther)
Assignment operator.
Definition: non_associative_plasticity_model.hpp:107
BaseType::MaterialDataType MaterialDataType
Definition: non_associative_plasticity_model.hpp:85
NonAssociativePlasticityModel(NonAssociativePlasticityModel const &rOther)
Copy constructor.
Definition: non_associative_plasticity_model.hpp:103
virtual void SetWorkingMeasures(PlasticDataType &rVariables, MatrixType &rStressMatrix)
Definition: non_associative_plasticity_model.hpp:930
MatrixType mStressMatrix
Definition: non_associative_plasticity_model.hpp:362
ConstitutiveModel::Pointer Clone() const override
Clone.
Definition: non_associative_plasticity_model.hpp:117
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: non_associative_plasticity_model.hpp:332
BaseType::InternalVariablesType InternalVariablesType
Definition: non_associative_plasticity_model.hpp:87
BaseType::VoigtIndexType VoigtIndexType
Definition: non_associative_plasticity_model.hpp:81
void ConvertCauchyGreenTensorToHenckyTensor(const MatrixType &rStrainMatrix, MatrixType &rHenckyStrain)
Definition: non_associative_plasticity_model.hpp:856
BaseType::MatrixType MatrixType
Definition: non_associative_plasticity_model.hpp:82
void CalculateStressTensor(ModelDataType &rValues, MatrixType &rStressMatrix) override
Definition: non_associative_plasticity_model.hpp:189
int AuxiliarCompressTensor(const unsigned int &rI, const unsigned int &rJ, double &rVoigtNumber)
Definition: non_associative_plasticity_model.hpp:377
void ComputeSubsteppingElastoPlasticProblem(ModelDataType &rValues, PlasticDataType &rVariables, const MatrixType &rDeltaDeformationMatrix)
Definition: non_associative_plasticity_model.hpp:648
Matrix & SetConstitutiveMatrixToTheApropiateSize(Matrix &rConstitutiveMatrix, Matrix &rConstMatrixBig, const MatrixType &rStressMatrix)
Definition: non_associative_plasticity_model.hpp:404
bool EvaluateUnloadingCondition(ModelDataType &rValues, PlasticDataType &rVariables, const MatrixType &rDeltaDeformationMatrix)
Definition: non_associative_plasticity_model.hpp:608
PlasticityModel< ElasticityModelType, YieldSurfaceType > BaseType
Definition: non_associative_plasticity_model.hpp:76
virtual double & GetValue(const Variable< double > &rThisVariable, double &rValue) override
Definition: non_associative_plasticity_model.hpp:139
InternalVariablesType mPreviousInternal
Definition: non_associative_plasticity_model.hpp:361
virtual void InitializeVariables(ModelDataType &rValues, PlasticDataType &rVariables)
Definition: non_associative_plasticity_model.hpp:964
ConstitutiveModelData::StressMeasureType StressMeasureType
Definition: non_associative_plasticity_model.hpp:90
BaseType::SizeType SizeType
Definition: non_associative_plasticity_model.hpp:80
virtual void ComputeElastoPlasticTangentMatrix(ModelDataType &rValues, PlasticDataType &rVariables, Matrix &rEPMatrix)
Definition: non_associative_plasticity_model.hpp:518
void ComputeSubstepIncrementalDeformationGradient(const MatrixType &rDeltaDeformationMatrix, const double &rReferenceConfiguration, const double &rFinalConfiguration, MatrixType &rSubstepDeformationGradient)
Definition: non_associative_plasticity_model.hpp:891
void RecoverPreviousElasticLeftCauchyGreen(const MatrixType &rDeltaDeformationMatrix, MatrixType &rInitialLeftCauchyGreen)
Definition: non_associative_plasticity_model.hpp:913
NonAssociativePlasticityModel()
Default constructor.
Definition: non_associative_plasticity_model.hpp:100
std::string Info() const override
Turn back information as a string.
Definition: non_associative_plasticity_model.hpp:324
BaseType::PlasticDataType PlasticDataType
Definition: non_associative_plasticity_model.hpp:86
TYieldSurface YieldSurfaceType
Definition: non_associative_plasticity_model.hpp:73
InternalVariablesType mInternal
Definition: non_associative_plasticity_model.hpp:360
virtual void ComputeOneStepElastoPlasticProblem(ModelDataType &rValues, PlasticDataType &rVariables, const MatrixType &rDeltaDeformationMatrix)
Definition: non_associative_plasticity_model.hpp:755
void ConvertCauchyGreenTensorToHenckyVector(const MatrixType &rStrainMatrix, VectorType &rStrainVector)
Definition: non_associative_plasticity_model.hpp:877
void ComputeSolutionWithChange(ModelDataType &rValues, PlasticDataType &rVariables, const MatrixType &rDeltaDeformationMatrix)
Definition: non_associative_plasticity_model.hpp:554
TElasticityModel ElasticityModelType
Definition: non_associative_plasticity_model.hpp:70
ConstitutiveModelData::StrainMeasureType StrainMeasureType
Definition: non_associative_plasticity_model.hpp:89
virtual void UpdateInternalVariables(ModelDataType &rValues, PlasticDataType &rVariables, const MatrixType &rStressMatrix)
Definition: non_associative_plasticity_model.hpp:999
double ComputeElastoPlasticProblem(ModelDataType &rValues, PlasticDataType &rVariables, const MatrixType &rSubstepDeformationGradient)
Definition: non_associative_plasticity_model.hpp:702
void ConvertHenckyVectorToCauchyGreenTensor(const VectorType &rHenckyVector, MatrixType &rStrainMatrix)
Definition: non_associative_plasticity_model.hpp:820
~NonAssociativePlasticityModel() override
Destructor.
Definition: non_associative_plasticity_model.hpp:123
void CalculateImplexPlasticStep(ModelDataType &rValues, PlasticDataType &rVariables, MatrixType &rStressMatrix, const MatrixType &rDeltaDeformationMatrix)
Definition: non_associative_plasticity_model.hpp:1020
void SetValue(const Variable< Vector > &rVariable, const Vector &rValue, const ProcessInfo &rCurrentProcessInfo) override
Definition: non_associative_plasticity_model.hpp:175
Short class definition.
Definition: plasticity_model.hpp:50
TYieldSurface::InternalVariablesType InternalVariablesType
Definition: plasticity_model.hpp:69
ConstitutiveModelData::SizeType SizeType
Definition: plasticity_model.hpp:63
ConstitutiveModelData::VoigtIndexType VoigtIndexType
Definition: plasticity_model.hpp:64
TYieldSurface::PlasticDataType PlasticDataType
Definition: plasticity_model.hpp:68
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
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
static void CalculateStressInvariants(const MatrixType &rStressMatrix, double &rI1, double &rJ2)
Definition: stress_invariants_utilities.hpp:45
Short class definition.
Definition: yield_surface.hpp:50
virtual double & CalculateYieldCondition(const PlasticDataType &rVariables, double &rYieldCondition)
Definition: yield_surface.hpp:108
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_CATCH(MoreInfo)
Definition: define.h:110
#define KRATOS_TRY
Definition: define.h:109
#define KRATOS_SERIALIZE_LOAD_BASE_CLASS(Serializer, BaseType)
Definition: define.h:815
#define KRATOS_ERROR
Definition: exception.h:161
void InitializeVariables(TContainerType &rContainer, const Variable< TDataType > &rOutputVariable, const Variable< TDataType > &rReferenceVariable)
Definition: temporal_method_utilities.h:36
static double max(double a, double b)
Definition: GeometryFunctions.h:79
static double min(double a, double b)
Definition: GeometryFunctions.h:71
constexpr double Pi
Definition: global_variables.h:25
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
AMatrix::IdentityMatrix< double > IdentityMatrix
Definition: amatrix_interface.h:564
KratosZeroMatrix< double > ZeroMatrix
Definition: amatrix_interface.h:559
AMatrix::MatrixProductExpression< TExpression1Type, TExpression2Type > prod(AMatrix::MatrixExpression< TExpression1Type, TCategory1 > const &First, AMatrix::MatrixExpression< TExpression2Type, TCategory2 > const &Second)
Definition: amatrix_interface.h:568
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
AMatrix::TransposeMatrix< const T > trans(const T &TheMatrix)
Definition: amatrix_interface.h:486
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
H
Definition: generate_droplet_dynamics.py:257
float J2
Definition: isotropic_damage_automatic_differentiation.py:133
def load(f)
Definition: ode_solve.py:307
int k
Definition: quadrature.py:595
int j
Definition: quadrature.py:648
p
Definition: sensitivityMatrix.py:52
integer i
Definition: TensorModule.f:17
integer l
Definition: TensorModule.f:17
e
Definition: run_cpp_mpi_tests.py:31
def Norm2(_X)
Definition: custom_math.py:107
Definition: constitutive_model_data.hpp:92
Definition: constitutive_model_data.hpp:383
const MatrixType & GetDeltaDeformationMatrix() const
Definition: constitutive_model_data.hpp:455
const ProcessInfo & GetProcessInfo() const
Definition: constitutive_model_data.hpp:435
const StressMeasureType & GetStressMeasure() const
Definition: constitutive_model_data.hpp:452
const double & GetTotalDeformationDet() const
Definition: constitutive_model_data.hpp:449
MatrixType StressMatrix
Definition: constitutive_model_data.hpp:401
Flags State
Definition: constitutive_model_data.hpp:399
MatrixType StrainMatrix
Definition: constitutive_model_data.hpp:402