diff --git a/common/SpherePack.cpp b/common/SpherePack.cpp new file mode 100644 index 00000000..16da5209 --- /dev/null +++ b/common/SpherePack.cpp @@ -0,0 +1,252 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "common/Array.h" +#include "common/Utilities.h" +#include "common/MPI_Helpers.h" +#include "common/Communication.h" +#include "common/Database.h" +#include "common/SpherePack.h" + +void WriteLocalSolidID(char *FILENAME, char *ID, int N) +{ + char value; + ofstream File(FILENAME,ios::binary); + for (int n=0; nNx) imin = Nx; + if (imax<0) imax = 0; + if (imax>Nx) imax = Nx; + if (jmin<0) jmin = 0; + if (jmin>Ny) jmin = Ny; + if (jmax<0) jmax = 0; + if (jmax>Ny) jmax = Ny; + if (kmin<0) kmin = 0; + if (kmin>Nz) kmin = Nz; + if (kmax<0) kmax = 0; + if (kmax>Nz) kmax = Nz; + // Loop over the domain for this sphere (may be null) + for (i=imin;iNx) imin = Nx; + if (imax<0) imax = 0; + if (imax>Nx) imax = Nx; + if (jmin<0) jmin = 0; + if (jmin>Ny) jmin = Ny; + if (jmax<0) jmax = 0; + if (jmax>Ny) jmax = Ny; + if (kmin<0) kmin = 0; + if (kmin>Nz) kmin = Nz; + if (kmax<0) kmax = 0; + if (kmax>Nz) kmax = Nz; + // Loop over the domain for this sphere (may be null) + for (i=imin;i +#include +#include +#include +#include +#include +#include +#include + +#include "common/Array.h" +#include "common/Utilities.h" +#include "common/MPI_Helpers.h" +#include "common/Communication.h" +#include "common/Database.h" + +/* +Simple tools to work with sphere packs + */ + +void WriteLocalSolidID(char *FILENAME, char *ID, int N); + +void WriteLocalSolidDistance(char *FILENAME, double *Distance, int N); + +void ReadSpherePacking(int nspheres, double *List_cx, double *List_cy, double *List_cz, double *List_rad); + +void AssignLocalSolidID(char *ID, int nspheres, double *List_cx, double *List_cy, double *List_cz, double *List_rad, + double Lx, double Ly, double Lz, int Nx, int Ny, int Nz, + int iproc, int jproc, int kproc, int nprocx, int nprocy, int nprocz); + +void SignedDistance(double *Distance, int nspheres, double *List_cx, double *List_cy, double *List_cz, double *List_rad, + double Lx, double Ly, double Lz, int Nx, int Ny, int Nz, + int iproc, int jproc, int kproc, int nprocx, int nprocy, int nprocz); diff --git a/tests/GenerateSphereTest.cpp b/tests/GenerateSphereTest.cpp index 8047e96b..6c9edba8 100644 --- a/tests/GenerateSphereTest.cpp +++ b/tests/GenerateSphereTest.cpp @@ -8,6 +8,7 @@ //#include "common/pmmc.h" #include "common/Domain.h" +#include "common/SpherePack.h" #include "common/MPI_Helpers.h" #include "common/Communication.h" @@ -19,265 +20,27 @@ using namespace std; - -void WriteLocalSolidID(char *FILENAME, char *ID, int N) -{ - char value; - ofstream File(FILENAME,ios::binary); - for (int n=0; nNx) imin = Nx; - if (imax<0) imax = 0; - if (imax>Nx) imax = Nx; - if (jmin<0) jmin = 0; - if (jmin>Ny) jmin = Ny; - if (jmax<0) jmax = 0; - if (jmax>Ny) jmax = Ny; - if (kmin<0) kmin = 0; - if (kmin>Nz) kmin = Nz; - if (kmax<0) kmax = 0; - if (kmax>Nz) kmax = Nz; - // Loop over the domain for this sphere (may be null) - for (i=imin;iNx) imin = Nx; - if (imax<0) imax = 0; - if (imax>Nx) imax = Nx; - if (jmin<0) jmin = 0; - if (jmin>Ny) jmin = Ny; - if (jmax<0) jmax = 0; - if (jmax>Ny) jmax = Ny; - if (kmin<0) kmin = 0; - if (kmin>Nz) kmin = Nz; - if (kmax<0) kmax = 0; - if (kmax>Nz) kmax = Nz; - // Loop over the domain for this sphere (may be null) - for (i=imin;i #include "analysis/pmmc.h" #include "common/Domain.h" +#include "common/SpherePack.h" using namespace std; diff --git a/tests/lbpm_sphere_pp.cpp b/tests/lbpm_sphere_pp.cpp index a081f338..05bdd0e3 100644 --- a/tests/lbpm_sphere_pp.cpp +++ b/tests/lbpm_sphere_pp.cpp @@ -8,6 +8,7 @@ #include "analysis/pmmc.h" #include "common/Domain.h" +#include "common/SpherePack.h" #include "common/MPI_Helpers.h" #include "common/Communication.h" @@ -19,243 +20,6 @@ using namespace std; -void WriteLocalSolidID(char *FILENAME, char *ID, int N) -{ - char value; - ofstream File(FILENAME,ios::binary); - for (int n=0; nNx) imin = Nx; - if (imax<0) imax = 0; - if (imax>Nx) imax = Nx; - if (jmin<0) jmin = 0; - if (jmin>Ny) jmin = Ny; - if (jmax<0) jmax = 0; - if (jmax>Ny) jmax = Ny; - if (kmin<0) kmin = 0; - if (kmin>Nz) kmin = Nz; - if (kmax<0) kmax = 0; - if (kmax>Nz) kmax = Nz; - // Loop over the domain for this sphere (may be null) - for (i=imin;iNx) imin = Nx; - if (imax<0) imax = 0; - if (imax>Nx) imax = Nx; - if (jmin<0) jmin = 0; - if (jmin>Ny) jmin = Ny; - if (jmax<0) jmax = 0; - if (jmax>Ny) jmax = Ny; - if (kmin<0) kmin = 0; - if (kmin>Nz) kmin = Nz; - if (kmax<0) kmax = 0; - if (kmax>Nz) kmax = Nz; - // Loop over the domain for this sphere (may be null) - for (i=imin;i