Skip to main content

conspire/domain/block/element/solid/hyperelastic_viscoplastic/
mod.rs

1use 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}