def get_local_mesh(self):
xzrank = self.comm0.Get_rank() # Local rank in xz-plane
xyrank = self.comm1.Get_rank() # Local rank in xy-plane
# Create the physical mesh
x1 = slice(xzrank * self.N1[0], (xzrank+1) * self.N1[0], 1)
x2 = slice(xyrank * self.N2[1], (xyrank+1) * self.N2[1], 1)
X = np.ogrid[x1, x2, :self.N[2]]
X[0] = (X[0]*self.L[0]/self.N[0]).astype(self.float)
X[1] = (X[1]*self.L[1]/self.N[1]).astype(self.float)
X[2] = (X[2]*self.L[2]/self.N[2]).astype(self.float)
X = [np.broadcast_to(x, self.real_shape()) for x in X]
return X
评论列表
文章目录