Re: [Bug] yyyymmddhh2yyyyFrac contributed.ncl

From: Dennis Shea <shea_at_nyahnyahspammersnyahnyah>
Date: Thu Apr 24 2014 - 10:42:20 MDT

Alan, THX ... I did make changes to the contributed codes
               to recognize the 'calendar' attribute.
               Unlike 'built-in' functions, there is mo extensive
               test harness for all functions. After all, the
               are 'contributed'. There were so many changes I
               could not test all of them. My bad!

               We will come out with a 6.2.1 that fixes assorted
               errors with the 6.2.0 release.

               We are at a WkShop (U Maine). Hence, quite busy. I
               will check in fixes later today or tomorrow.

D

On 4/24/14, 9:52 AM, Alan Brammer wrote:
> 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
>
_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Thu Apr 24 10:42:30 2014

This archive was generated by hypermail 2.1.8 : Tue Apr 29 2014 - 09:04:20 MDT