conspire/domain/block/element/solid/hyperelastic_viscoplastic/
mod.rs1use crate::{
2 constitutive::solid::hyperelastic_viscoplastic::HyperelasticViscoplastic,
3 domain::block::element::solid::{
4 elastic_viscoplastic::ElasticViscoplasticElement, viscoplastic::ViscoplasticStateVariables,
5 },
6 math::{Differentiable, Quantity, Tensor},
7 units::Energy,
8};
9
10pub trait HyperelasticViscoplasticElement<C, const G: usize, Y>
11where
12 C: HyperelasticViscoplastic<Y>,
13 Self: ElasticViscoplasticElement<C, G, Y>,
14 Y: Differentiable + Tensor,
15{
16 fn helmholtz_free_energy(
17 &self,
18 constitutive_model: &C,
19 nodal_coordinates: &Self::Coordinates,
20 state_variables: &ViscoplasticStateVariables<G, Y>,
21 ) -> Result<Quantity<Energy>, Self::Error>;
22}