pub struct Hencky {
pub bulk_modulus: Scalar,
pub shear_modulus: Scalar,
pub yield_stress: Scalar,
pub hardening_slope: Scalar,
pub rate_sensitivity: Scalar,
pub reference_flow_rate: Scalar,
}Expand description
The Hencky hyperelastic-viscoplastic solid constitutive model.
Parameters
- The bulk modulus $
\kappa$. - The shear modulus $
\mu$. - The initial yield stress $
Y_0$. - The isotropic hardening slope $
H$. - The rate sensitivity parameter $
m$. - The reference flow rate $
d_0$.
External variables
- The deformation gradient $
\mathbf{F}$.
Internal variables
- The plastic deformation gradient $
\mathbf{F}_\mathrm{p}$.
Notes
- The Hencky strain measure is given by $
\mathbf{h}=\tfrac{1}{2}\ln(\mathbf{B})$.
Fields§
§bulk_modulus: ScalarThe bulk modulus $\kappa$.
shear_modulus: ScalarThe shear modulus $\mu$.
yield_stress: ScalarThe initial yield stress $Y_0$.
hardening_slope: ScalarThe isotropic hardening slope $H$.
rate_sensitivity: ScalarThe rate sensitivity parameter $m$.
reference_flow_rate: ScalarThe reference flow rate $d_0$.
Trait Implementations§
Source§impl ElasticPlasticOrViscoplastic for Hencky
impl ElasticPlasticOrViscoplastic for Hencky
Source§fn cauchy_stress(
&self,
deformation_gradient: &DeformationGradient,
deformation_gradient_p: &DeformationGradientPlastic,
) -> Result<CauchyStress, ConstitutiveError>
fn cauchy_stress( &self, deformation_gradient: &DeformationGradient, deformation_gradient_p: &DeformationGradientPlastic, ) -> Result<CauchyStress, ConstitutiveError>
\boldsymbol{\sigma}(\mathbf{F},\mathbf{F}_\mathrm{p}) = \frac{2\mu}{J}\,\mathbf{h}_\mathrm{e}' + \frac{\kappa}{J}\,\mathrm{tr}(\mathbf{h}_\mathrm{e})\mathbf{1}Source§fn cauchy_tangent_stiffness(
&self,
deformation_gradient: &DeformationGradient,
deformation_gradient_p: &DeformationGradientPlastic,
) -> Result<CauchyTangentStiffness, ConstitutiveError>
fn cauchy_tangent_stiffness( &self, deformation_gradient: &DeformationGradient, deformation_gradient_p: &DeformationGradientPlastic, ) -> Result<CauchyTangentStiffness, ConstitutiveError>
\mathcal{T}_{ijkL}(\mathbf{F},\mathbf{F}_\mathrm{p}) = \frac{\mu}{J}\left[\frac{\partial\ln B_{ij}^\mathrm{e}}{\partial F_{kM}^\mathrm{e}}\,F_{ML}^{\mathrm{p}-T} - \frac{2}{3}\,\delta_{ij}F_{kL}^{-T} - 2{h_{ij}^\mathrm{e}}'F_{kL}^{-T}\right] + \frac{\kappa}{J}\left[1 - \mathrm{tr}(\mathbf{h}_\mathrm{e})\right]\delta_{ij}F_{kL}^{-T}Source§fn first_piola_kirchhoff_stress(
&self,
deformation_gradient: &DeformationGradient,
deformation_gradient_p: &DeformationGradientPlastic,
) -> Result<FirstPiolaKirchhoffStress, ConstitutiveError>
fn first_piola_kirchhoff_stress( &self, deformation_gradient: &DeformationGradient, deformation_gradient_p: &DeformationGradientPlastic, ) -> Result<FirstPiolaKirchhoffStress, ConstitutiveError>
Calculates and returns the first Piola-Kirchhoff stress. Read more
Source§fn first_piola_kirchhoff_tangent_stiffness(
&self,
deformation_gradient: &DeformationGradient,
deformation_gradient_p: &DeformationGradientPlastic,
) -> Result<FirstPiolaKirchhoffTangentStiffness, ConstitutiveError>
fn first_piola_kirchhoff_tangent_stiffness( &self, deformation_gradient: &DeformationGradient, deformation_gradient_p: &DeformationGradientPlastic, ) -> 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,
deformation_gradient_p: &DeformationGradientPlastic,
) -> Result<SecondPiolaKirchhoffStress, ConstitutiveError>
fn second_piola_kirchhoff_stress( &self, deformation_gradient: &DeformationGradient, deformation_gradient_p: &DeformationGradientPlastic, ) -> Result<SecondPiolaKirchhoffStress, ConstitutiveError>
Calculates and returns the second Piola-Kirchhoff stress. Read more
Source§fn second_piola_kirchhoff_tangent_stiffness(
&self,
deformation_gradient: &DeformationGradient,
deformation_gradient_p: &DeformationGradientPlastic,
) -> Result<SecondPiolaKirchhoffTangentStiffness, ConstitutiveError>
fn second_piola_kirchhoff_tangent_stiffness( &self, deformation_gradient: &DeformationGradient, deformation_gradient_p: &DeformationGradientPlastic, ) -> Result<SecondPiolaKirchhoffTangentStiffness, ConstitutiveError>
Calculates and returns the tangent stiffness associated with the second Piola-Kirchhoff stress. Read more
Source§impl ElasticViscoplastic<f64> for Hencky
impl ElasticViscoplastic<f64> for Hencky
Source§fn state_variables_evolution(
&self,
deformation_gradient: &DeformationGradient,
state_variables: &ViscoplasticStateVariables<Y>,
) -> Result<ViscoplasticStateVariables<Y>, ConstitutiveError>
fn state_variables_evolution( &self, deformation_gradient: &DeformationGradient, state_variables: &ViscoplasticStateVariables<Y>, ) -> Result<ViscoplasticStateVariables<Y>, ConstitutiveError>
Calculates and returns the evolution of the state variables.
Source§impl HyperelasticViscoplastic<f64> for Hencky
impl HyperelasticViscoplastic<f64> for Hencky
Source§fn helmholtz_free_energy_density(
&self,
deformation_gradient: &DeformationGradient,
deformation_gradient_p: &DeformationGradientPlastic,
) -> Result<Scalar, ConstitutiveError>
fn helmholtz_free_energy_density( &self, deformation_gradient: &DeformationGradient, deformation_gradient_p: &DeformationGradientPlastic, ) -> Result<Scalar, ConstitutiveError>
a(\mathbf{F},\mathbf{F}_\mathrm{p}) = \mu\,\mathrm{tr}(\mathbf{h}_\mathrm{e}^2) + \frac{1}{2}\left(\kappa - \frac{2}{3}\,\mu\right)\mathrm{tr}(\mathbf{h}_\mathrm{e})^2Source§impl Plastic for Hencky
impl Plastic for Hencky
Source§fn initial_yield_stress(&self) -> Scalar
fn initial_yield_stress(&self) -> Scalar
Returns the initial yield stress.
Source§fn hardening_slope(&self) -> Scalar
fn hardening_slope(&self) -> Scalar
Returns the isotropic hardening slope.
Source§fn yield_stress(
&self,
equivalent_plastic_strain: Scalar,
) -> Result<Scalar, ConstitutiveError>
fn yield_stress( &self, equivalent_plastic_strain: Scalar, ) -> Result<Scalar, ConstitutiveError>
Calculates and returns the yield stress. Read more
Source§impl Solid for Hencky
impl Solid for Hencky
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§fn jacobian<const I: usize, const J: usize>(
&self,
deformation_gradient: &DeformationGradientGeneral<I, J>,
) -> Result<Scalar, ConstitutiveError>
fn jacobian<const I: usize, const J: usize>( &self, deformation_gradient: &DeformationGradientGeneral<I, J>, ) -> Result<Scalar, ConstitutiveError>
Calculates and returns the Jacobian.
Source§impl Viscoplastic<f64> for Hencky
impl Viscoplastic<f64> for Hencky
Source§fn initial_state(&self) -> ViscoplasticStateVariables<Scalar>
fn initial_state(&self) -> ViscoplasticStateVariables<Scalar>
Returns the initial state of the variables.
Source§fn plastic_evolution(
&self,
mandel_stress: MandelStressElastic,
state_variables: &ViscoplasticStateVariables<Scalar>,
) -> Result<ViscoplasticStateVariables<Scalar>, ConstitutiveError>
fn plastic_evolution( &self, mandel_stress: MandelStressElastic, state_variables: &ViscoplasticStateVariables<Scalar>, ) -> Result<ViscoplasticStateVariables<Scalar>, ConstitutiveError>
Calculates and returns the plastic evolution. Read more
Source§fn rate_sensitivity(&self) -> Scalar
fn rate_sensitivity(&self) -> Scalar
Returns the rate_sensitivity parameter.
Source§fn reference_flow_rate(&self) -> Scalar
fn reference_flow_rate(&self) -> Scalar
Returns the reference flow rate.
Source§fn plastic_stretching_rate(
&self,
deviatoric_mandel_stress: MandelStressElastic,
yield_stress: Scalar,
) -> Result<StretchingRatePlastic, ConstitutiveError>
fn plastic_stretching_rate( &self, deviatoric_mandel_stress: MandelStressElastic, yield_stress: Scalar, ) -> Result<StretchingRatePlastic, ConstitutiveError>
Calculates and returns the rate of plastic stretching. Read more
Auto Trait Implementations§
impl Freeze for Hencky
impl RefUnwindSafe for Hencky
impl Send for Hencky
impl Sync for Hencky
impl Unpin for Hencky
impl UnwindSafe for Hencky
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,
Source§impl<C, Y> FirstOrderMinimize<Y> for Cwhere
C: HyperelasticViscoplastic<Y>,
Y: Tensor,
impl<C, Y> FirstOrderMinimize<Y> for Cwhere
C: HyperelasticViscoplastic<Y>,
Y: Tensor,
Source§fn minimize(
&self,
applied_load: AppliedLoad<'_>,
integrator: impl ExplicitDaeFirstOrderMinimize<f64, TensorTuple<TensorRank2<3, 2, 0>, Y>, TensorRank2<3, 1, 0>, TensorVector<TensorTuple<TensorRank2<3, 2, 0>, Y>>, TensorVector<TensorRank2<3, 1, 0>>>,
solver: impl FirstOrderOptimization<f64, TensorRank2<3, 1, 0>>,
) -> Result<(Vector, TensorVector<TensorRank2<3, 1, 0>>, TensorVector<TensorTuple<TensorRank2<3, 2, 0>, Y>>), ConstitutiveError>
fn minimize( &self, applied_load: AppliedLoad<'_>, integrator: impl ExplicitDaeFirstOrderMinimize<f64, TensorTuple<TensorRank2<3, 2, 0>, Y>, TensorRank2<3, 1, 0>, TensorVector<TensorTuple<TensorRank2<3, 2, 0>, Y>>, TensorVector<TensorRank2<3, 1, 0>>>, solver: impl FirstOrderOptimization<f64, TensorRank2<3, 1, 0>>, ) -> Result<(Vector, TensorVector<TensorRank2<3, 1, 0>>, TensorVector<TensorTuple<TensorRank2<3, 2, 0>, Y>>), ConstitutiveError>
Solve for the unknown components of the deformation gradients under an applied load. Read more
Source§impl<C, Y> FirstOrderRoot<Y> for Cwhere
C: ElasticViscoplastic<Y>,
Y: Tensor,
impl<C, Y> FirstOrderRoot<Y> for Cwhere
C: ElasticViscoplastic<Y>,
Y: Tensor,
Source§fn root(
&self,
applied_load: AppliedLoad<'_>,
integrator: impl ExplicitDaeFirstOrderRoot<TensorRank2<3, 1, 0>, TensorRank4<3, 1, 0, 1, 0>, TensorTuple<TensorRank2<3, 2, 0>, Y>, TensorRank2<3, 1, 0>, TensorVector<TensorTuple<TensorRank2<3, 2, 0>, Y>>, 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<TensorTuple<TensorRank2<3, 2, 0>, Y>>), ConstitutiveError>
fn root( &self, applied_load: AppliedLoad<'_>, integrator: impl ExplicitDaeFirstOrderRoot<TensorRank2<3, 1, 0>, TensorRank4<3, 1, 0, 1, 0>, TensorTuple<TensorRank2<3, 2, 0>, Y>, TensorRank2<3, 1, 0>, TensorVector<TensorTuple<TensorRank2<3, 2, 0>, Y>>, 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<TensorTuple<TensorRank2<3, 2, 0>, Y>>), ConstitutiveError>
Solve for the unknown components of the deformation gradients under an applied load. Read more
Source§impl<C, Y> SecondOrderMinimize<Y> for Cwhere
C: HyperelasticViscoplastic<Y>,
Y: Tensor,
impl<C, Y> SecondOrderMinimize<Y> for Cwhere
C: HyperelasticViscoplastic<Y>,
Y: Tensor,
Source§fn minimize(
&self,
applied_load: AppliedLoad<'_>,
integrator: impl ExplicitDaeSecondOrderMinimize<f64, TensorRank2<3, 1, 0>, TensorRank4<3, 1, 0, 1, 0>, TensorTuple<TensorRank2<3, 2, 0>, Y>, TensorRank2<3, 1, 0>, TensorVector<TensorTuple<TensorRank2<3, 2, 0>, Y>>, 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<TensorTuple<TensorRank2<3, 2, 0>, Y>>), ConstitutiveError>
fn minimize( &self, applied_load: AppliedLoad<'_>, integrator: impl ExplicitDaeSecondOrderMinimize<f64, TensorRank2<3, 1, 0>, TensorRank4<3, 1, 0, 1, 0>, TensorTuple<TensorRank2<3, 2, 0>, Y>, TensorRank2<3, 1, 0>, TensorVector<TensorTuple<TensorRank2<3, 2, 0>, Y>>, 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<TensorTuple<TensorRank2<3, 2, 0>, Y>>), ConstitutiveError>
Solve for the unknown components of the deformation gradients under an applied load. Read more
Source§impl<C, Y> ZerothOrderRoot<Y> for Cwhere
C: ElasticViscoplastic<Y>,
Y: Tensor,
impl<C, Y> ZerothOrderRoot<Y> for Cwhere
C: ElasticViscoplastic<Y>,
Y: Tensor,
Source§fn root(
&self,
applied_load: AppliedLoad<'_>,
integrator: impl ExplicitDaeZerothOrderRoot<TensorTuple<TensorRank2<3, 2, 0>, Y>, TensorRank2<3, 1, 0>, TensorVector<TensorTuple<TensorRank2<3, 2, 0>, Y>>, TensorVector<TensorRank2<3, 1, 0>>>,
solver: impl ZerothOrderRootFinding<TensorRank2<3, 1, 0>>,
) -> Result<(Vector, TensorVector<TensorRank2<3, 1, 0>>, TensorVector<TensorTuple<TensorRank2<3, 2, 0>, Y>>), ConstitutiveError>
fn root( &self, applied_load: AppliedLoad<'_>, integrator: impl ExplicitDaeZerothOrderRoot<TensorTuple<TensorRank2<3, 2, 0>, Y>, TensorRank2<3, 1, 0>, TensorVector<TensorTuple<TensorRank2<3, 2, 0>, Y>>, TensorVector<TensorRank2<3, 1, 0>>>, solver: impl ZerothOrderRootFinding<TensorRank2<3, 1, 0>>, ) -> Result<(Vector, TensorVector<TensorRank2<3, 1, 0>>, TensorVector<TensorTuple<TensorRank2<3, 2, 0>, Y>>), ConstitutiveError>
Solve for the unknown components of the deformation gradients under an applied load. Read more