use super::{Cell, Mesh, Point};
use crate::shapes::GeoKind;
pub struct Samples;
impl Samples {
#[rustfmt::skip]
pub fn lin_cells() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0] }, Point { id: 1, marker: 0, coords: vec![1.2, 1.2] },
Point { id: 2, marker: 0, coords: vec![1.4+0.0, 0.0] }, Point { id: 3, marker: 0, coords: vec![1.4+1.2, 1.2] }, Point { id: 4, marker: 0, coords: vec![1.4+0.8, 0.4] },
Point { id: 5, marker: 0, coords: vec![2.8+0.0, 0.0] }, Point { id: 6, marker: 0, coords: vec![2.8+1.2, 1.2] }, Point { id: 7, marker: 0, coords: vec![2.8+0.4, 0.2] }, Point { id: 8, marker: 0, coords: vec![2.8+0.8, 0.8] },
Point { id: 9, marker: 0, coords: vec![4.2+0.0, 0.0] }, Point { id: 10, marker: 0, coords: vec![4.2+1.2, 1.2] }, Point { id: 11, marker: 0, coords: vec![4.2+0.6, 0.6] }, Point { id: 12, marker: 0, coords: vec![4.2+0.3, 0.2] }, Point { id: 13, marker: 0, coords: vec![4.2+0.9, 1.0] }, ],
cells: vec![
Cell { id: 0, marker: 2, kind: GeoKind::Lin2, points: vec![0, 1] },
Cell { id: 1, marker: 3, kind: GeoKind::Lin3, points: vec![2, 3, 4] },
Cell { id: 2, marker: 4, kind: GeoKind::Lin4, points: vec![5, 6, 7, 8] },
Cell { id: 3, marker: 5, kind: GeoKind::Lin5, points: vec![9, 10, 11, 12, 13] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn lin_cells_3d() -> Mesh {
Mesh {
ndim: 3,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0, 0.0] }, Point { id: 1, marker: 0, coords: vec![1.2, 1.2, 1.2] },
Point { id: 2, marker: 0, coords: vec![1.4+0.0, 0.0, 0.0] }, Point { id: 3, marker: 0, coords: vec![1.4+1.2, 1.2, 1.2] }, Point { id: 4, marker: 0, coords: vec![1.4+0.3, 0.6, 0.6] },
Point { id: 5, marker: 0, coords: vec![2.8+0.0, 0.0, 0.0] }, Point { id: 6, marker: 0, coords: vec![2.8+1.2, 1.2, 1.2] }, Point { id: 7, marker: 0, coords: vec![2.8+0.3, 0.4, 0.4] }, Point { id: 8, marker: 0, coords: vec![2.8+0.6, 0.8, 0.8] },
Point { id: 9, marker: 0, coords: vec![4.2+0.0, 0.0, 0.0] }, Point { id: 10, marker: 0, coords: vec![4.2+1.2, 1.2, 1.2] }, Point { id: 11, marker: 0, coords: vec![4.2+0.3, 0.6, 0.6] }, Point { id: 12, marker: 0, coords: vec![4.2+0.0, 0.3, 0.3] }, Point { id: 13, marker: 0, coords: vec![4.2+0.6, 0.9, 0.9] }, ],
cells: vec![
Cell { id: 0, marker: 2, kind: GeoKind::Lin2, points: vec![0, 1] },
Cell { id: 1, marker: 3, kind: GeoKind::Lin3, points: vec![2, 3, 4] },
Cell { id: 2, marker: 4, kind: GeoKind::Lin4, points: vec![5, 6, 7, 8] },
Cell { id: 3, marker: 5, kind: GeoKind::Lin5, points: vec![9, 10, 11, 12, 13] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn tri_cells() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0 ] }, Point { id: 1, marker: 0, coords: vec![1.0, 0.0 ] }, Point { id: 2, marker: 0, coords: vec![0.5, 0.85] },
Point { id: 3, marker: 0, coords: vec![1.2+0.0, 0.0 ] }, Point { id: 4, marker: 0, coords: vec![1.2+1.0, 0.0 ] }, Point { id: 5, marker: 0, coords: vec![1.2+0.5, 0.85 ] }, Point { id: 6, marker: 0, coords: vec![1.2+0.5, 0.0-0.05] }, Point { id: 7, marker: 0, coords: vec![1.2+0.75+0.05, 0.425 ] }, Point { id: 8, marker: 0, coords: vec![1.2+0.25-0.05, 0.425 ] },
Point { id: 9, marker: 0, coords: vec![0.0, 1.2+0.0 ] }, Point { id: 10, marker: 0, coords: vec![1.0, 1.2+0.0 ] }, Point { id: 11, marker: 0, coords: vec![0.5, 1.2+0.85 ] }, Point { id: 12, marker: 0, coords: vec![0.333, 1.2+0.0 +0.05] }, Point { id: 13, marker: 0, coords: vec![0.833-0.05, 1.2+0.283 ] }, Point { id: 14, marker: 0, coords: vec![0.333+0.05, 1.2+0.567 ] }, Point { id: 15, marker: 0, coords: vec![0.667-0.05, 1.2+0.00 -0.05] }, Point { id: 16, marker: 0, coords: vec![0.667+0.05, 1.2+0.567 ] }, Point { id: 17, marker: 0, coords: vec![0.167, 1.2+0.283 ] }, Point { id: 18, marker: 0, coords: vec![0.5, 1.2+0.283 ] },
Point { id: 19, marker: 0, coords: vec![1.2+0.0, 1.2+0.0 ] }, Point { id: 20, marker: 0, coords: vec![1.2+1.0, 1.2+0.0 ] }, Point { id: 21, marker: 0, coords: vec![1.2+0.5, 1.2+0.85 ] }, Point { id: 22, marker: 0, coords: vec![1.2+0.5, 1.2+0.0 ] }, Point { id: 23, marker: 0, coords: vec![1.2+0.75, 1.2+0.425 ] }, Point { id: 24, marker: 0, coords: vec![1.2+0.25, 1.2+0.425 ] }, Point { id: 25, marker: 0, coords: vec![1.2+0.25, 1.2+0.0 -0.05] }, Point { id: 26, marker: 0, coords: vec![1.2+0.75, 1.2+0.0 +0.05] }, Point { id: 27, marker: 0, coords: vec![1.2+0.875+0.05, 1.2+0.2125 ] }, Point { id: 28, marker: 0, coords: vec![1.2+0.625-0.05, 1.2+0.6375 ] }, Point { id: 29, marker: 0, coords: vec![1.2+0.375-0.05, 1.2+0.6375 ] }, Point { id: 30, marker: 0, coords: vec![1.2+0.125+0.05, 1.2+0.2125 ] }, Point { id: 31, marker: 0, coords: vec![1.2+0.375, 1.2+0.2125 ] }, Point { id: 32, marker: 0, coords: vec![1.2+0.625, 1.2+0.2125 ] }, Point { id: 33, marker: 0, coords: vec![1.2+0.5, 1.2+0.425 ] }, ],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Tri3, points: vec![0, 1, 2] },
Cell { id: 1, marker: 1, kind: GeoKind::Tri6, points: vec![3, 4, 5, 6, 7, 8] },
Cell { id: 2, marker: 1, kind: GeoKind::Tri10, points: vec![9, 10, 11, 12, 13, 14, 15, 16, 17, 18] },
Cell { id: 3, marker: 1, kind: GeoKind::Tri15, points: vec![19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn qua_cells() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0] }, Point { id: 1, marker: 0, coords: vec![0.8, 0.0] }, Point { id: 2, marker: 0, coords: vec![0.8, 0.8] }, Point { id: 3, marker: 0, coords: vec![0.0, 0.8] },
Point { id: 4, marker: 0, coords: vec![1.1+0.0, 0.0 ] }, Point { id: 5, marker: 0, coords: vec![1.1+0.8, 0.0 ] }, Point { id: 6, marker: 0, coords: vec![1.1+0.8, 0.8 ] }, Point { id: 7, marker: 0, coords: vec![1.1+0.0, 0.8 ] }, Point { id: 8, marker: 0, coords: vec![1.1+0.4, 0.0+0.05] }, Point { id: 9, marker: 0, coords: vec![1.1+0.8-0.05, 0.4 ] }, Point { id: 10, marker: 0, coords: vec![1.1+0.4, 0.8-0.05] }, Point { id: 11, marker: 0, coords: vec![1.1+0.0-0.05, 0.4 ] },
Point { id: 12, marker: 0, coords: vec![2.2+0.0, 0.0 ] }, Point { id: 13, marker: 0, coords: vec![2.2+0.8, 0.0 ] }, Point { id: 14, marker: 0, coords: vec![2.2+0.8, 0.8 ] }, Point { id: 15, marker: 0, coords: vec![2.2+0.0, 0.8 ] }, Point { id: 16, marker: 0, coords: vec![2.2+0.4, 0.0+0.05] }, Point { id: 17, marker: 0, coords: vec![2.2+0.8-0.05, 0.4 ] }, Point { id: 18, marker: 0, coords: vec![2.2+0.4, 0.8-0.05] }, Point { id: 19, marker: 0, coords: vec![2.2+0.0-0.05, 0.4 ] }, Point { id: 20, marker: 0, coords: vec![2.2+0.4, 0.4 ] },
Point { id: 21, marker: 0, coords: vec![0.0, 1.2+0.0 ] }, Point { id: 22, marker: 0, coords: vec![0.8, 1.2+0.0 ] }, Point { id: 23, marker: 0, coords: vec![0.8, 1.2+0.8 ] }, Point { id: 24, marker: 0, coords: vec![0.0, 1.2+0.8 ] }, Point { id: 25, marker: 0, coords: vec![0.267, 1.2+0.0+0.03] }, Point { id: 26, marker: 0, coords: vec![0.8-0.03, 1.2+0.267, ] }, Point { id: 27, marker: 0, coords: vec![0.533, 1.2+0.8-0.03] }, Point { id: 28, marker: 0, coords: vec![0.0+0.03, 1.2+0.533, ] }, Point { id: 29, marker: 0, coords: vec![0.533, 1.2+0.0-0.03] }, Point { id: 30, marker: 0, coords: vec![0.8+0.03, 1.2+0.533, ] }, Point { id: 31, marker: 0, coords: vec![0.267, 1.2+0.8+0.03] }, Point { id: 32, marker: 0, coords: vec![0.0-0.03, 1.2+0.267, ] },
Point { id: 33, marker: 0, coords: vec![1.1+0.0, 1.2+0.0 ] }, Point { id: 34, marker: 0, coords: vec![1.1+0.8, 1.2+0.0 ] }, Point { id: 35, marker: 0, coords: vec![1.1+0.8, 1.2+0.8 ] }, Point { id: 36, marker: 0, coords: vec![1.1+0.0, 1.2+0.8 ] }, Point { id: 37, marker: 0, coords: vec![1.1+0.267, 1.2+0.0+0.03] }, Point { id: 38, marker: 0, coords: vec![1.1+0.8-0.03, 1.2+0.267 ] }, Point { id: 39, marker: 0, coords: vec![1.1+0.533, 1.2+0.8-0.03] }, Point { id: 40, marker: 0, coords: vec![1.1+0.0+0.03, 1.2+0.533 ] }, Point { id: 41, marker: 0, coords: vec![1.1+0.533, 1.2+0.0-0.03] }, Point { id: 42, marker: 0, coords: vec![1.1+0.8+0.03, 1.2+0.533 ] }, Point { id: 43, marker: 0, coords: vec![1.1+0.267, 1.2+0.8+0.03] }, Point { id: 44, marker: 0, coords: vec![1.1+0.0-0.03, 1.2+0.267 ] }, Point { id: 45, marker: 0, coords: vec![1.1+0.267, 1.2+0.267 ] }, Point { id: 46, marker: 0, coords: vec![1.1+0.533, 1.2+0.267 ] }, Point { id: 47, marker: 0, coords: vec![1.1+0.533, 1.2+0.533 ] }, Point { id: 48, marker: 0, coords: vec![1.1+0.267, 1.2+0.533 ] },
Point { id: 49, marker: 0, coords: vec![2.2+0.0, 1.2+0.0 ] }, Point { id: 50, marker: 0, coords: vec![2.2+0.8, 1.2+0.0 ] }, Point { id: 51, marker: 0, coords: vec![2.2+0.8, 1.2+0.8 ] }, Point { id: 52, marker: 0, coords: vec![2.2+0.0, 1.2+0.8 ] }, Point { id: 53, marker: 0, coords: vec![2.2+0.4, 1.2+0.0 ] }, Point { id: 54, marker: 0, coords: vec![2.2+0.8, 1.2+0.4 ] }, Point { id: 55, marker: 0, coords: vec![2.2+0.4, 1.2+0.8 ] }, Point { id: 56, marker: 0, coords: vec![2.2+0.0, 1.2+0.4 ] }, Point { id: 57, marker: 0, coords: vec![2.2+0.4, 1.2+0.4 ] }, Point { id: 58, marker: 0, coords: vec![2.2+0.2, 1.2+0.0+0.03] }, Point { id: 59, marker: 0, coords: vec![2.2+0.6, 1.2+0.0-0.03] }, Point { id: 60, marker: 0, coords: vec![2.2+0.8-0.03, 1.2+0.2 ] }, Point { id: 61, marker: 0, coords: vec![2.2+0.8+0.03, 1.2+0.6 ] }, Point { id: 62, marker: 0, coords: vec![2.2+0.6, 1.2+0.8-0.03] }, Point { id: 63, marker: 0, coords: vec![2.2+0.2, 1.2+0.8+0.03] }, Point { id: 64, marker: 0, coords: vec![2.2+0.0+0.03, 1.2+0.6 ] }, Point { id: 65, marker: 0, coords: vec![2.2+0.0-0.03, 1.2+0.2 ] }, ],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Qua4, points: vec![0, 1, 2, 3] },
Cell { id: 1, marker: 1, kind: GeoKind::Qua8, points: vec![4, 5, 6, 7, 8, 9, 10, 11] },
Cell { id: 2, marker: 1, kind: GeoKind::Qua9, points: vec![12, 13, 14, 15, 16, 17, 18, 19, 20] },
Cell { id: 3, marker: 1, kind: GeoKind::Qua12, points: vec![21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32] },
Cell { id: 4, marker: 1, kind: GeoKind::Qua16, points: vec![33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48] },
Cell { id: 5, marker: 1, kind: GeoKind::Qua17, points: vec![49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn tet_cells() -> Mesh {
let d = 0.1;
Mesh {
ndim: 3,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0, 0.0] }, Point { id: 1, marker: 0, coords: vec![1.0, 0.0, 0.0] }, Point { id: 2, marker: 0, coords: vec![0.5, 1.0, 0.0] }, Point { id: 3, marker: 0, coords: vec![0.5, 0.5, 1.0] },
Point { id: 4, marker: 0, coords: vec![1.2+0.0, 0.0, 0.0] }, Point { id: 5, marker: 0, coords: vec![1.2+1.0, 0.0, 0.0] }, Point { id: 6, marker: 0, coords: vec![1.2+0.5, 1.0, 0.0] }, Point { id: 7, marker: 0, coords: vec![1.2+0.5, 0.5, 1.0] }, Point { id: 8, marker: 0, coords: vec![1.2+0.5, 0.0, 0.0] }, Point { id: 9, marker: 0, coords: vec![1.2+0.75, 0.5, 0.0] }, Point { id: 10, marker: 0, coords: vec![1.2+0.25+d, 0.5, 0.0] }, Point { id: 11, marker: 0, coords: vec![1.2+0.25+d, 0.25, 0.5] }, Point { id: 12, marker: 0, coords: vec![1.2+0.75, 0.25, 0.5] }, Point { id: 13, marker: 0, coords: vec![1.2+0.5, 0.75, 0.5] },
Point { id: 14, marker: 0, coords: vec![0.5+0.0, 1.2+0.0, 0.8+0.0] }, Point { id: 15, marker: 0, coords: vec![0.5+1.2, 1.2+0.0, 0.8+0.0] }, Point { id: 16, marker: 0, coords: vec![0.5+0.6, 1.2+1.2, 0.8+0.0] }, Point { id: 17, marker: 0, coords: vec![0.5+0.6, 1.2+0.6, 0.8+1.2] }, Point { id: 18, marker: 0, coords: vec![0.5+0.4, 1.2+0.0, 0.8+0.0] }, Point { id: 19, marker: 0, coords: vec![0.5+0.8, 1.2+0.0, 0.8+0.0] }, Point { id: 20, marker: 0, coords: vec![0.5+0.2+d, 1.2+0.4, 0.8+0.0] }, Point { id: 21, marker: 0, coords: vec![0.5+0.4+d, 1.2+0.8, 0.8+0.0] }, Point { id: 22, marker: 0, coords: vec![0.5+0.2+d, 1.2+0.2, 0.8+0.4] }, Point { id: 23, marker: 0, coords: vec![0.5+0.4+d, 1.2+0.4, 0.8+0.8] }, Point { id: 24, marker: 0, coords: vec![0.5+0.6, 1.2+1.0, 0.8+0.4] }, Point { id: 25, marker: 0, coords: vec![0.5+0.6, 1.2+0.8, 0.8+0.8] }, Point { id: 26, marker: 0, coords: vec![0.5+1.0, 1.2+0.2, 0.8+0.4] }, Point { id: 27, marker: 0, coords: vec![0.5+0.8, 1.2+0.4, 0.8+0.8] }, Point { id: 28, marker: 0, coords: vec![0.5+1.0, 1.2+0.4, 0.8+0.0] }, Point { id: 29, marker: 0, coords: vec![0.5+0.8, 1.2+0.8, 0.8+0.0] }, Point { id: 30, marker: 0, coords: vec![0.5+0.4, 1.2+0.6, 0.8+0.4] }, Point { id: 31, marker: 0, coords: vec![0.5+0.6, 1.2+0.2, 0.8+0.4] }, Point { id: 32, marker: 0, coords: vec![0.5+0.6, 1.2+0.4, 0.8+0.0] }, Point { id: 33, marker: 0, coords: vec![0.5+0.8, 1.2+0.6, 0.8+0.4] }, ],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Tet4, points: vec![0, 1, 2, 3] },
Cell { id: 1, marker: 1, kind: GeoKind::Tet10, points: vec![4, 5, 6, 7, 8, 9, 10, 11, 12, 13] },
Cell { id: 2, marker: 1, kind: GeoKind::Tet20, points: vec![14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn hex_cells() -> Mesh {
let d = 0.1;
Mesh {
ndim: 3,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0, 0.0] }, Point { id: 1, marker: 0, coords: vec![1.0, 0.0, 0.0] }, Point { id: 2, marker: 0, coords: vec![1.0, 1.0, 0.0] }, Point { id: 3, marker: 0, coords: vec![0.0, 1.0, 0.0] }, Point { id: 4, marker: 0, coords: vec![0.0, 0.0, 1.0] }, Point { id: 5, marker: 0, coords: vec![1.0, 0.0, 1.0] }, Point { id: 6, marker: 0, coords: vec![1.0, 1.0, 1.0] }, Point { id: 7, marker: 0, coords: vec![0.0, 1.0, 1.0] },
Point { id: 8, marker: 0, coords: vec![1.8+0.0, 0.0, 0.0] }, Point { id: 9, marker: 0, coords: vec![1.8+1.0, 0.0, 0.0] }, Point { id: 10, marker: 0, coords: vec![1.8+1.0, 1.0, 0.0] }, Point { id: 11, marker: 0, coords: vec![1.8+0.0, 1.0, 0.0] }, Point { id: 12, marker: 0, coords: vec![1.8+0.0, 0.0, 1.0] }, Point { id: 13, marker: 0, coords: vec![1.8+1.0, 0.0, 1.0] }, Point { id: 14, marker: 0, coords: vec![1.8+1.0, 1.0, 1.0] }, Point { id: 15, marker: 0, coords: vec![1.8+0.0, 1.0, 1.0] }, Point { id: 16, marker: 0, coords: vec![1.8+0.5, 0.0-d, 0.0] }, Point { id: 17, marker: 0, coords: vec![1.8+1.0, 0.5, 0.0] }, Point { id: 18, marker: 0, coords: vec![1.8+0.5, 1.0+d, 0.0] }, Point { id: 19, marker: 0, coords: vec![1.8+0.0, 0.5, 0.0] }, Point { id: 20, marker: 0, coords: vec![1.8+0.5, 0.0-d, 1.0] }, Point { id: 21, marker: 0, coords: vec![1.8+1.0, 0.5, 1.0] }, Point { id: 22, marker: 0, coords: vec![1.8+0.5, 1.0+d, 1.0] }, Point { id: 23, marker: 0, coords: vec![1.8+0.0, 0.5, 1.0] }, Point { id: 24, marker: 0, coords: vec![1.8+0.0, 0.0, 0.5] }, Point { id: 25, marker: 0, coords: vec![1.8+1.0, 0.0, 0.5] }, Point { id: 26, marker: 0, coords: vec![1.8+1.0, 1.0, 0.5] }, Point { id: 27, marker: 0, coords: vec![1.8+0.0, 1.0, 0.5] },
Point { id: 28, marker: 0, coords: vec![0.5+0.0, 1.3+0.0, 1.3+0.0] }, Point { id: 29, marker: 0, coords: vec![0.5+1.2, 1.3+0.0, 1.3+0.0] }, Point { id: 30, marker: 0, coords: vec![0.5+1.2, 1.3+1.2, 1.3+0.0] }, Point { id: 31, marker: 0, coords: vec![0.5+0.0, 1.3+1.2, 1.3+0.0] }, Point { id: 32, marker: 0, coords: vec![0.5+0.0, 1.3+0.0, 1.3+1.2] }, Point { id: 33, marker: 0, coords: vec![0.5+1.2, 1.3+0.0, 1.3+1.2] }, Point { id: 34, marker: 0, coords: vec![0.5+1.2, 1.3+1.2, 1.3+1.2] }, Point { id: 35, marker: 0, coords: vec![0.5+0.0, 1.3+1.2, 1.3+1.2] }, Point { id: 36, marker: 0, coords: vec![0.5+0.4, 1.3+0.0-d, 1.3+0.0] }, Point { id: 37, marker: 0, coords: vec![0.5+0.8, 1.3+0.0-d, 1.3+0.0] }, Point { id: 38, marker: 0, coords: vec![0.5+1.2, 1.3+0.4, 1.3+0.0] }, Point { id: 39, marker: 0, coords: vec![0.5+1.2, 1.3+0.8, 1.3+0.0] }, Point { id: 40, marker: 0, coords: vec![0.5+0.8, 1.3+1.2+d, 1.3+0.0] }, Point { id: 41, marker: 0, coords: vec![0.5+0.4, 1.3+1.2+d, 1.3+0.0] }, Point { id: 42, marker: 0, coords: vec![0.5+0.0, 1.3+0.8, 1.3+0.0] }, Point { id: 43, marker: 0, coords: vec![0.5+0.0, 1.3+0.4, 1.3+0.0] }, Point { id: 44, marker: 0, coords: vec![0.5+0.4, 1.3+0.0-d, 1.3+1.2] }, Point { id: 45, marker: 0, coords: vec![0.5+0.8, 1.3+0.0-d, 1.3+1.2] }, Point { id: 46, marker: 0, coords: vec![0.5+1.2, 1.3+0.4, 1.3+1.2] }, Point { id: 47, marker: 0, coords: vec![0.5+1.2, 1.3+0.8, 1.3+1.2] }, Point { id: 48, marker: 0, coords: vec![0.5+0.8, 1.3+1.2+d, 1.3+1.2] }, Point { id: 49, marker: 0, coords: vec![0.5+0.4, 1.3+1.2+d, 1.3+1.2] }, Point { id: 50, marker: 0, coords: vec![0.5+0.0, 1.3+0.8, 1.3+1.2] }, Point { id: 51, marker: 0, coords: vec![0.5+0.0, 1.3+0.4, 1.3+1.2] }, Point { id: 52, marker: 0, coords: vec![0.5+0.0, 1.3+0.0, 1.3+0.4] }, Point { id: 53, marker: 0, coords: vec![0.5+0.0, 1.3+0.0, 1.3+0.8] }, Point { id: 54, marker: 0, coords: vec![0.5+1.2, 1.3+0.0, 1.3+0.4] }, Point { id: 55, marker: 0, coords: vec![0.5+1.2, 1.3+0.0, 1.3+0.8] }, Point { id: 56, marker: 0, coords: vec![0.5+1.2, 1.3+1.2, 1.3+0.4] }, Point { id: 57, marker: 0, coords: vec![0.5+1.2, 1.3+1.2, 1.3+0.8] }, Point { id: 58, marker: 0, coords: vec![0.5+0.0, 1.3+1.2, 1.3+0.4] }, Point { id: 59, marker: 0, coords: vec![0.5+0.0, 1.3+1.2, 1.3+0.8] }, ],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Hex8, points: vec![0, 1, 2, 3, 4, 5, 6, 7] },
Cell { id: 1, marker: 1, kind: GeoKind::Hex20, points: vec![8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27] },
Cell { id: 2, marker: 1, kind: GeoKind::Hex32, points: vec![28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn one_lin2() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0] },
Point { id: 1, marker: 0, coords: vec![1.0, 1.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Lin2, points: vec![0, 1] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn graph_8_edges() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 0, coords: vec![314.0, 500.0 - 287.0] },
Point { id: 1, marker: 0, coords: vec![133.0, 500.0 - 250.0] },
Point { id: 2, marker: 0, coords: vec![205.0, 500.0 - 232.0] },
Point { id: 3, marker: 0, coords: vec![332.0, 500.0 - 136.0] },
Point { id: 4, marker: 0, coords: vec![280.0, 500.0 - 212.0] },
Point { id: 5, marker: 0, coords: vec![ 79.0, 500.0 - 230.0] },
Point { id: 6, marker: 0, coords: vec![375.0, 500.0 - 74.0] },
Point { id: 7, marker: 0, coords: vec![ 86.0, 500.0 - 294.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Lin2, points: vec![0, 4] },
Cell { id: 1, marker: 1, kind: GeoKind::Lin2, points: vec![1, 2] },
Cell { id: 2, marker: 1, kind: GeoKind::Lin2, points: vec![1, 5] },
Cell { id: 3, marker: 1, kind: GeoKind::Lin2, points: vec![1, 7] },
Cell { id: 4, marker: 1, kind: GeoKind::Lin2, points: vec![2, 4] },
Cell { id: 5, marker: 1, kind: GeoKind::Lin2, points: vec![3, 6] },
Cell { id: 6, marker: 1, kind: GeoKind::Lin2, points: vec![5, 7] },
Cell { id: 7, marker: 1, kind: GeoKind::Lin2, points: vec![3, 4] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn graph_12_edges() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 0, coords: vec![1.0, 0.0] },
Point { id: 1, marker: 0, coords: vec![2.0, 1.0] },
Point { id: 2, marker: 0, coords: vec![2.0, 0.0] },
Point { id: 3, marker: 0, coords: vec![0.0, 1.0] },
Point { id: 4, marker: 0, coords: vec![1.0, 2.0] },
Point { id: 5, marker: 0, coords: vec![3.0, 2.0] },
Point { id: 6, marker: 0, coords: vec![2.0, 2.0] },
Point { id: 7, marker: 0, coords: vec![1.0, 1.0] },
Point { id: 8, marker: 0, coords: vec![0.0, 0.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Lin2, points: vec![8, 0] },
Cell { id: 1, marker: 1, kind: GeoKind::Lin2, points: vec![0, 2] },
Cell { id: 2, marker: 1, kind: GeoKind::Lin2, points: vec![3, 7] },
Cell { id: 3, marker: 1, kind: GeoKind::Lin2, points: vec![7, 1] },
Cell { id: 4, marker: 1, kind: GeoKind::Lin2, points: vec![4, 6] },
Cell { id: 5, marker: 1, kind: GeoKind::Lin2, points: vec![6, 5] },
Cell { id: 6, marker: 1, kind: GeoKind::Lin2, points: vec![8, 3] },
Cell { id: 7, marker: 1, kind: GeoKind::Lin2, points: vec![0, 7] },
Cell { id: 8, marker: 1, kind: GeoKind::Lin2, points: vec![2, 1] },
Cell { id: 9, marker: 1, kind: GeoKind::Lin2, points: vec![7, 4] },
Cell { id: 10, marker: 1, kind: GeoKind::Lin2, points: vec![1, 6] },
Cell { id: 11, marker: 1, kind: GeoKind::Lin2, points: vec![1, 5] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn one_tri3() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0 ] },
Point { id: 1, marker: 0, coords: vec![1.0, 0.0 ] },
Point { id: 2, marker: 0, coords: vec![0.5, 0.85] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Tri3, points: vec![0, 1, 2] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn one_tri6() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0 ] },
Point { id: 1, marker: 0, coords: vec![1.0, 0.0 ] },
Point { id: 2, marker: 0, coords: vec![0.5, 0.85 ] },
Point { id: 3, marker: 0, coords: vec![0.5, 0.0 ] },
Point { id: 4, marker: 0, coords: vec![0.75, 0.425] },
Point { id: 5, marker: 0, coords: vec![0.25, 0.425] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Tri6, points: vec![0, 1, 2, 3, 4, 5] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn one_qua4() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0] },
Point { id: 1, marker: 0, coords: vec![1.0, 0.0] },
Point { id: 2, marker: 0, coords: vec![1.0, 1.0] },
Point { id: 3, marker: 0, coords: vec![0.0, 1.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Qua4, points: vec![0, 1, 2, 3] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn two_tri3() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0] },
Point { id: 1, marker: 0, coords: vec![1.0, 0.0] },
Point { id: 2, marker: 0, coords: vec![1.0, 1.0] },
Point { id: 3, marker: 0, coords: vec![0.0, 1.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Tri3, points: vec![0, 1, 3] },
Cell { id: 1, marker: 1, kind: GeoKind::Tri3, points: vec![2, 3, 1] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn three_tri3() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.2] },
Point { id: 1, marker: 0, coords: vec![1.2, 0.0] },
Point { id: 2, marker: 0, coords: vec![2.2, 0.1] },
Point { id: 3, marker: 0, coords: vec![1.8, 1.0] },
Point { id: 4, marker: 0, coords: vec![0.5, 1.2] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Tri3, points: vec![0, 1, 4] },
Cell { id: 1, marker: 1, kind: GeoKind::Tri3, points: vec![1, 3, 4] },
Cell { id: 2, marker: 1, kind: GeoKind::Tri3, points: vec![1, 2, 3] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn three_tri3_arrow() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: -10, coords: vec![0.0, 0.0] },
Point { id: 1, marker: -20, coords: vec![2.0, 0.0] },
Point { id: 2, marker: -30, coords: vec![1.0, 1.0] },
Point { id: 3, marker: -40, coords: vec![1.0, 2.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Tri3, points: vec![0, 1, 2] },
Cell { id: 1, marker: 2, kind: GeoKind::Tri3, points: vec![2, 1, 3] },
Cell { id: 2, marker: 2, kind: GeoKind::Tri3, points: vec![0, 2, 3] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn three_tri6_arrow() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: -1, coords: vec![0.0, 0.0] },
Point { id: 1, marker: -2, coords: vec![2.0, 0.0] },
Point { id: 2, marker: -3, coords: vec![1.0, 1.0] },
Point { id: 3, marker: -10, coords: vec![1.0, 0.0] },
Point { id: 4, marker: -5, coords: vec![1.5, 0.5] },
Point { id: 5, marker: -6, coords: vec![0.5, 0.5] },
Point { id: 6, marker: -7, coords: vec![1.0, 2.0] },
Point { id: 7, marker: -20, coords: vec![1.5, 1.0] },
Point { id: 8, marker: 0, coords: vec![1.0, 1.5] },
Point { id: 9, marker: -30, coords: vec![0.5, 1.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Tri6, points: vec![0, 1, 2, 3, 4, 5] },
Cell { id: 1, marker: 2, kind: GeoKind::Tri6, points: vec![2, 1, 6, 4, 7, 8] },
Cell { id: 2, marker: 2, kind: GeoKind::Tri6, points: vec![0, 2, 6, 5, 8, 9] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn four_tri3() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: -1, coords: vec![0.0, 0.0] },
Point { id: 1, marker: 0, coords: vec![1.0, 1.0] },
Point { id: 2, marker: -3, coords: vec![2.0, 2.0] },
Point { id: 3, marker: -4, coords: vec![0.0, 2.0] },
Point { id: 4, marker: -5, coords: vec![2.0, 0.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Tri3, points: vec![1, 0, 4] },
Cell { id: 1, marker: 1, kind: GeoKind::Tri3, points: vec![1, 2, 3] },
Cell { id: 2, marker: 1, kind: GeoKind::Tri3, points: vec![1, 4, 2] },
Cell { id: 3, marker: 1, kind: GeoKind::Tri3, points: vec![1, 3, 0] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn two_tri3_one_qua4() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 1, coords: vec![0.0, 0.0] },
Point { id: 1, marker: 1, coords: vec![1.0, 0.0] },
Point { id: 2, marker: 2, coords: vec![1.0, 1.0] },
Point { id: 3, marker: 2, coords: vec![0.0, 1.0] },
Point { id: 4, marker: 1, coords: vec![2.0, 0.0] },
Point { id: 5, marker: 2, coords: vec![2.0, 1.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Tri3, points: vec![0, 1, 3] },
Cell { id: 1, marker: 1, kind: GeoKind::Tri3, points: vec![2, 3, 1] },
Cell { id: 2, marker: 2, kind: GeoKind::Qua4, points: vec![1, 4, 5, 2] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn tri3_qua4_lin2() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.5, 0.0 ] },
Point { id: 1, marker: 0, coords: vec![0.0, 0.85] },
Point { id: 2, marker: 0, coords: vec![0.1, 1.7 ] },
Point { id: 3, marker: 0, coords: vec![1.1, 1.6 ] },
Point { id: 4, marker: 0, coords: vec![1.0, 0.75] },
Point { id: 5, marker: 0, coords: vec![1.5, 1.8 ] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Tri3, points: vec![0, 4, 1] },
Cell { id: 1, marker: 1, kind: GeoKind::Qua4, points: vec![1, 4, 3, 2] },
Cell { id: 2, marker: 1, kind: GeoKind::Lin2, points: vec![3, 5] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn one_qua8() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0] },
Point { id: 1, marker: 0, coords: vec![1.0, 0.0] },
Point { id: 2, marker: 0, coords: vec![1.0, 1.0] },
Point { id: 3, marker: 0, coords: vec![0.0, 1.0] },
Point { id: 4, marker: 0, coords: vec![0.5, 0.0] },
Point { id: 5, marker: 0, coords: vec![1.0, 0.5] },
Point { id: 6, marker: 0, coords: vec![0.5, 1.0] },
Point { id: 7, marker: 0, coords: vec![0.0, 0.5] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Qua8, points: vec![0, 1, 2, 3, 4, 5, 6, 7] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn two_qua4() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: -1, coords: vec![0.0, 0.0] },
Point { id: 1, marker: -2, coords: vec![1.0, 0.0] },
Point { id: 2, marker: -3, coords: vec![1.0, 1.0] },
Point { id: 3, marker: -4, coords: vec![0.0, 1.0] },
Point { id: 4, marker: -5, coords: vec![2.0, 0.0] },
Point { id: 5, marker: -6, coords: vec![2.0, 1.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Qua4, points: vec![0, 1, 2, 3] },
Cell { id: 1, marker: 2, kind: GeoKind::Qua4, points: vec![1, 4, 5, 2] },
],
marked_edges: vec![
(-100, 3, 2),
(-200, 2, 5),
(-300, 5, 4), (-300, 3, 0),
(-400, 0, 1), (-400, 1, 4),
],
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn qua8_tri6_lin2() -> Mesh {
let h = 0.866; let m = h / 2.0;
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: -100, coords: vec![0.0, 0.0 ] },
Point { id: 1, marker: 0, coords: vec![0.5, 0.0 ] },
Point { id: 2, marker: -200, coords: vec![1.0, 0.0 ] },
Point { id: 3, marker: 0, coords: vec![1.0+m, 0.25] },
Point { id: 4, marker: -300, coords: vec![1.0+h, 0.5 ] },
Point { id: 5, marker: 0, coords: vec![1.0+m, 0.75] },
Point { id: 6, marker: -400, coords: vec![1.0, 1.0 ] },
Point { id: 7, marker: 0, coords: vec![0.5, 1.0 ] },
Point { id: 8, marker: -500, coords: vec![0.0, 1.0 ] },
Point { id: 9, marker: 0, coords: vec![0.0, 0.5 ] },
Point { id: 10, marker: 0, coords: vec![1.0, 0.5 ] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Qua8, points: vec![0, 2, 6, 8, 1, 10, 7, 9] },
Cell { id: 1, marker: 2, kind: GeoKind::Tri6, points: vec![2, 4, 6, 3, 5, 10] },
Cell { id: 2, marker: 3, kind: GeoKind::Lin2, points: vec![2, 10] },
Cell { id: 3, marker: 3, kind: GeoKind::Lin2, points: vec![10, 6] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn qua8_tri6_lin2_three_dimensional() -> Mesh {
let h = 0.866; let m = h / 2.0;
Mesh {
ndim: 3,
points: vec![
Point { id: 0, marker: -100, coords: vec![0.0, 0.0 , 0.5] },
Point { id: 1, marker: 0, coords: vec![0.5, 0.0 , 0.2] },
Point { id: 2, marker: -200, coords: vec![1.0, 0.0 , 0.4] },
Point { id: 3, marker: 0, coords: vec![1.0+m, 0.25, 1.0] },
Point { id: 4, marker: -300, coords: vec![1.0+h, 0.5 , 2.0] },
Point { id: 5, marker: 0, coords: vec![1.0+m, 0.75, 1.0] },
Point { id: 6, marker: -400, coords: vec![1.0, 1.0 , 0.4] },
Point { id: 7, marker: 0, coords: vec![0.5, 1.0 , 0.2] },
Point { id: 8, marker: -500, coords: vec![0.0, 1.0 , 0.5] },
Point { id: 9, marker: 0, coords: vec![0.0, 0.5 , 0.5] },
Point { id: 10, marker: 0, coords: vec![1.0, 0.5 , 0.4] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Qua8, points: vec![0, 2, 6, 8, 1, 10, 7, 9] },
Cell { id: 1, marker: 2, kind: GeoKind::Tri6, points: vec![2, 4, 6, 3, 5, 10] },
Cell { id: 2, marker: 3, kind: GeoKind::Lin2, points: vec![2, 10] },
Cell { id: 3, marker: 3, kind: GeoKind::Lin2, points: vec![10, 6] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn one_tet4() -> Mesh {
Mesh {
ndim: 3,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0, 0.0] },
Point { id: 1, marker: 0, coords: vec![1.0, 0.0, 0.0] },
Point { id: 2, marker: 0, coords: vec![0.0, 1.0, 0.0] },
Point { id: 3, marker: 0, coords: vec![0.0, 0.0, 1.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Tet4, points: vec![0, 1, 2, 3] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn one_tet10(d: f64) -> Mesh {
Mesh {
ndim: 3,
points: vec![
Point { id: 0, marker: -1, coords: vec![0.0 , 0.0 , 0.0] },
Point { id: 1, marker: -1, coords: vec![1.0 , 0.0 , 0.0] },
Point { id: 2, marker: -1, coords: vec![0.0 , 1.0 , 0.0] },
Point { id: 3, marker: -1, coords: vec![0.0 , 0.0 , 1.0] },
Point { id: 4, marker: -2, coords: vec![0.5+d, 0.0 , 0.0] },
Point { id: 5, marker: -2, coords: vec![0.5-d, 0.5-d, 0.0] },
Point { id: 6, marker: -2, coords: vec![0.0+d, 0.5 , 0.0] },
Point { id: 7, marker: -2, coords: vec![0.0+d, 0.0+d, 0.5] },
Point { id: 8, marker: -2, coords: vec![0.5 , 0.0 , 0.5] },
Point { id: 9, marker: -2, coords: vec![0.0 , 0.5 , 0.5] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Tet10, points: vec![0,1,2,3,4,5,6,7,8,9] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn one_hex8() -> Mesh {
Mesh {
ndim: 3,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0, 0.0] },
Point { id: 1, marker: 0, coords: vec![1.0, 0.0, 0.0] },
Point { id: 2, marker: 0, coords: vec![1.0, 1.0, 0.0] },
Point { id: 3, marker: 0, coords: vec![0.0, 1.0, 0.0] },
Point { id: 4, marker: 0, coords: vec![0.0, 0.0, 1.0] },
Point { id: 5, marker: 0, coords: vec![1.0, 0.0, 1.0] },
Point { id: 6, marker: 0, coords: vec![1.0, 1.0, 1.0] },
Point { id: 7, marker: 0, coords: vec![0.0, 1.0, 1.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Hex8, points: vec![0,1,2,3, 4,5,6,7] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn two_hex8() -> Mesh {
Mesh {
ndim: 3,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0, 0.0] },
Point { id: 1, marker:-1, coords: vec![1.0, 0.0, 0.0] },
Point { id: 2, marker:-1, coords: vec![1.0, 1.0, 0.0] },
Point { id: 3, marker: 0, coords: vec![0.0, 1.0, 0.0] },
Point { id: 4, marker: 0, coords: vec![0.0, 0.0, 1.0] },
Point { id: 5, marker: 0, coords: vec![1.0, 0.0, 1.0] },
Point { id: 6, marker: 0, coords: vec![1.0, 1.0, 1.0] },
Point { id: 7, marker:-1, coords: vec![0.0, 1.0, 1.0] },
Point { id: 8, marker: 0, coords: vec![0.0, 0.0, 2.0] },
Point { id: 9, marker: 0, coords: vec![1.0, 0.0, 2.0] },
Point { id: 10, marker: 0, coords: vec![1.0, 1.0, 2.0] },
Point { id: 11, marker: 0, coords: vec![0.0, 1.0, 2.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Hex8, points: vec![0,1,2,3, 4,5,6,7] },
Cell { id: 1, marker: 2, kind: GeoKind::Hex8, points: vec![4,5,6,7, 8,9,10,11] },
],
marked_edges: vec![(123, 7, 11), (-5, 11, 10), (-4, 7, 3), (-5, 8, 9)],
marked_faces: vec![(-8, 3, 2, 7, 6), (-9, 8, 10, 9, 11), (-10, 1, 2, 5, 6), (-11, 0, 1, 4, 5)]
}
}
#[rustfmt::skip]
pub fn four_hex8() -> Mesh {
Mesh {
ndim: 3,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0, 0.0] },
Point { id: 1, marker: 0, coords: vec![1.0, 0.0, 0.0] },
Point { id: 2, marker: 0, coords: vec![1.0, 1.0, 0.0] },
Point { id: 3, marker: 0, coords: vec![0.0, 1.0, 0.0] },
Point { id: 4, marker: 0, coords: vec![0.0, 0.0, 1.0] },
Point { id: 5, marker: 0, coords: vec![1.0, 0.0, 1.0] },
Point { id: 6, marker: 0, coords: vec![1.0, 1.0, 1.0] },
Point { id: 7, marker: 0, coords: vec![0.0, 1.0, 1.0] },
Point { id: 8, marker:-1, coords: vec![0.0, 0.0, 2.0] },
Point { id: 9, marker: 0, coords: vec![1.0, 0.0, 2.0] },
Point { id: 10, marker: 0, coords: vec![1.0, 1.0, 2.0] },
Point { id: 11, marker: 0, coords: vec![0.0, 1.0, 2.0] },
Point { id: 12, marker: 0, coords: vec![1.0, 2.0, 0.0] },
Point { id: 13, marker: 0, coords: vec![0.0, 2.0, 0.0] },
Point { id: 14, marker: 0, coords: vec![1.0, 2.0, 1.0] },
Point { id: 15, marker: 0, coords: vec![0.0, 2.0, 1.0] },
Point { id: 16, marker: 0, coords: vec![1.0, 2.0, 2.0] },
Point { id: 17, marker: 0, coords: vec![0.0, 2.0, 2.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Hex8, points: vec![0,1, 2, 3, 4, 5, 6, 7] },
Cell { id: 1, marker: 2, kind: GeoKind::Hex8, points: vec![4,5, 6, 7, 8, 9,10,11] },
Cell { id: 2, marker: 1, kind: GeoKind::Hex8, points: vec![3,2,12,13, 7, 6,14,15] },
Cell { id: 3, marker: 2, kind: GeoKind::Hex8, points: vec![7,6,14,15, 11,10,16,17] },
],
marked_edges: Vec::new(),
marked_faces: vec![(-100, 8, 9,10,11), (-200,10,11,16,17)],
}
}
#[rustfmt::skip]
pub fn one_hex20(d: f64, e: f64, f:f64) -> Mesh {
Mesh {
ndim: 3,
points: vec![
Point { id: 0, marker: -1, coords: vec![0.0 , 0.0 , 0.0 ] }, Point { id: 1, marker: -1, coords: vec![1.0 , 0.0 , 0.0 ] }, Point { id: 2, marker: -1, coords: vec![1.0 , 1.0 , 0.0 ] }, Point { id: 3, marker: -1, coords: vec![0.0 , 1.0 , 0.0 ] }, Point { id: 4, marker: -2, coords: vec![0.0 , 0.0 , 1.0 ] }, Point { id: 5, marker: -2, coords: vec![1.0 , 0.0 , 1.0 ] }, Point { id: 6, marker: -2, coords: vec![1.0 , 1.0 , 1.0 ] }, Point { id: 7, marker: -2, coords: vec![0.0 , 1.0 , 1.0 ] }, Point { id: 8, marker: -1, coords: vec![0.5 , 0.0+d, 0.0 ] }, Point { id: 9, marker: -1, coords: vec![1.0-d, 0.5 , 0.0 ] }, Point { id: 10, marker: -1, coords: vec![0.5 , 1.0-d, 0.0 ] }, Point { id: 11, marker: -1, coords: vec![0.0+d, 0.5 , 0.0 ] }, Point { id: 12, marker: -2, coords: vec![0.5 , 0.0+e, 1.0+f] }, Point { id: 13, marker: -2, coords: vec![1.0-e, 0.5 , 1.0 ] }, Point { id: 14, marker: -2, coords: vec![0.5 , 1.0-e, 1.0+f] }, Point { id: 15, marker: -2, coords: vec![0.0+e, 0.5 , 1.0 ] }, Point { id: 16, marker: -3, coords: vec![0.0 , 0.0 , 0.5 ] }, Point { id: 17, marker: -3, coords: vec![1.0 , 0.0 , 0.5 ] }, Point { id: 18, marker: -3, coords: vec![1.0 , 1.0 , 0.5 ] }, Point { id: 19, marker: -3, coords: vec![0.0 , 1.0 , 0.5 ] }, ],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Hex20, points: vec![0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn mixed_shapes_2d() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0] },
Point { id: 1, marker: 0, coords: vec![1.0, 0.0] },
Point { id: 2, marker: 0, coords: vec![2.0, 0.0] },
Point { id: 3, marker: 0, coords: vec![2.0, 1.0] },
Point { id: 4, marker: 0, coords: vec![1.0, 1.0] },
Point { id: 5, marker: 0, coords: vec![3.0, 0.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Lin2, points: vec![0, 1] },
Cell { id: 1, marker: 2, kind: GeoKind::Qua4, points: vec![1, 2, 3, 4] },
Cell { id: 2, marker: 1, kind: GeoKind::Lin2, points: vec![2, 5] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn mixed_shapes_3d() -> Mesh {
Mesh {
ndim: 3,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0, 0.0] },
Point { id: 1, marker: 0, coords: vec![1.0, 0.0, 0.0] },
Point { id: 2, marker: 0, coords: vec![1.0, 1.0, 0.0] },
Point { id: 3, marker: 0, coords: vec![0.0, 1.0, 0.0] },
Point { id: 4, marker: 0, coords: vec![0.0, 0.0, 1.0] },
Point { id: 5, marker: 0, coords: vec![1.0, 0.0, 1.0] },
Point { id: 6, marker: 0, coords: vec![1.0, 1.0, 1.0] },
Point { id: 7, marker: 0, coords: vec![0.0, 1.0, 1.0] },
Point { id: 8, marker: 0, coords: vec![1.0, 2.0, 0.0] },
Point { id: 9, marker: 0, coords: vec![0.0, 2.0, 0.0] },
Point { id: 10, marker: 0, coords: vec![0.0, 2.0, 1.0] },
Point { id: 11, marker: 0, coords: vec![1.0,-0.5, 0.0] },
Point { id: 12, marker: 0, coords: vec![1.0,-1.0, 0.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Hex8, points: vec![0,1,2,3,4,5,6,7] },
Cell { id: 1, marker: 2, kind: GeoKind::Tet4, points: vec![2,8,3,6] },
Cell { id: 2, marker: 2, kind: GeoKind::Qua4, points: vec![3,9,10,7] },
Cell { id: 3, marker: 2, kind: GeoKind::Tri3, points: vec![8,9,3] },
Cell { id: 4, marker: 3, kind: GeoKind::Lin3, points: vec![1,12,11] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn block_2d_four_qua4() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0] },
Point { id: 1, marker: 0, coords: vec![1.0, 0.0] },
Point { id: 2, marker: 0, coords: vec![1.0, 1.0] },
Point { id: 3, marker: 0, coords: vec![0.0, 1.0] },
Point { id: 4, marker: 0, coords: vec![2.0, 0.0] },
Point { id: 5, marker: 0, coords: vec![2.0, 1.0] },
Point { id: 6, marker: 0, coords: vec![1.0, 2.0] },
Point { id: 7, marker: 0, coords: vec![0.0, 2.0] },
Point { id: 8, marker: 0, coords: vec![2.0, 2.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Qua4, points: vec![0, 1, 2, 3] },
Cell { id: 1, marker: 1, kind: GeoKind::Qua4, points: vec![1, 4, 5, 2] },
Cell { id: 2, marker: 1, kind: GeoKind::Qua4, points: vec![3, 2, 6, 7] },
Cell { id: 3, marker: 1, kind: GeoKind::Qua4, points: vec![2, 5, 8, 6] },
],
marked_edges: vec![
(-100, 0, 1),
(-400, 0, 3),
(-100, 1, 4),
(-200, 4, 5),
(-300, 6, 7),
(-400, 3, 7),
(-200, 5, 8),
(-300, 6, 8),
],
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn block_2d_four_qua8() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0] },
Point { id: 1, marker: 0, coords: vec![1.0, 0.0] },
Point { id: 2, marker: 0, coords: vec![1.0, 1.0] },
Point { id: 3, marker: 0, coords: vec![0.0, 1.0] },
Point { id: 4, marker: 0, coords: vec![0.5, 0.0] },
Point { id: 5, marker: 0, coords: vec![1.0, 0.5] },
Point { id: 6, marker: 0, coords: vec![0.5, 1.0] },
Point { id: 7, marker: 0, coords: vec![0.0, 0.5] },
Point { id: 8, marker: 0, coords: vec![2.0, 0.0] },
Point { id: 9, marker: 0, coords: vec![2.0, 1.0] },
Point { id: 10, marker: 0, coords: vec![1.5, 0.0] },
Point { id: 11, marker: 0, coords: vec![2.0, 0.5] },
Point { id: 12, marker: 0, coords: vec![1.5, 1.0] },
Point { id: 13, marker: 0, coords: vec![1.0, 2.0] },
Point { id: 14, marker: 0, coords: vec![0.0, 2.0] },
Point { id: 15, marker: 0, coords: vec![1.0, 1.5] },
Point { id: 16, marker: 0, coords: vec![0.5, 2.0] },
Point { id: 17, marker: 0, coords: vec![0.0, 1.5] },
Point { id: 18, marker: 0, coords: vec![2.0, 2.0] },
Point { id: 19, marker: 0, coords: vec![2.0, 1.5] },
Point { id: 20, marker: 0, coords: vec![1.5, 2.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Qua8, points: vec![0, 1, 2, 3, 4, 5, 6, 7] },
Cell { id: 1, marker: 1, kind: GeoKind::Qua8, points: vec![1, 8, 9, 2, 10, 11, 12, 5] },
Cell { id: 2, marker: 1, kind: GeoKind::Qua8, points: vec![3, 2, 13, 14, 6, 15, 16, 17] },
Cell { id: 3, marker: 1, kind: GeoKind::Qua8, points: vec![2, 9, 18, 13, 12, 19, 20, 15] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn block_2d_four_qua9() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0] },
Point { id: 1, marker: 0, coords: vec![1.0, 0.0] },
Point { id: 2, marker: 0, coords: vec![1.0, 1.0] },
Point { id: 3, marker: 0, coords: vec![0.0, 1.0] },
Point { id: 4, marker: 0, coords: vec![0.5, 0.0] },
Point { id: 5, marker: 0, coords: vec![1.0, 0.5] },
Point { id: 6, marker: 0, coords: vec![0.5, 1.0] },
Point { id: 7, marker: 0, coords: vec![0.0, 0.5] },
Point { id: 8, marker: 0, coords: vec![0.5, 0.5] },
Point { id: 9, marker: 0, coords: vec![2.0, 0.0] },
Point { id: 10, marker: 0, coords: vec![2.0, 1.0] },
Point { id: 11, marker: 0, coords: vec![1.5, 0.0] },
Point { id: 12, marker: 0, coords: vec![2.0, 0.5] },
Point { id: 13, marker: 0, coords: vec![1.5, 1.0] },
Point { id: 14, marker: 0, coords: vec![1.5, 0.5] },
Point { id: 15, marker: 0, coords: vec![1.0, 2.0] },
Point { id: 16, marker: 0, coords: vec![0.0, 2.0] },
Point { id: 17, marker: 0, coords: vec![1.0, 1.5] },
Point { id: 18, marker: 0, coords: vec![0.5, 2.0] },
Point { id: 19, marker: 0, coords: vec![0.0, 1.5] },
Point { id: 20, marker: 0, coords: vec![0.5, 1.5] },
Point { id: 21, marker: 0, coords: vec![2.0, 2.0] },
Point { id: 22, marker: 0, coords: vec![2.0, 1.5] },
Point { id: 23, marker: 0, coords: vec![1.5, 2.0] },
Point { id: 24, marker: 0, coords: vec![1.5, 1.5] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Qua9, points: vec![0, 1, 2, 3, 4, 5, 6, 7, 8] },
Cell { id: 1, marker: 1, kind: GeoKind::Qua9, points: vec![1, 9, 10, 2, 11, 12, 13, 5, 14] },
Cell { id: 2, marker: 1, kind: GeoKind::Qua9, points: vec![3, 2, 15, 16, 6, 17, 18, 19, 20] },
Cell { id: 3, marker: 1, kind: GeoKind::Qua9, points: vec![2, 10, 21, 15, 13, 22, 23, 17, 24] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn block_2d_four_qua12() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0] },
Point { id: 1, marker: 0, coords: vec![1.5, 0.0] },
Point { id: 2, marker: 0, coords: vec![1.5, 1.5] },
Point { id: 3, marker: 0, coords: vec![0.0, 1.5] },
Point { id: 4, marker: 0, coords: vec![0.5, 0.0] },
Point { id: 5, marker: 0, coords: vec![1.5, 0.5] },
Point { id: 6, marker: 0, coords: vec![1.0, 1.5] },
Point { id: 7, marker: 0, coords: vec![0.0, 1.0] },
Point { id: 8, marker: 0, coords: vec![1.0, 0.0] },
Point { id: 9, marker: 0, coords: vec![1.5, 1.0] },
Point { id: 10, marker: 0, coords: vec![0.5, 1.5] },
Point { id: 11, marker: 0, coords: vec![0.0, 0.5] },
Point { id: 12, marker: 0, coords: vec![3.0, 0.0] },
Point { id: 13, marker: 0, coords: vec![3.0, 1.5] },
Point { id: 14, marker: 0, coords: vec![2.0, 0.0] },
Point { id: 15, marker: 0, coords: vec![3.0, 0.5] },
Point { id: 16, marker: 0, coords: vec![2.5, 1.5] },
Point { id: 17, marker: 0, coords: vec![2.5, 0.0] },
Point { id: 18, marker: 0, coords: vec![3.0, 1.0] },
Point { id: 19, marker: 0, coords: vec![2.0, 1.5] },
Point { id: 20, marker: 0, coords: vec![1.5, 3.0] },
Point { id: 21, marker: 0, coords: vec![0.0, 3.0] },
Point { id: 22, marker: 0, coords: vec![1.5, 2.0] },
Point { id: 23, marker: 0, coords: vec![1.0, 3.0] },
Point { id: 24, marker: 0, coords: vec![0.0, 2.5] },
Point { id: 25, marker: 0, coords: vec![1.5, 2.5] },
Point { id: 26, marker: 0, coords: vec![0.5, 3.0] },
Point { id: 27, marker: 0, coords: vec![0.0, 2.0] },
Point { id: 28, marker: 0, coords: vec![3.0, 3.0] },
Point { id: 29, marker: 0, coords: vec![3.0, 2.0] },
Point { id: 30, marker: 0, coords: vec![2.5, 3.0] },
Point { id: 31, marker: 0, coords: vec![3.0, 2.5] },
Point { id: 32, marker: 0, coords: vec![2.0, 3.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Qua12, points: vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
Cell { id: 1, marker: 1, kind: GeoKind::Qua12, points: vec![1, 12, 13, 2, 14, 15, 16, 9, 17, 18, 19, 5] },
Cell { id: 2, marker: 1, kind: GeoKind::Qua12, points: vec![3, 2, 20, 21, 10, 22, 23, 24, 6, 25, 26, 27] },
Cell { id: 3, marker: 1, kind: GeoKind::Qua12, points: vec![2, 13, 28, 20, 19, 29, 30, 25, 16, 31, 32, 22] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn block_2d_four_qua16() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0] },
Point { id: 1, marker: 0, coords: vec![1.5, 0.0] },
Point { id: 2, marker: 0, coords: vec![1.5, 1.5] },
Point { id: 3, marker: 0, coords: vec![0.0, 1.5] },
Point { id: 4, marker: 0, coords: vec![0.5, 0.0] },
Point { id: 5, marker: 0, coords: vec![1.5, 0.5] },
Point { id: 6, marker: 0, coords: vec![1.0, 1.5] },
Point { id: 7, marker: 0, coords: vec![0.0, 1.0] },
Point { id: 8, marker: 0, coords: vec![1.0, 0.0] },
Point { id: 9, marker: 0, coords: vec![1.5, 1.0] },
Point { id: 10, marker: 0, coords: vec![0.5, 1.5] },
Point { id: 11, marker: 0, coords: vec![0.0, 0.5] },
Point { id: 12, marker: 0, coords: vec![0.5, 0.5] },
Point { id: 13, marker: 0, coords: vec![1.0, 0.5] },
Point { id: 14, marker: 0, coords: vec![1.0, 1.0] },
Point { id: 15, marker: 0, coords: vec![0.5, 1.0] },
Point { id: 16, marker: 0, coords: vec![3.0, 0.0] },
Point { id: 17, marker: 0, coords: vec![3.0, 1.5] },
Point { id: 18, marker: 0, coords: vec![2.0, 0.0] },
Point { id: 19, marker: 0, coords: vec![3.0, 0.5] },
Point { id: 20, marker: 0, coords: vec![2.5, 1.5] },
Point { id: 21, marker: 0, coords: vec![2.5, 0.0] },
Point { id: 22, marker: 0, coords: vec![3.0, 1.0] },
Point { id: 23, marker: 0, coords: vec![2.0, 1.5] },
Point { id: 24, marker: 0, coords: vec![2.0, 0.5] },
Point { id: 25, marker: 0, coords: vec![2.5, 0.5] },
Point { id: 26, marker: 0, coords: vec![2.5, 1.0] },
Point { id: 27, marker: 0, coords: vec![2.0, 1.0] },
Point { id: 28, marker: 0, coords: vec![1.5, 3.0] },
Point { id: 29, marker: 0, coords: vec![0.0, 3.0] },
Point { id: 30, marker: 0, coords: vec![1.5, 2.0] },
Point { id: 31, marker: 0, coords: vec![1.0, 3.0] },
Point { id: 32, marker: 0, coords: vec![0.0, 2.5] },
Point { id: 33, marker: 0, coords: vec![1.5, 2.5] },
Point { id: 34, marker: 0, coords: vec![0.5, 3.0] },
Point { id: 35, marker: 0, coords: vec![0.0, 2.0] },
Point { id: 36, marker: 0, coords: vec![0.5, 2.0] },
Point { id: 37, marker: 0, coords: vec![1.0, 2.0] },
Point { id: 38, marker: 0, coords: vec![1.0, 2.5] },
Point { id: 39, marker: 0, coords: vec![0.5, 2.5] },
Point { id: 40, marker: 0, coords: vec![3.0, 3.0] },
Point { id: 41, marker: 0, coords: vec![3.0, 2.0] },
Point { id: 42, marker: 0, coords: vec![2.5, 3.0] },
Point { id: 43, marker: 0, coords: vec![3.0, 2.5] },
Point { id: 44, marker: 0, coords: vec![2.0, 3.0] },
Point { id: 45, marker: 0, coords: vec![2.0, 2.0] },
Point { id: 46, marker: 0, coords: vec![2.5, 2.0] },
Point { id: 47, marker: 0, coords: vec![2.5, 2.5] },
Point { id: 48, marker: 0, coords: vec![2.0, 2.5] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Qua16, points: vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] },
Cell { id: 1, marker: 1, kind: GeoKind::Qua16, points: vec![1, 16, 17, 2, 18, 19, 20, 9, 21, 22, 23, 5, 24, 25, 26, 27] },
Cell { id: 2, marker: 1, kind: GeoKind::Qua16, points: vec![3, 2, 28, 29, 10, 30, 31, 32, 6, 33, 34, 35, 36, 37, 38, 39] },
Cell { id: 3, marker: 1, kind: GeoKind::Qua16, points: vec![2, 17, 40, 28, 23, 41, 42, 33, 20, 43, 44, 30, 45, 46, 47, 48] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn block_2d_four_qua17() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0] },
Point { id: 1, marker: 0, coords: vec![2.0, 0.0] },
Point { id: 2, marker: 0, coords: vec![2.0, 2.0] },
Point { id: 3, marker: 0, coords: vec![0.0, 2.0] },
Point { id: 4, marker: 0, coords: vec![1.0, 0.0] },
Point { id: 5, marker: 0, coords: vec![2.0, 1.0] },
Point { id: 6, marker: 0, coords: vec![1.0, 2.0] },
Point { id: 7, marker: 0, coords: vec![0.0, 1.0] },
Point { id: 8, marker: 0, coords: vec![1.0, 1.0] },
Point { id: 9, marker: 0, coords: vec![0.5, 0.0] },
Point { id: 10, marker: 0, coords: vec![1.5, 0.0] },
Point { id: 11, marker: 0, coords: vec![2.0, 0.5] },
Point { id: 12, marker: 0, coords: vec![2.0, 1.5] },
Point { id: 13, marker: 0, coords: vec![1.5, 2.0] },
Point { id: 14, marker: 0, coords: vec![0.5, 2.0] },
Point { id: 15, marker: 0, coords: vec![0.0, 1.5] },
Point { id: 16, marker: 0, coords: vec![0.0, 0.5] },
Point { id: 17, marker: 0, coords: vec![4.0, 0.0] },
Point { id: 18, marker: 0, coords: vec![4.0, 2.0] },
Point { id: 19, marker: 0, coords: vec![3.0, 0.0] },
Point { id: 20, marker: 0, coords: vec![4.0, 1.0] },
Point { id: 21, marker: 0, coords: vec![3.0, 2.0] },
Point { id: 22, marker: 0, coords: vec![3.0, 1.0] },
Point { id: 23, marker: 0, coords: vec![2.5, 0.0] },
Point { id: 24, marker: 0, coords: vec![3.5, 0.0] },
Point { id: 25, marker: 0, coords: vec![4.0, 0.5] },
Point { id: 26, marker: 0, coords: vec![4.0, 1.5] },
Point { id: 27, marker: 0, coords: vec![3.5, 2.0] },
Point { id: 28, marker: 0, coords: vec![2.5, 2.0] },
Point { id: 29, marker: 0, coords: vec![2.0, 4.0] },
Point { id: 30, marker: 0, coords: vec![0.0, 4.0] },
Point { id: 31, marker: 0, coords: vec![2.0, 3.0] },
Point { id: 32, marker: 0, coords: vec![1.0, 4.0] },
Point { id: 33, marker: 0, coords: vec![0.0, 3.0] },
Point { id: 34, marker: 0, coords: vec![1.0, 3.0] },
Point { id: 35, marker: 0, coords: vec![2.0, 2.5] },
Point { id: 36, marker: 0, coords: vec![2.0, 3.5] },
Point { id: 37, marker: 0, coords: vec![1.5, 4.0] },
Point { id: 38, marker: 0, coords: vec![0.5, 4.0] },
Point { id: 39, marker: 0, coords: vec![0.0, 3.5] },
Point { id: 40, marker: 0, coords: vec![0.0, 2.5] },
Point { id: 41, marker: 0, coords: vec![4.0, 4.0] },
Point { id: 42, marker: 0, coords: vec![4.0, 3.0] },
Point { id: 43, marker: 0, coords: vec![3.0, 4.0] },
Point { id: 44, marker: 0, coords: vec![3.0, 3.0] },
Point { id: 45, marker: 0, coords: vec![4.0, 2.5] },
Point { id: 46, marker: 0, coords: vec![4.0, 3.5] },
Point { id: 47, marker: 0, coords: vec![3.5, 4.0] },
Point { id: 48, marker: 0, coords: vec![2.5, 4.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Qua17, points: vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] },
Cell { id: 1, marker: 1, kind: GeoKind::Qua17, points: vec![1, 17, 18, 2, 19, 20, 21, 5, 22, 23, 24, 25, 26, 27, 28, 12, 11] },
Cell { id: 2, marker: 1, kind: GeoKind::Qua17, points: vec![3, 2, 29, 30, 6, 31, 32, 33, 34, 14, 13, 35, 36, 37, 38, 39, 40] },
Cell { id: 3, marker: 1, kind: GeoKind::Qua17, points: vec![2, 18, 41, 29, 21, 42, 43, 31, 44, 28, 27, 45, 46, 47, 48, 36, 35] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn block_3d_eight_hex8() -> Mesh {
Mesh {
ndim: 3,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0, 0.0] },
Point { id: 1, marker: 0, coords: vec![1.0, 0.0, 0.0] },
Point { id: 2, marker: 0, coords: vec![1.0, 1.0, 0.0] },
Point { id: 3, marker: 0, coords: vec![0.0, 1.0, 0.0] },
Point { id: 4, marker: 0, coords: vec![0.0, 0.0, 2.0] },
Point { id: 5, marker: 0, coords: vec![1.0, 0.0, 2.0] },
Point { id: 6, marker: 0, coords: vec![1.0, 1.0, 2.0] },
Point { id: 7, marker: 0, coords: vec![0.0, 1.0, 2.0] },
Point { id: 8, marker: 0, coords: vec![2.0, 0.0, 0.0] },
Point { id: 9, marker: 0, coords: vec![2.0, 1.0, 0.0] },
Point { id: 10, marker: 0, coords: vec![2.0, 0.0, 2.0] },
Point { id: 11, marker: 0, coords: vec![2.0, 1.0, 2.0] },
Point { id: 12, marker: 0, coords: vec![1.0, 2.0, 0.0] },
Point { id: 13, marker: 0, coords: vec![0.0, 2.0, 0.0] },
Point { id: 14, marker: 0, coords: vec![1.0, 2.0, 2.0] },
Point { id: 15, marker: 0, coords: vec![0.0, 2.0, 2.0] },
Point { id: 16, marker: 0, coords: vec![2.0, 2.0, 0.0] },
Point { id: 17, marker: 0, coords: vec![2.0, 2.0, 2.0] },
Point { id: 18, marker: 0, coords: vec![0.0, 0.0, 4.0] },
Point { id: 19, marker: 0, coords: vec![1.0, 0.0, 4.0] },
Point { id: 20, marker: 0, coords: vec![1.0, 1.0, 4.0] },
Point { id: 21, marker: 0, coords: vec![0.0, 1.0, 4.0] },
Point { id: 22, marker: 0, coords: vec![2.0, 0.0, 4.0] },
Point { id: 23, marker: 0, coords: vec![2.0, 1.0, 4.0] },
Point { id: 24, marker: 0, coords: vec![1.0, 2.0, 4.0] },
Point { id: 25, marker: 0, coords: vec![0.0, 2.0, 4.0] },
Point { id: 26, marker: 0, coords: vec![2.0, 2.0, 4.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Hex8, points: vec![0, 1, 2, 3, 4, 5, 6, 7] },
Cell { id: 1, marker: 1, kind: GeoKind::Hex8, points: vec![1, 8, 9, 2, 5, 10, 11, 6] },
Cell { id: 2, marker: 1, kind: GeoKind::Hex8, points: vec![3, 2, 12, 13, 7, 6, 14, 15] },
Cell { id: 3, marker: 1, kind: GeoKind::Hex8, points: vec![2, 9, 16, 12, 6, 11, 17, 14] },
Cell { id: 4, marker: 1, kind: GeoKind::Hex8, points: vec![4, 5, 6, 7, 18, 19, 20, 21] },
Cell { id: 5, marker: 1, kind: GeoKind::Hex8, points: vec![5, 10, 11, 6, 19, 22, 23, 20] },
Cell { id: 6, marker: 1, kind: GeoKind::Hex8, points: vec![7, 6, 14, 15, 21, 20, 24, 25] },
Cell { id: 7, marker: 1, kind: GeoKind::Hex8, points: vec![6, 11, 17, 14, 20, 23, 26, 24] },
],
marked_edges: vec![
(-4, 8, 9),
(-3, 13, 15),
(-4, 9, 16),
(-1, 18, 21),
(-2, 24, 25),
(-1, 21, 25),
(-3, 15, 25),
(-2, 24, 26),
],
marked_faces: vec![
(-100, 0, 3, 4, 7),
(-300, 0, 1, 4, 5),
(-500, 0, 1, 2, 3),
(-200, 8, 9, 10, 11),
(-300, 1, 5, 8, 10),
(-500, 1, 2, 8, 9),
(-100, 3, 7, 13, 15),
(-400, 12, 13, 14, 15),
(-500, 2, 3, 12, 13),
(-200, 9, 11, 16, 17),
(-400, 12, 14, 16, 17),
(-500, 2, 9, 12, 16),
(-100, 4, 7, 18, 21),
(-300, 4, 5, 18, 19),
(-600, 18, 19, 20, 21),
(-200, 10, 11, 22, 23),
(-300, 5, 10, 19, 22),
(-600, 19, 20, 22, 23),
(-100, 7, 15, 21, 25),
(-400, 14, 15, 24, 25),
(-600, 20, 21, 24, 25),
(-200, 11, 17, 23, 26),
(-400, 14, 17, 24, 26),
(-600, 20, 23, 24, 26),
]
}
}
#[rustfmt::skip]
pub fn block_3d_eight_hex20() -> Mesh {
Mesh {
ndim: 3,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0, 0.0, 0.0] },
Point { id: 1, marker: 0, coords: vec![1.0, 0.0, 0.0] },
Point { id: 2, marker: 0, coords: vec![1.0, 1.0, 0.0] },
Point { id: 3, marker: 0, coords: vec![0.0, 1.0, 0.0] },
Point { id: 4, marker: 0, coords: vec![0.0, 0.0, 2.0] },
Point { id: 5, marker: 0, coords: vec![1.0, 0.0, 2.0] },
Point { id: 6, marker: 0, coords: vec![1.0, 1.0, 2.0] },
Point { id: 7, marker: 0, coords: vec![0.0, 1.0, 2.0] },
Point { id: 8, marker: 0, coords: vec![0.5, 0.0, 0.0] },
Point { id: 9, marker: 0, coords: vec![1.0, 0.5, 0.0] },
Point { id: 10, marker: 0, coords: vec![0.5, 1.0, 0.0] },
Point { id: 11, marker: 0, coords: vec![0.0, 0.5, 0.0] },
Point { id: 12, marker: 0, coords: vec![0.5, 0.0, 2.0] },
Point { id: 13, marker: 0, coords: vec![1.0, 0.5, 2.0] },
Point { id: 14, marker: 0, coords: vec![0.5, 1.0, 2.0] },
Point { id: 15, marker: 0, coords: vec![0.0, 0.5, 2.0] },
Point { id: 16, marker: 0, coords: vec![0.0, 0.0, 1.0] },
Point { id: 17, marker: 0, coords: vec![1.0, 0.0, 1.0] },
Point { id: 18, marker: 0, coords: vec![1.0, 1.0, 1.0] },
Point { id: 19, marker: 0, coords: vec![0.0, 1.0, 1.0] },
Point { id: 20, marker: 0, coords: vec![2.0, 0.0, 0.0] },
Point { id: 21, marker: 0, coords: vec![2.0, 1.0, 0.0] },
Point { id: 22, marker: 0, coords: vec![2.0, 0.0, 2.0] },
Point { id: 23, marker: 0, coords: vec![2.0, 1.0, 2.0] },
Point { id: 24, marker: 0, coords: vec![1.5, 0.0, 0.0] },
Point { id: 25, marker: 0, coords: vec![2.0, 0.5, 0.0] },
Point { id: 26, marker: 0, coords: vec![1.5, 1.0, 0.0] },
Point { id: 27, marker: 0, coords: vec![1.5, 0.0, 2.0] },
Point { id: 28, marker: 0, coords: vec![2.0, 0.5, 2.0] },
Point { id: 29, marker: 0, coords: vec![1.5, 1.0, 2.0] },
Point { id: 30, marker: 0, coords: vec![2.0, 0.0, 1.0] },
Point { id: 31, marker: 0, coords: vec![2.0, 1.0, 1.0] },
Point { id: 32, marker: 0, coords: vec![1.0, 2.0, 0.0] },
Point { id: 33, marker: 0, coords: vec![0.0, 2.0, 0.0] },
Point { id: 34, marker: 0, coords: vec![1.0, 2.0, 2.0] },
Point { id: 35, marker: 0, coords: vec![0.0, 2.0, 2.0] },
Point { id: 36, marker: 0, coords: vec![1.0, 1.5, 0.0] },
Point { id: 37, marker: 0, coords: vec![0.5, 2.0, 0.0] },
Point { id: 38, marker: 0, coords: vec![0.0, 1.5, 0.0] },
Point { id: 39, marker: 0, coords: vec![1.0, 1.5, 2.0] },
Point { id: 40, marker: 0, coords: vec![0.5, 2.0, 2.0] },
Point { id: 41, marker: 0, coords: vec![0.0, 1.5, 2.0] },
Point { id: 42, marker: 0, coords: vec![1.0, 2.0, 1.0] },
Point { id: 43, marker: 0, coords: vec![0.0, 2.0, 1.0] },
Point { id: 44, marker: 0, coords: vec![2.0, 2.0, 0.0] },
Point { id: 45, marker: 0, coords: vec![2.0, 2.0, 2.0] },
Point { id: 46, marker: 0, coords: vec![2.0, 1.5, 0.0] },
Point { id: 47, marker: 0, coords: vec![1.5, 2.0, 0.0] },
Point { id: 48, marker: 0, coords: vec![2.0, 1.5, 2.0] },
Point { id: 49, marker: 0, coords: vec![1.5, 2.0, 2.0] },
Point { id: 50, marker: 0, coords: vec![2.0, 2.0, 1.0] },
Point { id: 51, marker: 0, coords: vec![0.0, 0.0, 4.0] },
Point { id: 52, marker: 0, coords: vec![1.0, 0.0, 4.0] },
Point { id: 53, marker: 0, coords: vec![1.0, 1.0, 4.0] },
Point { id: 54, marker: 0, coords: vec![0.0, 1.0, 4.0] },
Point { id: 55, marker: 0, coords: vec![0.5, 0.0, 4.0] },
Point { id: 56, marker: 0, coords: vec![1.0, 0.5, 4.0] },
Point { id: 57, marker: 0, coords: vec![0.5, 1.0, 4.0] },
Point { id: 58, marker: 0, coords: vec![0.0, 0.5, 4.0] },
Point { id: 59, marker: 0, coords: vec![0.0, 0.0, 3.0] },
Point { id: 60, marker: 0, coords: vec![1.0, 0.0, 3.0] },
Point { id: 61, marker: 0, coords: vec![1.0, 1.0, 3.0] },
Point { id: 62, marker: 0, coords: vec![0.0, 1.0, 3.0] },
Point { id: 63, marker: 0, coords: vec![2.0, 0.0, 4.0] },
Point { id: 64, marker: 0, coords: vec![2.0, 1.0, 4.0] },
Point { id: 65, marker: 0, coords: vec![1.5, 0.0, 4.0] },
Point { id: 66, marker: 0, coords: vec![2.0, 0.5, 4.0] },
Point { id: 67, marker: 0, coords: vec![1.5, 1.0, 4.0] },
Point { id: 68, marker: 0, coords: vec![2.0, 0.0, 3.0] },
Point { id: 69, marker: 0, coords: vec![2.0, 1.0, 3.0] },
Point { id: 70, marker: 0, coords: vec![1.0, 2.0, 4.0] },
Point { id: 71, marker: 0, coords: vec![0.0, 2.0, 4.0] },
Point { id: 72, marker: 0, coords: vec![1.0, 1.5, 4.0] },
Point { id: 73, marker: 0, coords: vec![0.5, 2.0, 4.0] },
Point { id: 74, marker: 0, coords: vec![0.0, 1.5, 4.0] },
Point { id: 75, marker: 0, coords: vec![1.0, 2.0, 3.0] },
Point { id: 76, marker: 0, coords: vec![0.0, 2.0, 3.0] },
Point { id: 77, marker: 0, coords: vec![2.0, 2.0, 4.0] },
Point { id: 78, marker: 0, coords: vec![2.0, 1.5, 4.0] },
Point { id: 79, marker: 0, coords: vec![1.5, 2.0, 4.0] },
Point { id: 80, marker: 0, coords: vec![2.0, 2.0, 3.0] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Hex20, points: vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] },
Cell { id: 1, marker: 1, kind: GeoKind::Hex20, points: vec![1, 20, 21, 2, 5, 22, 23, 6, 24, 25, 26, 9, 27, 28, 29, 13, 17, 30, 31, 18] },
Cell { id: 2, marker: 1, kind: GeoKind::Hex20, points: vec![3, 2, 32, 33, 7, 6, 34, 35, 10, 36, 37, 38, 14, 39, 40, 41, 19, 18, 42, 43] },
Cell { id: 3, marker: 1, kind: GeoKind::Hex20, points: vec![2, 21, 44, 32, 6, 23, 45, 34, 26, 46, 47, 36, 29, 48, 49, 39, 18, 31, 50, 42] },
Cell { id: 4, marker: 1, kind: GeoKind::Hex20, points: vec![4, 5, 6, 7, 51, 52, 53, 54, 12, 13, 14, 15, 55, 56, 57, 58, 59, 60, 61, 62] },
Cell { id: 5, marker: 1, kind: GeoKind::Hex20, points: vec![5, 22, 23, 6, 52, 63, 64, 53, 27, 28, 29, 13, 65, 66, 67, 56, 60, 68, 69, 61] },
Cell { id: 6, marker: 1, kind: GeoKind::Hex20, points: vec![7, 6, 34, 35, 54, 53, 70, 71, 14, 39, 40, 41, 57, 72, 73, 74, 62, 61, 75, 76] },
Cell { id: 7, marker: 1, kind: GeoKind::Hex20, points: vec![6, 23, 45, 34, 53, 64, 77, 70, 29, 48, 49, 39, 67, 78, 79, 72, 61, 69, 80, 75] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn ring_eight_qua8_rad1_thick1() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: -1, coords: vec![1.000000000000000e+00, 0.000000000000000e+00] },
Point { id: 1, marker: -30, coords: vec![1.500000000000000e+00, 0.000000000000000e+00] },
Point { id: 2, marker: -2, coords: vec![2.000000000000000e+00, 0.000000000000000e+00] },
Point { id: 3, marker: -10, coords: vec![9.127002149692066e-01, 4.086298050744269e-01] },
Point { id: 4, marker: 0, coords: vec![1.357995128834866e+00, 6.079951288348657e-01] },
Point { id: 5, marker: -20, coords: vec![1.825400429938413e+00, 8.172596101488537e-01] },
Point { id: 6, marker: -10, coords: vec![7.071067811865476e-01, 7.071067811865475e-01] },
Point { id: 7, marker: 0, coords: vec![1.060660171779821e+00, 1.060660171779821e+00] },
Point { id: 8, marker: -20, coords: vec![1.414213562373095e+00, 1.414213562373095e+00] },
Point { id: 9, marker: -10, coords: vec![4.086298050744270e-01, 9.127002149692066e-01] },
Point { id: 10, marker: 0, coords: vec![6.079951288348662e-01, 1.357995128834866e+00] },
Point { id: 11, marker: -20, coords: vec![8.172596101488541e-01, 1.825400429938413e+00] },
Point { id: 12, marker: -4, coords: vec![6.123233995736766e-17, 1.000000000000000e+00] },
Point { id: 13, marker: -40, coords: vec![9.184850993605148e-17, 1.500000000000000e+00] },
Point { id: 14, marker: -3, coords: vec![1.224646799147353e-16, 2.000000000000000e+00] },
Point { id: 15, marker: -30, coords: vec![1.250000000000000e+00, 0.000000000000000e+00] },
Point { id: 16, marker: -30, coords: vec![1.750000000000000e+00, 0.000000000000000e+00] },
Point { id: 17, marker: 0, coords: vec![1.131662607362388e+00, 5.066626073623883e-01] },
Point { id: 18, marker: 0, coords: vec![1.584327650307344e+00, 7.093276503073436e-01] },
Point { id: 19, marker: 0, coords: vec![8.838834764831844e-01, 8.838834764831842e-01] },
Point { id: 20, marker: 0, coords: vec![1.237436867076458e+00, 1.237436867076458e+00] },
Point { id: 21, marker: 0, coords: vec![5.066626073623884e-01, 1.131662607362388e+00] },
Point { id: 22, marker: 0, coords: vec![7.093276503073440e-01, 1.584327650307344e+00] },
Point { id: 23, marker: -40, coords: vec![7.654042494670958e-17, 1.250000000000000e+00] },
Point { id: 24, marker: -40, coords: vec![1.071565949253934e-16, 1.750000000000000e+00] },
Point { id: 25, marker: -10, coords: vec![9.759662299218728e-01, 2.179218163747866e-01] },
Point { id: 26, marker: 0, coords: vec![1.448413825153672e+00, 3.234138251536718e-01] },
Point { id: 27, marker: -20, coords: vec![1.951932459843746e+00, 4.358436327495732e-01] },
Point { id: 28, marker: -10, coords: vec![8.212291819630956e-01, 5.705984846564395e-01] },
Point { id: 29, marker: 0, coords: vec![1.228743911043582e+00, 8.537439110435825e-01] },
Point { id: 30, marker: -20, coords: vec![1.642458363926191e+00, 1.141196969312879e+00] },
Point { id: 31, marker: -10, coords: vec![5.705984846564395e-01, 8.212291819630954e-01] },
Point { id: 32, marker: 0, coords: vec![8.537439110435825e-01, 1.228743911043582e+00] },
Point { id: 33, marker: -20, coords: vec![1.141196969312879e+00, 1.642458363926191e+00] },
Point { id: 34, marker: -10, coords: vec![2.179218163747867e-01, 9.759662299218727e-01] },
Point { id: 35, marker: 0, coords: vec![3.234138251536719e-01, 1.448413825153672e+00] },
Point { id: 36, marker: -20, coords: vec![4.358436327495734e-01, 1.951932459843745e+00] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Qua8, points: vec![ 0, 1, 4, 3,15,26,17,25] },
Cell { id: 1, marker: 1, kind: GeoKind::Qua8, points: vec![ 1, 2, 5, 4,16,27,18,26] },
Cell { id: 2, marker: 1, kind: GeoKind::Qua8, points: vec![ 3, 4, 7, 6,17,29,19,28] },
Cell { id: 3, marker: 1, kind: GeoKind::Qua8, points: vec![ 4, 5, 8, 7,18,30,20,29] },
Cell { id: 4, marker: 1, kind: GeoKind::Qua8, points: vec![ 6, 7,10, 9,19,32,21,31] },
Cell { id: 5, marker: 1, kind: GeoKind::Qua8, points: vec![ 7, 8,11,10,20,33,22,32] },
Cell { id: 6, marker: 1, kind: GeoKind::Qua8, points: vec![ 9,10,13,12,21,35,23,34] },
Cell { id: 7, marker: 1, kind: GeoKind::Qua8, points: vec![10,11,14,13,22,36,24,35] },
],
marked_edges: vec![
(-100, 12, 9), (-100, 9, 6), (-100, 6, 3), (-100, 3, 0),
(-200, 14, 11), (-200, 11, 8), (-200, 8, 5), (-200, 5, 2),
(-300, 0, 1), (-300, 1, 2),
(-400, 12, 13), (-400, 13, 14)
],
marked_faces: Vec::new(),
}
}
#[rustfmt::skip]
pub fn tri3_from_delaunay() -> Mesh {
Mesh {
ndim: 2,
points: vec![
Point { id: 0, marker: 0, coords: vec![0.0307942, 0.459123 ] },
Point { id: 1, marker: 0, coords: vec![0.0980015, 0.981755 ] },
Point { id: 2, marker: 0, coords: vec![0.133721, 0.348832 ] },
Point { id: 3, marker: 0, coords: vec![0.13928, 0.180603 ] },
Point { id: 4, marker: 0, coords: vec![0.230951, 0.558482 ] },
Point { id: 5, marker: 0, coords: vec![0.478554, 0.00869692] },
Point { id: 6, marker: 0, coords: vec![0.540745, 0.331184 ] },
Point { id: 7, marker: 0, coords: vec![0.578587, 0.760349 ] },
Point { id: 8, marker: 0, coords: vec![0.648071, 0.369534 ] },
Point { id: 9, marker: 0, coords: vec![0.903726, 0.975904 ] },
],
cells: vec![
Cell { id: 0, marker: 1, kind: GeoKind::Tri3, points: vec![4, 2, 6] },
Cell { id: 1, marker: 1, kind: GeoKind::Tri3, points: vec![3, 2, 0] },
Cell { id: 2, marker: 1, kind: GeoKind::Tri3, points: vec![0, 4, 1] }, Cell { id: 3, marker: 1, kind: GeoKind::Tri3, points: vec![4, 0, 2] },
Cell { id: 4, marker: 1, kind: GeoKind::Tri3, points: vec![1, 4, 7] },
Cell { id: 5, marker: 1, kind: GeoKind::Tri3, points: vec![2, 3, 6] },
Cell { id: 6, marker: 1, kind: GeoKind::Tri3, points: vec![6, 7, 4] },
Cell { id: 7, marker: 1, kind: GeoKind::Tri3, points: vec![6, 5, 8] },
Cell { id: 8, marker: 1, kind: GeoKind::Tri3, points: vec![7, 8, 9] }, Cell { id: 9, marker: 1, kind: GeoKind::Tri3, points: vec![8, 7, 6] },
Cell { id: 10, marker: 1, kind: GeoKind::Tri3, points: vec![7, 9, 1] }, Cell { id: 11, marker: 1, kind: GeoKind::Tri3, points: vec![6, 3, 5] },
],
marked_edges: Vec::new(),
marked_faces: Vec::new(),
}
}
}
#[cfg(test)]
mod tests {
use super::Samples;
use crate::mesh::{Draw, Mesh};
const SAVE_FIGURE: bool = false;
fn draw(mesh: &Mesh, larger: bool, filename: &str) {
let mut draw = Draw::new();
draw.show_cell_ids(true).show_point_ids(true);
if larger {
draw.set_size(600.0, 600.0);
}
draw.all(&mesh, filename).unwrap();
}
#[test]
fn samples_work() {
let mesh = Samples::lin_cells();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 14);
assert_eq!(mesh.cells.len(), 4);
mesh.check_all().unwrap();
let mesh = Samples::lin_cells_3d();
assert_eq!(mesh.ndim, 3);
assert_eq!(mesh.points.len(), 14);
assert_eq!(mesh.cells.len(), 4);
mesh.check_all().unwrap();
let mesh = Samples::tri_cells();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 34);
assert_eq!(mesh.cells.len(), 4);
mesh.check_all().unwrap();
let mesh = Samples::qua_cells();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 66);
assert_eq!(mesh.cells.len(), 6);
mesh.check_all().unwrap();
let mesh = Samples::tet_cells();
assert_eq!(mesh.ndim, 3);
assert_eq!(mesh.points.len(), 34);
assert_eq!(mesh.cells.len(), 3);
mesh.check_all().unwrap();
let mesh = Samples::hex_cells();
assert_eq!(mesh.ndim, 3);
assert_eq!(mesh.points.len(), 60);
assert_eq!(mesh.cells.len(), 3);
mesh.check_all().unwrap();
let mesh = Samples::one_lin2();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 2);
assert_eq!(mesh.cells.len(), 1);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_one_lin2.svg");
}
let mesh = Samples::graph_8_edges();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 8);
assert_eq!(mesh.cells.len(), 8);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_graph_8_edges.svg");
}
let mesh = Samples::graph_12_edges();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 9);
assert_eq!(mesh.cells.len(), 12);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_graph_12_edges.svg");
}
let mesh = Samples::one_tri3();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 3);
assert_eq!(mesh.cells.len(), 1);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_one_tri3.svg");
}
let mesh = Samples::one_tri6();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 6);
assert_eq!(mesh.cells.len(), 1);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_one_tri6.svg");
}
let mesh = Samples::one_qua4();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 4);
assert_eq!(mesh.cells.len(), 1);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_one_qua4.svg");
}
let mesh = Samples::two_tri3();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 4);
assert_eq!(mesh.cells.len(), 2);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_two_tri3.svg");
}
let mesh = Samples::tri3_qua4_lin2();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 6);
assert_eq!(mesh.cells.len(), 3);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_tri3_qua4_lin2.svg");
}
let mesh = Samples::three_tri3();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 5);
assert_eq!(mesh.cells.len(), 3);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_three_tri3.svg");
}
let mesh = Samples::three_tri3_arrow();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 4);
assert_eq!(mesh.cells.len(), 3);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, true, "/tmp/gemlab/test_mesh_three_tri3_arrow.svg")
}
let mesh = Samples::three_tri6_arrow();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 10);
assert_eq!(mesh.cells.len(), 3);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, true, "/tmp/gemlab/test_mesh_three_tri6_arrow.svg")
}
let mesh = Samples::four_tri3();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 5);
assert_eq!(mesh.cells.len(), 4);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_four_tri3.svg");
}
let mesh = Samples::two_tri3_one_qua4();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 6);
assert_eq!(mesh.cells.len(), 3);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_two_tri3_one_qua4.svg");
}
let mesh = Samples::one_qua8();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 8);
assert_eq!(mesh.cells.len(), 1);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_one_qua8.svg");
}
let mesh = Samples::two_qua4();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 6);
assert_eq!(mesh.cells.len(), 2);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_two_qua4.svg");
}
let mesh = Samples::qua8_tri6_lin2();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 11);
assert_eq!(mesh.cells.len(), 4);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_qua8_tri6_lin2.svg");
}
let mesh = Samples::qua8_tri6_lin2_three_dimensional();
assert_eq!(mesh.ndim, 3);
assert_eq!(mesh.points.len(), 11);
assert_eq!(mesh.cells.len(), 4);
mesh.check_all().unwrap();
if SAVE_FIGURE {
let mut draw = Draw::new();
draw.show_cell_ids(true)
.show_point_ids(true)
.set_size(800.0, 800.0)
.set_view_flag(false)
.set_camera(30.0, 90.0);
draw.all(&mesh, "/tmp/gemlab/test_mesh_qua8_tri6_lin2_three_dimensional.svg")
.unwrap();
}
let mesh = Samples::one_tet4();
assert_eq!(mesh.ndim, 3);
assert_eq!(mesh.points.len(), 4);
assert_eq!(mesh.cells.len(), 1);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_one_tet4.svg");
}
let mesh = Samples::one_tet10(0.0);
assert_eq!(mesh.ndim, 3);
assert_eq!(mesh.points.len(), 10);
assert_eq!(mesh.cells.len(), 1);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_one_tet10.svg");
}
let mesh = Samples::one_hex8();
assert_eq!(mesh.ndim, 3);
assert_eq!(mesh.points.len(), 8);
assert_eq!(mesh.cells.len(), 1);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_one_hex8.svg");
}
let mesh = Samples::two_hex8();
assert_eq!(mesh.ndim, 3);
assert_eq!(mesh.points.len(), 12);
assert_eq!(mesh.cells.len(), 2);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, true, "/tmp/gemlab/test_mesh_two_hex8.svg");
}
let mesh = Samples::four_hex8();
assert_eq!(mesh.ndim, 3);
assert_eq!(mesh.points.len(), 18);
assert_eq!(mesh.cells.len(), 4);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, true, "/tmp/gemlab/test_mesh_four_hex8.svg");
}
let mesh = Samples::one_hex20(0.0, 0.0, 0.0);
assert_eq!(mesh.ndim, 3);
assert_eq!(mesh.points.len(), 20);
assert_eq!(mesh.cells.len(), 1);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_one_hex20.svg");
}
let mesh = Samples::mixed_shapes_2d();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 6);
assert_eq!(mesh.cells.len(), 3);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_mixed_shapes_2d.svg");
}
let mesh = Samples::mixed_shapes_3d();
assert_eq!(mesh.ndim, 3);
assert_eq!(mesh.points.len(), 13);
assert_eq!(mesh.cells.len(), 5);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, true, "/tmp/gemlab/test_mesh_mixed_shapes_3d.svg");
}
let mesh = Samples::block_2d_four_qua4();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 9);
assert_eq!(mesh.cells.len(), 4);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_block_2d_four_qua4.svg");
}
let mesh = Samples::block_2d_four_qua8();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 21);
assert_eq!(mesh.cells.len(), 4);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_block_2d_four_qua8.svg");
}
let mesh = Samples::block_2d_four_qua9();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 25);
assert_eq!(mesh.cells.len(), 4);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_block_2d_four_qua9.svg");
}
let mesh = Samples::block_2d_four_qua12();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 33);
assert_eq!(mesh.cells.len(), 4);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_block_2d_four_qua12.svg");
}
let mesh = Samples::block_2d_four_qua16();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 49);
assert_eq!(mesh.cells.len(), 4);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_block_2d_four_qua16.svg");
}
let mesh = Samples::block_2d_four_qua17();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 49);
assert_eq!(mesh.cells.len(), 4);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_block_2d_four_qua17.svg");
}
let mesh = Samples::block_3d_eight_hex8();
assert_eq!(mesh.ndim, 3);
assert_eq!(mesh.points.len(), 27);
assert_eq!(mesh.cells.len(), 8);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, true, "/tmp/gemlab/test_mesh_block_3d_eight_hex8.svg");
}
let mesh = Samples::block_3d_eight_hex20();
assert_eq!(mesh.ndim, 3);
assert_eq!(mesh.points.len(), 81);
assert_eq!(mesh.cells.len(), 8);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, true, "/tmp/gemlab/test_mesh_block_3d_eight_hex20.svg");
}
let mesh = Samples::ring_eight_qua8_rad1_thick1();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 37);
assert_eq!(mesh.cells.len(), 8);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, true, "/tmp/gemlab/test_mesh_ring_eight_qua8_rad1_thick1.svg");
}
let mesh = Samples::tri3_from_delaunay();
assert_eq!(mesh.ndim, 2);
assert_eq!(mesh.points.len(), 10);
assert_eq!(mesh.cells.len(), 12);
mesh.check_all().unwrap();
if SAVE_FIGURE {
draw(&mesh, false, "/tmp/gemlab/test_mesh_tri3_from_delaunay.svg");
}
}
}