conspire/constitutive/hybrid/hyperelastic_viscoplastic/multiplicative/
mod.rs1#[cfg(test)]
2mod test;
3
4use crate::{
5 constitutive::{
6 ConstitutiveError,
7 fluid::viscoplastic::Viscoplastic,
8 hybrid::Multiplicative,
9 solid::{hyperelastic::Hyperelastic, hyperelastic_viscoplastic::HyperelasticViscoplastic},
10 },
11 mechanics::{DeformationGradient, DeformationGradientPlastic, Scalar},
12};
13
14impl<C1, C2> HyperelasticViscoplastic for Multiplicative<C1, C2>
15where
16 C1: Hyperelastic,
17 C2: Viscoplastic,
18{
19 fn helmholtz_free_energy_density(
20 &self,
21 deformation_gradient: &DeformationGradient,
22 deformation_gradient_p: &DeformationGradientPlastic,
23 ) -> Result<Scalar, ConstitutiveError> {
24 let deformation_gradient_e = deformation_gradient * deformation_gradient_p.inverse();
25 self.0
26 .helmholtz_free_energy_density(&deformation_gradient_e.into())
27 }
28}