[ncl-talk] Time string with 1 minute interval
Dave Allured - NOAA Affiliate
dave.allured at noaa.gov
Sat Jul 13 10:37:53 MDT 2019
Correction. Only 27 bits of precision are required in this problem. My
bad. That is log base 2 of number of minutes elapsed since 1800-1-1. 33
bits was for elapsed seconds. You still need to calculate in double
precision.
On Fri, Jul 12, 2019 at 7:06 PM Dave Allured - NOAA Affiliate <
dave.allured at noaa.gov> wrote:
> You have time origin of 1800-01-01, and you need a resolution of 1 minute
> in year 2017. This requires a precision of at least 33 bits. However, you
> made time coordinates with NCL single precision type "float". This has a
> precision of only 24 bits.
>
> Another problem is that the cd_string function has a known bug where
> sometimes 60 seconds is printed instead of zero, and the rest of the date
> and time is one minute too low.
>
> There is more than one way to fix this. I recommend the following. (1)
> and (2) for sure, (3) is optional in this case.
>
> (1) Convert all of your time coordinate calculations to type double. Make
> sure to includes all of the floating point constants, by adding suffix "d".
> (2) Use function ut_string rather than cd_string.
> (3) Use a time origin that is much closer to your model dates, such as
> 2000-1-1 or even 2017-1-1. This will reduce the full number of bits of
> precision needed for small time steps.
>
> To more clearly see what is going on with high precision problems, print
> the actual numeric coordinate values, not just the final strings. Also
> temporarily show the seconds in time of day, by changing part of your
> format string to %H%M%S.
>
> --Dave
>
>
> On Fri, Jul 12, 2019 at 12:52 PM Sakib Ahmed via ncl-talk <
> ncl-talk at ucar.edu> wrote:
>
>> Hello NCL Community,
>>
>> I'm stuck with a simple problem of creating time string with an interval
>> of 1 minute. I'm working with a wind model and the output file doesn't have
>> any time coordinates attached. I'm using the cd_inv_calendar and cd_string
>> functions for creating time string. In my model output, I have outputs
>> saved in each minute and in total, I have 900 minutes (15 hours) of data
>> stored in the output file. This is what I tried:
>>
>>
>> ---------------------------------------------------------------------------
>> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
>> load "$NCARG_ROOT/lib/ncarg/nclscripts/contrib/cd_string.ncl"
>>
>> ; model start time 2017-09-10 12Z
>>
>> syyyy = 2017
>> smm = 09
>> sdd = 10
>> shh = 12
>>
>> ; model end time 2017-09-11 03Z
>>
>>
>> eyyyy = 2017
>> emm = 09
>> edd = 11
>> ehh = 03
>>
>> timeUnits = "hours since 1800-01-01 00:00:00"
>>
>> sdate = cd_inv_calendar(syyyy,smm,sdd,shh,00,00,timeUnits,0)
>> edate = cd_inv_calendar(eyyyy,emm,edd,ehh,00,00,timeUnits,0)
>>
>> ntimes = toint((edate-sdate)/.01666666667) +1 ; model has 900 steps, each
>> step is 1 minute
>>
>> times = new( (/ntimes/), "float")
>>
>> times at units = timeUnits
>>
>> do n=0,ntimes-1
>> times(n) = tofloat(sdate + (.01666666667*n)) ;multiplying n by 1 makes
>> time interval as 1 hour. Multiplying n by 0.25 makes time interval 15
>> minutes. But multiplying by 0.01666666667 doesn't create 1 minute interval.
>> end do
>>
>> time_str = cd_string(times,"%H%M UTC %d %c %Y")
>>
>> print(time_str)
>>
>> ------------------------------------------
>> Variable: time_str
>> Type: string
>> Total Size: 7200 bytes
>> 900 values
>> Number of Dimensions: 1
>> Dimensions and sizes: [900]
>> Coordinates:
>> Number Of Attributes: 1
>> _FillValue : missing
>> (0) 1200 UTC 10 Sep 2017
>> (1) 1200 UTC 10 Sep 2017
>> (2) 1200 UTC 10 Sep 2017
>> (3) 1200 UTC 10 Sep 2017
>> (4) 1207 UTC 10 Sep 2017
>> (5) 1207 UTC 10 Sep 2017
>> (6) 1207 UTC 10 Sep 2017
>> (7) 1207 UTC 10 Sep 2017
>> (8) 1207 UTC 10 Sep 2017
>> (9) 1207 UTC 10 Sep 2017
>> (10) 1207 UTC 10 Sep 2017
>> (11) 1207 UTC 10 Sep 2017
>> (12) 1215 UTC 10 Sep 2017
>> (13) 1215 UTC 10 Sep 2017
>> .
>> .
>> .
>> (891) 0252 UTC 11 Sep 2017
>> (892) 0252 UTC 11 Sep 2017
>> (893) 0252 UTC 11 Sep 2017
>> (894) 0252 UTC 11 Sep 2017
>> (895) 0252 UTC 11 Sep 2017
>> (896) 0252 UTC 11 Sep 2017
>> (897) 0300 UTC 11 Sep 2017
>> (898) 0300 UTC 11 Sep 2017
>> (899) 0300 UTC 11 Sep 2017
>>
>> --
>> Thank you,
>> Sakib Ahmed
>> Connecticut College
>> Environmental Studies Major,
>> New London, CT 06320
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20190713/13645869/attachment.html>
More information about the ncl-talk
mailing list