Skip to content

Commit

Permalink
fix(SWFFT/SWFFT_poisson)
Browse files Browse the repository at this point in the history
- rank-mapping didn't have to be modified from fortran to C order
- already done so in SWFFT/Simple.
  • Loading branch information
YL-codehub committed Aug 27, 2024
1 parent d7a0662 commit fab3b9a
Showing 1 changed file with 2 additions and 24 deletions.
26 changes: 2 additions & 24 deletions ExampleCodes/SWFFT/SWFFT_poisson/swfft_solver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,39 +44,17 @@ swfft_solver(MultiFab& rhs, MultiFab& soln, Geometry& geom, int verbose)
amrex::Error("NBOXES NOT COMPUTED CORRECTLY");
amrex::Print() << "Number of boxes:\t" << nboxes << std::endl;

Vector<int> rank_mapping;
rank_mapping.resize(nboxes);

DistributionMapping dmap = rhs.DistributionMap();

for (int ib = 0; ib < nboxes; ++ib)
{
int i = ba[ib].smallEnd(0) / nx;
int j = ba[ib].smallEnd(1) / ny;
int k = ba[ib].smallEnd(2) / nz;

// This would be the "correct" local index if the data wasn't being transformed
// int local_index = k*nbx*nby + j*nbx + i;

// This is what we pass to dfft to compensate for the Fortran ordering
// of amrex data in MultiFabs.
int local_index = i*nby*nbz + j*nbz + k;

rank_mapping[local_index] = dmap[ib];
if (verbose)
amrex::Print() << "LOADING RANK NUMBER " << dmap[ib] << " FOR GRID NUMBER " << ib
<< " WHICH IS LOCAL NUMBER " << local_index << std::endl;
}


Real h = geom.CellSize(0);
Real hsq = h*h;

Real start_time = amrex::second();

// Assume for now that nx = ny = nz

int Ndims[3] = { nbz, nby, nbx };
int n[3] = {domain.length(2), domain.length(1), domain.length(0)};
Vector<int> rank_mapping = rhs.DistributionMap().ProcessorMap(); // copy the ranks' ordering
hacc::Distribution d(MPI_COMM_WORLD,n,Ndims,&rank_mapping[0]);
hacc::Dfft dfft(d);

Expand Down

0 comments on commit fab3b9a

Please sign in to comment.