pub struct Carroll {
pub bulk_modulus: Quantity<Stress>,
pub linear_modulus: Quantity<Stress>,
pub quartic_modulus: Quantity<Stress>,
pub second_invariant_modulus: Quantity<Stress>,
}Expand description
The Carroll hyperelastic solid constitutive model.1
Parameters
- The bulk modulus $
\kappa$. - The linear modulus $
\mu_1$. - The quartic modulus $
\mu_2$. - The second-invariant modulus $
\mu_3$.
External variables
- The deformation gradient $
\mathbf{F}$.
Internal variables
- None.
Notes
- The shear modulus is given by $
\mu = 2\mu_1 + 216\mu_2 + \mu_3/\sqrt{3}$.
M.M. Carroll, J. Elast. 103, 173 (2011). ↩
Fields§
§bulk_modulus: Quantity<Stress>The bulk modulus $\kappa$.
linear_modulus: Quantity<Stress>The linear modulus $\mu_1$.
quartic_modulus: Quantity<Stress>The quartic modulus $\mu_2$.
second_invariant_modulus: Quantity<Stress>The second-invariant modulus $\mu_3$.
Implementations§
Trait Implementations§
Source§impl Elastic for Carroll
impl Elastic for Carroll
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{1}{J}\left\{2\left[\mu_1 + 4\mu_2\,\mathrm{tr}(\mathbf{B}^*)^3\right]{\mathbf{B}^* }' - \frac{\mu_3}{\sqrt{I_2(\mathbf{B}^*)}}\left(\mathbf{B}^{* -1}\right)' + \frac{\kappa}{2}\left(J^2-1\right)\mathbf{1}\right\}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{2\left[\mu_1+4\mu_2\,\mathrm{tr}(\mathbf{B}^*)^3\right]}{J^{5/3}}\left(\delta_{ik}F_{jL} + \delta_{jk}F_{iL} - \frac{2}{3}\,\delta_{ij}F_{kL}- \frac{5}{3} \, B_{ij}'F_{kL}^{-T} \right)
+ \frac{\kappa}{2} \left(J + \frac{1}{J}\right)\delta_{ij}F_{kL}^{-T}
\\
&- \frac{\mu_3}{J\sqrt{I_2(\mathbf{B}^*)}}\left[ \frac{2}{3}\,B_{ij}^{* -1}F_{kL}^{-T} - B_{ik}^{* -1}F_{jL}^{-T} - B_{ik}^{* -1}F_{iL}^{-T} + \frac{2}{3}\,\delta_{ij}\left(B_{km}^{* -1}\right)'F_{mL}^{-T} - \left(B_{ij}^{* -1}\right)'F_{kL}^{-T} \right]
\\
&+ \frac{1}{J}\,{B_{ij}^*}'\left(\frac{48\mu_2\,\mathrm{tr}(\mathbf{B}^*)^2}{J^{2/3}}F_{kL} - 16\mu_2\,\mathrm{tr}(\mathbf{B}^*)^3F_{kL}^{-T}\right)
\\
&- \frac{1}{J}\left(B_{ij}^{*-1}\right)'\left[-\frac{\mu_3}{I_2(\mathbf{B}^*)^{3/2}J^{2/3}}\left(\mathrm{tr}(\mathbf{B}^*)\,\delta_{km} - B_{km}^*\right)F_{mL} + \frac{2\mu_3}{3\sqrt{I_2(\mathbf{B}^*)}}F_{kL}^{-T}\right]
\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 Carroll
impl Hyperelastic for Carroll
Source§fn helmholtz_free_energy_density(
&self,
deformation_gradient: &DeformationGradient,
) -> Result<Quantity<EnergyDensity>, ConstitutiveError>
fn helmholtz_free_energy_density( &self, deformation_gradient: &DeformationGradient, ) -> Result<Quantity<EnergyDensity>, ConstitutiveError>
a(\mathbf{F}) = \mu_1\left\{\mathrm{tr}(\mathbf{B}^* ) - 3\right\} + \mu_2\left\{\left[\mathrm{tr}(\mathbf{B}^* )\right]^4 - 81\right\} + \mu_3\left\{\sqrt{I_2(\mathbf{B}^*)} - \sqrt{3}\right\} + \frac{\kappa}{2}\left[\frac{1}{2}\left(J^2 - 1\right) - \ln J\right]Source§impl Solid for Carroll
impl Solid for Carroll
Source§fn bulk_modulus(&self) -> Quantity<Stress>
fn bulk_modulus(&self) -> Quantity<Stress>
Returns the bulk modulus.
Source§fn shear_modulus(&self) -> Quantity<Stress>
fn shear_modulus(&self) -> Quantity<Stress>
Returns the shear modulus.
Source§fn jacobian<I, J>(
&self,
deformation_gradient: &DeformationGradientGeneral<I, J>,
) -> Result<Scalar, ConstitutiveError>
fn jacobian<I, J>( &self, deformation_gradient: &DeformationGradientGeneral<I, J>, ) -> Result<Scalar, ConstitutiveError>
Calculates and returns the Jacobian.
Auto Trait Implementations§
impl Freeze for Carroll
impl RefUnwindSafe for Carroll
impl Send for Carroll
impl Sync for Carroll
impl Unpin for Carroll
impl UnsafeUnpin for Carroll
impl UnwindSafe for Carroll
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,
impl<C> Constitutive for Cwhere
C: Solid,
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<Quantity<Stress>, TensorRank2<3, Current, Reference, Stress>, TensorRank2<3, Current, Reference>>,
) -> Result<TensorRank2<3, Current, Reference>, ConstitutiveError>
fn minimize( &self, applied_load: AppliedLoad, solver: impl FirstOrderOptimization<Quantity<Stress>, TensorRank2<3, Current, Reference, Stress>, TensorRank2<3, Current, Reference>>, ) -> Result<TensorRank2<3, Current, Reference>, 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, Current, Reference, Stress>, TensorRank4<3, Current, Reference, Current, Reference, Stress>, TensorRank2<3, Current, Reference>>,
) -> Result<TensorRank2<3, Current, Reference>, ConstitutiveError>
fn root( &self, applied_load: AppliedLoad, solver: impl FirstOrderRootFinding<TensorRank2<3, Current, Reference, Stress>, TensorRank4<3, Current, Reference, Current, Reference, Stress>, TensorRank2<3, Current, Reference>>, ) -> Result<TensorRank2<3, Current, Reference>, ConstitutiveError>
Solve for the unknown components of the deformation gradient under an applied load. Read more
impl<T> Is<T> for T
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<Quantity<Stress>, TensorRank2<3, Current, Reference, Stress>, TensorRank4<3, Current, Reference, Current, Reference, Stress>, TensorRank2<3, Current, Reference>>,
) -> Result<TensorRank2<3, Current, Reference>, ConstitutiveError>
fn minimize( &self, applied_load: AppliedLoad, solver: impl SecondOrderOptimization<Quantity<Stress>, TensorRank2<3, Current, Reference, Stress>, TensorRank4<3, Current, Reference, Current, Reference, Stress>, TensorRank2<3, Current, Reference>>, ) -> Result<TensorRank2<3, Current, Reference>, 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, Current, Reference, Stress>, TensorRank2<3, Current, Reference>>,
) -> Result<TensorRank2<3, Current, Reference>, ConstitutiveError>
fn root( &self, applied_load: AppliedLoad, solver: impl ZerothOrderRootFinding<TensorRank2<3, Current, Reference, Stress>, TensorRank2<3, Current, Reference>>, ) -> Result<TensorRank2<3, Current, Reference>, ConstitutiveError>
Solve for the unknown components of the deformation gradient under an applied load. Read more