rank_from_position / position_from_rank are now helper functions

This commit is contained in:
Michael Krayer 2022-02-23 14:24:24 +01:00
parent aec0cdead6
commit 4f2e8488fe
2 changed files with 16 additions and 16 deletions

View File

@ -88,4 +88,13 @@ def convert_coordinate_to_absolute(coord,bounds):
if len(coord)==3:
return tuple(bounds[2*ii]+(bounds[2*ii+1]-bounds[2*ii])*coord[ii] for ii in range(3))
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)

View File

@ -1,4 +1,6 @@
import numpy as np
from .helper import position_from_rank, rank_from_position
class PPP:
"""Parallel Python Postprocessor for suspend"""
def __init__(self,comm,func_load,
@ -823,25 +825,14 @@ class PPP:
nyp,nzp = self.nyp_ext,self.nzp_ext
else:
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):
if external:
nyp,nzp = self.nyp_ext,self.nzp_ext
else:
nyp,nzp = self.nyp,self.nzp
return self._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)
return position_from_rank(rank,nyp,nzp)
def shifting_state(self,key,axis=None):
'''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][5] = proc_grid_ext[key][5][nzcpp-1::nzcpp]
# 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
for key in proc_grid:
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:
nghbr[ip,jp,kp] = -1
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,
proc_grid_ext,nxp_ext,nyp_ext,nzp_ext,
nghbr)