From 4f2e8488fef5d73822d2c22f1eba34dde06648fa Mon Sep 17 00:00:00 2001 From: Michael Krayer Date: Wed, 23 Feb 2022 14:24:24 +0100 Subject: [PATCH] rank_from_position / position_from_rank are now helper functions --- helper.py | 11 ++++++++++- parallel.py | 21 ++++++--------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/helper.py b/helper.py index eeb9282..1ead405 100644 --- a/helper.py +++ b/helper.py @@ -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)) \ No newline at end of file + 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) \ No newline at end of file diff --git a/parallel.py b/parallel.py index 4250677..482ba01 100644 --- a/parallel.py +++ b/parallel.py @@ -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)