KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
isochoric_neo_hookean_model.hpp
Go to the documentation of this file.
1 //
2 // Project Name: KratosConstitutiveModelsApplication $
3 // Created by: $Author: JMCarbonell $
4 // Last modified by: $Co-Author: $
5 // Date: $Date: April 2017 $
6 // Revision: $Revision: 0.0 $
7 //
8 //
9 
10 #if !defined(KRATOS_ISOCHORIC_NEO_HOOKEAN_MODEL_H_INCLUDED )
11 #define KRATOS_ISOCHORIC_NEO_HOOKEAN_MODEL_H_INCLUDED
12 
13 // System includes
14 
15 // External includes
16 
17 // Project includes
19 
20 namespace Kratos
21 {
24 
27 
31 
35 
39 
43 
45 
47  class KRATOS_API(CONSTITUTIVE_MODELS_APPLICATION) IsochoricNeoHookeanModel : public IsochoricMooneyRivlinModel
48  {
49  public:
50 
53 
56 
60 
63 
66 
69  {
71  return *this;
72  }
73 
75  ConstitutiveModel::Pointer Clone() const override
76  {
77  return Kratos::make_shared<IsochoricNeoHookeanModel>(*this);
78  }
79 
82 
83 
87 
88 
92 
93 
94  // Simplyfied methods must be implemented for performance purposes
95 
112  int Check(const Properties& rProperties, const ProcessInfo& rCurrentProcessInfo) override
113  {
114  KRATOS_TRY
115 
116  HyperElasticModel::Check(rProperties,rCurrentProcessInfo);
117 
118  if( C10.Key() == 0 || rProperties[C10] <= 0.00 )
119  KRATOS_ERROR << "C10 has an invalid key or value" << std::endl;
120 
121  if( BULK_MODULUS.Key() == 0 || rProperties[BULK_MODULUS] <= 0.00 )
122  KRATOS_ERROR << "BULK_MODULUS has an invalid key or value" << std::endl;
123 
124 
125  return 0;
126 
127  KRATOS_CATCH(" ")
128  }
129 
130 
134 
135 
139 
140 
144 
146  std::string Info() const override
147  {
148  std::stringstream buffer;
149  buffer << "IsochoricNeoHookeanModel";
150  return buffer.str();
151  }
152 
154  void PrintInfo(std::ostream& rOStream) const override
155  {
156  rOStream << "IsochoricNeoHookeanModel";
157  }
158 
160  void PrintData(std::ostream& rOStream) const override
161  {
162  rOStream << "IsochoricNeoHookeanModel Data";
163  }
164 
165 
169 
170 
172 
173  protected:
174 
177 
181 
185 
186 
190 
191  //specialized methods:
192 
193  virtual void CalculateVolumetricFactor(HyperElasticDataType& rVariables, double& rFactor)
194  {
195  KRATOS_TRY
196 
197  rFactor = 0.5 * (rVariables.Strain.Invariants.I3-1.0);
198 
199  KRATOS_CATCH(" ")
200  }
201 
202  virtual void CalculatePressureFactor(HyperElasticDataType& rVariables, double& rFactor)
203  {
204  KRATOS_TRY
205 
206  this->CalculateVolumetricFactor(rVariables,rFactor);
207 
208  rFactor *= rVariables.GetMaterialParameters().GetBulkModulus();
209 
210  KRATOS_CATCH(" ")
211  }
212 
213  virtual void CalculateConstitutiveMatrixFactor(HyperElasticDataType& rVariables, double& rFactor)
214  {
215  KRATOS_TRY
216 
217  rFactor = rVariables.Strain.Invariants.I3;
218 
219  KRATOS_CATCH(" ")
220  }
221 
222  virtual void CalculateConstitutiveMatrixPressureFactor(HyperElasticDataType& rVariables, double& rFactor)
223  {
224  KRATOS_TRY
225 
226  rFactor = rVariables.GetMaterialParameters().GetBulkModulus();
227 
228  KRATOS_CATCH(" ")
229  }
230 
231  // SPECIALIZED METHODS:
232  // {
233 
234  // Specialized method instead of the general one (faster) this calculation is not needed
236  {
237  KRATOS_TRY
238 
239  // MooneyRivlinModel::CalculateScalingFactors(rVariables);
240 
241  // rVariables.Factors.Alpha4 = this->GetVolumetricFunction1stJDerivative(rVariables,rVariables.Factors.Alpha4);
242  // rVariables.Factors.Beta4 = this->GetVolumetricFunction2ndJDerivative(rVariables,rVariables.Factors.Beta4);
243 
244  KRATOS_CATCH(" ")
245  }
246 
247  // Specialized method instead of the general one (faster)
248  virtual void CalculateAndAddIsochoricStressTensor(HyperElasticDataType& rVariables, MatrixType& rStressMatrix) override
249  {
250  KRATOS_TRY
251 
252  const ModelDataType& rModelData = rVariables.GetModelData();
253  const StressMeasureType& rStressMeasure = rModelData.GetStressMeasure();
254 
255  MatrixType StressMatrix;
256  const MaterialDataType& rMaterial = rVariables.GetMaterialParameters();
257 
258  if( rStressMeasure == ConstitutiveModelData::StressMeasureType::StressMeasure_PK2 ){ //Variables.Strain.Matrix = RightCauchyGreen (C)
259 
260  StressMatrix = msIdentityMatrix;
261  StressMatrix -= 1.0/3.0 * ( rVariables.Strain.Matrix(0,0) + rVariables.Strain.Matrix(1,1) + rVariables.Strain.Matrix(2,2) ) * rVariables.Strain.InverseMatrix;
262 
263  StressMatrix *= rMaterial.GetLameMu() * rVariables.Strain.Invariants.J_13 * rVariables.Strain.Invariants.J_13;
264 
265  rStressMatrix += StressMatrix;
266  }
267  else if( rStressMeasure == ConstitutiveModelData::StressMeasureType::StressMeasure_Kirchhoff ){ //Variables.Strain.Matrix = LeftCauchyGreen (b)
268 
269  StressMatrix = rVariables.Strain.Matrix;
270  StressMatrix -= 1.0/3.0 * ( rVariables.Strain.Matrix(0,0) + rVariables.Strain.Matrix(1,1) + rVariables.Strain.Matrix(2,2) ) * msIdentityMatrix;
271  StressMatrix *= rMaterial.GetLameMu() * rVariables.Strain.Invariants.J_13 * rVariables.Strain.Invariants.J_13;
272 
273  rStressMatrix += StressMatrix;
274  }
275 
276 
277  KRATOS_CATCH(" ")
278  }
279 
280  // Specialized method instead of the general one (faster) needs compatibility for incompressible law (BulkFactor Method)
281  virtual void CalculateAndAddVolumetricStressTensor(HyperElasticDataType& rVariables, MatrixType& rStressMatrix) override
282  {
283  KRATOS_TRY
284 
285  const ModelDataType& rModelData = rVariables.GetModelData();
286  const StressMeasureType& rStressMeasure = rModelData.GetStressMeasure();
287 
288  MatrixType StressMatrix;
289 
290  double Factor = 0;
291  this->CalculatePressureFactor(rVariables,Factor);
292 
293 
294  if( rStressMeasure == ConstitutiveModelData::StressMeasureType::StressMeasure_PK2 ){ //Variables.Strain.Matrix = RightCauchyGreen (C)
295 
296  StressMatrix = Factor * rVariables.Strain.InverseMatrix;
297 
298  rStressMatrix += StressMatrix;
299  }
300  else if( rStressMeasure == ConstitutiveModelData::StressMeasureType::StressMeasure_Kirchhoff ){ //Variables.Strain.Matrix = LeftCauchyGreen (b)
301 
302  StressMatrix = Factor * msIdentityMatrix;
303 
304  rStressMatrix += StressMatrix;
305  }
306 
307  KRATOS_CATCH(" ")
308  }
309 
310  // Specialized method instead of the general one (faster)
311  virtual double& AddIsochoricConstitutiveComponent(HyperElasticDataType& rVariables, double &rCabcd,
312  const unsigned int& a, const unsigned int& b,
313  const unsigned int& c, const unsigned int& d) override
314  {
315  KRATOS_TRY
316 
317 
318  double Cabcd = 0;
319 
320  const MaterialDataType& rMaterial = rVariables.GetMaterialParameters();
321 
322  const ModelDataType& rModelData = rVariables.GetModelData();
323  const StressMeasureType& rStressMeasure = rModelData.GetStressMeasure();
324  const MatrixType& rIsochoricStressMatrix = rModelData.GetStressMatrix();
325 
326 
327  if( rStressMeasure == ConstitutiveModelData::StressMeasureType::StressMeasure_PK2 ){ //mStrainMatrix = RightCauchyGreen (C)
328 
329  Cabcd = (1.0/3.0) * (rVariables.Strain.InverseMatrix(a,b)*rVariables.Strain.InverseMatrix(d,c));
330 
331  Cabcd -= 0.5 * (rVariables.Strain.InverseMatrix(a,c)*rVariables.Strain.InverseMatrix(b,d)+rVariables.Strain.InverseMatrix(a,d)*rVariables.Strain.InverseMatrix(b,c));
332 
333  Cabcd *= rMaterial.GetLameMu() * ( rVariables.Strain.Matrix(0,0) + rVariables.Strain.Matrix(1,1) + rVariables.Strain.Matrix(2,2) ) * rVariables.Strain.Invariants.J_13 * rVariables.Strain.Invariants.J_13;
334 
335  Cabcd += (rVariables.Strain.InverseMatrix(c,d)*rIsochoricStressMatrix(a,b)+rIsochoricStressMatrix(c,d)*rVariables.Strain.InverseMatrix(a,b));
336 
337  Cabcd *= (-2.0/3.0);
338 
339  }
340  else if( rStressMeasure == ConstitutiveModelData::StressMeasureType::StressMeasure_Kirchhoff ){ //mStrainMatrix = LeftCauchyGreen (b)
341 
342  Cabcd = (1.0/3.0) * (msIdentityMatrix(a,b)*msIdentityMatrix(c,d));
343 
344 
345  Cabcd -= 0.5 * (msIdentityMatrix(a,c)*msIdentityMatrix(b,d)+msIdentityMatrix(a,d)*msIdentityMatrix(b,c));
346 
347 
348  Cabcd *= rMaterial.GetLameMu() * ( rVariables.Strain.Matrix(0,0) + rVariables.Strain.Matrix(1,1) + rVariables.Strain.Matrix(2,2) ) * rVariables.Strain.Invariants.J_13 * rVariables.Strain.Invariants.J_13;
349 
350 
351  Cabcd += (msIdentityMatrix(c,d)*rIsochoricStressMatrix(a,b)+rIsochoricStressMatrix(c,d)*msIdentityMatrix(a,b));
352 
353  Cabcd *= (-2.0/3.0);
354 
355  }
356 
357  rCabcd += Cabcd;
358 
359  rVariables.State().Set(ConstitutiveModelData::CONSTITUTIVE_MATRIX_COMPUTED);
360 
361  return rCabcd;
362 
363  KRATOS_CATCH(" ")
364  }
365 
366  // Specialized method instead of the general one (faster) needs compatibility for incompressible law (BulkFactor Method)
367  virtual double& AddVolumetricConstitutiveComponent(HyperElasticDataType& rVariables, double &rCabcd,
368  const unsigned int& a, const unsigned int& b,
369  const unsigned int& c, const unsigned int& d) override
370  {
371  KRATOS_TRY
372 
373 
374  double Cabcd = 0;
375 
376  const ModelDataType& rModelData = rVariables.GetModelData();
377  const StressMeasureType& rStressMeasure = rModelData.GetStressMeasure();
378 
379  double FactorA = 0;
380  this->CalculateConstitutiveMatrixFactor(rVariables,FactorA);
381 
382  double FactorB = 0;
383  this->CalculateVolumetricFactor(rVariables,FactorB);
384 
385  double FactorC = 0;
386  this->CalculateConstitutiveMatrixPressureFactor(rVariables,FactorC);
387 
388  if( rStressMeasure == ConstitutiveModelData::StressMeasureType::StressMeasure_PK2 ){ //mStrainMatrix = RightCauchyGreen (C)
389 
390  Cabcd = FactorA * (rVariables.Strain.InverseMatrix(a,b)*rVariables.Strain.InverseMatrix(c,d));
391 
392  Cabcd -= FactorB * (rVariables.Strain.InverseMatrix(a,c)*rVariables.Strain.InverseMatrix(b,d)+rVariables.Strain.InverseMatrix(a,d)*rVariables.Strain.InverseMatrix(b,c));
393 
394  Cabcd *= FactorC;
395 
396  }
397  else if( rStressMeasure == ConstitutiveModelData::StressMeasureType::StressMeasure_Kirchhoff ){ //mStrainMatrix = LeftCauchyGreen (b)
398 
399  Cabcd = FactorA * (msIdentityMatrix(a,b)*msIdentityMatrix(c,d));
400 
401  Cabcd -= FactorB * (msIdentityMatrix(a,c)*msIdentityMatrix(b,d)+msIdentityMatrix(a,d)*msIdentityMatrix(b,c));
402 
403  Cabcd *= FactorC;
404 
405  }
406 
407  rCabcd += Cabcd;
408 
409  rVariables.State().Set(ConstitutiveModelData::CONSTITUTIVE_MATRIX_COMPUTED);
410 
411  return rCabcd;
412 
413  KRATOS_CATCH(" ")
414  }
415 
416  // } SPECIALIED METHODS END
417 
418  //************// W
419 
420  void CalculateAndAddIsochoricStrainEnergy(HyperElasticDataType& rVariables, double& rIsochoricDensityFunction) override
421  {
422  KRATOS_TRY
423 
424  const MaterialDataType& rMaterial = rVariables.GetMaterialParameters();
425 
426  rIsochoricDensityFunction += rMaterial.GetModelParameters()[0] * ( rVariables.Strain.Invariants.J_13 * rVariables.Strain.Invariants.I1 - 3.0);
427 
428  KRATOS_CATCH(" ")
429  }
430 
431 
432  void CalculateAndAddVolumetricStrainEnergy(HyperElasticDataType& rVariables, double& rVolumetricDensityFunction) override
433  {
434  KRATOS_TRY
435 
436  const MaterialDataType& rMaterial = rVariables.GetMaterialParameters();
437 
438  //energy function "U(J) = (K/4)*(J²-1) - (K/2)*lnJ"
439  rVolumetricDensityFunction += rMaterial.GetBulkModulus() * 0.25 * ( rVariables.Strain.Invariants.J * rVariables.Strain.Invariants.J - 1.0);
440  rVolumetricDensityFunction -= rMaterial.GetBulkModulus() * 0.5 * std::log( rVariables.Strain.Invariants.J );
441 
442  KRATOS_CATCH(" ")
443  }
444 
445  //************// dW
446 
447  double& GetFunction1stI1Derivative(HyperElasticDataType& rVariables, double& rDerivative) override //dW/dI1
448  {
449  KRATOS_TRY
450 
451  const MaterialDataType& rMaterial = rVariables.GetMaterialParameters();
452 
453  rDerivative = rMaterial.GetModelParameters()[0];
454 
455  return rDerivative;
456 
457  KRATOS_CATCH(" ")
458  }
459 
460  double& GetFunction1stI2Derivative(HyperElasticDataType& rVariables, double& rDerivative) override //dW/dI2
461  {
462  KRATOS_TRY
463 
464  rDerivative = 0.0;
465 
466  return rDerivative;
467 
468  KRATOS_CATCH(" ")
469  }
470 
471  double& GetFunction1stI3Derivative(HyperElasticDataType& rVariables, double& rDerivative) override //dW/dI3
472  {
473  KRATOS_TRY
474 
475  rDerivative = 0.0;
476 
477  return rDerivative;
478 
479  KRATOS_CATCH(" ")
480  }
481 
482 
483  double& GetVolumetricFunction1stJDerivative(HyperElasticDataType& rVariables, double& rDerivative) override //dU/dJ
484  {
485  KRATOS_TRY
486 
487  const MaterialDataType& rMaterial = rVariables.GetMaterialParameters();
488 
489  //derivative of "U(J) = (K/4)*(J²-1) - (K/2)*lnJ"
490  //dU(J)/dJ = (K/2)*(J-1/J)
491  rDerivative = 0.5 * rMaterial.GetBulkModulus() * ( rVariables.Strain.Invariants.J * rVariables.Strain.Invariants.J - 1.0 );
492 
493  rDerivative /= rVariables.Strain.Invariants.J;
494 
495  return rDerivative;
496 
497  KRATOS_CATCH(" ")
498  }
499 
500 
501  double& GetFunction2ndI1Derivative(HyperElasticDataType& rVariables, double& rDerivative) override //ddW/dI1dI1
502  {
503  KRATOS_TRY
504 
505  rDerivative = 0.0;
506 
507  return rDerivative;
508 
509  KRATOS_CATCH(" ")
510  }
511 
512  double& GetFunction2ndI2Derivative(HyperElasticDataType& rVariables, double& rDerivative) override //ddW/dI2dI2
513  {
514  KRATOS_TRY
515 
516  rDerivative = 0.0;
517 
518  return rDerivative;
519 
520  KRATOS_CATCH(" ")
521  }
522 
523  double& GetFunction2ndI3Derivative(HyperElasticDataType& rVariables, double& rDerivative) override //ddW/dI3dI3
524  {
525  KRATOS_TRY
526 
527  rDerivative = 0.0;
528 
529  return rDerivative;
530 
531  KRATOS_CATCH(" ")
532  }
533 
534 
535  double& GetVolumetricFunction2ndJDerivative(HyperElasticDataType& rVariables, double& rDerivative) override //ddU/dJdJ
536  {
537  KRATOS_TRY
538 
539  const MaterialDataType& rMaterial = rVariables.GetMaterialParameters();
540 
541  //derivative of "dU(J)/dJ = (K/2)*(J-1/J)"
542  //ddU(J)/dJdJ = (K/2)*(1-1/J²)
543  rDerivative = 0.5 * rMaterial.GetBulkModulus() * (rVariables.Strain.Invariants.J * rVariables.Strain.Invariants.J + 1.0 );
544 
545  rDerivative /= rVariables.Strain.Invariants.J * rVariables.Strain.Invariants.J ;
546 
547  return rDerivative;
548 
549  KRATOS_CATCH(" ")
550  }
551 
552 
556 
557 
561 
562 
566 
567 
569 
570  private:
571 
574 
575 
579 
580 
584 
585 
589 
590 
594 
595 
599  friend class Serializer;
600 
601 
602  void save(Serializer& rSerializer) const override
603  {
605  }
606 
607  void load(Serializer& rSerializer) override
608  {
610  }
611 
615 
616 
620 
622 
623  }; // Class IsochoricNeoHookeanModel
624 
626 
629 
630 
634 
635 
637 
639 
640 } // namespace Kratos.
641 
642 #endif // KRATOS_ISOCHORIC_NEO_HOOKEAN_MODEL_H_INCLUDED defined
StressMeasureType
Definition: constitutive_model_data.hpp:83
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