import numpy as np import math def getKref(k, rank, pn, ref): Nz = k.shape[0] nz = Nz // pn if ref == 1: return getK(k, rank, pn) if (rank > 0) and (rank < pn - 1): k = k[rank * nz - 1 : (rank + 1) * nz + 1, :, :] k = refinaPy(k, ref) if ref != 1: k = k[(ref - 1) : -(ref - 1), :, :] nz, ny, nx = k.shape[0], k.shape[1], k.shape[2] ki = np.zeros((nz, ny + 2, nx + 2)) ki[:, 1:-1, 1:-1] = k # print(ki.shape) nnz = nz - 2 if rank == 0: k = k[: (rank + 1) * nz + 1, :, :] k = refinaPy(k, ref) if ref != 1: k = k[: -(ref - 1), :, :] nz, ny, nx = k.shape[0], k.shape[1], k.shape[2] ki = np.zeros((nz + 1, ny + 2, nx + 2)) ki[1:, 1:-1, 1:-1] = k ki[0, :, :] = ki[1, :, :] nnz = nz if rank == (pn - 1): k = k[rank * nz - 1 :, :, :] k = refinaPy(k, ref) if ref != 1: k = k[(ref - 1) :, :, :] nz, ny, nx = k.shape[0], k.shape[1], k.shape[2] ki = np.zeros((nz + 1, ny + 2, nx + 2)) ki[:-1, 1:-1, 1:-1] = k ki[-1, :, :] = ki[-2, :, :] nnz = (Nz // pn) * ref return ki, Nz * ref, nnz def getK(k, rank, pn): # k=np.load(kfile) # nn=int(np.cbrt(k.shape[0])) # k=k.reshape((nn,nn,nn)) Nz, Ny, Nx = k.shape[0], k.shape[1], k.shape[2] nz = Nz // pn if rank == pn - 1: nnz = Nz - (pn - 1) * nz ki = np.zeros((nnz + 2, Ny + 2, Nx + 2)) else: nnz = nz ki = np.zeros((nz + 2, Ny + 2, Nx + 2)) if (rank > 0) and (rank < pn - 1): ki[:, 1:-1, 1:-1] = k[rank * nz - 1 : (rank + 1) * nz + 1, :, :] if rank == 0: ki[1:, 1:-1, 1:-1] = k[: (rank + 1) * nz + 1, :, :] ki[0, :, :] = ki[1, :, :] if rank == (pn - 1): ki[:-1, 1:-1, 1:-1] = k[rank * nz - 1 :, :, :] ki[-1, :, :] = ki[-2, :, :] return ki, Nz, nz """ def getK(k,rank,pn): #k=np.load(kfile) #nn=int(np.cbrt(k.shape[0])) #k=k.reshape((nn,nn,nn)) Nz, Ny,Nx=k.shape[0],k.shape[1],k.shape[2] nz=Nz//pn if rank==pn-1: nnz= Nz-(pn-1)*nz ki=np.zeros((nnz+2,Ny+2,Nx+2)) else: nnz=nz ki=np.zeros((nz+2,Ny+2,Nx+2)) if (rank>0) and (rank