conspire/constitutive/solid/hyperviscoelastic/
mod.rs

1//! Hyperviscoelastic constitutive models.
2//!
3//! ---
4//!
5//! Hyperviscoelastic constitutive models are defined by a Helmholtz free energy density function and a viscous dissipation function.
6//!
7//! ```math
8//! \mathbf{P}:\dot{\mathbf{F}} - \dot{a}(\mathbf{F}) - \phi(\mathbf{F},\dot{\mathbf{F}}) \geq 0
9//! ```
10//! Satisfying the second law of thermodynamics though a minimum viscous dissipation principal yields a relation for the stress.
11//!
12//! ```math
13//! \mathbf{P} = \frac{\partial a}{\partial\mathbf{F}} + \frac{\partial\phi}{\partial\dot{\mathbf{F}}}
14//! ```
15//! Consequently, the rate tangent stiffness associated with the first Piola-Kirchhoff stress is symmetric for these constitutive models.
16//!
17//! ```math
18//! \mathcal{U}_{iJkL} = \mathcal{U}_{kLiJ}
19//! ```
20
21#[cfg(test)]
22pub mod test;
23
24mod saint_venant_kirchhoff;
25
26pub use saint_venant_kirchhoff::SaintVenantKirchhoff;
27
28use super::{
29    super::fluid::viscous::Viscous, elastic_hyperviscous::ElasticHyperviscous,
30    viscoelastic::Viscoelastic, *,
31};
32use std::fmt::Debug;
33
34/// Required methods for hyperviscoelastic constitutive models.
35pub trait Hyperviscoelastic
36where
37    Self: ElasticHyperviscous,
38{
39    /// Calculates and returns the Helmholtz free energy density.
40    ///
41    /// ```math
42    /// a = a(\mathbf{F})
43    /// ```
44    fn helmholtz_free_energy_density(
45        &self,
46        deformation_gradient: &DeformationGradient,
47    ) -> Result<Scalar, ConstitutiveError>;
48}