Skip to content

Commit 28364dd

Browse files
committed
Make sure the current behavior in ghost cells are kept.
1 parent ed397c0 commit 28364dd

File tree

1 file changed

+21
-14
lines changed

1 file changed

+21
-14
lines changed

Tools/C_util/DiffMultiFab/diffmultifab.cpp

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,14 @@ int main(int argc, char* argv[])
6060
if (ngrow > mf2.nGrow()) {
6161
Abort(" ngrow bigger than infile2's ngrow! ");
6262
}
63-
if (mf1.boxArray() != mf2.boxArray()) {
64-
Warning("The two multifabs have different BoxArrays");
65-
AMREX_ALWAYS_ASSERT(mf1.boxArray().minimalBox() == mf2.boxArray().minimalBox());
63+
bool same_boxarray = mf1.boxArray() == mf2.boxArray();
64+
if (! same_boxarray) {
65+
if (ParallelDescriptor::IOProcessor()) {
66+
Warning("The two multifabs have different BoxArrays.");
67+
}
68+
AMREX_ALWAYS_ASSERT(mf1.boxArray().ixType() == mf2.boxArray().ixType() &&
69+
mf1.boxArray().contains(mf2.boxArray()) &&
70+
mf2.boxArray().contains(mf1.boxArray()));
6671
}
6772

6873
const int ncomp = mf1.nComp();
@@ -79,20 +84,22 @@ int main(int argc, char* argv[])
7984
mf2_max[icomp] = mf2.max(icomp,ngrow);
8085
}
8186

82-
MultiFab mfdiff1(mf1.boxArray(), mf1.DistributionMap(), ncomp, ngrow);
83-
84-
MultiFab mfdiff(mf2.boxArray(), mf2.DistributionMap(), ncomp, ngrow);
87+
MultiFab mfdiff;
88+
if (same_boxarray) {
89+
mfdiff.define(mf1.boxArray(), mf2.DistributionMap(), ncomp, ngrow);
8590
#ifdef AMREX_USE_MPI
86-
{
87-
MultiFab tmp(mf1.boxArray(), mf1.DistributionMap(), ncomp, ngrow);
88-
MultiFab::Copy(tmp, mf1, 0, 0, ncomp, ngrow);
89-
mfdiff1.Redistribute(tmp, 0, 0, ncomp, IntVect(ngrow));
90-
}
91+
{
92+
MultiFab tmp(mf1.boxArray(), mf1.DistributionMap(), ncomp, ngrow);
93+
MultiFab::Copy(tmp, mf1, 0, 0, ncomp, ngrow);
94+
mfdiff.Redistribute(tmp, 0, 0, ncomp, IntVect(ngrow));
95+
}
9196
#else
92-
MultiFab::Copy(mfdiff1, mf1, 0, 0, ncomp, ngrow);
97+
MultiFab::Copy(mfdiff, mf1, 0, 0, ncomp, ngrow);
9398
#endif
94-
95-
mfdiff.ParallelCopy(mfdiff1);
99+
} else {
100+
mfdiff.define(mf2.boxArray(), mf2.DistributionMap(), ncomp, ngrow);
101+
mfdiff.ParallelCopy(mf1, 0, 0, ncomp, ngrow, ngrow);
102+
}
96103

97104
MultiFab::Subtract(mfdiff, mf2, 0, 0, ncomp, ngrow);
98105

0 commit comments

Comments
 (0)