![]() |
|
#include <constitutive_laws.h>
Private Attributes | |
double * | Nu_pt |
Poisson ratio. More... | |
double * | E_pt |
Young's modulus. More... | |
bool | Must_delete_e |
Additional Inherited Members | |
![]() | |
bool | is_matrix_square (const DenseMatrix< double > &M) |
Test whether a matrix is square. More... | |
bool | are_matrices_of_equal_dimensions (const DenseMatrix< double > &M1, const DenseMatrix< double > &M2) |
Test whether two matrices are of equal dimensions. More... | |
void | error_checking_in_input (const DenseMatrix< double > &g, const DenseMatrix< double > &G, DenseMatrix< double > &sigma) |
double | calculate_contravariant (const DenseMatrix< double > &Gcov, DenseMatrix< double > &Gcontra) |
The function to calculate the contravariant tensor from a covariant one. More... | |
void | calculate_d_contravariant_dG (const DenseMatrix< double > &Gcov, RankFourTensor< double > &dGcontra_dG, DenseMatrix< double > &d_detG_dG) |
////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// Class for a "non-rational" extension of classical linear elasticity to large displacements:
\[ \sigma^{ij} = E^{ijkl} \gamma_{kl} \]
where
\[ E^{ijkl} = \frac{E}{(1+\nu)} \left( \frac{\nu}{(1-2\nu)} G^{ij} G^{kl} + \frac{1}{2} \left( G^{ik} G^{jl} + G^{il} G^{jk} \right) \right) \]
For small strains \( (| G_{ij} - g_{ij} | \ll 1)\) this approaches the version appropriate for linear elasticity, obtained by replacing \( G^{ij}\) with \( g^{ij}\).
We provide three versions of calculate_second_piola_kirchhoff_stress()
:
If the material is incompressible ( \( \nu = 1/2 \)), the first term in the above expression for \( E^{ijkl} \) is singular. We re-write the constitutive equation for this case as
\[ \sigma^{ij} = -p G^{ij} + \frac{E}{3} \left( G^{ik} G^{jl} + G^{il} G^{jk} \right) \gamma_{kl} \]
where the pressure \( p \) needs to be determined independently via the incompressibility constraint. In this case, the stress returned by calculate_second_piola_kirchhoff_stress()
contains only the deviatoric part of the 2nd Piola Kirchhoff stress,
\[ \overline{\sigma}^{ij} = \frac{E}{3} \left( G^{ik} G^{jl} + G^{il} G^{jk} \right) \gamma_{kl}. \]
The function also returns the contravariant metric tensor \( G^{ij}\) (since it is needed to form the complete stress tensor), and the determinant of the deformed covariant metric tensor \( {\tt detG} = \det G_{ij} \) (since it is needed in the equation that enforces the incompressibility).
If \( \nu \approx 1/2 \), the original form of the constitutive equation could be used, but the resulting equations tend to be ill-conditioned since they contain the product of the large "bulk modulus"
\[ \kappa = \frac{E\nu}{(1+\nu)(1-2\nu)} \]
and the small "generalised dilatation"
\[ d = \frac{1}{2} G^{ij} (G_{ij}-g_{ij}). \]
[ \( d \) represents the actual dilatation in the small strain limit; for large deformations it doesn't have any sensible interpretation (or does it?). It is simply the term that needs to go to zero as \( \kappa \to \infty\).] In this case, the stress returned by calculate_second_piola_kirchhoff_stress()
contains only the deviatoric part of the 2nd Piola Kirchhoff stress,
\[ \overline{\sigma}^{ij} = \frac{E}{3} \left( G^{ik} G^{jl} + G^{il} G^{jk} \right) \gamma_{kl}. \]
The function also returns the contravariant metric tensor \( G^{ij}\) (since it is needed to form the complete stress tensor), the inverse of the bulk modulus, and the generalised dilatation (since they are needed in the equation that determines the pressure).
The constructor takes the pointers to values of material parameters: Poisson's ratio and Young's modulus.
|
inline |
The constructor takes the pointers to value of Poisson's ratio . Young's modulus is set to E=1.0, implying that all stresses have been non-dimensionalised on on it.
|
inlinevirtual |
Virtual destructor.
References E_pt, and Must_delete_e.
|
virtual |
Calculate the contravariant 2nd Piola Kirchhoff stress tensor. Arguments are the covariant undeformed and deformed metric tensor and the matrix in which to return the stress tensor
////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// Calculate the contravariant 2nd Piola Kirchhoff stress tensor. Arguments are the covariant undeformed (stress-free) and deformed metric tensors, g and G, and the matrix in which to return the stress tensor.
Implements oomph::ConstitutiveLaw.
References Global_Physical_Variables::C1, Global_Physical_Variables::C2, oomph::ConstitutiveLaw::calculate_contravariant(), oomph::ConstitutiveLaw::error_checking_in_input(), G, i, j, k, and calibrate::sigma.
Referenced by oomph::AnisotropicHookean::calculate_second_piola_kirchhoff_stress(), and calculate_second_piola_kirchhoff_stress().
|
virtual |
Calculate the deviatoric part \( \overline{ \sigma^{ij}}\) of the contravariant 2nd Piola Kirchhoff stress tensor \( \sigma^{ij}\). Also return the contravariant deformed metric tensor and the determinant of the deformed metric tensor. This form is appropriate for truly-incompressible materials for which \( \sigma^{ij} = - p G^{ij} +\overline{ \sigma^{ij}} \) where the "pressure" \( p \) is determined by \( \det G_{ij} - \det g_{ij} = 0 \).
Reimplemented from oomph::ConstitutiveLaw.
References Global_Physical_Variables::C1, oomph::ConstitutiveLaw::calculate_contravariant(), oomph::ConstitutiveLaw::error_checking_in_input(), G, i, j, and k.
|
virtual |
Calculate the deviatoric part of the contravariant 2nd Piola Kirchoff stress tensor. Also return the contravariant deformed metric tensor, the generalised dilatation, \( d, \) and the inverse of the bulk modulus \( \kappa\). This form is appropriate for near-incompressible materials for which \( \sigma^{ij} = -p G^{ij} + \overline{ \sigma^{ij}} \) where the "pressure" \( p \) is determined from \( p / \kappa - d =0 \).
Reimplemented from oomph::ConstitutiveLaw.
References calculate_second_piola_kirchhoff_stress(), E_pt, G, i, j, and Nu_pt.
|
inlinevirtual |
Pure virtual function in which the writer 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::ConstitutiveLaw.
|
private |
Young's modulus.
Referenced by calculate_second_piola_kirchhoff_stress(), and ~GeneralisedHookean().
|
private |
Boolean flag to indicate if storage for elastic modulus must be deleted in destructor
Referenced by ~GeneralisedHookean().
|
private |
Poisson ratio.
Referenced by calculate_second_piola_kirchhoff_stress().