Skip to main content

ElasticIV

Trait ElasticIV 

Source
pub trait ElasticIV<V>
where Self: Solid,
{ type Residual: Jacobian; type TangentVu: HessianBlock; type TangentUv: HessianBlock; type TangentVv: Hessian + HessianBlock; // Required methods fn internal_variables_initial(&self) -> V; fn internal_variables_residual( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<Self::Residual, ConstitutiveError>; fn internal_variables_fixed(&self) -> &[usize]; fn tangents( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<Tangents<Self, V>, ConstitutiveError>; // Provided methods fn cauchy_stress( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<CauchyStress, ConstitutiveError> { ... } fn cauchy_tangent_stiffness( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<CauchyTangentStiffness, ConstitutiveError> { ... } fn first_piola_kirchhoff_stress( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<FirstPiolaKirchhoffStress, ConstitutiveError> { ... } fn first_piola_kirchhoff_tangent_stiffness( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<FirstPiolaKirchhoffTangentStiffness, ConstitutiveError> { ... } fn second_piola_kirchhoff_stress( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<SecondPiolaKirchhoffStress, ConstitutiveError> { ... } fn second_piola_kirchhoff_tangent_stiffness( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<SecondPiolaKirchhoffTangentStiffness, ConstitutiveError> { ... } }
Expand description

Required methods for elastic solid constitutive models with internal variables.

Required Associated Types§

Source

type Residual: Jacobian

The residual associated with the internal variables. the internal variables are in equilibrium over, typically a stress.

Source

type TangentVu: HessianBlock

The tangent of the internal variables residual with the deformation gradient.

Source

type TangentUv: HessianBlock

The tangent of the deformation gradient residual with the internal variables.

Source

type TangentVv: Hessian + HessianBlock

The tangent of the internal variables residual with the internal variables.

Required Methods§

Source

fn internal_variables_initial(&self) -> V

Returns the initial value for the internal variables.

Source

fn internal_variables_residual( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<Self::Residual, ConstitutiveError>

Calculates and returns the residual associated with the internal variables.

Source

fn internal_variables_fixed(&self) -> &[usize]

Returns the indices of the internal variables held at zero.

Source

fn tangents( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<Tangents<Self, V>, ConstitutiveError>

Calculates and returns the tangents of the coupled system.

Provided Methods§

Source

fn cauchy_stress( &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}^T
Source

fn cauchy_tangent_stiffness( &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}
Source

fn first_piola_kirchhoff_stress( &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}
Source

fn first_piola_kirchhoff_tangent_stiffness( &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}
Source

fn second_piola_kirchhoff_stress( &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}
Source

fn second_piola_kirchhoff_tangent_stiffness( &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.

Implementors§