Skip to content
This repository was archived by the owner on Mar 12, 2024. It is now read-only.

Commit 5db7ea1

Browse files
committed
more diameter tests
1 parent 61b0337 commit 5db7ea1

File tree

2 files changed

+55
-4
lines changed

2 files changed

+55
-4
lines changed

src/grid/mixed_grid/geometry.rs

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ impl<T: Float + Scalar<Real = T>> SerialMixedGeometry<T> {
123123
for (i, c) in v.iter_mut().enumerate() {
124124
*c = unsafe {
125125
*coordinates
126-
.get_unchecked([cells[element_index][3 * cell_i + j], i])
126+
.get_unchecked([cells[element_index][size * cell_i + j], i])
127127
};
128128
}
129129
}
@@ -141,7 +141,7 @@ impl<T: Float + Scalar<Real = T>> SerialMixedGeometry<T> {
141141
for (i, c) in v.iter_mut().enumerate() {
142142
*c = unsafe {
143143
*coordinates
144-
.get_unchecked([cells[element_index][4 * cell_i + j], i])
144+
.get_unchecked([cells[element_index][size * cell_i + j], i])
145145
};
146146
}
147147
}
@@ -521,4 +521,27 @@ mod test {
521521
}
522522
}
523523
}
524+
525+
#[test]
526+
fn test_diameter() {
527+
//! Test diameters
528+
let g = example_geometry();
529+
530+
for cell_i in 0..2 {
531+
assert_relative_eq!(
532+
g.diameter((0, cell_i)),
533+
2.0 * f64::sqrt(1.5 - f64::sqrt(2.0)),
534+
epsilon = 1e-12
535+
);
536+
}
537+
538+
let g = example_geometry_mixed();
539+
540+
for (cell_i, d) in [f64::sqrt(2.0), 2.0 * f64::sqrt(1.5 - f64::sqrt(2.0))]
541+
.iter()
542+
.enumerate()
543+
{
544+
assert_relative_eq!(g.diameter((cell_i, 0)), d, epsilon = 1e-12);
545+
}
546+
}
524547
}

src/grid/single_element_grid/geometry.rs

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,9 @@ impl<T: Float + Scalar<Real = T>> SerialSingleElementGeometry<T> {
9595
for cell_i in 0..ncells {
9696
for (j, v) in [&mut v0, &mut v1, &mut v2].iter_mut().enumerate() {
9797
for (i, c) in v.iter_mut().enumerate() {
98-
*c = unsafe { *coordinates.get_unchecked([cells[3 * cell_i + j], i]) };
98+
*c = unsafe {
99+
*coordinates.get_unchecked([cells[size * cell_i + j], i])
100+
};
99101
}
100102
}
101103
diameters[cell_i] = compute_diameter_triangle(v0.view(), v1.view(), v2.view());
@@ -109,7 +111,9 @@ impl<T: Float + Scalar<Real = T>> SerialSingleElementGeometry<T> {
109111
for cell_i in 0..ncells {
110112
for (j, v) in [&mut v0, &mut v1, &mut v2, &mut v3].iter_mut().enumerate() {
111113
for (i, c) in v.iter_mut().enumerate() {
112-
*c = unsafe { *coordinates.get_unchecked([cells[4 * cell_i + j], i]) };
114+
*c = unsafe {
115+
*coordinates.get_unchecked([cells[size * cell_i + j], i])
116+
};
113117
}
114118
}
115119
diameters[cell_i] =
@@ -596,4 +600,28 @@ mod test {
596600
}
597601
}
598602
}
603+
604+
#[test]
605+
fn test_diameter() {
606+
//! Test diameters
607+
let g = example_geometry_2d();
608+
609+
for cell_i in 0..2 {
610+
assert_relative_eq!(
611+
g.diameter(cell_i),
612+
2.0 * f64::sqrt(1.5 - f64::sqrt(2.0)),
613+
epsilon = 1e-12
614+
);
615+
}
616+
617+
let g = example_geometry_3d();
618+
619+
for cell_i in 0..2 {
620+
assert_relative_eq!(
621+
g.diameter(cell_i),
622+
2.0 * f64::sqrt(1.5 - f64::sqrt(2.0)),
623+
epsilon = 1e-12
624+
);
625+
}
626+
}
599627
}

0 commit comments

Comments
 (0)