10 #if !defined(KRATOS_ISOCHORIC_MOONEY_RIVLIN_MODEL_H_INCLUDED )
11 #define KRATOS_ISOCHORIC_MOONEY_RIVLIN_MODEL_H_INCLUDED
75 ConstitutiveModel::Pointer
Clone()
const override
77 return Kratos::make_shared<IsochoricMooneyRivlinModel>(*
this);
99 this->CalculateStrainData(rValues, Variables);
101 rDensityFunction = 0;
102 this->CalculateAndAddIsochoricStrainEnergy( Variables, rDensityFunction );
103 this->CalculateAndAddVolumetricStrainEnergy( Variables, rDensityFunction );
115 this->CalculateStrainData(rValues,Variables);
117 this->CalculateAndAddIsochoricStressTensor(Variables, rStressMatrix);
121 this->CalculateAndAddVolumetricStressTensor(Variables, rStressMatrix);
123 Variables.State().Set(ConstitutiveModelData::STRESS_COMPUTED);
134 this->CalculateStrainData(rValues,Variables);
137 this->CalculateAndAddIsochoricStressTensor(Variables, rStressMatrix);
141 this->CalculateAndAddVolumetricStressTensor(Variables, rStressMatrix);
144 this->CalculateAndAddConstitutiveTensor(Variables,rConstitutiveMatrix);
164 std::string
Info()
const override
166 std::stringstream buffer;
167 buffer <<
"IsochoricMooneyRivlinModel";
174 rOStream <<
"IsochoricMooneyRivlinModel";
180 rOStream <<
"IsochoricMooneyRivlinModel Data";
223 StressPartMatrix = GetI1RightCauchyGreenDerivative(rVariables.
Strain,StressPartMatrix);
226 StressPartMatrix = GetI2RightCauchyGreenDerivative(rVariables.
Strain,StressPartMatrix);
229 StressPartMatrix = GetI3RightCauchyGreenDerivative(rVariables.
Strain,StressPartMatrix);
233 StressPartMatrix = GetIsochoricRightCauchyGreenDerivative(rVariables.
Strain,StressPartMatrix);
234 StressMatrix =
prod(StressMatrix, StressPartMatrix);
253 rStressMatrix += StressMatrix;
258 StressPartMatrix = GetI1LeftCauchyGreenDerivative(rVariables.
Strain,StressPartMatrix);
261 StressPartMatrix = GetI2LeftCauchyGreenDerivative(rVariables.
Strain,StressPartMatrix);
264 StressPartMatrix = GetI3LeftCauchyGreenDerivative(rVariables.
Strain,StressPartMatrix);
268 StressPartMatrix = GetIsochoricLeftCauchyGreenDerivative(rVariables.
Strain,StressPartMatrix);
269 StressMatrix =
prod(StressMatrix, StressPartMatrix);
288 rStressMatrix += StressMatrix;
307 StressMatrix = GetJRightCauchyGreenDerivative(rVariables.
Strain,StressMatrix);
312 noalias(rStressMatrix) += StressMatrix;
316 StressMatrix = GetJLeftCauchyGreenDerivative(rVariables.
Strain,StressMatrix);
321 noalias(rStressMatrix) += StressMatrix;
331 const unsigned int&
a,
const unsigned int&
b,
332 const unsigned int&
c,
const unsigned int&
d)
override
336 rCabcd = this->AddIsochoricConstitutiveComponent(rVariables,rCabcd,
a,
b,
c,
d);
338 rCabcd = this->AddVolumetricConstitutiveComponent(rVariables,rCabcd,
a,
b,
c,
d);
351 const unsigned int&
a,
const unsigned int&
b,
352 const unsigned int&
c,
const unsigned int&
d)
override
374 StressPartMatrix = GetI1RightCauchyGreenDerivative(rVariables.
Strain,StressPartMatrix);
377 StressPartMatrix = GetI2RightCauchyGreenDerivative(rVariables.
Strain,StressPartMatrix);
380 StressPartMatrix = GetI3RightCauchyGreenDerivative(rVariables.
Strain,StressPartMatrix);
388 for(
unsigned int e=0;
e<3;
e++)
390 for(
unsigned int f=0;
f<3;
f++)
393 Cabef = GetIsochoricRightCauchyGreenDerivative(rVariables.
Strain,Cabef,
a,
b,
e,
f);
394 Ccdef = GetIsochoricRightCauchyGreenDerivative(rVariables.
Strain,Ccdef,
c,
d,
e,
f);
442 StressPartMatrix = GetI1LeftCauchyGreenDerivative(rVariables.
Strain,StressPartMatrix);
445 StressPartMatrix = GetI2LeftCauchyGreenDerivative(rVariables.
Strain,StressPartMatrix);
448 StressPartMatrix = GetI3LeftCauchyGreenDerivative(rVariables.
Strain,StressPartMatrix);
455 for(
unsigned int e=0;
e<3;
e++)
457 for(
unsigned int f=0;
f<3;
f++)
460 Cabef = GetIsochoricLeftCauchyGreenDerivative(rVariables.
Strain,Cabef,
a,
b,
e,
f);
461 Ccdef = GetIsochoricLeftCauchyGreenDerivative(rVariables.
Strain,Ccdef,
c,
d,
e,
f);
463 rCabcd += ( msIdentityMatrix(
c,
d) * Cabef + msIdentityMatrix(
a,
b) * Ccdef + Dabcd * msIdentityMatrix(
e,
f) ) * (-2.0/3.0) * StressMatrix(
e,
f);
515 const unsigned int&
a,
const unsigned int&
b,
516 const unsigned int&
c,
const unsigned int&
d)
override
529 Cabcd = GetJRightCauchyGreen2ndDerivative(rVariables.
Strain,Cabcd,
a,
b,
c,
d);
533 Cabcd = GetJRightCauchyGreenSquare1stDerivative(rVariables.
Strain,Cabcd,
a,
b,
c,
d);
542 Cabcd = GetJLeftCauchyGreen2ndDerivative(rVariables.
Strain,Cabcd,
a,
b,
c,
d);
546 Cabcd = GetJLeftCauchyGreenSquare1stDerivative(rVariables.
Strain,Cabcd,
a,
b,
c,
d);
661 void save(
Serializer& rSerializer)
const override
StressMeasureType
Definition: constitutive_model_data.hpp:83
@ StressMeasure_Kirchhoff
Definition: amatrix_interface.h:41
Short class definition.
Definition: isochoric_mooney_rivlin_model.hpp:48
KRATOS_CLASS_POINTER_DEFINITION(IsochoricMooneyRivlinModel)
Pointer definition of IsochoricMooneyRivlinModel.
double & AddVolumetricConstitutiveComponent(HyperElasticDataType &rVariables, double &rCabcd, const unsigned int &a, const unsigned int &b, const unsigned int &c, const unsigned int &d) override
Definition: isochoric_mooney_rivlin_model.hpp:514
void CalculateAndAddIsochoricStressTensor(HyperElasticDataType &rVariables, MatrixType &rStressMatrix) override
Definition: isochoric_mooney_rivlin_model.hpp:211
void CalculateStressAndConstitutiveTensors(ModelDataType &rValues, MatrixType &rStressMatrix, Matrix &rConstitutiveMatrix) override
Definition: isochoric_mooney_rivlin_model.hpp:129
void CalculateAndAddVolumetricStrainEnergy(HyperElasticDataType &rVariables, double &rVolumetricDensityFunction) override
Definition: isochoric_mooney_rivlin_model.hpp:561
void CalculateStrainEnergy(ModelDataType &rValues, double &rDensityFunction) override
Definition: isochoric_mooney_rivlin_model.hpp:94
IsochoricMooneyRivlinModel(IsochoricMooneyRivlinModel const &rOther)
Copy constructor.
Definition: isochoric_mooney_rivlin_model.hpp:65
double & AddIsochoricConstitutiveComponent(HyperElasticDataType &rVariables, double &rCabcd, const unsigned int &a, const unsigned int &b, const unsigned int &c, const unsigned int &d) override
Definition: isochoric_mooney_rivlin_model.hpp:350
~IsochoricMooneyRivlinModel() override
Destructor.
Definition: isochoric_mooney_rivlin_model.hpp:81
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: isochoric_mooney_rivlin_model.hpp:172
ConstitutiveModel::Pointer Clone() const override
Clone.
Definition: isochoric_mooney_rivlin_model.hpp:75
void CalculateStressTensor(ModelDataType &rValues, MatrixType &rStressMatrix) override
Definition: isochoric_mooney_rivlin_model.hpp:110
IsochoricMooneyRivlinModel & operator=(IsochoricMooneyRivlinModel const &rOther)
Assignment operator.
Definition: isochoric_mooney_rivlin_model.hpp:68
void CalculateAndAddVolumetricStressTensor(HyperElasticDataType &rVariables, MatrixType &rStressMatrix) override
Definition: isochoric_mooney_rivlin_model.hpp:296
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: isochoric_mooney_rivlin_model.hpp:178
IsochoricMooneyRivlinModel()
Default constructor.
Definition: isochoric_mooney_rivlin_model.hpp:62
double & AddConstitutiveComponent(HyperElasticDataType &rVariables, double &rCabcd, const unsigned int &a, const unsigned int &b, const unsigned int &c, const unsigned int &d) override
Definition: isochoric_mooney_rivlin_model.hpp:330
double & GetVolumetricFunction2ndJDerivative(HyperElasticDataType &rVariables, double &rDerivative) override
Definition: isochoric_mooney_rivlin_model.hpp:601
double & GetVolumetricFunction1stJDerivative(HyperElasticDataType &rVariables, double &rDerivative) override
Definition: isochoric_mooney_rivlin_model.hpp:587
std::string Info() const override
Turn back information as a string.
Definition: isochoric_mooney_rivlin_model.hpp:164
void CalculateScalingFactors(HyperElasticDataType &rVariables) override
Definition: isochoric_mooney_rivlin_model.hpp:573
Short class definition.
Definition: mooney_rivlin_model.hpp:50
void CalculateScalingFactors(HyperElasticDataType &rVariables) override
Definition: mooney_rivlin_model.cpp:284
MooneyRivlinModel & operator=(MooneyRivlinModel const &rOther)
Assignment operator.
Definition: mooney_rivlin_model.cpp:47
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_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
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
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
f
Definition: generate_convection_diffusion_explicit_element.py:112
a
Definition: generate_stokes_twofluid_element.py:77
b
Definition: generate_total_lagrangian_mixed_volumetric_strain_element.py:31
c
Definition: generate_weakly_compressible_navier_stokes_element.py:108
def load(f)
Definition: ode_solve.py:307
int d
Definition: ode_solve.py:397
e
Definition: run_cpp_mpi_tests.py:31
Definition: constitutive_model_data.hpp:383
const double & GetPressure() const
Definition: constitutive_model_data.hpp:446
const StressMeasureType & GetStressMeasure() const
Definition: constitutive_model_data.hpp:452
MatrixType StressMatrix
Definition: constitutive_model_data.hpp:401
double Alpha3
Definition: hyper_elastic_model.hpp:70
double Alpha1
Definition: hyper_elastic_model.hpp:68
double Alpha4
Definition: hyper_elastic_model.hpp:71
double Beta4
Definition: hyper_elastic_model.hpp:76
double Alpha2
Definition: hyper_elastic_model.hpp:69
Definition: hyper_elastic_model.hpp:108
StrainData Strain
Definition: hyper_elastic_model.hpp:117
HyperElasticFactors Factors
Definition: hyper_elastic_model.hpp:116
const ModelDataType & GetModelData() const
Definition: hyper_elastic_model.hpp:124
MatrixType InverseMatrix
Definition: hyper_elastic_model.hpp:102
StrainInvariants Invariants
Definition: hyper_elastic_model.hpp:98
MatrixType Matrix
Definition: hyper_elastic_model.hpp:101
double J
Definition: hyper_elastic_model.hpp:60
double J_13
Definition: hyper_elastic_model.hpp:61