1mod block;
4
5pub use block::{
6 ElasticFiniteElementBlock, ElasticHyperviscousFiniteElementBlock, ElementBlock,
7 FiniteElementBlock, FiniteElementBlockMethods, FirstOrderRoot, HyperelasticFiniteElementBlock,
8 HyperviscoelasticFiniteElementBlock, SecondOrderMinimize, SurfaceFiniteElementBlock,
9 ViscoelasticFiniteElementBlock, ZerothOrderRoot,
10 element::{
11 ElasticFiniteElement, FiniteElement, FiniteElementMethods, HyperelasticFiniteElement,
12 HyperviscoelasticFiniteElement, SurfaceFiniteElement, ViscoelasticFiniteElement,
13 composite::tetrahedron::Tetrahedron as CompositeTetrahedron,
14 linear::{
15 tetrahedron::Tetrahedron as LinearTetrahedron, triangle::Triangle as LinearTriangle,
16 },
17 },
18};
19
20use crate::{
21 constitutive::{
22 Constitutive, ConstitutiveError, Parameters,
23 solid::{
24 elastic::Elastic, elastic_hyperviscous::ElasticHyperviscous,
25 hyperelastic::Hyperelastic, hyperviscoelastic::Hyperviscoelastic,
26 viscoelastic::Viscoelastic,
27 },
28 },
29 math::{
30 ContractSecondFourthIndicesWithFirstIndicesOf, Tensor, TensorRank1, TensorRank1List,
31 TensorRank1List2D, TensorRank1Vec, TensorRank1Vec2D, TensorRank2, TensorRank2List,
32 TensorRank2List2D, TensorRank2Vec2D, TensorVec,
33 },
34 mechanics::{
35 Coordinates, CurrentCoordinates, DeformationGradient, DeformationGradientList,
36 DeformationGradientRate, DeformationGradientRateList,
37 FirstPiolaKirchhoffRateTangentStiffnesses, FirstPiolaKirchhoffStresses,
38 FirstPiolaKirchhoffTangentStiffnesses, Forces, ReferenceCoordinates, Scalar, Scalars,
39 Stiffnesses, Vectors, Vectors2D,
40 },
41};
42
43pub type Connectivity<const N: usize> = Vec<[usize; N]>;
44pub type ReferenceNodalCoordinatesBlock = TensorRank1Vec<3, 0>;
45pub type NodalCoordinatesBlock = TensorRank1Vec<3, 1>;
46pub type NodalVelocitiesBlock = TensorRank1Vec<3, 1>;
47pub type NodalForcesBlock = TensorRank1Vec<3, 1>;
48pub type NodalStiffnessesBlock = TensorRank2Vec2D<3, 1, 1>;
49
50pub type NodalCoordinatesHistory = TensorRank1Vec2D<3, 1>;
51pub type NodalVelocitiesHistory = TensorRank1Vec2D<3, 1>;
52
53type Bases<const I: usize, const P: usize> = TensorRank1List2D<3, I, 2, P>;
54type GradientVectors<const G: usize, const N: usize> = Vectors2D<0, N, G>;
55type NodalCoordinates<const D: usize> = CurrentCoordinates<D>;
56type NodalForces<const D: usize> = Forces<D>;
57type NodalStiffnesses<const D: usize> = Stiffnesses<D>;
58type NodalVelocities<const D: usize> = CurrentCoordinates<D>;
59type Normals<const P: usize> = Vectors<1, P>;
60type NormalGradients<const O: usize, const P: usize> = TensorRank2List2D<3, 1, 1, O, P>;
61type NormalRates<const P: usize> = Vectors<1, P>;
62type NormalizedProjectionMatrix<const Q: usize> = TensorRank2<Q, 9, 9>;
63type ParametricGradientOperators<const P: usize> = TensorRank2List<3, 0, 9, P>;
64type ProjectionMatrix<const Q: usize> = TensorRank2<Q, 9, 9>;
65type ReferenceNodalCoordinates<const D: usize> = ReferenceCoordinates<D>;
66type ReferenceNormals<const P: usize> = Vectors<0, P>;
67type ShapeFunctionIntegrals<const P: usize, const Q: usize> = TensorRank1List<Q, 9, P>;
68type ShapeFunctionIntegralsProducts<const P: usize, const Q: usize> = TensorRank2List<Q, 9, 9, P>;
69type ShapeFunctionsAtIntegrationPoints<const G: usize, const Q: usize> = TensorRank1List<Q, 9, G>;
70type StandardGradientOperators<const M: usize, const O: usize, const P: usize> =
71 TensorRank1List2D<M, 9, O, P>;
72type StandardGradientOperatorsTransposed<const M: usize, const O: usize, const P: usize> =
73 TensorRank1List2D<M, 9, P, O>;