rank_from_position / position_from_rank are now helper functions
This commit is contained in:
parent
aec0cdead6
commit
4f2e8488fe
11
helper.py
11
helper.py
|
|
@ -88,4 +88,13 @@ def convert_coordinate_to_absolute(coord,bounds):
|
||||||
if len(coord)==3:
|
if len(coord)==3:
|
||||||
return tuple(bounds[2*ii]+(bounds[2*ii+1]-bounds[2*ii])*coord[ii] for ii in range(3))
|
return tuple(bounds[2*ii]+(bounds[2*ii+1]-bounds[2*ii])*coord[ii] for ii in range(3))
|
||||||
else:
|
else:
|
||||||
return tuple(bounds[2*(ii//2)]+(bounds[2*(ii//2)+1]-bounds[2*(ii//2)])*coord[ii] for ii in range(6))
|
return tuple(bounds[2*(ii//2)]+(bounds[2*(ii//2)+1]-bounds[2*(ii//2)])*coord[ii] for ii in range(6))
|
||||||
|
|
||||||
|
def rank_from_position(ip,jp,kp,nyp,nzp):
|
||||||
|
return ip*nyp*nzp+jp*nzp+kp
|
||||||
|
|
||||||
|
def position_from_rank(rank,nyp,nzp):
|
||||||
|
ip = rank//(nyp*nzp)
|
||||||
|
jp = (rank//nzp)%nyp
|
||||||
|
kp = rank%nzp
|
||||||
|
return (ip,jp,kp)
|
||||||
21
parallel.py
21
parallel.py
|
|
@ -1,4 +1,6 @@
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
from .helper import position_from_rank, rank_from_position
|
||||||
|
|
||||||
class PPP:
|
class PPP:
|
||||||
"""Parallel Python Postprocessor for suspend"""
|
"""Parallel Python Postprocessor for suspend"""
|
||||||
def __init__(self,comm,func_load,
|
def __init__(self,comm,func_load,
|
||||||
|
|
@ -823,25 +825,14 @@ class PPP:
|
||||||
nyp,nzp = self.nyp_ext,self.nzp_ext
|
nyp,nzp = self.nyp_ext,self.nzp_ext
|
||||||
else:
|
else:
|
||||||
nyp,nzp = self.nyp,self.nzp
|
nyp,nzp = self.nyp,self.nzp
|
||||||
return self._rank_from_position(ip,jp,kp,nyp,nzp)
|
return rank_from_position(ip,jp,kp,nyp,nzp)
|
||||||
|
|
||||||
def position_from_rank(self,rank,external=False):
|
def position_from_rank(self,rank,external=False):
|
||||||
if external:
|
if external:
|
||||||
nyp,nzp = self.nyp_ext,self.nzp_ext
|
nyp,nzp = self.nyp_ext,self.nzp_ext
|
||||||
else:
|
else:
|
||||||
nyp,nzp = self.nyp,self.nzp
|
nyp,nzp = self.nyp,self.nzp
|
||||||
return self._position_from_rank(rank,nyp,nzp)
|
return position_from_rank(rank,nyp,nzp)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def _rank_from_position(ip,jp,kp,nyp,nzp):
|
|
||||||
return ip*nyp*nzp+jp*nzp+kp
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def _position_from_rank(rank,nyp,nzp):
|
|
||||||
ip = rank//(nyp*nzp)
|
|
||||||
jp = (rank//nzp)%nyp
|
|
||||||
kp = rank%nzp
|
|
||||||
return (ip,jp,kp)
|
|
||||||
|
|
||||||
def shifting_state(self,key,axis=None):
|
def shifting_state(self,key,axis=None):
|
||||||
'''Returns the relative shift of first global grid point to domain
|
'''Returns the relative shift of first global grid point to domain
|
||||||
|
|
@ -1095,7 +1086,7 @@ class PPP:
|
||||||
proc_grid[key][4] = proc_grid_ext[key][4][0::nzcpp]
|
proc_grid[key][4] = proc_grid_ext[key][4][0::nzcpp]
|
||||||
proc_grid[key][5] = proc_grid_ext[key][5][nzcpp-1::nzcpp]
|
proc_grid[key][5] = proc_grid_ext[key][5][nzcpp-1::nzcpp]
|
||||||
# Get position in processor grid
|
# Get position in processor grid
|
||||||
ip,jp,kp = PPP._position_from_rank(rank,nyp,nzp)
|
ip,jp,kp = position_from_rank(rank,nyp,nzp)
|
||||||
# Determine local grid indices and size
|
# Determine local grid indices and size
|
||||||
for key in proc_grid:
|
for key in proc_grid:
|
||||||
nxl = proc_grid[key][1][ip]-proc_grid[key][0][ip]+1
|
nxl = proc_grid[key][1][ip]-proc_grid[key][0][ip]+1
|
||||||
|
|
@ -1145,7 +1136,7 @@ class PPP:
|
||||||
if inghbr[ip]<0 or jnghbr[jp]<0 or knghbr[kp]<0:
|
if inghbr[ip]<0 or jnghbr[jp]<0 or knghbr[kp]<0:
|
||||||
nghbr[ip,jp,kp] = -1
|
nghbr[ip,jp,kp] = -1
|
||||||
else:
|
else:
|
||||||
nghbr[ip,jp,kp] = PPP._rank_from_position(inghbr[ip],jnghbr[jp],knghbr[kp],nyp,nzp)
|
nghbr[ip,jp,kp] = rank_from_position(inghbr[ip],jnghbr[jp],knghbr[kp],nyp,nzp)
|
||||||
return (proc_grid,nxp,nyp,nzp,
|
return (proc_grid,nxp,nyp,nzp,
|
||||||
proc_grid_ext,nxp_ext,nyp_ext,nzp_ext,
|
proc_grid_ext,nxp_ext,nyp_ext,nzp_ext,
|
||||||
nghbr)
|
nghbr)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue