conspire/constitutive/hybrid/hyperelastic_viscoplastic/multiplicative/
mod.rs

1#[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}