def s_levels(h,zeta,sparams,rw=False): ''' returns z_r and/or z_w ''' tts,ttb,hc,n,vt,vs=sparams import rtools zr,zw=rtools.s_levels(h,zeta,tts,ttb,hc,n,vt,vs) # add zeta mask to z levels: if np.ma.isMA(zeta): if 1 in zr.shape: maskr=np.tile(np.squeeze(zeta).mask,(zr.shape[0],1)) maskw=np.tile(np.squeeze(zeta).mask,(zw.shape[0],1)) zr=np.squeeze(zr) zw=np.squeeze(zw) else: maskr=np.tile(zeta.mask,(zr.shape[0],1,1)) maskw=np.tile(zeta.mask,(zw.shape[0],1,1)) if rw==False: zr=np.ma.masked_where(maskr,zr) zw=np.ma.masked_where(maskw,zw) return zr,zw elif rw=='w': return np.ma.masked_where(maskw,zw) else: # r return np.ma.masked_where(maskr,zr) else: # zeta has no mask, like in clm or ini files if rw==False: return zr,zw elif rw=='w': return zw else: return zr
def s_levels(h, zeta, sparams, rw=False): ''' returns z_r and/or z_w ''' tts, ttb, hc, n, vt, vs = sparams import rtools # if vt==1 and vs==1: # import rtools # elif vt==2 and vs==1: # import rtools_vs1vt2 as rtools # elif vt==2 and vs==4: # import rtools_vs4vt2 as rtools # elif vt==2 and vs==2: # import rtools_vs2vt2 as rtools # else: # print 's_levels not implemented yet for vt,vs=%d %d'%(vt,vs) # return zr, zw = rtools.s_levels(h, zeta, hc, tts, ttb, n, vt, vs) # add zeta mask to z levels: if np.ma.isMA(zeta): if 1 in zr.shape: maskr = np.tile(np.squeeze(zeta).mask, (zr.shape[0], 1)) maskw = np.tile(np.squeeze(zeta).mask, (zw.shape[0], 1)) zr = np.squeeze(zr) zw = np.squeeze(zw) else: maskr = np.tile(zeta.mask, (zr.shape[0], 1, 1)) maskw = np.tile(zeta.mask, (zw.shape[0], 1, 1)) if rw == False: zr = np.ma.masked_where(maskr, zr) zw = np.ma.masked_where(maskw, zw) return zr, zw elif rw == 'w': return np.ma.masked_where(maskw, zw) else: # r return np.ma.masked_where(maskr, zr) else: # zeta has no mask, like in clm or ini files if rw == False: return zr, zw elif rw == 'w': return zw else: return zr
def s_levels(h,zeta,sparams,rw=False): ''' returns z_r and/or z_w ''' tts,ttb,hc,n,vt,vs=sparams if vt==1 and vs==1: import rtools elif vt==2 and vs==4: import rtools_vs4vt2 as rtools elif vt==2 and vs==2: import rtools_vs2vt2 as rtools else: print 's_levels not implemented yet for vt,vs=%d %d'%(vt,vs) return zr,zw=rtools.s_levels(h,zeta,hc,tts,ttb,n) # add zeta mask to z levels: if np.ma.isMA(zeta): if 1 in zr.shape: maskr=np.tile(np.squeeze(zeta).mask,(zr.shape[0],1)) maskw=np.tile(np.squeeze(zeta).mask,(zw.shape[0],1)) zr=np.squeeze(zr) zw=np.squeeze(zw) else: maskr=np.tile(zeta.mask,(zr.shape[0],1,1)) maskw=np.tile(zeta.mask,(zw.shape[0],1,1)) if rw==False: zr=np.ma.masked_where(maskr,zr) zw=np.ma.masked_where(maskw,zw) return zr,zw elif rw=='w': return np.ma.masked_where(maskw,zw) else: # r return np.ma.masked_where(maskr,zr) else: # zeta has no mask, like in clm or ini files if rw==False: return zr,zw elif rw=='w': return zw else: return zr
def s_levels(h,zeta,sparams,rw=False): ''' returns z_r and/or z_w ''' tts,ttb,hc,n,vt,vs=sparams # to deal with WET_DRY (See Nonlinear/set_depth.F) # h cannot be zero, at least with vt==1 h=np.where(h==0.,1e-14,h) import rtools zr,zw=rtools.s_levels(h,zeta,tts,ttb,hc,n,vt,vs) # add zeta mask to z levels: if np.ma.isMA(zeta): if 1 in zr.shape: maskr=np.tile(np.squeeze(zeta).mask,(zr.shape[0],1)) maskw=np.tile(np.squeeze(zeta).mask,(zw.shape[0],1)) zr=np.squeeze(zr) zw=np.squeeze(zw) else: maskr=np.tile(zeta.mask,(zr.shape[0],1,1)) maskw=np.tile(zeta.mask,(zw.shape[0],1,1)) if rw==False: zr=np.ma.masked_where(maskr,zr) zw=np.ma.masked_where(maskw,zw) return zr,zw elif rw=='w': return np.ma.masked_where(maskw,zw) else: # r return np.ma.masked_where(maskr,zr) else: # zeta has no mask, like in clm or ini files if rw==False: return zr,zw elif rw=='w': return zw else: return zr
def s_levels(h, zeta, sparams, rw=False): ''' returns z_r and/or z_w ''' tts, ttb, hc, n, vt, vs = sparams # to deal with WET_DRY (See Nonlinear/set_depth.F) # h cannot be zero, at least with vt==1 h = np.where(h == 0., 1e-14, h) import rtools zr, zw = rtools.s_levels(h, zeta, tts, ttb, hc, n, vt, vs) # add zeta mask to z levels: if np.ma.isMA(zeta): if 1 in zr.shape: maskr = np.tile(np.squeeze(zeta).mask, (zr.shape[0], 1)) maskw = np.tile(np.squeeze(zeta).mask, (zw.shape[0], 1)) zr = np.squeeze(zr) zw = np.squeeze(zw) else: maskr = np.tile(zeta.mask, (zr.shape[0], 1, 1)) maskw = np.tile(zeta.mask, (zw.shape[0], 1, 1)) if rw == False: zr = np.ma.masked_where(maskr, zr) zw = np.ma.masked_where(maskw, zw) return zr, zw elif rw == 'w': return np.ma.masked_where(maskw, zw) else: # r return np.ma.masked_where(maskr, zr) else: # zeta has no mask, like in clm or ini files if rw == False: return zr, zw elif rw == 'w': return zw else: return zr