conspire/domain/cbm/block/node/solid/hyperviscoelastic/
mod.rs1use super::{super::Node, SolidElement};
2use crate::{
3 constitutive::{ConstitutiveError, solid::hyperviscoelastic::Hyperviscoelastic},
4 domain::NodalCoordinates,
5 math::Quantity,
6 units::Energy,
7};
8
9pub use crate::domain::block::element::solid::hyperviscoelastic::HyperviscoelasticElement;
10
11impl<C> HyperviscoelasticElement<C> for Node
12where
13 C: Hyperviscoelastic,
14{
15 fn helmholtz_free_energy(
16 &self,
17 constitutive_model: &C,
18 nodal_coordinates: &NodalCoordinates<3>,
19 ) -> Result<Quantity<Energy>, ConstitutiveError> {
20 Ok(constitutive_model
21 .helmholtz_free_energy_density(&self.deformation_gradients(nodal_coordinates))?
22 * self.volume)
23 }
24}