Skip to main content

conspire/domain/cbm/block/solid/
mod.rs

1pub mod elastic;
2pub mod elastic_hyperviscous;
3pub mod elastic_viscoplastic;
4pub mod hyperelastic;
5pub mod hyperelastic_viscoplastic;
6pub mod hyperviscoelastic;
7pub mod viscoelastic;
8
9use super::{Block, node::solid::SolidElement};
10use crate::{
11    domain::{NodalCoordinates, NodalVelocities},
12    mechanics::{DeformationGradient, DeformationGradientRate},
13};
14
15pub use crate::domain::solid::SolidElements;
16
17impl<C> SolidElements for Block<C> {
18    type DeformationGradients = DeformationGradient;
19    type DeformationGradientRates = DeformationGradientRate;
20    fn deformation_gradients(
21        &self,
22        nodal_coordinates: &NodalCoordinates<3>,
23    ) -> Vec<Self::DeformationGradients> {
24        self.nodes
25            .iter()
26            .map(|node| node.deformation_gradients(nodal_coordinates))
27            .collect()
28    }
29    fn deformation_gradient_rates(
30        &self,
31        nodal_coordinates: &NodalCoordinates<3>,
32        nodal_velocities: &NodalVelocities<3>,
33    ) -> Vec<Self::DeformationGradientRates> {
34        self.nodes
35            .iter()
36            .map(|node| node.deformation_gradient_rates(nodal_coordinates, nodal_velocities))
37            .collect()
38    }
39}