Skip to main content

conspire/domain/vem/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 crate::{
10    constitutive::solid::Solid,
11    domain::solid::SolidElements,
12    mechanics::{DeformationGradientRates, DeformationGradients},
13    vem::{
14        NodalCoordinates, NodalVelocities,
15        block::{Block, element::solid::SolidVirtualElement},
16    },
17};
18
19pub type NodalDampingsSolid = crate::domain::solid::NodalDampingsSolid<3>;
20pub type NodalForcesSolid = crate::domain::solid::NodalForcesSolid<3>;
21pub type NodalStiffnessesSolid = crate::domain::solid::NodalStiffnessesSolid<3>;
22pub type NodalStiffnessesSolidSymmetric = crate::domain::solid::NodalStiffnessesSolidSymmetric<3>;
23
24impl<C, F> SolidElements for Block<C, F>
25where
26    C: Solid,
27    F: SolidVirtualElement,
28{
29    type DeformationGradients = DeformationGradients;
30    type DeformationGradientRates = DeformationGradientRates;
31    fn deformation_gradients(
32        &self,
33        nodal_coordinates: &NodalCoordinates,
34    ) -> Vec<Self::DeformationGradients> {
35        self.elements()
36            .iter()
37            .zip(self.elements_nodes())
38            .map(|(element, nodes)| {
39                element.deformation_gradients(&Self::element_coordinates(nodal_coordinates, nodes))
40            })
41            .collect()
42    }
43    fn deformation_gradient_rates(
44        &self,
45        nodal_coordinates: &NodalCoordinates,
46        nodal_velocities: &NodalVelocities,
47    ) -> Vec<Self::DeformationGradientRates> {
48        self.elements()
49            .iter()
50            .zip(self.elements_nodes())
51            .map(|(element, nodes)| {
52                element.deformation_gradient_rates(
53                    &Self::element_coordinates(nodal_coordinates, nodes),
54                    &Self::element_coordinates(nodal_velocities, nodes),
55                )
56            })
57            .collect()
58    }
59}