pub struct AlmansiHamel {
    pub bulk_modulus: Scalar,
    pub shear_modulus: Scalar,
    pub bulk_viscosity: Scalar,
    pub shear_viscosity: Scalar,
}Expand description
The Almansi-Hamel viscoelastic constitutive model.
Parameters
- The bulk modulus $\kappa$.
- The shear modulus $\mu$.
- The bulk viscosity $\zeta$.
- The shear viscosity $\eta$.
External variables
- The deformation gradient $\mathbf{F}$.
- The deformation gradient rate $\dot{\mathbf{F}}$.
Internal variables
- None.
Notes
- The Almansi-Hamel strain measure is given by $\mathbf{e}=\tfrac{1}{2}(\mathbf{1}-\mathbf{B}^{-1})$.
Fields§
§bulk_modulus: ScalarThe bulk modulus $\kappa$.
shear_modulus: ScalarThe shear modulus $\mu$.
bulk_viscosity: ScalarThe bulk viscosity $\zeta$.
shear_viscosity: ScalarThe shear viscosity $\eta$.
Trait Implementations§
Source§impl Debug for AlmansiHamel
 
impl Debug for AlmansiHamel
Source§impl ElasticHyperviscous for AlmansiHamel
 
impl ElasticHyperviscous for AlmansiHamel
Source§fn viscous_dissipation(
    &self,
    deformation_gradient: &DeformationGradient,
    deformation_gradient_rate: &DeformationGradientRate,
) -> Result<Scalar, ConstitutiveError>
 
fn viscous_dissipation( &self, deformation_gradient: &DeformationGradient, deformation_gradient_rate: &DeformationGradientRate, ) -> Result<Scalar, ConstitutiveError>
Calculates and returns the viscous dissipation.
\phi(\mathbf{F},\dot{\mathbf{F}}) = \eta\,\mathrm{tr}(\mathbf{D}^2) + \frac{1}{2}\left(\zeta - \frac{2}{3}\,\eta\right)\mathrm{tr}(\mathbf{D})^2Source§fn dissipation_potential(
    &self,
    deformation_gradient: &DeformationGradient,
    deformation_gradient_rate: &DeformationGradientRate,
) -> Result<Scalar, ConstitutiveError>
 
fn dissipation_potential( &self, deformation_gradient: &DeformationGradient, deformation_gradient_rate: &DeformationGradientRate, ) -> Result<Scalar, ConstitutiveError>
Calculates and returns the dissipation potential. Read more
Source§impl Solid for AlmansiHamel
 
impl Solid for AlmansiHamel
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§impl Viscoelastic for AlmansiHamel
 
impl Viscoelastic for AlmansiHamel
Source§fn cauchy_stress(
    &self,
    deformation_gradient: &DeformationGradient,
    deformation_gradient_rate: &DeformationGradientRate,
) -> Result<CauchyStress, ConstitutiveError>
 
fn cauchy_stress( &self, deformation_gradient: &DeformationGradient, deformation_gradient_rate: &DeformationGradientRate, ) -> Result<CauchyStress, ConstitutiveError>
Calculates and returns the Cauchy stress.
\boldsymbol{\sigma}(\mathbf{F},\dot\mathbf{F}) = 2\mu\mathbf{e}' + \kappa\,\mathrm{tr}(\mathbf{e})\mathbf{1} + 2\eta\mathbf{D}' + \zeta\,\mathrm{tr}(\mathbf{D})\mathbf{1}Source§fn cauchy_rate_tangent_stiffness(
    &self,
    deformation_gradient: &DeformationGradient,
    _: &DeformationGradientRate,
) -> Result<CauchyRateTangentStiffness, ConstitutiveError>
 
fn cauchy_rate_tangent_stiffness( &self, deformation_gradient: &DeformationGradient, _: &DeformationGradientRate, ) -> Result<CauchyRateTangentStiffness, ConstitutiveError>
Calculates and returns the rate tangent stiffness associated with the Cauchy stress.
\mathcal{V}_{IJkL}(\mathbf{F}) = \eta\,\delta_{ik}F_{jL}^{-T} + \eta\,\delta_{jk}F_{iL}^{-T} + \left(\zeta - \frac{2}{3}\,\eta\right)\delta_{ij}F_{kL}^{-T}Source§fn first_piola_kirchhoff_stress(
    &self,
    deformation_gradient: &DeformationGradient,
    deformation_gradient_rate: &DeformationGradientRate,
) -> Result<FirstPiolaKirchhoffStress, ConstitutiveError>
 
fn first_piola_kirchhoff_stress( &self, deformation_gradient: &DeformationGradient, deformation_gradient_rate: &DeformationGradientRate, ) -> Result<FirstPiolaKirchhoffStress, ConstitutiveError>
Calculates and returns the first Piola-Kirchhoff stress. Read more
Source§fn first_piola_kirchhoff_rate_tangent_stiffness(
    &self,
    deformation_gradient: &DeformationGradient,
    deformation_gradient_rate: &DeformationGradientRate,
) -> Result<FirstPiolaKirchhoffRateTangentStiffness, ConstitutiveError>
 
fn first_piola_kirchhoff_rate_tangent_stiffness( &self, deformation_gradient: &DeformationGradient, deformation_gradient_rate: &DeformationGradientRate, ) -> Result<FirstPiolaKirchhoffRateTangentStiffness, ConstitutiveError>
Calculates and returns the rate tangent stiffness associated with the first Piola-Kirchhoff stress. Read more
Source§fn second_piola_kirchhoff_stress(
    &self,
    deformation_gradient: &DeformationGradient,
    deformation_gradient_rate: &DeformationGradientRate,
) -> Result<SecondPiolaKirchhoffStress, ConstitutiveError>
 
fn second_piola_kirchhoff_stress( &self, deformation_gradient: &DeformationGradient, deformation_gradient_rate: &DeformationGradientRate, ) -> Result<SecondPiolaKirchhoffStress, ConstitutiveError>
Calculates and returns the second Piola-Kirchhoff stress. Read more
Source§fn second_piola_kirchhoff_rate_tangent_stiffness(
    &self,
    deformation_gradient: &DeformationGradient,
    deformation_gradient_rate: &DeformationGradientRate,
) -> Result<SecondPiolaKirchhoffRateTangentStiffness, ConstitutiveError>
 
fn second_piola_kirchhoff_rate_tangent_stiffness( &self, deformation_gradient: &DeformationGradient, deformation_gradient_rate: &DeformationGradientRate, ) -> Result<SecondPiolaKirchhoffRateTangentStiffness, ConstitutiveError>
Calculates and returns the rate tangent stiffness associated with the second Piola-Kirchhoff stress. Read more
Source§impl Viscous for AlmansiHamel
 
impl Viscous for AlmansiHamel
Source§fn bulk_viscosity(&self) -> &Scalar
 
fn bulk_viscosity(&self) -> &Scalar
Returns the bulk viscosity.
Source§fn shear_viscosity(&self) -> &Scalar
 
fn shear_viscosity(&self) -> &Scalar
Returns the shear viscosity.
Auto Trait Implementations§
impl Freeze for AlmansiHamel
impl RefUnwindSafe for AlmansiHamel
impl Send for AlmansiHamel
impl Sync for AlmansiHamel
impl Unpin for AlmansiHamel
impl UnwindSafe for AlmansiHamel
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: ElasticHyperviscous,
 
impl<T> FirstOrderMinimize for Twhere
    T: ElasticHyperviscous,
Source§fn minimize(
    &self,
    applied_load: AppliedLoad<'_>,
    integrator: impl Explicit<TensorRank2<3, 1, 0>, TensorVector<TensorRank2<3, 1, 0>>>,
    solver: impl FirstOrderOptimization<f64, TensorRank2<3, 1, 0>>,
) -> Result<(Vector, TensorVector<TensorRank2<3, 1, 0>>, TensorVector<TensorRank2<3, 1, 0>>), ConstitutiveError>
 
fn minimize( &self, applied_load: AppliedLoad<'_>, integrator: impl Explicit<TensorRank2<3, 1, 0>, TensorVector<TensorRank2<3, 1, 0>>>, solver: impl FirstOrderOptimization<f64, TensorRank2<3, 1, 0>>, ) -> Result<(Vector, TensorVector<TensorRank2<3, 1, 0>>, TensorVector<TensorRank2<3, 1, 0>>), ConstitutiveError>
Solve for the unknown components of the deformation gradient and rate under an applied load. Read more
fn minimize_inner_1( &self, deformation_gradient: &TensorRank2<3, 1, 0>, equality_constraint: EqualityConstraint, solver: &impl FirstOrderOptimization<f64, TensorRank2<3, 1, 0>>, initial_guess: &TensorRank2<3, 1, 0>, ) -> Result<TensorRank2<3, 1, 0>, OptimizationError>
Source§impl<T> FirstOrderRoot for Twhere
    T: Viscoelastic,
 
impl<T> FirstOrderRoot for Twhere
    T: Viscoelastic,
Source§fn root(
    &self,
    applied_load: AppliedLoad<'_>,
    integrator: impl Explicit<TensorRank2<3, 1, 0>, TensorVector<TensorRank2<3, 1, 0>>>,
    solver: impl FirstOrderRootFinding<TensorRank2<3, 1, 0>, TensorRank4<3, 1, 0, 1, 0>, TensorRank2<3, 1, 0>>,
) -> Result<(Vector, TensorVector<TensorRank2<3, 1, 0>>, TensorVector<TensorRank2<3, 1, 0>>), ConstitutiveError>
 
fn root( &self, applied_load: AppliedLoad<'_>, integrator: impl Explicit<TensorRank2<3, 1, 0>, TensorVector<TensorRank2<3, 1, 0>>>, solver: impl FirstOrderRootFinding<TensorRank2<3, 1, 0>, TensorRank4<3, 1, 0, 1, 0>, TensorRank2<3, 1, 0>>, ) -> Result<(Vector, TensorVector<TensorRank2<3, 1, 0>>, TensorVector<TensorRank2<3, 1, 0>>), ConstitutiveError>
Solve for the unknown components of the deformation gradient and rate under an applied load. Read more
fn root_inner_1( &self, deformation_gradient: &TensorRank2<3, 1, 0>, equality_constraint: EqualityConstraint, solver: &impl FirstOrderRootFinding<TensorRank2<3, 1, 0>, TensorRank4<3, 1, 0, 1, 0>, TensorRank2<3, 1, 0>>, initial_guess: &TensorRank2<3, 1, 0>, ) -> Result<TensorRank2<3, 1, 0>, OptimizationError>
Source§impl<T> SecondOrderMinimize for Twhere
    T: ElasticHyperviscous,
 
impl<T> SecondOrderMinimize for Twhere
    T: ElasticHyperviscous,
Source§fn minimize(
    &self,
    applied_load: AppliedLoad<'_>,
    integrator: impl Explicit<TensorRank2<3, 1, 0>, TensorVector<TensorRank2<3, 1, 0>>>,
    solver: impl SecondOrderOptimization<f64, TensorRank2<3, 1, 0>, TensorRank4<3, 1, 0, 1, 0>, TensorRank2<3, 1, 0>>,
) -> Result<(Vector, TensorVector<TensorRank2<3, 1, 0>>, TensorVector<TensorRank2<3, 1, 0>>), ConstitutiveError>
 
fn minimize( &self, applied_load: AppliedLoad<'_>, integrator: impl Explicit<TensorRank2<3, 1, 0>, TensorVector<TensorRank2<3, 1, 0>>>, solver: impl SecondOrderOptimization<f64, TensorRank2<3, 1, 0>, TensorRank4<3, 1, 0, 1, 0>, TensorRank2<3, 1, 0>>, ) -> Result<(Vector, TensorVector<TensorRank2<3, 1, 0>>, TensorVector<TensorRank2<3, 1, 0>>), ConstitutiveError>
Solve for the unknown components of the deformation gradient and rate under an applied load. Read more
fn minimize_inner_2( &self, deformation_gradient: &TensorRank2<3, 1, 0>, equality_constraint: EqualityConstraint, solver: &impl SecondOrderOptimization<f64, TensorRank2<3, 1, 0>, TensorRank4<3, 1, 0, 1, 0>, TensorRank2<3, 1, 0>>, initial_guess: &TensorRank2<3, 1, 0>, ) -> Result<TensorRank2<3, 1, 0>, OptimizationError>
Source§impl<T> ZerothOrderRoot for Twhere
    T: Viscoelastic,
 
impl<T> ZerothOrderRoot for Twhere
    T: Viscoelastic,
Source§fn root(
    &self,
    applied_load: AppliedLoad<'_>,
    integrator: impl Explicit<TensorRank2<3, 1, 0>, TensorVector<TensorRank2<3, 1, 0>>>,
    solver: impl ZerothOrderRootFinding<TensorRank2<3, 1, 0>>,
) -> Result<(Vector, TensorVector<TensorRank2<3, 1, 0>>, TensorVector<TensorRank2<3, 1, 0>>), ConstitutiveError>
 
fn root( &self, applied_load: AppliedLoad<'_>, integrator: impl Explicit<TensorRank2<3, 1, 0>, TensorVector<TensorRank2<3, 1, 0>>>, solver: impl ZerothOrderRootFinding<TensorRank2<3, 1, 0>>, ) -> Result<(Vector, TensorVector<TensorRank2<3, 1, 0>>, TensorVector<TensorRank2<3, 1, 0>>), ConstitutiveError>
Solve for the unknown components of the deformation gradient and rate under an applied load. Read more