Skip to content

2D -> IBM -> STL tests nothing: the model is 1.33 cells across and marks no cells #1928

Description

@sbryngelson

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions