IT memo
IT memo/CDO memo
NCL memo †
Vertical interpolation of CCSM3.0 hybrid output †
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
;************************************************
begin
;************************************************
; file handling
;************************************************
dec = "198"
yr = "5"
year = dec+yr
fnps = "fromesg/tmpPS"+dec+"0s_00"+yr+".nc"
fn = "fromesg/b30.030e.cam2.h3.U."+year+"-01-01_cat_"+year+"-12-31.nc" ; define filename
inU = addfile(fn,"r") ; open netcdf file
inPS = addfile(fnps,"r") ; open netcdf file
fnout = "fromesg/b30.030e.cam2.h3.UPRS."+year+"-01-01_cat_"+year+"-12-31.nc"
system("/bin/rm -f "+fnout)
fout = addfile(fnout,"c")
;************************************************
; read needed variables from file
;************************************************
U = inU->U ; select variable
P0mb =1000.
hyam = inU->hyam ; get a coefficients
hybm = inU->hybm ; get b coefficients
PS = inPS->PS ; get sfc pressure
;************************************************
; define other arguments required by vinth2p
;************************************************
; type of interpolation: 1 = linear, 2 = log, 3 = loglog
interp = 2
; is extrapolation desired if data is outside the range of PS
extrap = False
; create an array of desired pressure levels:
pnew = (/1000.0,925,850.0,700.0,600,500.0,400,300.,250,200.0,150,100,70,50,30,20,10 /)
;************************************************
; calculate T on pressure levels
;************************************************
; note, the 7th argument is not used, and so is set to 1.
;************************************************
uprs = vinth2p(U,hyam,hybm,pnew,PS,interp,P0mb,1,extrap)
filedimdef(fout,"time",-1,True)
uprs!0 = "time"
uprs!1 = "lev"
uprs!2 = "lat"
uprs!3 = "lon"
pnew@units = "hPa" ; required for grads compatible
uprs&lev = pnew
fout->uprs = uprs
end
Other tips †