conspire/domain/solid/
mod.rs1pub(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}