Skip to main content

conspire/domain/solid/
mod.rs

1pub(crate) mod elastic;
2#[cfg_attr(not(any(feature = "fem", feature = "vem")), allow(dead_code))]
3pub(crate) mod elastic_hyperviscous;
4#[cfg_attr(not(any(feature = "fem", feature = "vem")), allow(dead_code))]
5pub(crate) mod elastic_viscoplastic;
6#[cfg_attr(not(any(feature = "fem", feature = "vem")), allow(dead_code))]
7pub(crate) mod hyperelastic;
8#[cfg_attr(not(any(feature = "fem", feature = "vem")), allow(dead_code))]
9pub(crate) mod hyperelastic_viscoplastic;
10#[cfg_attr(not(any(feature = "fem", feature = "vem")), allow(dead_code))]
11pub(crate) mod hyperviscoelastic;
12#[cfg_attr(not(any(feature = "fem", feature = "vem")), allow(dead_code))]
13pub(crate) mod viscoelastic;
14
15use crate::{
16    domain::{NodalCoordinates, NodalVelocities},
17    math::{Current, TensorRank1Vec, TensorRank2SparseVec2D, TensorRank2SparseVec2DSymmetric},
18    units::{Force, ForcePerLength, ForcePerVelocity},
19};
20
21pub type NodalForcesSolid<const D: usize> = TensorRank1Vec<D, Current, Force>;
22pub type NodalStiffnessesSolid<const D: usize> =
23    TensorRank2SparseVec2D<D, Current, Current, ForcePerLength>;
24#[cfg_attr(not(any(feature = "fem", feature = "vem")), allow(dead_code))]
25pub type NodalDampingsSolid<const D: usize> =
26    TensorRank2SparseVec2D<D, Current, Current, ForcePerVelocity>;
27#[cfg_attr(not(any(feature = "fem", feature = "vem")), allow(dead_code))]
28pub type NodalDampingsSolidSymmetric<const D: usize> =
29    TensorRank2SparseVec2DSymmetric<D, Current, Current, ForcePerVelocity>;
30#[cfg_attr(not(any(feature = "fem", feature = "vem")), allow(dead_code))]
31pub type NodalStiffnessesSolidSymmetric<const D: usize> =
32    TensorRank2SparseVec2DSymmetric<D, Current, Current, ForcePerLength>;
33
34pub trait SolidElements {
35    type DeformationGradients;
36    type DeformationGradientRates;
37    fn deformation_gradients(
38        &self,
39        nodal_coordinates: &NodalCoordinates<3>,
40    ) -> Vec<Self::DeformationGradients>;
41    fn deformation_gradient_rates(
42        &self,
43        nodal_coordinates: &NodalCoordinates<3>,
44        nodal_velocities: &NodalVelocities<3>,
45    ) -> Vec<Self::DeformationGradientRates>;
46}