Found a couple of typos in the 6.2.0 version of yyyymmddhh2yyyyFrac (aka yyyymmddhh_to_yyyyfrac ) in contributed.ncl
edits in the 6.2.0 contributed.ncl are;
lines 7876 & 7879 have nDay instead of nTim
lines 7883- 7899 reference yyyymmdd instead of yyyymmddhh
Having checked the 6.1.2 version these are new errors to do with, what looks like added calendar functionality.
Pasted below is the whole function with corrections.
Alan.
##############################
Alan Brammer,
PhD Student,
Department of Atmospheric and Environmental Sciences,
University at Albany, State University of New York, Albany, NY, 12222
abrammer@albany.edu
##############################
undef ("yyyymmddhh2yyyyFrac")
function yyyymmddhh2yyyyFrac (yyyymmddhh[*]:numeric)
local year, mmddhh, mon, ddhh, day, hour, dayYear, nTim, yrFrac \
, n, ysec, dsec, varType, YEAR
begin
varType = typeof(yyyymmddhh)
if (varType.eq."integer") then
YYYYMMDDHH = yyyymmddhh
else
YYYYMMDDHH = toint(yyyymmddhh)
end if
year = YYYYMMDDHH/1000000
mmddhh = YYYYMMDDHH-year*1000000
delete(YYYYMMDDHH)
mon = mmddhh/10000
ddhh = mmddhh-mon*10000
delete (mmddhh)
day = ddhh/100
hour = ddhh-day*100
delete (ddhh)
if (isatt(yyyymmddhh,"calendar")) then
year@calendar = yyyymmddhh@calendar ; check for calendar
end if
dayYear = day_of_year(year, mon, day) ; Gregorian calendar
delete ([/mon, day/])
nTim = dimsizes(yyyymmddhh)
if (varType.eq."double") then
yrFrac = new( nTim, "double", "No_FillValue")
one = 1d0
else
yrFrac = new( nTim, "float", "No_FillValue")
one = 1.0
end if
if (isatt(yyyymmddhh,"calendar")) then ; retrofit to existing code
yrFrac@calendar = yyyymmddhh@calendar
if (yyyymmddhh@calendar.eq."360_day" .or. yyyymmddhh@calendar.eq."360") then
con = (/ 360, 360, 86400, 3600 /)*one
end if
if (yyyymmddhh@calendar.eq."365_day" .or. yyyymmddhh@calendar.eq."365" .or. \
yyyymmddhh@calendar.eq."noleap" .or. yyyymmddhh@calendar.eq."no_leap") then
con = (/ 365, 365, 86400, 3600 /)*one
end if
if (yyyymmddhh@calendar.eq."366_day" .or. yyyymmddhh@calendar.eq."366" .or. \
yyyymmddhh@calendar.eq."allleap" .or. yyyymmddhh@calendar.eq."all_leap") then
con = (/ 366, 366, 86400, 3600 /)*one
end if
if (yyyymmddhh@calendar.eq."gregorian" .or. yyyymmddhh@calendar.eq."standard") then
con = (/ 365, 366, 86400, 3600 /)*one
end if
else
con = (/ 365, 366, 86400, 3600 /)*one ; default is gregorian/standard
end if
do n=0,nTim-1
if (isleapyear(year(n))) then
ysec = con(2)*con(1)
else
ysec = con(2)*con(0)
end if
dsec = (dayYear(n)-1)*con(2) + hour(n)*con(3)
yrFrac(n) = year(n) + dsec/ysec
end do
yrFrac@long_name = "Time"
yrFrac@units = "YYYY + fractional portion of year"
yrFrac@NCL = "contributed.ncl: function yyyymmddhh_to_yyyyFrac"
return(yrFrac)
end
_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Thu Apr 24 09:53:12 2014
This archive was generated by hypermail 2.1.8 : Tue Apr 29 2014 - 09:04:20 MDT