Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix 2D Silo PBCs #20194

Open
wants to merge 1 commit into
base: 3.4RC
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 13 additions & 5 deletions src/databases/Silo/avtSiloFileFormat.C
Original file line number Diff line number Diff line change
Expand Up @@ -5695,6 +5695,9 @@ static void copy_mmadj_neighbor_entry(DBmultimeshadj *dst, int dstidx,
// pbcBndList and pbcDomList parallel array arguments).
//
// Mark C. Miller, Thu Oct 24 19:12:18 PDT 2024
//
// Mark C. Miller, Fri Jan 17 18:25:55 PST 2025
// Adjust to handle 2D as well as 3D meshes.
// ****************************************************************************
static bool
process_pbcs_for_one_domain(int dom, int const nBndEntries,
Expand Down Expand Up @@ -5746,11 +5749,16 @@ process_pbcs_for_one_domain(int dom, int const nBndEntries,

new_mmadj->nneighbors[dom] = ncopied;

// These consistency checks assume a rectangular arrangement of domains.
// 7 is for domains on extreme corners; 11 for domains on edges, 17
// for domains on faces and 26 for wholly internal domains
return ncopied == 7 || ncopied == 11 ||
ncopied == 17 || ncopied == 26;
// The consistency checks here assume a rectangular arrangement of domains
// in 2D or 3D. A removal of PB domains will wind up copying only specific
// numbers of domains. For 2D, there are 3 cases for domains on the extreme
// corner, edge or wholly internal to the mesh. For 3D, there are 4 cases
// for domains on the extreme corner, edge, face or wholly internal.
// The the 2D cases, ncopied can assume only the values 3, 5 and 8.
// For the 3D cases, ncopied can assume only the values 7, 11, 17 and 26.
return
ncopied == 3 || ncopied == 5 || ncopied == 8 ||
ncopied == 7 || ncopied == 11 || ncopied == 17 || ncopied == 26;
}

// ****************************************************************************
Expand Down