10 #if !defined(KRATOS_ISOCHORIC_HYPO_ELASTIC_MODEL_H_INCLUDED )
11 #define KRATOS_ISOCHORIC_HYPO_ELASTIC_MODEL_H_INCLUDED
75 ConstitutiveModel::Pointer
Clone()
const override
77 return Kratos::make_shared<IsochoricHypoElasticModel>(*
this);
99 this->InitializeElasticData(rValues,Variables);
101 rDensityFunction = 0;
102 this->CalculateAndAddIsochoricStrainEnergy( Variables, rDensityFunction );
103 this->CalculateAndAddVolumetricStrainEnergy( Variables, rDensityFunction );
115 this->InitializeElasticData(rValues,Variables);
120 this->CalculateAndAddConstitutiveTensor(Variables);
124 this->CalculateAndAddIsochoricStressTensor(Variables,StrainVector,StressVector);
128 this->CalculateAndAddVolumetricStressTensor(Variables,StrainVector,StressVector);
136 this->AddHistoricalStress(rValues, rStressMatrix);
138 Variables.State().Set(ConstitutiveModelData::STRESS_COMPUTED);
149 this->InitializeElasticData(rValues,Variables);
155 this->CalculateAndAddConstitutiveTensor(Variables,rConstitutiveMatrix);
160 this->CalculateAndAddIsochoricStressTensor(Variables,StrainVector,StressVector);
164 this->CalculateAndAddVolumetricStressTensor(Variables,StrainVector,StressVector);
172 this->AddHistoricalStress(rValues, rStressMatrix);
174 Variables.State().Set(ConstitutiveModelData::STRESS_COMPUTED);
194 std::string
Info()
const override
196 std::stringstream buffer;
197 buffer <<
"IsochoricHypoElasticModel";
204 rOStream <<
"IsochoricHypoElasticModel";
210 rOStream <<
"IsochoricHypoElasticModel Data";
247 this->CalculateAndAddStressTensor(rVariables,rStrainVector,StressVector);
250 double MeanStress = (1.0/3.0) * (StressVector[0]+StressVector[1]+StressVector[2]);
251 for (
unsigned int i = 0;
i < 3;
i++)
252 StressVector[
i] -= MeanStress;
254 rStressVector += StressVector;
266 this->CalculateAndAddStressTensor(rVariables,rStrainVector,StressVector);
269 double MeanStress = (1.0/3.0) * (StressVector[0]+StressVector[1]+StressVector[2]);
270 for (
unsigned int i = 0;
i < 3;
i++)
271 rStressVector[
i] += MeanStress;
281 KRATOS_ERROR <<
"calling the class function in IsochoricHypoElasticModel ... illegal operation" << std::endl;
290 KRATOS_ERROR <<
"calling the class function in IsochoricHypoElasticModel ... illegal operation" << std::endl;
345 void save(
Serializer& rSerializer)
const override
static MatrixType & VectorToSymmetricTensor(const array_1d< double, 6 > &rVector, MatrixType &rMatrix)
Definition: constitutive_model_utilities.hpp:568
static void StrainTensorToVector(const MatrixType &rMatrix, array_1d< double, 6 > &rVector)
Definition: constitutive_model_utilities.hpp:646
Short class definition.
Definition: hypo_elastic_model.hpp:50
HypoElasticModel & operator=(HypoElasticModel const &rOther)
Assignment operator.
Definition: hypo_elastic_model.cpp:46
Definition: amatrix_interface.h:41
Short class definition.
Definition: isochoric_hypo_elastic_model.hpp:48
void CalculateStressTensor(ModelDataType &rValues, MatrixType &rStressMatrix) override
Definition: isochoric_hypo_elastic_model.hpp:110
void CalculateAndAddIsochoricStrainEnergy(ElasticDataType &rVariables, double &rIsochoricDensityFunction) override
Definition: isochoric_hypo_elastic_model.hpp:277
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: isochoric_hypo_elastic_model.hpp:202
std::string Info() const override
Turn back information as a string.
Definition: isochoric_hypo_elastic_model.hpp:194
void CalculateStressAndConstitutiveTensors(ModelDataType &rValues, MatrixType &rStressMatrix, Matrix &rConstitutiveMatrix) override
Definition: isochoric_hypo_elastic_model.hpp:144
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: isochoric_hypo_elastic_model.hpp:208
IsochoricHypoElasticModel & operator=(IsochoricHypoElasticModel const &rOther)
Assignment operator.
Definition: isochoric_hypo_elastic_model.hpp:68
void CalculateAndAddVolumetricStrainEnergy(ElasticDataType &rVariables, double &rVolumetricDensityFunction) override
Definition: isochoric_hypo_elastic_model.hpp:286
KRATOS_CLASS_POINTER_DEFINITION(IsochoricHypoElasticModel)
Pointer definition of IsochoricHypoElasticModel.
IsochoricHypoElasticModel(IsochoricHypoElasticModel const &rOther)
Copy constructor.
Definition: isochoric_hypo_elastic_model.hpp:65
~IsochoricHypoElasticModel() override
Destructor.
Definition: isochoric_hypo_elastic_model.hpp:81
void CalculateAndAddVolumetricStressTensor(ElasticDataType &rVariables, VectorType &rStrainVector, VectorType &rStressVector) override
Definition: isochoric_hypo_elastic_model.hpp:260
ConstitutiveModel::Pointer Clone() const override
Clone.
Definition: isochoric_hypo_elastic_model.hpp:75
IsochoricHypoElasticModel()
Default constructor.
Definition: isochoric_hypo_elastic_model.hpp:62
void CalculateStrainEnergy(ModelDataType &rValues, double &rDensityFunction) override
Definition: isochoric_hypo_elastic_model.hpp:94
void CalculateAndAddIsochoricStressTensor(ElasticDataType &rVariables, VectorType &rStrainVector, VectorType &rStressVector) override
Definition: isochoric_hypo_elastic_model.hpp:241
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
KratosZeroVector< double > ZeroVector
Definition: amatrix_interface.h:561
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
def load(f)
Definition: ode_solve.py:307
integer i
Definition: TensorModule.f:17
Definition: constitutive_model_data.hpp:383
const ProcessInfo & GetProcessInfo() const
Definition: constitutive_model_data.hpp:435
MatrixType StressMatrix
Definition: constitutive_model_data.hpp:401
Definition: hypo_elastic_model.hpp:54