Hello,
I have a basic question about procedure in NCL. Can a procedure in NCL
receive new variables from another NCL script? I used a procedure
vShear_nmm to obtain three variables by "vShear_nmm
(du_nmm,dv_nmm,duy_nmm)" (line 94). However, I got an error message
"fatal:Variable (du_nmm) is undefined". I wonder how to fix such an error?
Thanks much,
Yi-Chih
######
fatal:Variable (du_nmm) is undefined
fatal:["Execute.c":8128]:Execute: Error occurred at or near line 94 in file
vShear.ncl
######
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
load "/fs3/yhuang/nmm/vShear.ncl"
begin
latS = -30.0
latN = 30.0
lonE = 30.0
lonW = 160.0
dir1= "/fs3/SysE_DB/nmm/CFSR/Monthly/Mean/"
yrStrt = 1981
yrLast = 2006
year = ispan(yrStrt, yrLast,1) ; integer
yrDir = year + "/" ; string
nyr = dimsizes(year)
varName= (/"uwnd","vwnd","lat"/)
dir = str_concat(dir1+yrDir(0))
fil = systemfunc("cd "+dir+" ; ls *wnd_850.nc")
f = addfile (dir+fil(0), "r")
x = f->$varName(0)$
dims= getfilevardims(f,varName(0))
xs = x(5:8,{latS:latN},{lonE:lonW}) ; JJAS tropical Pacific
xu = dim_avg_n_Wrap( xs,0)
ds = dimsizes(xs) ; assume the same dimension of u and v at
850 and 200 hPa
xx = new((/nyr,ds(1),ds(2)/),float,"No_FillValue") ; so only create
xx once
YYYYMM= new ( (/nyr,ds(0)/), double)
printVarSummary(YYYYMM)
do nf= 0,1
do ny= 0,nyr-1
dir = str_concat(dir1+yrDir(ny))
fil = systemfunc("cd "+dir+" ; ls *wnd_850.nc") ; input file name(s)
f = addfile (dir+fil(nf), "r")
x = f->$varName(nf)$
dims = getfilevardims(f,varName(nf))
xs := x(5:8,{latS:latN},{lonE:lonW}) ; Indian Ocean
xy = dim_avg_n_Wrap( xs, 0 )
xx(ny,:,:)= xy
YYYYMM(ny,:) = cd_calendar(xs&$xs!0$, 1)
xx!0 = "year"
if ( ny .eq. nyr-1 .and. nf .eq. 0 ) then
u850= dim_avg_n_Wrap( xx, 0 )
else if ( ny .eq. nyr-1 .and. nf .eq. 1 ) then
v850= dim_avg_n_Wrap( xx, 0 )
end if
end if
end do
end do
do nf= 0,1
do ny= 0,nyr-1
fil = systemfunc("cd "+dir+" ; ls *wnd_200.nc") ; input file
name(s)
f = addfile (dir+fil(nf), "r")
x = f->$varName(nf)$
dims = getfilevardims(f,varName(nf))
xs := x(5:8,{latS:latN},{lonE:lonW}) ; Indian Ocean
xy = dim_avg_n_Wrap( xs, 0 )
xx(ny,:,:)= xy
xx!0 = "year"
if ( ny .eq. nyr-1 .and. nf .eq. 0 ) then
u200= dim_avg_n_Wrap( xx, 0 )
else if ( ny .eq. nyr-1 .and. nf .eq. 1 ) then
v200= dim_avg_n_Wrap( xx, 0 )
end if
end if
end do
end do
du= u200 - u850
dv= v200 - v850
copy_VarMeta(u850,du)
copy_VarMeta(v850,dv)
printVarSummary(du)
dulon= du(:,{65:95})
duy = dim_avg_n_Wrap( dulon, 1 )
printVarSummary(dulon)
printVarSummary(duy )
f = addfile (dir+fil(0), "r")
la = f->$varName(2)$
dims = getfilevardims(f,varName(2))
lat = la({$dims(1)$|30:-30}) ; get latitudes in the domain
printVarSummary(lat)
vShear_nmm (du_nmm,dv_nmm,duy_nmm)
wks= gsn_open_wks("X11","vShear_CFSR")
gsn_define_colormap(wks,"BlueRed") ; use the BlueRed colormap
(instead of default colormap)
plot = new(2,graphic) ; create plot array
res = True
res@gsnAddCyclic = False
res@mpMinLatF = -30
res@mpMaxLatF = 30
res@mpMinLonF = 30
res@mpMaxLonF = 160
res@cnFillOn = True
res@gsnSpreadColors = True ; use full colormap
res@gsnSpreadColorStart = 10 ; for BlueRed
res@gsnSpreadColorEnd = 250 ; for BlueRed
res@cnLevelSelectionMode= "ManualLevels"
res@cnMinLevelValF = -30.
res@cnMaxLevelValF = 50.
res@cnLevelSpacingF = 4.
res@cnSpanFillPalette = True
res@cnLinesOn = False ; turn off the contour
lines
res@lbLabelBarOn = True
res@pmLabelBarWidthF= 0.8
res@lbLabelStride = 4
res@mpFillOn = False
res@mpOutlineBoundarySets = "National" ; turns on country
boundaries.
res@gsnLeftString = "CFSR: Average Monthly vertical shear of
U-component during JJAS"
res@cnFillDrawOrder = "Predraw"
res@gsnDraw = False
res@gsnFrame = False
plot(0) = gsn_csm_contour_map(wks,du,res)
plot(1) = gsn_csm_contour_map(wks,du_nmm,res)
gsn_panel(wks,plot,(/2,1/),False)
res@cnMinLevelValF = -14.
res@cnMaxLevelValF = 10.
res@cnLevelSpacingF = 1.
res@gsnLeftString = "CFSR: Average Monthly vertical shear of
V-component during JJAS"
plot(0) = gsn_csm_contour_map(wks,dv,res)
plot(1) = gsn_csm_contour_map(wks,dv_nmm,res)
gsn_panel(wks,plot,(/2,1/),False)
wks = gsn_open_wks ("X11","vShearXY_CFSR")
xyres = True
xyres@xyLineColor = "Red"
xyres@tiMainString = "CFSR: Average Monthly Easterly shear during JJAS"
x2res@xyLineColor = "Blue"
; plot = gsn_csm_xy (wks,duy&lat,duy({lat|-30:30}),xyres)
plot =
gsn_csm_xy2(wks,duy&lat,duy({lat|-30:30}),duy_nmm({lat|-30:30}),xyres,x2res)
end
######
procedure vShear_nmm (du_nmm,dv_nmm,duy_nmm)
local dir1, dir, fil, f, x, xs, xu, xx, u200, u850, v200, v850
begin
latS = -30.0
latN = 30.0
lonE = 30.0
lonW = 160.0
dir1= "/fs3/SysE_DB/nmm/NMM/Monthly/Mean/"
yrStrt = 1981
yrLast = 2006
year = ispan(yrStrt, yrLast,1) ; integer
yrDir = year + "/" ; string
nyr = dimsizes(year)
dir = str_concat(dir1+yrDir(0))
fil = systemfunc("cd "+dir+" ; ls *wnd_850.nc")
f = addfile (dir+fil(0), "r")
varName= (/"uwnd","vwnd","lat"/)
x = f->$varName(0)$
dims= getfilevardims(f,varName(0))
xs = x(:,{latS:latN},{lonE:lonW}) ; JJAS tropical Pacific
xu = dim_avg_n_Wrap( xs,0)
ds = dimsizes(xs) ; assume the same dimension of u and v at 850 and
200 hPa
xx = new((/nyr,ds(1),ds(2)/),float,"No_FillValue") ; so only create xx
once
YYYYMM= new ( (/nyr,ds(0)/), double)
printVarSummary(xs)
do nf= 0,1
do ny= 0,nyr-1
dir = str_concat(dir1+yrDir(ny))
fil= systemfunc("cd "+dir+" ; ls *wnd_850.nc") ; input file name(s)
f= addfile (dir+fil(nf), "r")
x= f->$varName(nf)$
dims = getfilevardims(f,varName(nf))
xs := x(:,{latS:latN},{lonE:lonW}) ; Indian Ocean
xy = dim_avg_n_Wrap( xs, 0 )
xx(ny,:,:)= xy
YYYYMM(ny,:) = cd_calendar(xs&$xs!0$, 1)
xx!0 = "year"
if ( ny .eq. nyr-1 .and. nf .eq. 0 ) then
u850= dim_avg_n_Wrap( xx, 0 )
else if ( ny .eq. nyr-1 .and. nf .eq. 1 ) then
v850= dim_avg_n_Wrap( xx, 0 )
end if
end if
end do
end do
do nf= 0,1
do ny= 0,nyr-1
fil= systemfunc("cd "+dir+" ; ls *wnd_200.nc") ; input file name(s)
f= addfile (dir+fil(nf), "r")
x= f->$varName(nf)$
dims = getfilevardims(f,varName(nf))
xs := x(:,{latS:latN},{lonE:lonW}) ; Indian Ocean
xy = dim_avg_n_Wrap( xs, 0 )
xx(ny,:,:)= xy
xx!0 = "year"
if ( ny .eq. nyr-1 .and. nf .eq. 0 ) then
u200= dim_avg_n_Wrap( xx, 0 )
else if ( ny .eq. nyr-1 .and. nf .eq. 1 ) then
v200= dim_avg_n_Wrap( xx, 0 )
end if
end if
end do
end do
print(YYYYMM(0:2,0:3))
du_nmm= u200-u850
dv_nmm= v200-v850
copy_VarMeta(u850,du_nmm)
copy_VarMeta(v850,dv_nmm)
dulon = du_nmm(:,{65:95})
duy_nmm = dim_avg_n_Wrap( dulon, 1 )
f = addfile (dir+fil(0), "r")
la = f->$varName(2)$
dims = getfilevardims(f,varName(2))
lat = la({$dims(1)$|30:-30}) ; get latitudes in the domain
printVarSummary(du_nmm)
printVarSummary(duy_nmm)
printVarSummary(lat)
wks= gsn_open_wks("X11","vShear_nmm")
gsn_define_colormap(wks,"BlueRed") ; use the BlueRed colormap
(instead of default colormap)
plot = new(2,graphic) ; create plot array
res = True
res@gsnAddCyclic = False
res@mpMinLatF = -30
res@mpMaxLatF = 30
res@mpMinLonF = 30
res@mpMaxLonF = 160
res@cnFillOn = True
res@gsnSpreadColors = True ; use full colormap
res@gsnSpreadColorStart = 10 ; for BlueRed
res@gsnSpreadColorEnd = 250 ; for BlueRed
res@cnLevelSelectionMode= "ManualLevels"
res@cnMinLevelValF = -30.
res@cnMaxLevelValF = 50.
res@cnLevelSpacingF = 4.
res@cnSpanFillPalette = True
res@cnLinesOn = False ; turn off the contour
lines
res@lbLabelBarOn = True
res@pmLabelBarWidthF= 0.8
res@lbLabelStride = 4
res@mpFillOn = False
res@mpOutlineBoundarySets = "National" ; turns on country
boundaries.
res@gsnLeftString = "NMM: Average Monthly vertical shear of U-component
during JJAS"
res@cnFillDrawOrder = "Predraw"
res@gsnDraw = False
res@gsnFrame = False
print("a")
; plot(0) = gsn_csm_contour_map(wks,du_nmm,res)
print("b")
res@cnMinLevelValF = -14.
res@cnMaxLevelValF = 10.
res@cnLevelSpacingF = 1.
res@gsnLeftString = "NMM: Average Monthly vertical shear of V-component
during JJAS"
; plot(1) = gsn_csm_contour_map(wks,dv,res)
; gsn_panel(wks,plot,(/2,1/),False)
wks = gsn_open_wks ("X11","vShearXY_nmm")
xyres = True
xyres@tiMainString = "NMM: Average Monthly Easterly shear during JJAS"
; plot = gsn_csm_xy (wks,duy_nmm&lat,duy_nmm({lat|-30:30}),xyres)
end
_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Wed Dec 4 19:08:21 2013
This archive was generated by hypermail 2.1.8 : Fri Dec 13 2013 - 11:39:30 MST