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:
DBG scale= 5.0 5.0 5.0 translate= -0.05 -0.05 0.0 threshold= 0.5 spc= 20
DBG bbox_old= 0.0 6.4176E-05 0.1 9.9936E-02
DBG bbox_new= -0.25 -0.2497 0.25 0.2497
DBG markers: nonzero=0
model_scale is applied correctly (the raw Circle_IBM.stl is 0.1 across, and 0.1 x 5 = 0.5). The body is simply too small for the grid:
|
|
| domain |
60 x 30 (D = 5, x_domain = +/-6D, y_domain = +/-3D) |
| grid |
m = 159, n = 79 -> dx = dy = 0.375 |
| body |
disc of diameter 0.5, i.e. 1.33 cells across |
model_threshold |
0.5 |
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.
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_markersright afters_apply_ib_patchesins_ibm_setup, on one rank:model_scaleis applied correctly (the rawCircle_IBM.stlis 0.1 across, and 0.1 x 5 = 0.5). The body is simply too small for the grid:D = 5,x_domain = +/-6D,y_domain = +/-3D)m = 159,n = 79->dx = dy = 0.375model_thresholdThe 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_markersis identically zero, no ghost points are built, and the run is plain single-phase flow withib = Tset.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 samecommon_modsinibm_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
@:PROHIBITdisabled and the counter left in, the case runs to completion, reportsnonzero=0, and still matches its committed golden.Suggested fix
Raise
stl_models(1)%model_scalein thecommon_modsofibm_stl()intoolchain/mfc/test/cases.pyso the disc spans roughly ten cells (5 -> about 40, giving a diameter of 4 atdx = 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 existing3D_ibm_pitchup_plateentry. 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.