conspire/domain/cbm/block/node/solid/elastic_hyperviscous/
mod.rs1use super::{super::Node, SolidElement};
2use crate::{
3 constitutive::{ConstitutiveError, solid::elastic_hyperviscous::ElasticHyperviscous},
4 domain::{NodalCoordinates, NodalVelocities},
5 math::Quantity,
6 units::Power,
7};
8
9pub use crate::domain::block::element::solid::elastic_hyperviscous::ElasticHyperviscousElement;
10
11impl<C> ElasticHyperviscousElement<C> for Node
12where
13 C: ElasticHyperviscous,
14{
15 fn viscous_dissipation(
16 &self,
17 constitutive_model: &C,
18 nodal_coordinates: &NodalCoordinates<3>,
19 nodal_velocities: &NodalVelocities<3>,
20 ) -> Result<Quantity<Power>, ConstitutiveError> {
21 Ok(constitutive_model.viscous_dissipation(
22 &self.deformation_gradients(nodal_coordinates),
23 &self.deformation_gradient_rates(nodal_coordinates, nodal_velocities),
24 )? * self.volume)
25 }
26 fn dissipation_potential(
27 &self,
28 constitutive_model: &C,
29 nodal_coordinates: &NodalCoordinates<3>,
30 nodal_velocities: &NodalVelocities<3>,
31 ) -> Result<Quantity<Power>, ConstitutiveError> {
32 Ok(constitutive_model.dissipation_potential(
33 &self.deformation_gradients(nodal_coordinates),
34 &self.deformation_gradient_rates(nodal_coordinates, nodal_velocities),
35 )? * self.volume)
36 }
37}