Mary,
I got very good results and a Hovmoller plot by NCL 6.1.2 as below.
Did you truly execute the script in the second block below? I can't
generate the error message you showed so I can't fix the error. I used the
"/" in the string to indicate directories which is not related in this
script. After removing the "/", I got right years with yStrt =
(/"1982","1986","1997"/), rather than yStrt = (/"1981","1985","1996"/). I
am a bit surprised that the "/" change the range in the ind statement.
Anyway, thank you very much for the help,
Yi-Chih
############
yhuang@arc-env:/fs3/yhuang/scripts$ ncl pcpTime.ncl
Copyright (C) 1995-2013 - All Rights Reserved
University Corporation for Atmospheric Research
NCAR Command Language Version 6.1.2
The use of this software is governed by a License Agreement.
See http://www.ncl.ucar.edu/ for more details.
Variable: dpcp
Type: float
Total Size: 6144 bytes
1536 values
Number of Dimensions: 2
Dimensions and sizes: [time | 24] x [lon | 64]
Coordinates:
time: [71953..72652]
lon: [121.25..278.75]
Number Of Attributes: 1
_FillValue : -9.96921e+36
#############
load "$SysE/lib/ncl/helper_libs.ncl"
begin
latS = -5.0
latN = 5.0
lonE = 120.0
lonW = 280.0
yrStrt = 1979
yrLast = 2009
in = addfile("/fs3/yhuang/precip.mon.mean.nc","r") ; 197901-201306
YMDHMS = cd_calendar(in->time, 0) ; all times
; index for desired time
iYear = ind(YMDHMS(:,0).ge.yrStrt .and. YMDHMS(:,0).le.yrLast)
; read time and region
precip = in->precip(iYear,{latS:latN},{lonE:lonW})
pcpClm = clmMonTLL( precip )
xt= precip(0:23,{latS:latN},{lonE:lonW})
ds= dimsizes(xt)
nyr= yrLast -yrStrt +1
pcpm= new((/ds(0),ds(2)/),float)
yyyymmM = cd_calendar(precip&time,-1) ; verify times are correct
dimp = dimsizes(precip)
ntim = dimp(0)
nlat = dimp(1)
mlon = dimp(2)
pcpt = dim_avg_n_Wrap( pcpClm,1 ) ; (time,lat)
do nm= 0,11
pcpm(nm,:) = pcpt(nm,:)
pcpm(nm+12,:)= pcpt(nm,:)
end do
yStrt = (/"1981/","1985/","1996/"/)
yLast = (/"1983/","1987/","1998/"/)
nyrs= dimsizes(yStrt)
in= addfile("/fs3/yhuang/precip.mon.mean.nc","r") ; 197901-201306
prec= in->precip
xt= prec(0:23,{latS:latN},{lonE:lonW})
ds= dimsizes(xt)
pcps= new((/nyrs,ds(0),ds(2)/),float)
do ny= 0,nyrs-1 ; precipitation in ENSO years
iYr = ind(YMDHMS(:,0).ge.yStrt(ny) .and. YMDHMS(:,0).le.yLast(ny))
; read time and region
preci = in->precip(iYr,{latS:latN},{lonE:lonW})
yyyymmE = cd_calendar(preci&time,-1) ; verify times are correct
dimp = dimsizes(preci)
ntim = dimp(0)
nlat = dimp(1)
mlon = dimp(2)
pcps(ny,:,:)= dim_avg_n_Wrap( preci,1 ) ; (time,lat)
end do
pcps!0= "year"
pcpE= dim_avg_n_Wrap( pcps, 0 )
dpcp= pcpE - pcpm
copy_VarCoords(pcpE,dpcp)
printVarSummary(dpcp)
wks= gsn_open_wks("X11","pcpa")
gsn_define_colormap(wks,"BlueRed")
res = True
res@gsnAddCyclic = False
res@cnFillOn = True
res@cnLinesOn = False ; turn off the contour
lines
res@cnLineLabelsOn = False
res@cnSpanFillPalette = True
res@gsnSpreadColors = True ; use full colormap
res@gsnSpreadColorStart = 10 ; for BlueRed
res@gsnSpreadColorEnd = 250 ; for BlueRed
yr= ispan(1,ntim,1)
yr@long_name = "months"
delete(dpcp&time)
dpcp&time = yr
plot = gsn_csm_hov(wks,dpcp,res)
end
On Tue, Nov 12, 2013 at 1:24 AM, Mary Haley <haley@ucar.edu> wrote:
>
> On Nov 8, 2013, at 4:04 PM, Yi-Chih Huang <dscpln@gmail.com> wrote:
>
> > Mary,
> >
> > The result is as follows. I corrected the errors in my script as
> the second block below. It is yStrt = (/"1981/","1985/","1996/"/), rather
> than yStrt = (/"1982/","1986/","1997/"/), that give the periods 1982-83,
> 1986-87, and 1997-98. Do you know what the problem is in the script?
>
> I still cannot run your script because I'm getting the error:
>
> (0) contributed.ncl: clmMonTLL: dimension must be a multiple of 12
>
> Meanwhile, I don't understand why you *still* have yStrt and yLast as
> strings. You cannot compare strings to floating point values without
> converting them first.
>
> In other words, doing some thing like this:
>
> iYr = ind(YMDHMS(:,0).ge.yStrt(ny) .and. YMDHMS(:,0).le.yLast(ny))
>
> where "YMDHMS" is a float, and "yStrt" and "yLast" are strings makes no
> sense.
>
> Change:
>
> yStrt = (/"1981/","1985/","1996/"/)
> yLast = (/"1983/","1987/","1998/"/)
>
> to:
>
> yStrt = (/1981,1985,1996/)
> yLast = (/1983,1987,1998/)
>
> If you continue to have problems with this, you *must* send me a script
> that works. I don't have time to fix code that is not working in order to
> find the source of a different problem.
>
>
> --Mary
>
>
_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Mon Nov 11 16:38:41 2013
This archive was generated by hypermail 2.1.8 : Fri Nov 22 2013 - 09:36:32 MST