pub struct Gent {
pub bulk_modulus: Scalar,
pub shear_modulus: Scalar,
pub extensibility: Scalar,
}Expand description
The Gent hyperelastic solid constitutive model.1
Parameters
- The bulk modulus $
\kappa$. - The shear modulus $
\mu$. - The extensibility $
J_m$.
External variables
- The deformation gradient $
\mathbf{F}$.
Internal variables
- None.
Notes
- The Gent model reduces to the Neo-Hookean model when $
J_m\to\infty$.
A.N. Gent, Rubber Chem. Technol. 69, 59 (1996). ↩
Fields§
§bulk_modulus: ScalarThe bulk modulus $\kappa$.
shear_modulus: ScalarThe shear modulus $\mu$.
extensibility: ScalarThe extensibility $J_m$.
Implementations§
Trait Implementations§
Source§impl Elastic for Gent
impl Elastic for Gent
Source§fn cauchy_stress(
&self,
deformation_gradient: &DeformationGradient,
) -> Result<CauchyStress, ConstitutiveError>
fn cauchy_stress( &self, deformation_gradient: &DeformationGradient, ) -> Result<CauchyStress, ConstitutiveError>
\boldsymbol{\sigma}(\mathbf{F}) = \frac{J^{-1}\mu J_m {\mathbf{B}^* }'}{J_m - \mathrm{tr}(\mathbf{B}^* ) + 3} + \frac{\kappa}{2}\left(J - \frac{1}{J}\right)\mathbf{1}Source§fn cauchy_tangent_stiffness(
&self,
deformation_gradient: &DeformationGradient,
) -> Result<CauchyTangentStiffness, ConstitutiveError>
fn cauchy_tangent_stiffness( &self, deformation_gradient: &DeformationGradient, ) -> Result<CauchyTangentStiffness, ConstitutiveError>
\begin{aligned}
\mathcal{T}_{ijkL}(\mathbf{F}) =
\,& \frac{J^{-5/3}\mu J_m}{J_m - \mathrm{tr}(\mathbf{B}^* ) + 3}\Bigg[\delta_{ik}F_{jL} + \delta_{jk}F_{iL} - \frac{2}{3}\,\delta_{ij}F_{kL} + \frac{2{B_{ij}^* }' F_{kL}}{J_m - \mathrm{tr}(\mathbf{B}^* ) + 3}
\\
&- \left(\frac{5}{3} + \frac{2}{3}\frac{\mathrm{tr}(\mathbf{B}^* )}{J_m - \mathrm{tr}(\mathbf{B}^* ) + 3}\right) J^{2/3} {B_{ij}^* }' F_{kL}^{-T} \Bigg] + \frac{\kappa}{2} \left(J + \frac{1}{J}\right)\delta_{ij}F_{kL}^{-T}
\end{aligned}Source§fn first_piola_kirchhoff_stress(
&self,
deformation_gradient: &DeformationGradient,
) -> Result<FirstPiolaKirchhoffStress, ConstitutiveError>
fn first_piola_kirchhoff_stress( &self, deformation_gradient: &DeformationGradient, ) -> Result<FirstPiolaKirchhoffStress, ConstitutiveError>
Calculates and returns the first Piola-Kirchhoff stress. Read more
Source§fn first_piola_kirchhoff_tangent_stiffness(
&self,
deformation_gradient: &DeformationGradient,
) -> Result<FirstPiolaKirchhoffTangentStiffness, ConstitutiveError>
fn first_piola_kirchhoff_tangent_stiffness( &self, deformation_gradient: &DeformationGradient, ) -> Result<FirstPiolaKirchhoffTangentStiffness, ConstitutiveError>
Calculates and returns the tangent stiffness associated with the first Piola-Kirchhoff stress. Read more
Source§fn second_piola_kirchhoff_stress(
&self,
deformation_gradient: &DeformationGradient,
) -> Result<SecondPiolaKirchhoffStress, ConstitutiveError>
fn second_piola_kirchhoff_stress( &self, deformation_gradient: &DeformationGradient, ) -> Result<SecondPiolaKirchhoffStress, ConstitutiveError>
Calculates and returns the second Piola-Kirchhoff stress. Read more
Source§fn second_piola_kirchhoff_tangent_stiffness(
&self,
deformation_gradient: &DeformationGradient,
) -> Result<SecondPiolaKirchhoffTangentStiffness, ConstitutiveError>
fn second_piola_kirchhoff_tangent_stiffness( &self, deformation_gradient: &DeformationGradient, ) -> Result<SecondPiolaKirchhoffTangentStiffness, ConstitutiveError>
Calculates and returns the tangent stiffness associated with the second Piola-Kirchhoff stress. Read more
Source§impl Hyperelastic for Gent
impl Hyperelastic for Gent
Source§fn helmholtz_free_energy_density(
&self,
deformation_gradient: &DeformationGradient,
) -> Result<Scalar, ConstitutiveError>
fn helmholtz_free_energy_density( &self, deformation_gradient: &DeformationGradient, ) -> Result<Scalar, ConstitutiveError>
a(\mathbf{F}) = -\frac{\mu J_m}{2}\,\ln\left[1 - \frac{\mathrm{tr}(\mathbf{B}^* ) - 3}{J_m}\right] + \frac{\kappa}{2}\left[\frac{1}{2}\left(J^2 - 1\right) - \ln J\right]Source§impl Solid for Gent
impl Solid for Gent
Source§fn bulk_modulus(&self) -> Scalar
fn bulk_modulus(&self) -> Scalar
Returns the bulk modulus.
Source§fn shear_modulus(&self) -> Scalar
fn shear_modulus(&self) -> Scalar
Returns the shear modulus.
Source§fn jacobian<const I: usize, const J: usize>(
&self,
deformation_gradient: &DeformationGradientGeneral<I, J>,
) -> Result<Scalar, ConstitutiveError>
fn jacobian<const I: usize, const J: usize>( &self, deformation_gradient: &DeformationGradientGeneral<I, J>, ) -> Result<Scalar, ConstitutiveError>
Calculates and returns the Jacobian.
Auto Trait Implementations§
impl Freeze for Gent
impl RefUnwindSafe for Gent
impl Send for Gent
impl Sync for Gent
impl Unpin for Gent
impl UnwindSafe for Gent
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FirstOrderMinimize for Twhere
T: Hyperelastic,
impl<T> FirstOrderMinimize for Twhere
T: Hyperelastic,
Source§fn minimize(
&self,
applied_load: AppliedLoad,
solver: impl FirstOrderOptimization<f64, TensorRank2<3, 1, 0>>,
) -> Result<TensorRank2<3, 1, 0>, ConstitutiveError>
fn minimize( &self, applied_load: AppliedLoad, solver: impl FirstOrderOptimization<f64, TensorRank2<3, 1, 0>>, ) -> Result<TensorRank2<3, 1, 0>, ConstitutiveError>
Solve for the unknown components of the deformation gradient under an applied load. Read more
Source§impl<T> FirstOrderRoot for Twhere
T: Elastic,
impl<T> FirstOrderRoot for Twhere
T: Elastic,
Source§fn root(
&self,
applied_load: AppliedLoad,
solver: impl FirstOrderRootFinding<TensorRank2<3, 1, 0>, TensorRank4<3, 1, 0, 1, 0>, TensorRank2<3, 1, 0>>,
) -> Result<TensorRank2<3, 1, 0>, ConstitutiveError>
fn root( &self, applied_load: AppliedLoad, solver: impl FirstOrderRootFinding<TensorRank2<3, 1, 0>, TensorRank4<3, 1, 0, 1, 0>, TensorRank2<3, 1, 0>>, ) -> Result<TensorRank2<3, 1, 0>, ConstitutiveError>
Solve for the unknown components of the deformation gradient under an applied load. Read more
Source§impl<T> SecondOrderMinimize for Twhere
T: Hyperelastic,
impl<T> SecondOrderMinimize for Twhere
T: Hyperelastic,
Source§fn minimize(
&self,
applied_load: AppliedLoad,
solver: impl SecondOrderOptimization<f64, TensorRank2<3, 1, 0>, TensorRank4<3, 1, 0, 1, 0>, TensorRank2<3, 1, 0>>,
) -> Result<TensorRank2<3, 1, 0>, ConstitutiveError>
fn minimize( &self, applied_load: AppliedLoad, solver: impl SecondOrderOptimization<f64, TensorRank2<3, 1, 0>, TensorRank4<3, 1, 0, 1, 0>, TensorRank2<3, 1, 0>>, ) -> Result<TensorRank2<3, 1, 0>, ConstitutiveError>
Solve for the unknown components of the deformation gradient under an applied load. Read more
Source§impl<T> ZerothOrderRoot for Twhere
T: Elastic,
impl<T> ZerothOrderRoot for Twhere
T: Elastic,
Source§fn root(
&self,
applied_load: AppliedLoad,
solver: impl ZerothOrderRootFinding<TensorRank2<3, 1, 0>>,
) -> Result<TensorRank2<3, 1, 0>, ConstitutiveError>
fn root( &self, applied_load: AppliedLoad, solver: impl ZerothOrderRootFinding<TensorRank2<3, 1, 0>>, ) -> Result<TensorRank2<3, 1, 0>, ConstitutiveError>
Solve for the unknown components of the deformation gradient under an applied load. Read more