forked from 1b-agent/fieldcraft-upstream
mesh: test that more smoothing iterations never lower the smallest scaled Jacobian (#489)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo
This commit is contained in:
1 parent
3ee542453e
commit
655a60c138
1 file changed
+16
@@ -98,6 +98,22 @@ fn seven_block_sphere_converges_without_losing_quality() {
|
|||||||
assert!(last_error < 0.01, "{last_error}");
|
assert!(last_error < 0.01, "{last_error}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// More smoothing iterations never leave a worse mesh: the smoother keeps the best grid its
|
||||||
|
/// sweeps passed through (#489), so where the sweeps happen to stop does not decide the result.
|
||||||
|
#[test]
|
||||||
|
fn more_iterations_never_lower_the_smallest_scaled_jacobian() {
|
||||||
|
let (r, h) = (10.0, 2.0);
|
||||||
|
let (s, t) = cylinder(r, h, 128);
|
||||||
|
let topo = Topology::butterfly([0.0; 3], [0.0, 0.0, 1.0], r, &[0.0, h], 0.55).unwrap();
|
||||||
|
let mut last = f64::NEG_INFINITY;
|
||||||
|
for iterations in [5, 20, 100, 300] {
|
||||||
|
let m = project_mesh(&topo, &s, &t, &ProjectOptions { iterations, ..options(0.75) }).unwrap();
|
||||||
|
let sj = m.report.min_scaled_jacobian;
|
||||||
|
assert!(sj >= last - 1e-9, "{iterations} iterations: {sj} after {last}");
|
||||||
|
last = sj;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// A disc: the five-block butterfly, its rim on the circle where the side meets the caps.
|
/// A disc: the five-block butterfly, its rim on the circle where the side meets the caps.
|
||||||
#[test]
|
#[test]
|
||||||
fn butterfly_disc_meshes_with_its_rim_on_the_circle() {
|
fn butterfly_disc_meshes_with_its_rim_on_the_circle() {
|
||||||
|
|||||||
Reference in new issue
Block a user