Skip to content

A patch that leaves a rank's IB neighbourhood can never re-enter it: s_handoff_ib_ownership forwards only to immediate neighbours #1898

Description

@sbryngelson

Symptom

A body whose extent sweeps more than one rank width is voxelised with a piece missing on the ranks it returns to. It does not fault, and there is no warning — the levelset is simply built from an incomplete patch list on those ranks.

Cause

The IB neighbourhood is ib_neighborhood_radius rank hops wide, but when a patch changes owner, s_handoff_ib_ownership (src/simulation/m_ibm.fpp:1497) passes it only to the new owner's 26 immediate neighbours. Ranks two or three hops away on the new side never receive it, and since a rank that does not track a patch also never forwards it, they can never re-enter the neighbourhood for that patch afterwards.

Harmless for a body that stays within two slabs, which is every moving-IB case in the suite. It bites a body whose tip sweeps more than one rank width — ours sweeps 1.3 chords.

Fix

Run the exchange for ib_neighborhood_radius rounds, each rank forwarding what it received in the previous round, so the patch propagates the full width of the neighbourhood.

Related check

After fixing this (together with #1895#1897), a sphere straddling subdomain splits in all three directions gives the same drag on 8 and 64 CPU ranks to six digits.

Part of the moving-IB-across-ranks set filed today.

Found with Claude Code.

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