pub trait ElasticIV<V, T1, T2, T3>where
Self: Solid,{
// Required methods
fn internal_variables_initial(&self) -> V;
fn internal_variables_residual(
&self,
deformation_gradient: &DeformationGradient,
internal_variables: &V,
) -> Result<V, ConstitutiveError>;
fn internal_variables_tangents(
&self,
deformation_gradient: &DeformationGradient,
internal_variables: &V,
) -> Result<(T1, T2, T3), ConstitutiveError>;
fn internal_variables_constraints(&self) -> (&[usize], usize);
// Provided methods
fn cauchy_stress_foo(
&self,
deformation_gradient: &DeformationGradient,
internal_variables: &V,
) -> Result<CauchyStress, ConstitutiveError> { ... }
fn cauchy_tangent_stiffness_foo(
&self,
deformation_gradient: &DeformationGradient,
internal_variables: &V,
) -> Result<CauchyTangentStiffness, ConstitutiveError> { ... }
fn first_piola_kirchhoff_stress_foo(
&self,
deformation_gradient: &DeformationGradient,
internal_variables: &V,
) -> Result<FirstPiolaKirchhoffStress, ConstitutiveError> { ... }
fn first_piola_kirchhoff_tangent_stiffness_foo(
&self,
deformation_gradient: &DeformationGradient,
internal_variables: &V,
) -> Result<FirstPiolaKirchhoffTangentStiffness, ConstitutiveError> { ... }
fn second_piola_kirchhoff_stress_foo(
&self,
deformation_gradient: &DeformationGradient,
internal_variables: &V,
) -> Result<SecondPiolaKirchhoffStress, ConstitutiveError> { ... }
fn second_piola_kirchhoff_tangent_stiffness_foo(
&self,
deformation_gradient: &DeformationGradient,
internal_variables: &V,
) -> Result<SecondPiolaKirchhoffTangentStiffness, ConstitutiveError> { ... }
}Expand description
Required methods for elastic constitutive models with internal variables.
Required Methods§
Sourcefn internal_variables_initial(&self) -> V
fn internal_variables_initial(&self) -> V
Returns the initial value for the internal variables.
Sourcefn internal_variables_residual(
&self,
deformation_gradient: &DeformationGradient,
internal_variables: &V,
) -> Result<V, ConstitutiveError>
fn internal_variables_residual( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<V, ConstitutiveError>
Calculates and returns the residual associated with the internal variables.
Sourcefn internal_variables_tangents(
&self,
deformation_gradient: &DeformationGradient,
internal_variables: &V,
) -> Result<(T1, T2, T3), ConstitutiveError>
fn internal_variables_tangents( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<(T1, T2, T3), ConstitutiveError>
Calculates and returns the tangents associated with the internal variables.
Sourcefn internal_variables_constraints(&self) -> (&[usize], usize)
fn internal_variables_constraints(&self) -> (&[usize], usize)
Returns the constraint indices for the internal variables.
Provided Methods§
Sourcefn cauchy_stress_foo(
&self,
deformation_gradient: &DeformationGradient,
internal_variables: &V,
) -> Result<CauchyStress, ConstitutiveError>
fn cauchy_stress_foo( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<CauchyStress, ConstitutiveError>
Calculates and returns the Cauchy stress.
\boldsymbol{\sigma} = J^{-1}\mathbf{P}\cdot\mathbf{F}^TSourcefn cauchy_tangent_stiffness_foo(
&self,
deformation_gradient: &DeformationGradient,
internal_variables: &V,
) -> Result<CauchyTangentStiffness, ConstitutiveError>
fn cauchy_tangent_stiffness_foo( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<CauchyTangentStiffness, ConstitutiveError>
Calculates and returns the tangent stiffness associated with the Cauchy stress.
\mathcal{T}_{ijkL} = \frac{\partial\sigma_{ij}}{\partial F_{kL}} = J^{-1} \mathcal{G}_{MNkL} F_{iM} F_{jN} - \sigma_{ij} F_{kL}^{-T} + \left(\delta_{jk}\sigma_{is} + \delta_{ik}\sigma_{js}\right)F_{sL}^{-T}Sourcefn first_piola_kirchhoff_stress_foo(
&self,
deformation_gradient: &DeformationGradient,
internal_variables: &V,
) -> Result<FirstPiolaKirchhoffStress, ConstitutiveError>
fn first_piola_kirchhoff_stress_foo( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<FirstPiolaKirchhoffStress, ConstitutiveError>
Calculates and returns the first Piola-Kirchhoff stress.
\mathbf{P} = J\boldsymbol{\sigma}\cdot\mathbf{F}^{-T}Sourcefn first_piola_kirchhoff_tangent_stiffness_foo(
&self,
deformation_gradient: &DeformationGradient,
internal_variables: &V,
) -> Result<FirstPiolaKirchhoffTangentStiffness, ConstitutiveError>
fn first_piola_kirchhoff_tangent_stiffness_foo( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<FirstPiolaKirchhoffTangentStiffness, ConstitutiveError>
Calculates and returns the tangent stiffness associated with the first Piola-Kirchhoff stress.
\mathcal{C}_{iJkL} = \frac{\partial P_{iJ}}{\partial F_{kL}} = J \mathcal{T}_{iskL} F_{sJ}^{-T} + P_{iJ} F_{kL}^{-T} - P_{iL} F_{kJ}^{-T}Sourcefn second_piola_kirchhoff_stress_foo(
&self,
deformation_gradient: &DeformationGradient,
internal_variables: &V,
) -> Result<SecondPiolaKirchhoffStress, ConstitutiveError>
fn second_piola_kirchhoff_stress_foo( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<SecondPiolaKirchhoffStress, ConstitutiveError>
Calculates and returns the second Piola-Kirchhoff stress.
\mathbf{S} = \mathbf{F}^{-1}\cdot\mathbf{P}Sourcefn second_piola_kirchhoff_tangent_stiffness_foo(
&self,
deformation_gradient: &DeformationGradient,
internal_variables: &V,
) -> Result<SecondPiolaKirchhoffTangentStiffness, ConstitutiveError>
fn second_piola_kirchhoff_tangent_stiffness_foo( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<SecondPiolaKirchhoffTangentStiffness, ConstitutiveError>
Calculates and returns the tangent stiffness associated with the second Piola-Kirchhoff stress.
\mathcal{G}_{IJkL} = \frac{\partial S_{IJ}}{\partial F_{kL}} = \mathcal{C}_{mJkL}F_{mI}^{-T} - S_{LJ}F_{kI}^{-T} = J \mathcal{T}_{mnkL} F_{mI}^{-T} F_{nJ}^{-T} + S_{IJ} F_{kL}^{-T} - S_{IL} F_{kJ}^{-T} -S_{LJ} F_{kI}^{-T}Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.