//************************************************************************* // Lattice Boltzmann Simulator for Single Phase Flow in Porous Media // James E. McCLure //************************************************************************* #include // Initialize MPI Utilities::startup( argc, argv ); Utilities::MPI comm( MPI_COMM_WORLD ); int rank = comm.getRank(); int nprocs = comm.getSize(); int check; #include #include #include "common/ScaLBL.h" #include "common/MPI.h" using namespace std; //*************************************************************************************** int main(int argc, char **argv) { //***************************************** // ***** MPI STUFF **************** //***************************************** // Initialize MPI Utilities::startup( argc, argv ); Utilities::MPI comm( MPI_COMM_WORLD ); int rank = comm.getRank(); int nprocs = comm.getSize(); int check; { // parallel domain size (# of sub-domains) int nprocx,nprocy,nprocz; int iproc,jproc,kproc; if (rank == 0){ printf("********************************************************\n"); printf("Running Color Model: TestColor \n"); printf("********************************************************\n"); } // BGK Model parameters string FILENAME; unsigned int nBlocks, nthreads; int timestepMax, interval; double Fx,Fy,Fz,tol; // Domain variables double Lx,Ly,Lz; int nspheres; int Nx,Ny,Nz; int i,j,k,n; int dim = 3; Nx = Ny = Nz = 32; Lx = Ly = Lz = 1.0; //if (rank == 0) printf("dim=%d\n",dim); int timestep = 0; int timesteps = 100; int centralNode = 2; double iVol_global = 1.0/Nx/Ny/Nz/nprocx/nprocy/nprocz; int BoundaryCondition=0; Domain Dm(Nx,Ny,Nz,rank,nprocx,nprocy,nprocz,Lx,Ly,Lz,BoundaryCondition); Nx += 2; Ny += 2; Nz += 2; int N = Nx*Ny*Nz; int Np=0; // number of local pore nodes double *PhaseLabel; PhaseLabel = new double[N]; //....................................................................... for (k=0;k 0){ int idx = Map(i,j,k); CX=COLORGRAD[idx]; CY=COLORGRAD[Np+idx]; CZ=COLORGRAD[2*Np+idx]; double error=sqrt((CX-1.0)*(CX-1.0)+(CY-2.0)*(CY-2.0)+ (CZ-3.0)*(CZ-3.0)); if (error > 1e-8) printf("i,j,k=%i,%i,%i: Color gradient=%f,%f,%f \n",i,j,k,CX,CY,CZ); } } } } } // **************************************************** comm.barrier(); Utilities::shutdown(); // **************************************************** return check; }