Merge branch 'master' of https://github.com/JamesEMcClure/LBPM-WIA
This commit is contained in:
commit
c95f82d0d9
@ -83,9 +83,33 @@ struct Domain{
|
||||
void CommInit(MPI_Comm comm);
|
||||
void BlobComm(MPI_Comm comm);
|
||||
|
||||
void getBlobConnections();
|
||||
void AssignBlobConnections(){
|
||||
getBlobConnections(recvList_x, recvCount_x, rank_x);
|
||||
getBlobConnections(recvList_y, recvCount_y, rank_y);
|
||||
getBlobConnections(recvList_z, recvCount_z, rank_z);
|
||||
getBlobConnections(recvList_X, recvCount_X, rank_X);
|
||||
getBlobConnections(recvList_Y, recvCount_y, rank_Y);
|
||||
getBlobConnections(recvList_Z, recvCount_Z, rank_Z);
|
||||
getBlobConnections(recvList_xy, recvCount_xy, rank_xy);
|
||||
getBlobConnections(recvList_xY, recvCount_xY, rank_xY);
|
||||
getBlobConnections(recvList_Xy, recvCount_Xy, rank_Xy);
|
||||
getBlobConnections(recvList_XY, recvCount_XY, rank_XY);
|
||||
getBlobConnections(recvList_xz, recvCount_xz, rank_xz);
|
||||
getBlobConnections(recvList_xZ, recvCount_xZ, rank_xZ);
|
||||
getBlobConnections(recvList_Xz, recvCount_Xz, rank_Xz);
|
||||
getBlobConnections(recvList_XZ, recvCount_XZ, rank_XZ);
|
||||
getBlobConnections(recvList_yz, recvCount_yz, rank_yz);
|
||||
getBlobConnections(recvList_yZ, recvCount_yZ, rank_yZ);
|
||||
getBlobConnections(recvList_Yz, recvCount_Yz, rank_Yz);
|
||||
getBlobConnections(recvList_YZ, recvCount_YZ, rank_YZ);
|
||||
}
|
||||
|
||||
private:
|
||||
int d[26][3] = {{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1},
|
||||
{1,1,0},{1,-1,0},{-1,1,0},{-1,-1,0},{1,0,1},{-1,0,1},
|
||||
{1,0,-1},{-1,0,-1},{0,1,1},{0,-1,1},{0,1,-1},{0,-1,-1},
|
||||
{1,1,1},{1,1,-1},{1,-1,1},{1,-1,-1},{-1,1,1},{-1,1,-1},
|
||||
|
||||
int getRankForBlock( int i, int j, int k )
|
||||
{
|
||||
int i2 = (i+nprocx)%nprocx;
|
||||
@ -112,6 +136,48 @@ private:
|
||||
}
|
||||
}
|
||||
|
||||
int VoxelConnection(int n){
|
||||
int returnVal = -1;
|
||||
int x,y,z;
|
||||
// Get the 3-D indices
|
||||
x = n%Nx;
|
||||
y = (n/Nx)%Ny;
|
||||
z = n/(Nx*Ny);
|
||||
int nodx,nody,nodz;
|
||||
for (int p=0;p<26;p++){
|
||||
nodx=x+d[p][0];
|
||||
// Get the neighbor and guarantee it is in the domain
|
||||
if (nodx < 0 ){ nodx = 0; }
|
||||
if (nodx > Nx-1 ){ nodx = Nx-1; }
|
||||
nody=y+d[p][1];
|
||||
if (nody < 0 ){ nody = 0; }
|
||||
if (nody > Ny-1 ){ nody = Ny-1; }
|
||||
nodz=z+d[p][2];
|
||||
if (nodz < 0 ){ nodz = 0; }
|
||||
if (nodz > Nz-1 ){ nodz = Nz-1; }
|
||||
|
||||
if (Blobs(nodx,nody,nodz) > returnVal ) returnVal = Blobs(nodx,nody,nodz);
|
||||
}
|
||||
return returnVal;
|
||||
}
|
||||
|
||||
void getBlobConnections(int * List, int count, int neighbor){
|
||||
|
||||
int idx,n,localValue,neighborValue;
|
||||
int x,y,z;
|
||||
for (idx=0; idx<recvCount_x; idx++){
|
||||
n = recvList_x[idx];
|
||||
// Get the 3-D indices
|
||||
x = n%Nx;
|
||||
y = (n/Nx)%Ny;
|
||||
z = n/(Nx*Ny);
|
||||
neighborValue = Blobs(x,y,z);
|
||||
if (neighborValue > -1){
|
||||
localValue = VoxelConnection(n);
|
||||
printf("Blob (%i,%i) connects to neighbor blob (%i,%i)", localValue, rank, neighborValue, neighbor);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
void Domain::InitializeRanks()
|
||||
@ -487,13 +553,6 @@ void Domain::BlobComm(MPI_Comm Communicator){
|
||||
//......................................................................................
|
||||
}
|
||||
|
||||
void Domain::getBlobConnections(){
|
||||
|
||||
// BlobGraph(0,nblob) = rank of the connecting blob;
|
||||
// BlobGraph(1,nblob) = ID of the connecting blob;
|
||||
|
||||
}
|
||||
|
||||
inline void ReadSpherePacking(int nspheres, double *List_cx, double *List_cy, double *List_cz, double *List_rad)
|
||||
{
|
||||
// Read in the full sphere pack
|
||||
|
Loading…
Reference in New Issue
Block a user