pub struct BlatzKo {
pub bulk_modulus: Quantity<Stress>,
pub shear_modulus: Quantity<Stress>,
pub mixing_parameter: Scalar,
}Expand description
The Blatz-Ko hyperelastic solid constitutive model.1
Parameters
- The bulk modulus $
\kappa$. - The shear modulus $
\mu$. - The mixing parameter $
f$.
External variables
- The deformation gradient $
\mathbf{F}$.
Internal variables
- None.
Notes
- The parameter $
n = \kappa/2\mu - 1/3$ is determined by the bulk and shear moduli. - This model reduces to the rubber case when $
f\to 1$ and to the foam case when $f\to 0$. - In the tangent stiffness, $
K = (1-f)J^{2n} - fJ^{-2n}$ and $K' = 2n\left[(1-f)J^{2n} + fJ^{-2n}\right]$.
P.J. Blatz and W.L. Ko, Trans. Soc. Rheol. 6, 223 (1962). ↩
Fields§
§bulk_modulus: Quantity<Stress>The bulk modulus $\kappa$.
shear_modulus: Quantity<Stress>The shear modulus $\mu$.
mixing_parameter: ScalarThe mixing parameter $f$.
Implementations§
Trait Implementations§
Source§impl Elastic for BlatzKo
impl Elastic for BlatzKo
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{\mu}{J}\Big\{f\mathbf{B} - (1 - f)\mathbf{B}^{-1} + \left[(1-f)J^{2n} - fJ^{-2n}\right]\mathbf{1}\Big\}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{\mu f}{J}\Big[\delta_{ik}F_{jL} + \delta_{jk}F_{iL} - B_{ij}F_{kL}^{-T}\Big]
\\
&+ \frac{\mu(1-f)}{J}\Big[B_{ik}^{-1}F_{jL}^{-T} + F_{iL}^{-T}B_{jk}^{-1} + B_{ij}^{-1}F_{kL}^{-T}\Big]
\\
&+ \frac{\mu}{J}\left(K' - K\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 BlatzKo
impl Hyperelastic for BlatzKo
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}) = \frac{\mu}{2}\left\{f\left[I_1 - 3 + \frac{1}{n}\left(I_3^{-n} - 1\right)\right] + (1-f)\left[\frac{I_2}{I_3} - 3 + \frac{1}{n}\left(I_3^n - 1\right)\right]\right\}Source§impl Solid for BlatzKo
impl Solid for BlatzKo
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 BlatzKo
impl RefUnwindSafe for BlatzKo
impl Send for BlatzKo
impl Sync for BlatzKo
impl Unpin for BlatzKo
impl UnsafeUnpin for BlatzKo
impl UnwindSafe for BlatzKo
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