10 #if !defined(KRATOS_ISOCHORIC_NEO_HOOKEAN_MODEL_H_INCLUDED )
11 #define KRATOS_ISOCHORIC_NEO_HOOKEAN_MODEL_H_INCLUDED
75 ConstitutiveModel::Pointer
Clone()
const override
77 return Kratos::make_shared<IsochoricNeoHookeanModel>(*
this);
118 if( C10.Key() == 0 || rProperties[C10] <= 0.00 )
119 KRATOS_ERROR <<
"C10 has an invalid key or value" << std::endl;
121 if( BULK_MODULUS.Key() == 0 || rProperties[BULK_MODULUS] <= 0.00 )
122 KRATOS_ERROR <<
"BULK_MODULUS has an invalid key or value" << std::endl;
146 std::string
Info()
const override
148 std::stringstream buffer;
149 buffer <<
"IsochoricNeoHookeanModel";
156 rOStream <<
"IsochoricNeoHookeanModel";
162 rOStream <<
"IsochoricNeoHookeanModel Data";
206 this->CalculateVolumetricFactor(rVariables,rFactor);
260 StressMatrix = msIdentityMatrix;
265 rStressMatrix += StressMatrix;
273 rStressMatrix += StressMatrix;
291 this->CalculatePressureFactor(rVariables,Factor);
298 rStressMatrix += StressMatrix;
302 StressMatrix = Factor * msIdentityMatrix;
304 rStressMatrix += StressMatrix;
312 const unsigned int&
a,
const unsigned int&
b,
313 const unsigned int&
c,
const unsigned int&
d)
override
342 Cabcd = (1.0/3.0) * (msIdentityMatrix(
a,
b)*msIdentityMatrix(
c,
d));
345 Cabcd -= 0.5 * (msIdentityMatrix(
a,
c)*msIdentityMatrix(
b,
d)+msIdentityMatrix(
a,
d)*msIdentityMatrix(
b,
c));
351 Cabcd += (msIdentityMatrix(
c,
d)*rIsochoricStressMatrix(
a,
b)+rIsochoricStressMatrix(
c,
d)*msIdentityMatrix(
a,
b));
359 rVariables.
State().
Set(ConstitutiveModelData::CONSTITUTIVE_MATRIX_COMPUTED);
368 const unsigned int&
a,
const unsigned int&
b,
369 const unsigned int&
c,
const unsigned int&
d)
override
380 this->CalculateConstitutiveMatrixFactor(rVariables,FactorA);
383 this->CalculateVolumetricFactor(rVariables,FactorB);
386 this->CalculateConstitutiveMatrixPressureFactor(rVariables,FactorC);
399 Cabcd = FactorA * (msIdentityMatrix(
a,
b)*msIdentityMatrix(
c,
d));
401 Cabcd -= FactorB * (msIdentityMatrix(
a,
c)*msIdentityMatrix(
b,
d)+msIdentityMatrix(
a,
d)*msIdentityMatrix(
b,
c));
409 rVariables.
State().
Set(ConstitutiveModelData::CONSTITUTIVE_MATRIX_COMPUTED);
440 rVolumetricDensityFunction -= rMaterial.GetBulkModulus() * 0.5 * std::log( rVariables.
Strain.
Invariants.
J );
491 rDerivative = 0.5 * rMaterial.
GetBulkModulus() * ( rVariables.Strain.Invariants.J * rVariables.Strain.Invariants.J - 1.0 );
493 rDerivative /= rVariables.Strain.Invariants.J;
543 rDerivative = 0.5 * rMaterial.
GetBulkModulus() * (rVariables.Strain.Invariants.J * rVariables.Strain.Invariants.J + 1.0 );
545 rDerivative /= rVariables.Strain.Invariants.J * rVariables.Strain.Invariants.J ;
602 void save(
Serializer& rSerializer)
const override
StressMeasureType
Definition: constitutive_model_data.hpp:83
@ StressMeasure_Kirchhoff
void Set(const Flags ThisFlag)
Definition: flags.cpp:33
int Check(const Properties &rProperties, const ProcessInfo &rCurrentProcessInfo) override
Definition: hyper_elastic_model.cpp:728
Definition: amatrix_interface.h:41
Short class definition.
Definition: isochoric_mooney_rivlin_model.hpp:48
IsochoricMooneyRivlinModel & operator=(IsochoricMooneyRivlinModel const &rOther)
Assignment operator.
Definition: isochoric_mooney_rivlin_model.hpp:68
Short class definition.
Definition: isochoric_neo_hookean_model.hpp:48
double & GetFunction1stI1Derivative(HyperElasticDataType &rVariables, double &rDerivative) override
Definition: isochoric_neo_hookean_model.hpp:447
IsochoricNeoHookeanModel(IsochoricNeoHookeanModel const &rOther)
Copy constructor.
Definition: isochoric_neo_hookean_model.hpp:65
IsochoricNeoHookeanModel & operator=(IsochoricNeoHookeanModel const &rOther)
Assignment operator.
Definition: isochoric_neo_hookean_model.hpp:68
double & GetFunction2ndI1Derivative(HyperElasticDataType &rVariables, double &rDerivative) override
Definition: isochoric_neo_hookean_model.hpp:501
double & GetFunction2ndI3Derivative(HyperElasticDataType &rVariables, double &rDerivative) override
Definition: isochoric_neo_hookean_model.hpp:523
virtual void CalculateVolumetricFactor(HyperElasticDataType &rVariables, double &rFactor)
Definition: isochoric_neo_hookean_model.hpp:193
std::string Info() const override
Turn back information as a string.
Definition: isochoric_neo_hookean_model.hpp:146
void CalculateAndAddIsochoricStrainEnergy(HyperElasticDataType &rVariables, double &rIsochoricDensityFunction) override
Definition: isochoric_neo_hookean_model.hpp:420
virtual void CalculateConstitutiveMatrixFactor(HyperElasticDataType &rVariables, double &rFactor)
Definition: isochoric_neo_hookean_model.hpp:213
virtual void CalculateConstitutiveMatrixPressureFactor(HyperElasticDataType &rVariables, double &rFactor)
Definition: isochoric_neo_hookean_model.hpp:222
double & GetVolumetricFunction2ndJDerivative(HyperElasticDataType &rVariables, double &rDerivative) override
Definition: isochoric_neo_hookean_model.hpp:535
virtual 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_neo_hookean_model.hpp:367
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: isochoric_neo_hookean_model.hpp:154
IsochoricNeoHookeanModel()
Default constructor.
Definition: isochoric_neo_hookean_model.hpp:62
double & GetFunction1stI3Derivative(HyperElasticDataType &rVariables, double &rDerivative) override
Definition: isochoric_neo_hookean_model.hpp:471
virtual void CalculateAndAddIsochoricStressTensor(HyperElasticDataType &rVariables, MatrixType &rStressMatrix) override
Definition: isochoric_neo_hookean_model.hpp:248
KRATOS_CLASS_POINTER_DEFINITION(IsochoricNeoHookeanModel)
Pointer definition of IsochoricNeoHookeanModel.
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: isochoric_neo_hookean_model.hpp:160
double & GetFunction2ndI2Derivative(HyperElasticDataType &rVariables, double &rDerivative) override
Definition: isochoric_neo_hookean_model.hpp:512
double & GetFunction1stI2Derivative(HyperElasticDataType &rVariables, double &rDerivative) override
Definition: isochoric_neo_hookean_model.hpp:460
void CalculateScalingFactors(HyperElasticDataType &rVariables) override
Definition: isochoric_neo_hookean_model.hpp:235
~IsochoricNeoHookeanModel() override
Destructor.
Definition: isochoric_neo_hookean_model.hpp:81
virtual 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_neo_hookean_model.hpp:311
virtual void CalculateAndAddVolumetricStressTensor(HyperElasticDataType &rVariables, MatrixType &rStressMatrix) override
Definition: isochoric_neo_hookean_model.hpp:281
virtual void CalculatePressureFactor(HyperElasticDataType &rVariables, double &rFactor)
Definition: isochoric_neo_hookean_model.hpp:202
void CalculateAndAddVolumetricStrainEnergy(HyperElasticDataType &rVariables, double &rVolumetricDensityFunction) override
Definition: isochoric_neo_hookean_model.hpp:432
double & GetVolumetricFunction1stJDerivative(HyperElasticDataType &rVariables, double &rDerivative) override
Definition: isochoric_neo_hookean_model.hpp:483
ConstitutiveModel::Pointer Clone() const override
Clone.
Definition: isochoric_neo_hookean_model.hpp:75
int Check(const Properties &rProperties, const ProcessInfo &rCurrentProcessInfo) override
Definition: isochoric_neo_hookean_model.hpp:112
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
#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
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
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
Definition: constitutive_model_data.hpp:92
const double & GetLameMu() const
Definition: constitutive_model_data.hpp:111
const double & GetBulkModulus() const
Definition: constitutive_model_data.hpp:114
const std::vector< double > & GetModelParameters() const
Definition: constitutive_model_data.hpp:116
Definition: constitutive_model_data.hpp:383
const StressMeasureType & GetStressMeasure() const
Definition: constitutive_model_data.hpp:452
const MatrixType & GetStressMatrix() const
Definition: constitutive_model_data.hpp:461
Definition: hyper_elastic_model.hpp:108
StrainData Strain
Definition: hyper_elastic_model.hpp:117
Flags & State()
Definition: hyper_elastic_model.hpp:128
const MaterialDataType & GetMaterialParameters() const
Definition: hyper_elastic_model.hpp:125
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 I1
Definition: hyper_elastic_model.hpp:56
double J_13
Definition: hyper_elastic_model.hpp:61
double I3
Definition: hyper_elastic_model.hpp:58