removed some unnecessary leftovers, some bugfixes

This commit is contained in:
Michael Krayer 2021-05-28 01:18:23 +02:00
parent 6eeaa477b8
commit ac353c2294
1 changed files with 17 additions and 21 deletions

View File

@ -138,8 +138,8 @@ class PPP:
nxp_ext,nyp_ext,nzp_ext,nproc_ext = None,None,None,None
nxp,nyp,nzp,nproc = None,None,None,None
# Broadcast the data
self.proc_grid_ext = self.comm.bcast(proc_grid_ext,root=0)
self.proc_grid = self.comm.bcast(proc_grid,root=0)
self.proc_grid_ext = self.comm.bcast(proc_grid_ext,root=0)
self.proc_grid = self.comm.bcast(proc_grid,root=0)
self.nxp_ext,self.nyp_ext,\
self.nzp_ext,self.nproc_ext = self.comm.bcast((nxp_ext,nyp_ext,nzp_ext,nproc_ext),root=0)
self.nxp,self.nyp,\
@ -147,25 +147,14 @@ class PPP:
# Get position in processor grid
self.ip,self.jp,self.kp = self.position_from_rank(self.rank,external=False)
# Determine local grid indices and size
self.chunk_bounds = {}
self.chunk_size = {}
for key in self.proc_grid:
self.chunk_bounds[key] = [None]*6
self.chunk_bounds[key][0] = self.proc_grid[key][0][self.ip]
self.chunk_bounds[key][1] = self.proc_grid[key][1][self.ip]
self.chunk_bounds[key][2] = self.proc_grid[key][2][self.jp]
self.chunk_bounds[key][3] = self.proc_grid[key][3][self.jp]
self.chunk_bounds[key][4] = self.proc_grid[key][4][self.kp]
self.chunk_bounds[key][5] = self.proc_grid[key][5][self.kp]
self.chunk_size[key] = [None]*3
self.chunk_size[key][0] = self.chunk_bounds[key][1]-self.chunk_bounds[key][0]+1
self.chunk_size[key][1] = self.chunk_bounds[key][3]-self.chunk_bounds[key][2]+1
self.chunk_size[key][2] = self.chunk_bounds[key][5]-self.chunk_bounds[key][4]+1
nxl = self.proc_grid[key][1][self.ip]-self.proc_grid[key][0][self.ip]+1
nyl = self.proc_grid[key][3][self.jp]-self.proc_grid[key][2][self.jp]+1
nzl = self.proc_grid[key][5][self.kp]-self.proc_grid[key][4][self.kp]+1
# Verify that local grid size is not smaller than ghost cell size
assert (self.chunk_size[key][0]>=self.nghx and
self.chunk_size[key][1]>=self.nghy and
self.chunk_size[key][2]>=self.nghz), "Local grid size must be greater than number "\
"of ghost cells in each direction!"
assert (nxl>=self.nghx and nyl>=self.nghy and nzl>=self.nghz),\
"Local grid size must be greater than number "\
"of ghost cells in each direction!"
# Initialize neighbor array
nghbr = np.empty((3,3,3),dtype='int')
# wrap-around x
@ -432,10 +421,17 @@ class PPP:
def shifting_state(self,key,axis=None):
if axis is None:
return tuple(self.shifting_state(key,axis=ii) for axis in range(3))
return tuple(self.shifting_state(key,axis=ii) for ii in range(3))
assert axis<3, "'axis' must be one of 0,1,2."
return int(round((self.origin[key][axis]-self.bounds[2*axis])/(0.5*self.spacing[axis])))
def chunk_size(self,key,axis=None):
'''Returns size of chunk without ghost cells.'''
if axis is None:
return tuple(self.chunk_size(key,axis=ii) for ii in range(3))
assert axis<3, "'axis' must be one of 0,1,2."
return self.field[key].numpoints[axis]-2*self.num_ghost[axis]
def exchange_ghost_cells(self,key):
'''Communicates all ghost cells of specified field'''
# Trigger non-blocking communication:
@ -496,7 +492,7 @@ class PPP:
# [send/recv] create a tag
tag = ip_dst*100+jp_dst*10+kp_dst
# [send/recv] get the indices of data to be sent/received
nxl,nyl,nzl = self.chunk_size[key]
nxl,nyl,nzl = self.chunk_size(key)
if positionDst[0]==-1:
ii_src = slice(self.nghx,2*self.nghx)
ii_dst = slice(self.nghx+nxl,2*self.nghx+nxl)