def read_crop(self,varname,kt):
z2d = zeros((len(self.yidx),len(self.xidx)))
time = self.nc[0].variables['t'][kt]
#print('nt=%i / kt=%i'%(self.nt,kt))
if (kt>=self.nt):
print('kt is out of range max(kt)=%i'%(self.nt-1))
else:
for proc in range(self.nbproc):
varloc = self.nc[proc].variables[varname]
print('\r %12s - kt =%i - proc = %i'%(varname,kt,proc),end='')
ip,jp = proc%self.npx,proc//self.npx
iiglo = arange( ip*self.nxproc,(ip+1)*self.nxproc )
jjglo = arange( jp*self.nyproc,(jp+1)*self.nyproc )
ii = intersect1d( self.xidx, iiglo)
jj = intersect1d( self.yidx, jjglo)
if( (len(ii)>0) & (len(jj)>0)):
i0,i1=ii[0]-ip*self.nxproc,ii[-1]-ip*self.nxproc+1
j0,j1=jj[0]-jp*self.nyproc,jj[-1]-jp*self.nyproc+1
zz = varloc[kt,j0:j1,i0:i1]
i0,i1=ii[0]-self.xidx[0], ii[-1]+1-self.xidx[0]
j0,j1=jj[0]-self.yidx[0], jj[-1]+1-self.yidx[0]
z2d[j0:j1,i0:i1] = zz
return time,z2d
评论列表
文章目录