// Sequential blob analysis // Reads parallel simulation data and performs connectivity analysis // and averaging on a blob-by-blob basis // James E. McClure 2014 #include #include #include "pmmc.h" #include "Domain.h" using namespace std; inline void ReadFromAllRanks(){ } int main(int argc, char **argv) { //....................................................................... int nprocx,nprocy,nprocz,nprocs; int Nx, Ny, Nz; int nx,ny,nz; int nspheres; double Lx,Ly,Lz; //....................................................................... int i,j,k; //....................................................................... // Reading the domain information file //....................................................................... ifstream domain("Domain.in"); domain >> nprocx; domain >> nprocy; domain >> nprocz; domain >> nx; domain >> ny; domain >> nz; domain >> nspheres; domain >> Lx; domain >> Ly; domain >> Lz; //....................................................................... nprocs = nprocx*nproy*nprocz; printf("Number of MPI ranks: %i \n", nprocs); Nx = (nx-2)*nprocx; Ny = (ny-2)*nprocy; Nz = (nz-2)*nprocz; printf("Full domain size: %i x %i x %i \n", Nx,Ny,Nz); // Filenames used char LocalRankString[8]; char LocalRankFilename[40]; char LocalRestartFile[40]; char BaseFilename[20]; char tmpstr[10]; sprintf(LocalRankString,"%05d",rank); sprintf(BaseFilename,"%s","Phase"); sprintf(LocalRankFilename,"%s%s",BaseFilename,LocalRankString); IntArray LocalBlobID(Nx,Ny,Nz); DoubleArray Phase(Nx,Ny,Nz); DoubleArray SignDist(Nx,Ny,Nz); DoubleArray Press(Nx,Ny,Nz); DoubleArray Vel_x(Nx,Ny,Nz); // Velocity DoubleArray Vel_y(Nx,Ny,Nz); DoubleArray Vel_z(Nx,Ny,Nz); DoubleArray MeanCurvature(Nx,Ny,Nz); DoubleArray GaussCurvature(Nx,Ny,Nz); DoubleArray SignDist_x(Nx,Ny,Nz); // Gradient of the signed distance DoubleArray SignDist_y(Nx,Ny,Nz); DoubleArray SignDist_z(Nx,Ny,Nz); DoubleArray Phase_x(Nx,Ny,Nz); // Gradient of the phase indicator field DoubleArray Phase_y(Nx,Ny,Nz); DoubleArray Phase_z(Nx,Ny,Nz); double *Temp; Temp = new double [3*nx*ny*nz]; // read the files and populate main arrays for (int proc=0; proc