forked from 1b-agent/fieldcraft-upstream
Mesh: a face edge split that encroaches a feature edge splits the feature edge
Delaunay refinement split a boundary face edge at its midpoint even when that
midpoint lay inside the diametral sphere of a feature edge beside it. Each such
split halves the face vertices' distance to the curve, so they piled up against
it (the heated bracket grew face vertices 0.016 mm from a 4 mm-sized edge), the
improvement schedule could not lift the tetrahedra there to its target, and
inserted vertex after vertex around them: 29257 elements and about two minutes
to open instead of 23641 and 6 s. The SolidCraft pin move (4c91f9b) added one
interior vertex to the bracket's end faces, which changed the CDT enough to
expose it.
Following Shewchuk (1998), an encroaching midpoint now splits the encroached
feature edge instead.
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
43e2144090
commit
111a6f1a94
4 files changed
+93
-2
No files matched your search
@@ -741,6 +741,21 @@ mod tests {
|
||||
assert!(r["mass"]["relative_change"].as_f64().unwrap().abs() < 0.01, "{r}");
|
||||
}
|
||||
|
||||
/// The heated bracket's 4 mm tet mesh stays near its 23 000 elements and opens within the
|
||||
/// control channel's 60 s request timeout. #303: refinement piled face vertices against a
|
||||
/// feature curve, and the improvement then grew the mesh to 29 257 elements in about two
|
||||
/// minutes.
|
||||
#[test]
|
||||
#[ignore = "heavy: cargo xtask test --heavy (CI heavy job)"]
|
||||
fn the_heated_bracket_opens_quickly_with_its_usual_mesh() {
|
||||
let start = std::time::Instant::now();
|
||||
let s = open("heated-bracket");
|
||||
let elapsed = start.elapsed();
|
||||
let elements = s.model.elements().len();
|
||||
assert!((20_000..=26_000).contains(&elements), "{elements} elements");
|
||||
assert!(elapsed < std::time::Duration::from_secs(60), "opened in {elapsed:?}");
|
||||
}
|
||||
|
||||
/// The heated bracket's temperatures lie between the air's and the heater's, falling along
|
||||
/// the bracket away from the heater. Its thermal expansion: with the air at the heater's
|
||||
/// temperature the bracket warms evenly by ΔT, and held at the foot's hole alone (at x = 40)
|
||||
|
||||
Reference in new issue
Block a user