oomph::GeneralisedMooneyRivlin Class Reference

#include <constitutive_laws.h>

+ Inheritance diagram for oomph::GeneralisedMooneyRivlin:

Public Member Functions

 GeneralisedMooneyRivlin (double *nu_pt, double *c1_pt)
 
 GeneralisedMooneyRivlin (double *nu_pt, double *c1_pt, double *e_pt)
 
virtual ~GeneralisedMooneyRivlin ()
 Virtual destructor. More...
 
double W (const DenseMatrix< double > &gamma)
 Return the strain energy in terms of strain tensor. More...
 
double W (const Vector< double > &I)
 Return the strain energy in terms of the strain invariants. More...
 
void derivatives (Vector< double > &I, Vector< double > &dWdI)
 
bool requires_incompressibility_constraint ()
 
- Public Member Functions inherited from oomph::StrainEnergyFunction
 StrainEnergyFunction ()
 Constructor takes no arguments. More...
 
virtual ~StrainEnergyFunction ()
 Empty virtual destructor. More...
 
virtual void derivative (const DenseMatrix< double > &gamma, DenseMatrix< double > &dWdgamma)
 

Private Attributes

doubleNu_pt
 Poisson's ratio. More...
 
doubleC1_pt
 Mooney-Rivlin parameter. More...
 
doubleE_pt
 Young's modulus. More...
 
bool Must_delete_e
 

Detailed Description

///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// Generalisation of Mooney Rivlin constitutive law to compressible media as suggested on p. 553 of Fung, Y.C. & Tong, P. "Classical and Computational Solid Mechanics" World Scientific (2001). Input parameters are Young's modulus E, Poisson ratio nu and the Mooney-Rivlin constant C1. In the small-deformation-limit the behaviour becomes equivalent to that of linear elasticity with the same E and nu.

Note that there's a factor of 2 difference between C1 and the Mooney Rivlin C1!

Constructor & Destructor Documentation

◆ GeneralisedMooneyRivlin() [1/2]

oomph::GeneralisedMooneyRivlin::GeneralisedMooneyRivlin ( double nu_pt,
double c1_pt 
)
inline

Constructor takes the pointers to the constitutive parameters: Poisson's ratio, the Mooney-Rivlin parameter. Young's modulus is set to 1, implying that it has been used to scale the stresses

222  Nu_pt(nu_pt),
223  C1_pt(c1_pt),
224  E_pt(new double(1.0)),
225  Must_delete_e(true)
226  {
227  }
bool Must_delete_e
Definition: constitutive_laws.h:299
double * E_pt
Young's modulus.
Definition: constitutive_laws.h:295
double * Nu_pt
Poisson's ratio.
Definition: constitutive_laws.h:289
double * C1_pt
Mooney-Rivlin parameter.
Definition: constitutive_laws.h:292
StrainEnergyFunction()
Constructor takes no arguments.
Definition: constitutive_laws.h:51

◆ GeneralisedMooneyRivlin() [2/2]

oomph::GeneralisedMooneyRivlin::GeneralisedMooneyRivlin ( double nu_pt,
double c1_pt,
double e_pt 
)
inline

Constructor takes the pointers to the constitutive parameters: Poisson's ratio, the Mooney-Rivlin parameter and Young's modulus

233  Nu_pt(nu_pt),
234  C1_pt(c1_pt),
235  E_pt(e_pt),
236  Must_delete_e(false)
237  {
238  }

◆ ~GeneralisedMooneyRivlin()

virtual oomph::GeneralisedMooneyRivlin::~GeneralisedMooneyRivlin ( )
inlinevirtual

Virtual destructor.

243  {
244  if (Must_delete_e) delete E_pt;
245  }

References E_pt, and Must_delete_e.

Member Function Documentation

◆ derivatives()

void oomph::GeneralisedMooneyRivlin::derivatives ( Vector< double > &  I,
Vector< double > &  dWdI 
)
inlinevirtual

Return the derivatives of the strain energy function with respect to the strain invariants

Reimplemented from oomph::StrainEnergyFunction.

268  {
269  double G = (*E_pt) / (2.0 * (1.0 + (*Nu_pt)));
270  dWdI[0] = 0.5 * (*C1_pt);
271  dWdI[1] = 0.5 * (G - (*C1_pt));
272  dWdI[2] = 0.5 * ((*C1_pt) - 2.0 * G +
273  2.0 * (1.0 - (*Nu_pt)) * G * (I[2] - 1.0) /
274  (2.0 * (1.0 - 2.0 * (*Nu_pt))));
275  }
JacobiRotation< float > G
Definition: Jacobi_makeGivens.cpp:2
#define I
Definition: main.h:127

References G, and I.

◆ requires_incompressibility_constraint()

bool oomph::GeneralisedMooneyRivlin::requires_incompressibility_constraint ( )
inlinevirtual

Pure virtual function in which the user must declare if the constitutive equation requires an incompressible formulation in which the volume constraint is enforced explicitly. Used as a sanity check in PARANOID mode. False.

Implements oomph::StrainEnergyFunction.

283  {
284  return false;
285  }

◆ W() [1/2]

double oomph::GeneralisedMooneyRivlin::W ( const DenseMatrix< double > &  gamma)
inlinevirtual

Return the strain energy in terms of strain tensor.

Reimplemented from oomph::StrainEnergyFunction.

249  {
251  }
virtual double W(const DenseMatrix< double > &gamma)
Return the strain energy in terms of the strain tensor.
Definition: constitutive_laws.h:58
Mdouble gamma(Mdouble gamma_in)
This is the gamma function returns the true value for the half integer value.
Definition: ExtendedMath.cc:116

References mathsFunc::gamma(), and oomph::StrainEnergyFunction::W().

◆ W() [2/2]

double oomph::GeneralisedMooneyRivlin::W ( const Vector< double > &  I)
inlinevirtual

Return the strain energy in terms of the strain invariants.

Reimplemented from oomph::StrainEnergyFunction.

256  {
257  double G = (*E_pt) / (2.0 * (1.0 + (*Nu_pt)));
258  return 0.5 * ((*C1_pt) * (I[0] - 3.0) + (G - (*C1_pt)) * (I[1] - 3.0) +
259  ((*C1_pt) - 2.0 * G) * (I[2] - 1.0) +
260  (1.0 - (*Nu_pt)) * G * (I[2] - 1.0) * (I[2] - 1.0) /
261  (2.0 * (1.0 - 2.0 * (*Nu_pt))));
262  }

References C1_pt, G, I, and Nu_pt.

Member Data Documentation

◆ C1_pt

double* oomph::GeneralisedMooneyRivlin::C1_pt
private

Mooney-Rivlin parameter.

Referenced by W().

◆ E_pt

double* oomph::GeneralisedMooneyRivlin::E_pt
private

Young's modulus.

Referenced by ~GeneralisedMooneyRivlin().

◆ Must_delete_e

bool oomph::GeneralisedMooneyRivlin::Must_delete_e
private

Boolean flag to indicate if storage for elastic modulus must be deleted in destructor

Referenced by ~GeneralisedMooneyRivlin().

◆ Nu_pt

double* oomph::GeneralisedMooneyRivlin::Nu_pt
private

Poisson's ratio.

Referenced by W().


The documentation for this class was generated from the following file: