diff --git a/tests/lbpm_morph_pp.cpp b/tests/lbpm_morph_pp.cpp index 4705482b..85ca69a5 100644 --- a/tests/lbpm_morph_pp.cpp +++ b/tests/lbpm_morph_pp.cpp @@ -32,19 +32,13 @@ int main(int argc, char **argv) //....................................................................... // Reading the domain information file //....................................................................... - int nprocx, nprocy, nprocz, nx, ny, nz, nspheres; - double Lx, Ly, Lz; - int i,j,k,n; - int BC=0; - // char fluidValue,solidValue; - int MAXTIME=1000; - int READ_FROM_BLOCK=0; - + int n, nprocx, nprocy, nprocz, nx, ny, nz; char LocalRankString[8]; char LocalRankFilename[40]; + char FILENAME[128]; string filename; - double Rcrit_new, SW; + double SW,Rcrit_new; if (argc > 1){ filename=argv[1]; Rcrit_new=0.f; @@ -61,6 +55,7 @@ int main(int argc, char **argv) auto ReadValues = domain_db->getVector( "ReadValues" ); auto WriteValues = domain_db->getVector( "WriteValues" ); SW = domain_db->getScalar("Sw"); + auto READFILE = domain_db->getScalar( "Filename" ); // Generate the NWP configuration //if (rank==0) printf("Initializing morphological distribution with critical radius %f \n", Rcrit); @@ -77,21 +72,15 @@ int main(int argc, char **argv) int N = (nx+2)*(ny+2)*(nz+2); std::shared_ptr Dm (new Domain(domain_db,comm)); + std::shared_ptr Mask (new Domain(domain_db,comm)); // std::shared_ptr Dm (new Domain(nx,ny,nz,rank,nprocx,nprocy,nprocz,Lx,Ly,Lz,BC)); for (n=0; nid[n]=1; Dm->CommInit(); signed char *id; - signed char *id_connected; id = new signed char [N]; - id_connected = new signed char [N]; - sprintf(LocalRankFilename,"ID.%05i",rank); - size_t readID; - FILE *IDFILE = fopen(LocalRankFilename,"rb"); - if (IDFILE==NULL) ERROR("Error opening file: ID.xxxxx"); - readID=fread(id,1,N,IDFILE); - if (readID != size_t(N)) printf("lbpm_morph_pp: Error reading ID (rank=%i) \n",rank); - fclose(IDFILE); + Mask->Decomp(READFILE); + Mask->CommInit(); nx+=2; ny+=2; nz+=2; // Generate the signed distance map @@ -105,6 +94,7 @@ int main(int argc, char **argv) for (int j=0; jid[n]; if (id[n] == 1){ phase(i,j,k) = 1.0; } @@ -120,8 +110,11 @@ int main(int argc, char **argv) for (int i=0;i 0) id_solid(i,j,k) = 1; - else id_solid(i,j,k) = 0; + if (Mask->id[n] > 0){ + id_solid(i,j,k) = 1; + } + else + id_solid(i,j,k) = 0; } } } @@ -237,6 +230,22 @@ int main(int argc, char **argv) FILE *ID = fopen(LocalRankFilename,"wb"); fwrite(id,1,N,ID); fclose(ID); + + // write the geometry to a single file + for (int k=0;kid[n] = id[n]; + } + } + } + MPI_Barrier(comm); + + sprintf(FILENAME,READFILE.c_str()); + sprintf(FILENAME+strlen(FILENAME),".morphdrain.raw"); + if (rank==0) printf("Writing file to: %s \n", FILENAME); + Mask->AggregateLabels(FILENAME); } MPI_Barrier(comm);