Struct SaintVenantKirchhoff

Source
pub struct SaintVenantKirchhoff {
    pub bulk_modulus: Scalar,
    pub shear_modulus: Scalar,
    pub bulk_viscosity: Scalar,
    pub shear_viscosity: Scalar,
}
Expand description

The Saint Venant-Kirchhoff hyperviscoelastic 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 Green-Saint Venant strain measure is given by $\mathbf{E}=\tfrac{1}{2}(\mathbf{C}-\mathbf{1})$.

Fields§

§bulk_modulus: Scalar

The bulk modulus $\kappa$.

§shear_modulus: Scalar

The shear modulus $\mu$.

§bulk_viscosity: Scalar

The bulk viscosity $\zeta$.

§shear_viscosity: Scalar

The shear viscosity $\eta$.

Trait Implementations§

Source§

impl Debug for SaintVenantKirchhoff

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl ElasticHyperviscous for SaintVenantKirchhoff

Source§

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}(\dot{\mathbf{E}}^2) + \frac{1}{2}\left(\zeta - \frac{2}{3}\,\eta\right)\mathrm{tr}(\dot{\mathbf{E}})^2
Source§

fn dissipation_potential( &self, deformation_gradient: &DeformationGradient, deformation_gradient_rate: &DeformationGradientRate, ) -> Result<Scalar, ConstitutiveError>

Calculates and returns the dissipation potential. Read more
Source§

impl Hyperviscoelastic for SaintVenantKirchhoff

Source§

fn helmholtz_free_energy_density( &self, deformation_gradient: &DeformationGradient, ) -> Result<Scalar, ConstitutiveError>

Calculates and returns the Helmholtz free energy density.

a(\mathbf{F}) = \mu\,\mathrm{tr}(\mathbf{E}^2) + \frac{1}{2}\left(\kappa - \frac{2}{3}\,\mu\right)\mathrm{tr}(\mathbf{E})^2
Source§

impl Solid for SaintVenantKirchhoff

Source§

fn bulk_modulus(&self) -> &Scalar

Returns the bulk modulus.
Source§

fn shear_modulus(&self) -> &Scalar

Returns the shear modulus.
Source§

impl Viscoelastic for SaintVenantKirchhoff

Source§

fn second_piola_kirchhoff_stress( &self, deformation_gradient: &DeformationGradient, deformation_gradient_rate: &DeformationGradientRate, ) -> Result<SecondPiolaKirchhoffStress, ConstitutiveError>

Calculates and returns the second Piola-Kirchhoff stress.

\mathbf{S}(\mathbf{F},\dot\mathbf{F}) = 2\mu\mathbf{E}' + \kappa\,\mathrm{tr}(\mathbf{E})\mathbf{1} + 2\eta\dot{\mathbf{E}}' + \zeta\,\mathrm{tr}(\dot{\mathbf{E}})\mathbf{1}
Source§

fn second_piola_kirchhoff_rate_tangent_stiffness( &self, deformation_gradient: &DeformationGradient, _: &DeformationGradientRate, ) -> Result<SecondPiolaKirchhoffRateTangentStiffness, ConstitutiveError>

Calculates and returns the rate tangent stiffness associated with the second Piola-Kirchhoff stress.

\mathcal{W}_{IJkL}(\mathbf{F}) = \eta\,\delta_{JL}F_{kI} + \eta\,\delta_{IL}F_{kJ} + \left(\zeta - \frac{2}{3}\,\eta\right)\delta_{IJ}F_{kL}
Source§

fn cauchy_stress( &self, deformation_gradient: &DeformationGradient, deformation_gradient_rate: &DeformationGradientRate, ) -> Result<CauchyStress, ConstitutiveError>

Calculates and returns the Cauchy stress. Read more
Source§

fn cauchy_rate_tangent_stiffness( &self, deformation_gradient: &DeformationGradient, deformation_gradient_rate: &DeformationGradientRate, ) -> Result<CauchyRateTangentStiffness, ConstitutiveError>

Calculates and returns the rate tangent stiffness associated with the Cauchy stress. Read more
Source§

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>

Calculates and returns the rate tangent stiffness associated with the first Piola-Kirchhoff stress. Read more
Source§

impl Viscous for SaintVenantKirchhoff

Source§

fn bulk_viscosity(&self) -> &Scalar

Returns the bulk viscosity.
Source§

fn shear_viscosity(&self) -> &Scalar

Returns the shear viscosity.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<C> Constitutive for C
where C: Solid,

Source§

fn jacobian( &self, deformation_gradient: &DeformationGradient, ) -> Result<Scalar, ConstitutiveError>

Calculates and returns the Jacobian.
Source§

impl<T> FirstOrderMinimize for T

Source§

fn minimize( &self, applied_load: AppliedLoad<'_>, integrator: impl Explicit<TensorRank2<3, 1, 0>, TensorRank2Vec<3, 1, 0>>, solver: impl FirstOrderOptimization<f64, TensorRank2<3, 1, 0>>, ) -> Result<(Vector, TensorRank2Vec<3, 1, 0>, TensorRank2Vec<3, 1, 0>), ConstitutiveError>

Solve for the unknown components of the deformation gradient and rate under an applied load. Read more
Source§

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 T
where T: Viscoelastic,

Source§

fn root( &self, applied_load: AppliedLoad<'_>, integrator: impl Explicit<TensorRank2<3, 1, 0>, TensorRank2Vec<3, 1, 0>>, solver: impl FirstOrderRootFinding<TensorRank2<3, 1, 0>, TensorRank4<3, 1, 0, 1, 0>, TensorRank2<3, 1, 0>>, ) -> Result<(Vector, TensorRank2Vec<3, 1, 0>, TensorRank2Vec<3, 1, 0>), ConstitutiveError>

Solve for the unknown components of the deformation gradient and rate under an applied load. Read more
Source§

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> SecondOrderMinimize for T

Source§

fn minimize( &self, applied_load: AppliedLoad<'_>, integrator: impl Explicit<TensorRank2<3, 1, 0>, TensorRank2Vec<3, 1, 0>>, solver: impl SecondOrderOptimization<f64, TensorRank2<3, 1, 0>, TensorRank4<3, 1, 0, 1, 0>, TensorRank2<3, 1, 0>>, ) -> Result<(Vector, TensorRank2Vec<3, 1, 0>, TensorRank2Vec<3, 1, 0>), ConstitutiveError>

Solve for the unknown components of the deformation gradient and rate under an applied load. Read more
Source§

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> ZerothOrderRoot for T
where T: Viscoelastic,

Source§

fn root( &self, applied_load: AppliedLoad<'_>, integrator: impl Explicit<TensorRank2<3, 1, 0>, TensorRank2Vec<3, 1, 0>>, solver: impl ZerothOrderRootFinding<TensorRank2<3, 1, 0>>, ) -> Result<(Vector, TensorRank2Vec<3, 1, 0>, TensorRank2Vec<3, 1, 0>), ConstitutiveError>

Solve for the unknown components of the deformation gradient and rate under an applied load. Read more
Source§

fn root_inner_0( &self, deformation_gradient: &TensorRank2<3, 1, 0>, equality_constraint: EqualityConstraint, solver: &impl ZerothOrderRootFinding<TensorRank2<3, 1, 0>>, initial_guess: &TensorRank2<3, 1, 0>, ) -> Result<TensorRank2<3, 1, 0>, OptimizationError>

Source§

impl<A, Y, U> OdeSolver<Y, U> for A
where A: Debug, Y: Tensor, U: TensorVec<Item = Y>,