Skip to content

Commit 17e0dac

Browse files
committed
Add ElementConnectivity impl for Tet20Connectivity (untested)
1 parent 2beb3e8 commit 17e0dac

1 file changed

Lines changed: 25 additions & 1 deletion

File tree

src/element/tetrahedron.rs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use numeric_literals::replace_float_literals;
22

3-
use crate::connectivity::{Tet10Connectivity, Tet4Connectivity};
3+
use crate::connectivity::{Tet10Connectivity, Tet20Connectivity, Tet4Connectivity};
44
use crate::element::{ElementConnectivity, FiniteElement, FixedNodesReferenceFiniteElement};
55
use crate::nalgebra::{
66
distance, Matrix1x4, Matrix3, Matrix3x4, OMatrix, OPoint, Point3, Scalar, Vector3, U1, U10, U20, U3, U4,
@@ -52,6 +52,30 @@ where
5252
}
5353
}
5454

55+
impl<T> ElementConnectivity<T> for Tet20Connectivity
56+
where
57+
T: Real,
58+
{
59+
type Element = Tet20Element<T>;
60+
type GeometryDim = U3;
61+
type ReferenceDim = U3;
62+
63+
fn element(&self, vertices: &[OPoint<T, Self::GeometryDim>]) -> Option<Self::Element> {
64+
let mut tet20_vertices = [Point3::origin(); 20];
65+
for (i, v) in tet20_vertices.iter_mut().enumerate() {
66+
*v = vertices.get(self.0[i])?.clone();
67+
}
68+
69+
let mut tet4_vertices = [Point3::origin(); 4];
70+
tet4_vertices.copy_from_slice(&tet20_vertices[0..4]);
71+
72+
Some(Tet20Element {
73+
tet4: Tet4Element::from_vertices(tet4_vertices),
74+
vertices: tet20_vertices,
75+
})
76+
}
77+
}
78+
5579
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
5680
pub struct Tet10Element<T>
5781
where

0 commit comments

Comments
 (0)