conspire/constitutive/hybrid/hyperelastic_viscoplastic/additive/hyperelastic/
mod.rs1use crate::{
2 constitutive::{
3 ConstitutiveError,
4 hybrid::ElasticViscoplasticAdditiveElastic,
5 solid::{hyperelastic::Hyperelastic, hyperelastic_viscoplastic::HyperelasticViscoplastic},
6 },
7 math::Tensor,
8 mechanics::{DeformationGradient, DeformationGradientPlastic, Scalar},
9};
10
11impl<C1, C2, Y1> HyperelasticViscoplastic<Y1> for ElasticViscoplasticAdditiveElastic<C1, C2, Y1>
12where
13 C1: HyperelasticViscoplastic<Y1>,
14 C2: Hyperelastic,
15 Y1: Tensor,
16{
17 fn helmholtz_free_energy_density(
23 &self,
24 deformation_gradient: &DeformationGradient,
25 deformation_gradient_p: &DeformationGradientPlastic,
26 ) -> Result<Scalar, ConstitutiveError> {
27 Ok(self
28 .0
29 .helmholtz_free_energy_density(deformation_gradient, deformation_gradient_p)?
30 + self.1.helmholtz_free_energy_density(deformation_gradient)?)
31 }
32}