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
impl Debug for SaintVenantKirchhoff
Source§impl ElasticHyperviscous for SaintVenantKirchhoff
impl ElasticHyperviscous for SaintVenantKirchhoff
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}(\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>
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
impl Hyperviscoelastic for SaintVenantKirchhoff
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>
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
impl Solid for SaintVenantKirchhoff
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 SaintVenantKirchhoff
impl Viscoelastic for SaintVenantKirchhoff
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.
\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>
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>
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>
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>
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§impl Viscous for SaintVenantKirchhoff
impl Viscous for SaintVenantKirchhoff
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 SaintVenantKirchhoff
impl RefUnwindSafe for SaintVenantKirchhoff
impl Send for SaintVenantKirchhoff
impl Sync for SaintVenantKirchhoff
impl Unpin for SaintVenantKirchhoff
impl UnwindSafe for SaintVenantKirchhoff
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>, TensorRank2Vec<3, 1, 0>>,
solver: impl FirstOrderOptimization<f64, TensorRank2<3, 1, 0>>,
) -> Result<(Vector, TensorRank2Vec<3, 1, 0>, TensorRank2Vec<3, 1, 0>), ConstitutiveError>
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
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>, 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>
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
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>, 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>
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
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>, TensorRank2Vec<3, 1, 0>>,
solver: impl ZerothOrderRootFinding<TensorRank2<3, 1, 0>>,
) -> Result<(Vector, TensorRank2Vec<3, 1, 0>, TensorRank2Vec<3, 1, 0>), ConstitutiveError>
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