示例#1
0
文件: roms_tools.py 项目: jcmt/okean
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
示例#2
0
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
示例#3
0
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
示例#4
0
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
示例#5
0
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