pub struct ArrudaBoyce {
pub bulk_modulus: Scalar,
pub shear_modulus: Scalar,
pub number_of_links: Scalar,
}
Expand description
The Arruda-Boyce hyperelastic constitutive model.1
Parameters
- The bulk modulus $
\kappa
$. - The shear modulus $
\mu
$. - The number of links $
N_b
$.
External variables
- The deformation gradient $
\mathbf{F}
$.
Internal variables
- None.
Notes
- The nondimensional end-to-end length per link of the chains is $
\gamma=\sqrt{\mathrm{tr}(\mathbf{B}^*)/3N_b}
$. - The nondimensional force is given by the inverse Langevin function as $
\eta=\mathcal{L}^{-1}(\gamma)
$. - The initial values are given by $
\gamma_0=\sqrt{1/3N_b}
$ and $\eta_0=\mathcal{L}^{-1}(\gamma_0)
$. - The Arruda-Boyce model reduces to the Neo-Hookean model when $
N_b\to\infty
$.
E.M. Arruda and M.C. Boyce, J. Mech. Phys. Solids 41, 389 (1993). ↩
Fields§
§bulk_modulus: Scalar
The bulk modulus $\kappa
$.
shear_modulus: Scalar
The shear modulus $\mu
$.
number_of_links: Scalar
The number of links $N_b
$.
Implementations§
Source§impl ArrudaBoyce
impl ArrudaBoyce
Sourcepub fn number_of_links(&self) -> &Scalar
pub fn number_of_links(&self) -> &Scalar
Returns the number of links.
Trait Implementations§
Source§impl Debug for ArrudaBoyce
impl Debug for ArrudaBoyce
Source§impl Elastic for ArrudaBoyce
impl Elastic for ArrudaBoyce
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\gamma_0\eta}{J\gamma\eta_0}\,{\mathbf{B}^*}' + \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{\mu\gamma_0\eta}{J^{5/3}\gamma\eta_0}\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{\mu\gamma_0\eta}{3J^{7/3}N_b\gamma^2\eta_0}\left(\frac{1}{\eta\mathcal{L}'(\eta)} - \frac{1}{\gamma}\right)B_{ij}'B_{km}'F_{mL}^{-T} + \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 ArrudaBoyce
impl Hyperelastic for ArrudaBoyce
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{3\mu N_b\gamma_0}{\eta_0}\left[\gamma\eta - \gamma_0\eta_0 - \ln\left(\frac{\eta_0\sinh\eta}{\eta\sinh\eta_0}\right) \right] + \frac{\kappa}{2}\left[\frac{1}{2}\left(J^2 - 1\right) - \ln J\right]
Source§impl Solid for ArrudaBoyce
impl Solid for ArrudaBoyce
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.
Auto Trait Implementations§
impl Freeze for ArrudaBoyce
impl RefUnwindSafe for ArrudaBoyce
impl Send for ArrudaBoyce
impl Sync for ArrudaBoyce
impl Unpin for ArrudaBoyce
impl UnwindSafe for ArrudaBoyce
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<C> Constitutive for Cwhere
C: Solid,
impl<C> Constitutive for Cwhere
C: Solid,
Source§fn jacobian(
&self,
deformation_gradient: &DeformationGradient,
) -> Result<Scalar, ConstitutiveError>
fn jacobian( &self, deformation_gradient: &DeformationGradient, ) -> Result<Scalar, ConstitutiveError>
Calculates and returns the Jacobian.
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