This is a very simple code designed to profile communication patterns 
associated with the MultiFabFillBoundary operation, which exchanges ghost cells
between the FABs in a single multifab.

All this code does, for a certain set of parameters, is to 
 * define a BoxArray with N x N x N 64^3 grids composing the domain, where N**3 = Nprocs
 * create a MultiFab which has "nGhost" ghost cells and "nComp" components
 * fill the data with the value 1.0 everywhere
 * exchange "nGhost" ghost cells of "nComp" components of the data in the FABs in this MultiFab
 * exchange either the faces only ("cross" = true) or all 26 nearest neighbor exchanges ("cross" = false")

We have a separate call for each combination:
 
 * nComp = 1, 4, 20
 * nGhost = 1, 2, 3, 4
 * cross = true or false

****************************************************************************************

In order to build and run this code:

1) Edit the GNUmakefile to define the C++ and Fortran compilers you would like to use.
The defaults there are g++ and gfortran.

2) Type "make".  This will create an executable with a name like

     fbtest3d.Linux.g++.gfortran.MPI.ex

which indicates this is a 3D code built with the g++ and gfortran compilers
and built with MPI.  (If you want to build a serial version, simply set
USE_MPI = FALSE in the GNUmakefile and re-make.)

3) To run the code in parallel, simply type

$ <mpi-run-command> -n NPROCS ./fbtest3d.Linux.g++.gfortran.MPI.ex

NOTE:  For simplicity we define that there is one 64^3 grid per MPI process and that these
grids form a cubic domain.  Thus we require that NPROCS be a perfect cube, such as 8, 27, 64, etc.
Note that this restriction is purely for simplicity of input. 

****************************************************************************************

To run on Hopper with IPM, set USE_IPM = TRUE in the GNUmakefile.
You may need to load the ipm module (and possibly others):

module load ipm

Then recompile the code.  This will create an executable file named

fbtest3d.Linux.g++.gfortran.MPI.IPM.ex

There is an example batch script named qsub.ipm.bat in this directory,
You will need to set a valid account number in order to run the example.

****************************************************************************************

Suggested Runs for O(100), O(1000), O(10K), O(100K):

1) 5**3: NPROCS = 125

2) 10**3: NPROCS = 1000

3) 22**3: NPROCS = 10648

4) 48**3: NPROCS = 110592



