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}