You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
2D -> IBM -> STL tests nothing: the model is 1.33 cells across and marks no cells #1928
2D -> IBM -> STL (tests/EA8FA07E) passes while its immersed boundary marks zero cells, so the case exercises none of the IB path it is named for. Its golden is a record of the body's absence.
Evidence
Instrumenting ib_markers right after s_apply_ib_patches in s_ibm_setup, on one rank:
The nearest cell centres to the disc centre sit at (+/-0.1875, +/-0.1875), a distance of 0.265 from it, against a radius of 0.25 — every one of them is outside the body, and no cell reaches the 0.5 occupancy threshold. ib_markers is identically zero, no ghost points are built, and the run is plain single-phase flow with ib = T set.
The golden was generated in that state, which is why it passes: with the body absent there is nothing for a change in the IB code to perturb.
The 3D sibling 3D -> IBM -> STL (tests/4E0FBE72), built from the same common_mods in ibm_stl(), does mark cells and is unaffected.
How it surfaced
PR #1914 adds a check that aborts when a patch marks no cell anywhere. It fires on this case. Confirmed the check is not at fault: with only the @:PROHIBIT disabled and the counter left in, the case runs to completion, reports nonzero=0, and still matches its committed golden.
Suggested fix
Raise stl_models(1)%model_scale in the common_mods of ibm_stl() in toolchain/mfc/test/cases.py so the disc spans roughly ten cells (5 -> about 40, giving a diameter of 4 at dx = 0.375), then regenerate the golden. The case is a registered suite case at a 1e-10 tolerance, so the regenerated golden has to reproduce across every lane.
Four Example-suite cases failed the same check for the same reason (the 25-cell grid cap shrinking the body below one cell) and are handled in #1914 by adding them to casesToSkip, matching the existing 3D_ibm_pitchup_plate entry. This one is a registered suite case at its own resolution, so it needs a real fix rather than a skip and is split out here.
Blocks #1914. That PR adds a check that aborts when an immersed boundary marks no cell anywhere, and this case trips it. The four Example cases that failed the same check are handled in #1914 by dropping their Example registration (they are sub-cell only because of the 25-cell grid cap); this one is a registered suite case at its own grid, so it needs the rescale-and-regenerate described above. #1914 stays red until then, so this should merge first.
Superseded: the fix now lives in #1914 (5d6dd208, "test: give the 2D IBM STL case a body the grid can resolve"), which closes this. Disregard my earlier comment about merge ordering — #1914 is self-contained and no longer waits on this issue.
Activity
test: stop registering four Examples whose IB marks no cell
sbryngelson commentedon Sep 30, 2026
Blocks #1914. That PR adds a check that aborts when an immersed boundary marks no cell anywhere, and this case trips it. The four Example cases that failed the same check are handled in #1914 by dropping their Example registration (they are sub-cell only because of the 25-cell grid cap); this one is a registered suite case at its own grid, so it needs the rescale-and-regenerate described above. #1914 stays red until then, so this should merge first.
test: give the 2D IBM STL case a body the grid can resolve
sbryngelson commentedon Sep 30, 2026
Superseded: the fix now lives in #1914 (
5d6dd208, "test: give the 2D IBM STL case a body the grid can resolve"), which closes this. Disregard my earlier comment about merge ordering — #1914 is self-contained and no longer waits on this issue.