diff --git a/tests/lbpm_morphopen_pp.cpp b/tests/lbpm_morphopen_pp.cpp index d38c3e82..4502d6ec 100644 --- a/tests/lbpm_morphopen_pp.cpp +++ b/tests/lbpm_morphopen_pp.cpp @@ -54,15 +54,6 @@ int main(int argc, char **argv) MPI_Comm_rank(comm,&rank); MPI_Comm_size(comm,&nprocs); { - - //double Rcrit_new=1.f; // Hard-coded 'Rcrit' to avoid any calculations under resolutions. - double Rcrit_new=0.f; - double SW=strtod(argv[1],NULL); - if (rank==0){ - //printf("Critical radius %f (voxels)\n",Rcrit); - printf("Target saturation %f \n",SW); - } - //....................................................................... // Reading the domain information file //....................................................................... @@ -83,6 +74,7 @@ int main(int argc, char **argv) filename=argv[1]; Rcrit_new=0.f; SW=strtod(argv[2],NULL); + printf("Target saturation %f \n",SW); } else ERROR("No input database provided\n"); // read the input database @@ -109,6 +101,9 @@ int main(int argc, char **argv) // 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(); + + char *id; + id = new char [N]; DoubleArray SignDist(nx,ny,nz); // Read the signed distance from file @@ -147,10 +142,10 @@ int main(int argc, char **argv) if (rank==0) printf("Maximum pore size: %f \n",maxdistGlobal);\ - Dm.CommInit(); - int iproc = Dm.iproc(); - int jproc = Dm.jproc(); - int kproc = Dm.kproc(); + Dm->CommInit(); + int iproc = Dm->iproc(); + int jproc = Dm->jproc(); + int kproc = Dm->kproc(); // Generate the NWP configuration //if (rank==0) printf("Initializing morphological distribution with critical radius %f \n", Rcrit); @@ -165,44 +160,44 @@ int main(int argc, char **argv) char *recvID_xy, *recvID_yz, *recvID_xz, *recvID_Xy, *recvID_Yz, *recvID_xZ; char *recvID_xY, *recvID_yZ, *recvID_Xz, *recvID_XY, *recvID_YZ, *recvID_XZ; // send buffers - sendID_x = new char [Dm.sendCount_x]; - sendID_y = new char [Dm.sendCount_y]; - sendID_z = new char [Dm.sendCount_z]; - sendID_X = new char [Dm.sendCount_X]; - sendID_Y = new char [Dm.sendCount_Y]; - sendID_Z = new char [Dm.sendCount_Z]; - sendID_xy = new char [Dm.sendCount_xy]; - sendID_yz = new char [Dm.sendCount_yz]; - sendID_xz = new char [Dm.sendCount_xz]; - sendID_Xy = new char [Dm.sendCount_Xy]; - sendID_Yz = new char [Dm.sendCount_Yz]; - sendID_xZ = new char [Dm.sendCount_xZ]; - sendID_xY = new char [Dm.sendCount_xY]; - sendID_yZ = new char [Dm.sendCount_yZ]; - sendID_Xz = new char [Dm.sendCount_Xz]; - sendID_XY = new char [Dm.sendCount_XY]; - sendID_YZ = new char [Dm.sendCount_YZ]; - sendID_XZ = new char [Dm.sendCount_XZ]; + sendID_x = new char [Dm->sendCount_x]; + sendID_y = new char [Dm->sendCount_y]; + sendID_z = new char [Dm->sendCount_z]; + sendID_X = new char [Dm->sendCount_X]; + sendID_Y = new char [Dm->sendCount_Y]; + sendID_Z = new char [Dm->sendCount_Z]; + sendID_xy = new char [Dm->sendCount_xy]; + sendID_yz = new char [Dm->sendCount_yz]; + sendID_xz = new char [Dm->sendCount_xz]; + sendID_Xy = new char [Dm->sendCount_Xy]; + sendID_Yz = new char [Dm->sendCount_Yz]; + sendID_xZ = new char [Dm->sendCount_xZ]; + sendID_xY = new char [Dm->sendCount_xY]; + sendID_yZ = new char [Dm->sendCount_yZ]; + sendID_Xz = new char [Dm->sendCount_Xz]; + sendID_XY = new char [Dm->sendCount_XY]; + sendID_YZ = new char [Dm->sendCount_YZ]; + sendID_XZ = new char [Dm->sendCount_XZ]; //...................................................................................... // recv buffers - recvID_x = new char [Dm.recvCount_x]; - recvID_y = new char [Dm.recvCount_y]; - recvID_z = new char [Dm.recvCount_z]; - recvID_X = new char [Dm.recvCount_X]; - recvID_Y = new char [Dm.recvCount_Y]; - recvID_Z = new char [Dm.recvCount_Z]; - recvID_xy = new char [Dm.recvCount_xy]; - recvID_yz = new char [Dm.recvCount_yz]; - recvID_xz = new char [Dm.recvCount_xz]; - recvID_Xy = new char [Dm.recvCount_Xy]; - recvID_xZ = new char [Dm.recvCount_xZ]; - recvID_xY = new char [Dm.recvCount_xY]; - recvID_yZ = new char [Dm.recvCount_yZ]; - recvID_Yz = new char [Dm.recvCount_Yz]; - recvID_Xz = new char [Dm.recvCount_Xz]; - recvID_XY = new char [Dm.recvCount_XY]; - recvID_YZ = new char [Dm.recvCount_YZ]; - recvID_XZ = new char [Dm.recvCount_XZ]; + recvID_x = new char [Dm->recvCount_x]; + recvID_y = new char [Dm->recvCount_y]; + recvID_z = new char [Dm->recvCount_z]; + recvID_X = new char [Dm->recvCount_X]; + recvID_Y = new char [Dm->recvCount_Y]; + recvID_Z = new char [Dm->recvCount_Z]; + recvID_xy = new char [Dm->recvCount_xy]; + recvID_yz = new char [Dm->recvCount_yz]; + recvID_xz = new char [Dm->recvCount_xz]; + recvID_Xy = new char [Dm->recvCount_Xy]; + recvID_xZ = new char [Dm->recvCount_xZ]; + recvID_xY = new char [Dm->recvCount_xY]; + recvID_yZ = new char [Dm->recvCount_yZ]; + recvID_Yz = new char [Dm->recvCount_Yz]; + recvID_Xz = new char [Dm->recvCount_Xz]; + recvID_XY = new char [Dm->recvCount_XY]; + recvID_YZ = new char [Dm->recvCount_YZ]; + recvID_XZ = new char [Dm->recvCount_XZ]; //...................................................................................... int sendtag,recvtag; sendtag = recvtag = 7; @@ -273,80 +268,80 @@ int main(int argc, char **argv) // Pack and send the updated ID values - PackID(Dm.sendList_x, Dm.sendCount_x ,sendID_x, id); - PackID(Dm.sendList_X, Dm.sendCount_X ,sendID_X, id); - PackID(Dm.sendList_y, Dm.sendCount_y ,sendID_y, id); - PackID(Dm.sendList_Y, Dm.sendCount_Y ,sendID_Y, id); - PackID(Dm.sendList_z, Dm.sendCount_z ,sendID_z, id); - PackID(Dm.sendList_Z, Dm.sendCount_Z ,sendID_Z, id); - PackID(Dm.sendList_xy, Dm.sendCount_xy ,sendID_xy, id); - PackID(Dm.sendList_Xy, Dm.sendCount_Xy ,sendID_Xy, id); - PackID(Dm.sendList_xY, Dm.sendCount_xY ,sendID_xY, id); - PackID(Dm.sendList_XY, Dm.sendCount_XY ,sendID_XY, id); - PackID(Dm.sendList_xz, Dm.sendCount_xz ,sendID_xz, id); - PackID(Dm.sendList_Xz, Dm.sendCount_Xz ,sendID_Xz, id); - PackID(Dm.sendList_xZ, Dm.sendCount_xZ ,sendID_xZ, id); - PackID(Dm.sendList_XZ, Dm.sendCount_XZ ,sendID_XZ, id); - PackID(Dm.sendList_yz, Dm.sendCount_yz ,sendID_yz, id); - PackID(Dm.sendList_Yz, Dm.sendCount_Yz ,sendID_Yz, id); - PackID(Dm.sendList_yZ, Dm.sendCount_yZ ,sendID_yZ, id); - PackID(Dm.sendList_YZ, Dm.sendCount_YZ ,sendID_YZ, id); + PackID(Dm->sendList_x, Dm->sendCount_x ,sendID_x, id); + PackID(Dm->sendList_X, Dm->sendCount_X ,sendID_X, id); + PackID(Dm->sendList_y, Dm->sendCount_y ,sendID_y, id); + PackID(Dm->sendList_Y, Dm->sendCount_Y ,sendID_Y, id); + PackID(Dm->sendList_z, Dm->sendCount_z ,sendID_z, id); + PackID(Dm->sendList_Z, Dm->sendCount_Z ,sendID_Z, id); + PackID(Dm->sendList_xy, Dm->sendCount_xy ,sendID_xy, id); + PackID(Dm->sendList_Xy, Dm->sendCount_Xy ,sendID_Xy, id); + PackID(Dm->sendList_xY, Dm->sendCount_xY ,sendID_xY, id); + PackID(Dm->sendList_XY, Dm->sendCount_XY ,sendID_XY, id); + PackID(Dm->sendList_xz, Dm->sendCount_xz ,sendID_xz, id); + PackID(Dm->sendList_Xz, Dm->sendCount_Xz ,sendID_Xz, id); + PackID(Dm->sendList_xZ, Dm->sendCount_xZ ,sendID_xZ, id); + PackID(Dm->sendList_XZ, Dm->sendCount_XZ ,sendID_XZ, id); + PackID(Dm->sendList_yz, Dm->sendCount_yz ,sendID_yz, id); + PackID(Dm->sendList_Yz, Dm->sendCount_Yz ,sendID_Yz, id); + PackID(Dm->sendList_yZ, Dm->sendCount_yZ ,sendID_yZ, id); + PackID(Dm->sendList_YZ, Dm->sendCount_YZ ,sendID_YZ, id); //...................................................................................... - MPI_Sendrecv(sendID_x,Dm.sendCount_x,MPI_CHAR,Dm.rank_x(),sendtag, - recvID_X,Dm.recvCount_X,MPI_CHAR,Dm.rank_X(),recvtag,comm,MPI_STATUS_IGNORE); - MPI_Sendrecv(sendID_X,Dm.sendCount_X,MPI_CHAR,Dm.rank_X(),sendtag, - recvID_x,Dm.recvCount_x,MPI_CHAR,Dm.rank_x(),recvtag,comm,MPI_STATUS_IGNORE); - MPI_Sendrecv(sendID_y,Dm.sendCount_y,MPI_CHAR,Dm.rank_y(),sendtag, - recvID_Y,Dm.recvCount_Y,MPI_CHAR,Dm.rank_Y(),recvtag,comm,MPI_STATUS_IGNORE); - MPI_Sendrecv(sendID_Y,Dm.sendCount_Y,MPI_CHAR,Dm.rank_Y(),sendtag, - recvID_y,Dm.recvCount_y,MPI_CHAR,Dm.rank_y(),recvtag,comm,MPI_STATUS_IGNORE); - MPI_Sendrecv(sendID_z,Dm.sendCount_z,MPI_CHAR,Dm.rank_z(),sendtag, - recvID_Z,Dm.recvCount_Z,MPI_CHAR,Dm.rank_Z(),recvtag,comm,MPI_STATUS_IGNORE); - MPI_Sendrecv(sendID_Z,Dm.sendCount_Z,MPI_CHAR,Dm.rank_Z(),sendtag, - recvID_z,Dm.recvCount_z,MPI_CHAR,Dm.rank_z(),recvtag,comm,MPI_STATUS_IGNORE); - MPI_Sendrecv(sendID_xy,Dm.sendCount_xy,MPI_CHAR,Dm.rank_xy(),sendtag, - recvID_XY,Dm.recvCount_XY,MPI_CHAR,Dm.rank_XY(),recvtag,comm,MPI_STATUS_IGNORE); - MPI_Sendrecv(sendID_XY,Dm.sendCount_XY,MPI_CHAR,Dm.rank_XY(),sendtag, - recvID_xy,Dm.recvCount_xy,MPI_CHAR,Dm.rank_xy(),recvtag,comm,MPI_STATUS_IGNORE); - MPI_Sendrecv(sendID_Xy,Dm.sendCount_Xy,MPI_CHAR,Dm.rank_Xy(),sendtag, - recvID_xY,Dm.recvCount_xY,MPI_CHAR,Dm.rank_xY(),recvtag,comm,MPI_STATUS_IGNORE); - MPI_Sendrecv(sendID_xY,Dm.sendCount_xY,MPI_CHAR,Dm.rank_xY(),sendtag, - recvID_Xy,Dm.recvCount_Xy,MPI_CHAR,Dm.rank_Xy(),recvtag,comm,MPI_STATUS_IGNORE); - MPI_Sendrecv(sendID_xz,Dm.sendCount_xz,MPI_CHAR,Dm.rank_xz(),sendtag, - recvID_XZ,Dm.recvCount_XZ,MPI_CHAR,Dm.rank_XZ(),recvtag,comm,MPI_STATUS_IGNORE); - MPI_Sendrecv(sendID_XZ,Dm.sendCount_XZ,MPI_CHAR,Dm.rank_XZ(),sendtag, - recvID_xz,Dm.recvCount_xz,MPI_CHAR,Dm.rank_xz(),recvtag,comm,MPI_STATUS_IGNORE); - MPI_Sendrecv(sendID_Xz,Dm.sendCount_Xz,MPI_CHAR,Dm.rank_Xz(),sendtag, - recvID_xZ,Dm.recvCount_xZ,MPI_CHAR,Dm.rank_xZ(),recvtag,comm,MPI_STATUS_IGNORE); - MPI_Sendrecv(sendID_xZ,Dm.sendCount_xZ,MPI_CHAR,Dm.rank_xZ(),sendtag, - recvID_Xz,Dm.recvCount_Xz,MPI_CHAR,Dm.rank_Xz(),recvtag,comm,MPI_STATUS_IGNORE); - MPI_Sendrecv(sendID_yz,Dm.sendCount_yz,MPI_CHAR,Dm.rank_yz(),sendtag, - recvID_YZ,Dm.recvCount_YZ,MPI_CHAR,Dm.rank_YZ(),recvtag,comm,MPI_STATUS_IGNORE); - MPI_Sendrecv(sendID_YZ,Dm.sendCount_YZ,MPI_CHAR,Dm.rank_YZ(),sendtag, - recvID_yz,Dm.recvCount_yz,MPI_CHAR,Dm.rank_yz(),recvtag,comm,MPI_STATUS_IGNORE); - MPI_Sendrecv(sendID_Yz,Dm.sendCount_Yz,MPI_CHAR,Dm.rank_Yz(),sendtag, - recvID_yZ,Dm.recvCount_yZ,MPI_CHAR,Dm.rank_yZ(),recvtag,comm,MPI_STATUS_IGNORE); - MPI_Sendrecv(sendID_yZ,Dm.sendCount_yZ,MPI_CHAR,Dm.rank_yZ(),sendtag, - recvID_Yz,Dm.recvCount_Yz,MPI_CHAR,Dm.rank_Yz(),recvtag,comm,MPI_STATUS_IGNORE); + MPI_Sendrecv(sendID_x,Dm->sendCount_x,MPI_CHAR,Dm->rank_x(),sendtag, + recvID_X,Dm->recvCount_X,MPI_CHAR,Dm->rank_X(),recvtag,comm,MPI_STATUS_IGNORE); + MPI_Sendrecv(sendID_X,Dm->sendCount_X,MPI_CHAR,Dm->rank_X(),sendtag, + recvID_x,Dm->recvCount_x,MPI_CHAR,Dm->rank_x(),recvtag,comm,MPI_STATUS_IGNORE); + MPI_Sendrecv(sendID_y,Dm->sendCount_y,MPI_CHAR,Dm->rank_y(),sendtag, + recvID_Y,Dm->recvCount_Y,MPI_CHAR,Dm->rank_Y(),recvtag,comm,MPI_STATUS_IGNORE); + MPI_Sendrecv(sendID_Y,Dm->sendCount_Y,MPI_CHAR,Dm->rank_Y(),sendtag, + recvID_y,Dm->recvCount_y,MPI_CHAR,Dm->rank_y(),recvtag,comm,MPI_STATUS_IGNORE); + MPI_Sendrecv(sendID_z,Dm->sendCount_z,MPI_CHAR,Dm->rank_z(),sendtag, + recvID_Z,Dm->recvCount_Z,MPI_CHAR,Dm->rank_Z(),recvtag,comm,MPI_STATUS_IGNORE); + MPI_Sendrecv(sendID_Z,Dm->sendCount_Z,MPI_CHAR,Dm->rank_Z(),sendtag, + recvID_z,Dm->recvCount_z,MPI_CHAR,Dm->rank_z(),recvtag,comm,MPI_STATUS_IGNORE); + MPI_Sendrecv(sendID_xy,Dm->sendCount_xy,MPI_CHAR,Dm->rank_xy(),sendtag, + recvID_XY,Dm->recvCount_XY,MPI_CHAR,Dm->rank_XY(),recvtag,comm,MPI_STATUS_IGNORE); + MPI_Sendrecv(sendID_XY,Dm->sendCount_XY,MPI_CHAR,Dm->rank_XY(),sendtag, + recvID_xy,Dm->recvCount_xy,MPI_CHAR,Dm->rank_xy(),recvtag,comm,MPI_STATUS_IGNORE); + MPI_Sendrecv(sendID_Xy,Dm->sendCount_Xy,MPI_CHAR,Dm->rank_Xy(),sendtag, + recvID_xY,Dm->recvCount_xY,MPI_CHAR,Dm->rank_xY(),recvtag,comm,MPI_STATUS_IGNORE); + MPI_Sendrecv(sendID_xY,Dm->sendCount_xY,MPI_CHAR,Dm->rank_xY(),sendtag, + recvID_Xy,Dm->recvCount_Xy,MPI_CHAR,Dm->rank_Xy(),recvtag,comm,MPI_STATUS_IGNORE); + MPI_Sendrecv(sendID_xz,Dm->sendCount_xz,MPI_CHAR,Dm->rank_xz(),sendtag, + recvID_XZ,Dm->recvCount_XZ,MPI_CHAR,Dm->rank_XZ(),recvtag,comm,MPI_STATUS_IGNORE); + MPI_Sendrecv(sendID_XZ,Dm->sendCount_XZ,MPI_CHAR,Dm->rank_XZ(),sendtag, + recvID_xz,Dm->recvCount_xz,MPI_CHAR,Dm->rank_xz(),recvtag,comm,MPI_STATUS_IGNORE); + MPI_Sendrecv(sendID_Xz,Dm->sendCount_Xz,MPI_CHAR,Dm->rank_Xz(),sendtag, + recvID_xZ,Dm->recvCount_xZ,MPI_CHAR,Dm->rank_xZ(),recvtag,comm,MPI_STATUS_IGNORE); + MPI_Sendrecv(sendID_xZ,Dm->sendCount_xZ,MPI_CHAR,Dm->rank_xZ(),sendtag, + recvID_Xz,Dm->recvCount_Xz,MPI_CHAR,Dm->rank_Xz(),recvtag,comm,MPI_STATUS_IGNORE); + MPI_Sendrecv(sendID_yz,Dm->sendCount_yz,MPI_CHAR,Dm->rank_yz(),sendtag, + recvID_YZ,Dm->recvCount_YZ,MPI_CHAR,Dm->rank_YZ(),recvtag,comm,MPI_STATUS_IGNORE); + MPI_Sendrecv(sendID_YZ,Dm->sendCount_YZ,MPI_CHAR,Dm->rank_YZ(),sendtag, + recvID_yz,Dm->recvCount_yz,MPI_CHAR,Dm->rank_yz(),recvtag,comm,MPI_STATUS_IGNORE); + MPI_Sendrecv(sendID_Yz,Dm->sendCount_Yz,MPI_CHAR,Dm->rank_Yz(),sendtag, + recvID_yZ,Dm->recvCount_yZ,MPI_CHAR,Dm->rank_yZ(),recvtag,comm,MPI_STATUS_IGNORE); + MPI_Sendrecv(sendID_yZ,Dm->sendCount_yZ,MPI_CHAR,Dm->rank_yZ(),sendtag, + recvID_Yz,Dm->recvCount_Yz,MPI_CHAR,Dm->rank_Yz(),recvtag,comm,MPI_STATUS_IGNORE); //...................................................................................... - UnpackID(Dm.recvList_x, Dm.recvCount_x ,recvID_x, id); - UnpackID(Dm.recvList_X, Dm.recvCount_X ,recvID_X, id); - UnpackID(Dm.recvList_y, Dm.recvCount_y ,recvID_y, id); - UnpackID(Dm.recvList_Y, Dm.recvCount_Y ,recvID_Y, id); - UnpackID(Dm.recvList_z, Dm.recvCount_z ,recvID_z, id); - UnpackID(Dm.recvList_Z, Dm.recvCount_Z ,recvID_Z, id); - UnpackID(Dm.recvList_xy, Dm.recvCount_xy ,recvID_xy, id); - UnpackID(Dm.recvList_Xy, Dm.recvCount_Xy ,recvID_Xy, id); - UnpackID(Dm.recvList_xY, Dm.recvCount_xY ,recvID_xY, id); - UnpackID(Dm.recvList_XY, Dm.recvCount_XY ,recvID_XY, id); - UnpackID(Dm.recvList_xz, Dm.recvCount_xz ,recvID_xz, id); - UnpackID(Dm.recvList_Xz, Dm.recvCount_Xz ,recvID_Xz, id); - UnpackID(Dm.recvList_xZ, Dm.recvCount_xZ ,recvID_xZ, id); - UnpackID(Dm.recvList_XZ, Dm.recvCount_XZ ,recvID_XZ, id); - UnpackID(Dm.recvList_yz, Dm.recvCount_yz ,recvID_yz, id); - UnpackID(Dm.recvList_Yz, Dm.recvCount_Yz ,recvID_Yz, id); - UnpackID(Dm.recvList_yZ, Dm.recvCount_yZ ,recvID_yZ, id); - UnpackID(Dm.recvList_YZ, Dm.recvCount_YZ ,recvID_YZ, id); + UnpackID(Dm->recvList_x, Dm->recvCount_x() ,recvID_x, id); + UnpackID(Dm->recvList_X, Dm->recvCount_X() ,recvID_X, id); + UnpackID(Dm->recvList_y, Dm->recvCount_y() ,recvID_y, id); + UnpackID(Dm->recvList_Y, Dm->recvCount_Y() ,recvID_Y, id); + UnpackID(Dm->recvList_z, Dm->recvCount_z() ,recvID_z, id); + UnpackID(Dm->recvList_Z, Dm->recvCount_Z() ,recvID_Z, id); + UnpackID(Dm->recvList_xy, Dm->recvCount_xy() ,recvID_xy, id); + UnpackID(Dm->recvList_Xy, Dm->recvCount_Xy() ,recvID_Xy, id); + UnpackID(Dm->recvList_xY, Dm->recvCount_xY() ,recvID_xY, id); + UnpackID(Dm->recvList_XY, Dm->recvCount_XY() ,recvID_XY, id); + UnpackID(Dm->recvList_xz, Dm->recvCount_xz() ,recvID_xz, id); + UnpackID(Dm->recvList_Xz, Dm->recvCount_Xz() ,recvID_Xz, id); + UnpackID(Dm->recvList_xZ, Dm->recvCount_xZ() ,recvID_xZ, id); + UnpackID(Dm->recvList_XZ, Dm->recvCount_XZ() ,recvID_XZ, id); + UnpackID(Dm->recvList_yz, Dm->recvCount_yz() ,recvID_yz, id); + UnpackID(Dm->recvList_Yz, Dm->recvCount_Yz() ,recvID_Yz, id); + UnpackID(Dm->recvList_yZ, Dm->recvCount_yZ() ,recvID_yZ, id); + UnpackID(Dm->recvList_YZ, Dm->recvCount_YZ() ,recvID_YZ, id); //...................................................................................... MPI_Allreduce(&LocalNumber,&GlobalNumber,1,MPI_DOUBLE,MPI_SUM,comm);