refactor lbpm_morph_pp
This commit is contained in:
parent
27765d78a2
commit
80a77b9c3d
@ -32,19 +32,13 @@ int main(int argc, char **argv)
|
|||||||
//.......................................................................
|
//.......................................................................
|
||||||
// Reading the domain information file
|
// Reading the domain information file
|
||||||
//.......................................................................
|
//.......................................................................
|
||||||
int nprocx, nprocy, nprocz, nx, ny, nz, nspheres;
|
int n, nprocx, nprocy, nprocz, nx, ny, nz;
|
||||||
double Lx, Ly, Lz;
|
|
||||||
int i,j,k,n;
|
|
||||||
int BC=0;
|
|
||||||
// char fluidValue,solidValue;
|
|
||||||
int MAXTIME=1000;
|
|
||||||
int READ_FROM_BLOCK=0;
|
|
||||||
|
|
||||||
char LocalRankString[8];
|
char LocalRankString[8];
|
||||||
char LocalRankFilename[40];
|
char LocalRankFilename[40];
|
||||||
|
char FILENAME[128];
|
||||||
|
|
||||||
string filename;
|
string filename;
|
||||||
double Rcrit_new, SW;
|
double SW,Rcrit_new;
|
||||||
if (argc > 1){
|
if (argc > 1){
|
||||||
filename=argv[1];
|
filename=argv[1];
|
||||||
Rcrit_new=0.f;
|
Rcrit_new=0.f;
|
||||||
@ -61,6 +55,7 @@ int main(int argc, char **argv)
|
|||||||
auto ReadValues = domain_db->getVector<int>( "ReadValues" );
|
auto ReadValues = domain_db->getVector<int>( "ReadValues" );
|
||||||
auto WriteValues = domain_db->getVector<int>( "WriteValues" );
|
auto WriteValues = domain_db->getVector<int>( "WriteValues" );
|
||||||
SW = domain_db->getScalar<double>("Sw");
|
SW = domain_db->getScalar<double>("Sw");
|
||||||
|
auto READFILE = domain_db->getScalar<std::string>( "Filename" );
|
||||||
|
|
||||||
// Generate the NWP configuration
|
// Generate the NWP configuration
|
||||||
//if (rank==0) printf("Initializing morphological distribution with critical radius %f \n", Rcrit);
|
//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);
|
int N = (nx+2)*(ny+2)*(nz+2);
|
||||||
|
|
||||||
std::shared_ptr<Domain> Dm (new Domain(domain_db,comm));
|
std::shared_ptr<Domain> Dm (new Domain(domain_db,comm));
|
||||||
|
std::shared_ptr<Domain> Mask (new Domain(domain_db,comm));
|
||||||
// std::shared_ptr<Domain> Dm (new Domain(nx,ny,nz,rank,nprocx,nprocy,nprocz,Lx,Ly,Lz,BC));
|
// std::shared_ptr<Domain> Dm (new Domain(nx,ny,nz,rank,nprocx,nprocy,nprocz,Lx,Ly,Lz,BC));
|
||||||
for (n=0; n<N; n++) Dm->id[n]=1;
|
for (n=0; n<N; n++) Dm->id[n]=1;
|
||||||
Dm->CommInit();
|
Dm->CommInit();
|
||||||
|
|
||||||
signed char *id;
|
signed char *id;
|
||||||
signed char *id_connected;
|
|
||||||
id = new signed char [N];
|
id = new signed char [N];
|
||||||
id_connected = new signed char [N];
|
Mask->Decomp(READFILE);
|
||||||
sprintf(LocalRankFilename,"ID.%05i",rank);
|
Mask->CommInit();
|
||||||
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);
|
|
||||||
|
|
||||||
nx+=2; ny+=2; nz+=2;
|
nx+=2; ny+=2; nz+=2;
|
||||||
// Generate the signed distance map
|
// Generate the signed distance map
|
||||||
@ -105,6 +94,7 @@ int main(int argc, char **argv)
|
|||||||
for (int j=0; j<ny; j++){
|
for (int j=0; j<ny; j++){
|
||||||
for (int i=0; i<nx; i++){
|
for (int i=0; i<nx; i++){
|
||||||
n=k*nx*ny+j*nx+i;
|
n=k*nx*ny+j*nx+i;
|
||||||
|
id[n] = Mask->id[n];
|
||||||
if (id[n] == 1){
|
if (id[n] == 1){
|
||||||
phase(i,j,k) = 1.0;
|
phase(i,j,k) = 1.0;
|
||||||
}
|
}
|
||||||
@ -120,8 +110,11 @@ int main(int argc, char **argv)
|
|||||||
for (int i=0;i<nx;i++){
|
for (int i=0;i<nx;i++){
|
||||||
int n = k*nx*ny+j*nx+i;
|
int n = k*nx*ny+j*nx+i;
|
||||||
// Initialize the solid phase
|
// Initialize the solid phase
|
||||||
if (id[n] > 0) id_solid(i,j,k) = 1;
|
if (Mask->id[n] > 0){
|
||||||
else id_solid(i,j,k) = 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");
|
FILE *ID = fopen(LocalRankFilename,"wb");
|
||||||
fwrite(id,1,N,ID);
|
fwrite(id,1,N,ID);
|
||||||
fclose(ID);
|
fclose(ID);
|
||||||
|
|
||||||
|
// write the geometry to a single file
|
||||||
|
for (int k=0;k<nz;k++){
|
||||||
|
for (int j=0;j<ny;j++){
|
||||||
|
for (int i=0;i<nx;i++){
|
||||||
|
int n = k*nx*ny+j*nx+i;
|
||||||
|
Mask->id[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);
|
MPI_Barrier(comm);
|
||||||
|
Loading…
Reference in New Issue
Block a user