pub struct AlmansiHamelEulerian {
pub bulk_modulus: Quantity<Stress>,
pub shear_modulus: Quantity<Stress>,
pub yield_stress: Quantity<Stress>,
pub hardening_slope: Quantity<Stress>,
pub rate_sensitivity: Scalar,
pub reference_flow_rate: Quantity<Rate>,
}Expand description
The Eulerian Almansi-Hamel elastic-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 elastic Almansi-Hamel strain measure is given by $
\mathbf{e}_\mathrm{e}=\tfrac{1}{2}(\mathbf{1}-\mathbf{B}_\mathrm{e}^{-1})$. - The elastic response is Cauchy elastic, so no Helmholtz free energy density exists.
Fields§
§bulk_modulus: Quantity<Stress>The bulk modulus $\kappa$.
shear_modulus: Quantity<Stress>The shear modulus $\mu$.
yield_stress: Quantity<Stress>The initial yield stress $Y_0$.
hardening_slope: Quantity<Stress>The isotropic hardening slope $H$.
rate_sensitivity: ScalarThe rate sensitivity parameter $m$.
reference_flow_rate: Quantity<Rate>The reference flow rate $d_0$.
Trait Implementations§
Source§impl Clone for AlmansiHamelEulerian
impl Clone for AlmansiHamelEulerian
Source§fn clone(&self) -> AlmansiHamelEulerian
fn clone(&self) -> AlmansiHamelEulerian
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for AlmansiHamelEulerian
impl Debug for AlmansiHamelEulerian
Source§impl ElasticPlasticOrViscoplastic for AlmansiHamelEulerian
impl ElasticPlasticOrViscoplastic for AlmansiHamelEulerian
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{e}_\mathrm{e}' + \frac{\kappa}{J}\,\mathrm{tr}(\mathbf{e}_\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[B_{jk}^{\mathrm{e}-1}F_{iL}^{-T} + B_{ik}^{\mathrm{e}-1}F_{jL}^{-T} - 2{e_{ij}^\mathrm{e}}'F_{kL}^{-T}\right] + \frac{\lambda}{J}\,\delta_{ij}B_{km}^{\mathrm{e}-1}F_{mL}^{-T} - \frac{\kappa}{J}\,\mathrm{tr}(\mathbf{e}_\mathrm{e})\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 mandel_stress(
&self,
deformation_gradient: &DeformationGradient,
deformation_gradient_p: &DeformationGradientPlastic,
) -> Result<MandelStressElastic, ConstitutiveError>
fn mandel_stress( &self, deformation_gradient: &DeformationGradient, deformation_gradient_p: &DeformationGradientPlastic, ) -> Result<MandelStressElastic, ConstitutiveError>
Calculates and returns the Mandel 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<Quantity> for AlmansiHamelEulerian
impl ElasticViscoplastic<Quantity> for AlmansiHamelEulerian
Source§fn internal_dissipation(
&self,
deformation_gradient: &DeformationGradient,
state_variables: &ViscoplasticStateVariables<Y>,
) -> Result<Quantity<Dissipation>, ConstitutiveError>
fn internal_dissipation( &self, deformation_gradient: &DeformationGradient, state_variables: &ViscoplasticStateVariables<Y>, ) -> Result<Quantity<Dissipation>, ConstitutiveError>
Calculates and returns the internal dissipation. Read more
Source§fn state_variables_evolution(
&self,
deformation_gradient: &DeformationGradient,
state_variables: &ViscoplasticStateVariables<Y>,
) -> Result<ViscoplasticEvolution<Y>, ConstitutiveError>
fn state_variables_evolution( &self, deformation_gradient: &DeformationGradient, state_variables: &ViscoplasticStateVariables<Y>, ) -> Result<ViscoplasticEvolution<Y>, ConstitutiveError>
Calculates and returns the evolution of the state variables.
Source§impl Plastic for AlmansiHamelEulerian
impl Plastic for AlmansiHamelEulerian
Source§fn initial_yield_stress(&self) -> Quantity<Stress>
fn initial_yield_stress(&self) -> Quantity<Stress>
Returns the initial yield stress.
Source§fn hardening_slope(&self) -> Quantity<Stress>
fn hardening_slope(&self) -> Quantity<Stress>
Returns the isotropic hardening slope.
Source§fn yield_stress(
&self,
equivalent_plastic_strain: Quantity,
) -> Result<Quantity<Stress>, ConstitutiveError>
fn yield_stress( &self, equivalent_plastic_strain: Quantity, ) -> Result<Quantity<Stress>, ConstitutiveError>
Calculates and returns the yield stress. Read more
Source§impl Solid for AlmansiHamelEulerian
impl Solid for AlmansiHamelEulerian
Source§fn bulk_modulus(&self) -> Quantity<Stress>
fn bulk_modulus(&self) -> Quantity<Stress>
Returns the bulk modulus.
Source§fn shear_modulus(&self) -> Quantity<Stress>
fn shear_modulus(&self) -> Quantity<Stress>
Returns the shear modulus.
Source§fn jacobian<I, J>(
&self,
deformation_gradient: &DeformationGradientGeneral<I, J>,
) -> Result<Scalar, ConstitutiveError>
fn jacobian<I, J>( &self, deformation_gradient: &DeformationGradientGeneral<I, J>, ) -> Result<Scalar, ConstitutiveError>
Calculates and returns the Jacobian.
Source§impl Viscoplastic<Quantity> for AlmansiHamelEulerian
impl Viscoplastic<Quantity> for AlmansiHamelEulerian
Source§fn initial_state(&self) -> ViscoplasticStateVariables<Quantity>
fn initial_state(&self) -> ViscoplasticStateVariables<Quantity>
Returns the initial state of the variables.
Source§fn plastic_evolution(
&self,
mandel_stress: MandelStressElastic,
state_variables: &ViscoplasticStateVariables<Quantity>,
) -> Result<ViscoplasticEvolution<Quantity>, ConstitutiveError>
fn plastic_evolution( &self, mandel_stress: MandelStressElastic, state_variables: &ViscoplasticStateVariables<Quantity>, ) -> Result<ViscoplasticEvolution<Quantity>, 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) -> Quantity<Rate>
fn reference_flow_rate(&self) -> Quantity<Rate>
Returns the reference flow rate.
Source§fn plastic_stretching_rate(
&self,
deviatoric_mandel_stress: MandelStressElastic,
yield_stress: Quantity<Stress>,
) -> Result<StretchingRatePlastic, ConstitutiveError>
fn plastic_stretching_rate( &self, deviatoric_mandel_stress: MandelStressElastic, yield_stress: Quantity<Stress>, ) -> Result<StretchingRatePlastic, ConstitutiveError>
Calculates and returns the rate of plastic stretching. Read more
Source§fn dissipation_potential(
&self,
plastic_stretching_rate: StretchingRatePlastic,
yield_stress: Quantity<Stress>,
) -> Result<Quantity<Dissipation>, ConstitutiveError>
fn dissipation_potential( &self, plastic_stretching_rate: StretchingRatePlastic, yield_stress: Quantity<Stress>, ) -> Result<Quantity<Dissipation>, ConstitutiveError>
Calculates and returns the dissipation potential. Read more
Source§fn dual_dissipation_potential(
&self,
deviatoric_mandel_stress: MandelStressElastic,
yield_stress: Quantity<Stress>,
) -> Result<Quantity<Dissipation>, ConstitutiveError>
fn dual_dissipation_potential( &self, deviatoric_mandel_stress: MandelStressElastic, yield_stress: Quantity<Stress>, ) -> Result<Quantity<Dissipation>, ConstitutiveError>
Calculates and returns the dual dissipation potential. Read more
Auto Trait Implementations§
impl Freeze for AlmansiHamelEulerian
impl RefUnwindSafe for AlmansiHamelEulerian
impl Send for AlmansiHamelEulerian
impl Sync for AlmansiHamelEulerian
impl Unpin for AlmansiHamelEulerian
impl UnsafeUnpin for AlmansiHamelEulerian
impl UnwindSafe for AlmansiHamelEulerian
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,
impl<C> Constitutive for Cwhere
C: Solid,
Source§impl<C, Y> FirstOrderRoot<Y> for C
impl<C, Y> FirstOrderRoot<Y> for C
Source§fn root(
&self,
applied_load: AppliedLoad<'_>,
integrator: impl ExplicitDaeFirstOrderRoot<TensorRank2<3, Current, Reference, Stress>, TensorRank4<3, Current, Reference, Current, Reference, Stress>, TensorTuple<TensorRank2<3, Intermediate, Reference>, Y>, TensorRank2<3, Current, Reference>, TensorVector<TensorTuple<TensorRank2<3, Intermediate, Reference>, Y>>, TensorVector<TensorRank2<3, Current, Reference>>, TensorVector<TensorTuple<TensorRank2<3, Intermediate, Reference, Rate>, <Y as Differentiate>::Derivative>>>,
solver: impl FirstOrderRootFinding<TensorRank2<3, Current, Reference, Stress>, TensorRank4<3, Current, Reference, Current, Reference, Stress>, TensorRank2<3, Current, Reference>>,
) -> Result<(TensorVector<Quantity<Time>>, TensorVector<TensorRank2<3, Current, Reference>>, TensorVector<TensorTuple<TensorRank2<3, Intermediate, Reference>, Y>>), ConstitutiveError>
fn root( &self, applied_load: AppliedLoad<'_>, integrator: impl ExplicitDaeFirstOrderRoot<TensorRank2<3, Current, Reference, Stress>, TensorRank4<3, Current, Reference, Current, Reference, Stress>, TensorTuple<TensorRank2<3, Intermediate, Reference>, Y>, TensorRank2<3, Current, Reference>, TensorVector<TensorTuple<TensorRank2<3, Intermediate, Reference>, Y>>, TensorVector<TensorRank2<3, Current, Reference>>, TensorVector<TensorTuple<TensorRank2<3, Intermediate, Reference, Rate>, <Y as Differentiate>::Derivative>>>, solver: impl FirstOrderRootFinding<TensorRank2<3, Current, Reference, Stress>, TensorRank4<3, Current, Reference, Current, Reference, Stress>, TensorRank2<3, Current, Reference>>, ) -> Result<(TensorVector<Quantity<Time>>, TensorVector<TensorRank2<3, Current, Reference>>, TensorVector<TensorTuple<TensorRank2<3, Intermediate, Reference>, Y>>), ConstitutiveError>
Solve for the unknown components of the deformation gradients under an applied load. Read more
impl<T> Is<T> for T
Source§impl<C, Y> ZerothOrderRoot<Y> for C
impl<C, Y> ZerothOrderRoot<Y> for C
Source§fn root(
&self,
applied_load: AppliedLoad<'_>,
integrator: impl ExplicitDaeZerothOrderRoot<TensorRank2<3, Current, Reference, Stress>, TensorTuple<TensorRank2<3, Intermediate, Reference>, Y>, TensorRank2<3, Current, Reference>, TensorVector<TensorTuple<TensorRank2<3, Intermediate, Reference>, Y>>, TensorVector<TensorRank2<3, Current, Reference>>, TensorVector<TensorTuple<TensorRank2<3, Intermediate, Reference, Rate>, <Y as Differentiate>::Derivative>>>,
solver: impl ZerothOrderRootFinding<TensorRank2<3, Current, Reference, Stress>, TensorRank2<3, Current, Reference>>,
) -> Result<(TensorVector<Quantity<Time>>, TensorVector<TensorRank2<3, Current, Reference>>, TensorVector<TensorTuple<TensorRank2<3, Intermediate, Reference>, Y>>), ConstitutiveError>
fn root( &self, applied_load: AppliedLoad<'_>, integrator: impl ExplicitDaeZerothOrderRoot<TensorRank2<3, Current, Reference, Stress>, TensorTuple<TensorRank2<3, Intermediate, Reference>, Y>, TensorRank2<3, Current, Reference>, TensorVector<TensorTuple<TensorRank2<3, Intermediate, Reference>, Y>>, TensorVector<TensorRank2<3, Current, Reference>>, TensorVector<TensorTuple<TensorRank2<3, Intermediate, Reference, Rate>, <Y as Differentiate>::Derivative>>>, solver: impl ZerothOrderRootFinding<TensorRank2<3, Current, Reference, Stress>, TensorRank2<3, Current, Reference>>, ) -> Result<(TensorVector<Quantity<Time>>, TensorVector<TensorRank2<3, Current, Reference>>, TensorVector<TensorTuple<TensorRank2<3, Intermediate, Reference>, Y>>), ConstitutiveError>
Solve for the unknown components of the deformation gradients under an applied load. Read more