<div dir="ltr"><div><div><div><div><div><div>See attached<br><br></div><div>%> ncl rd_tmp2m.ncl<br></div><div><br>===<br></div>For GRIB & HDF files, NCL does <b>*not* </b>create an array dimension of size one. A dimension of size one is sometime called a "degenerate dimension." NCL does this to make the dimension structure simpler. <br><br></div>Originally, I did not like this behavior. Now, more often than not, I consider it a feature of NCL. :-)<br><br>===<br></div>Please look at the file via:<br><br></div>%> ncl_filedump tmp2m.1995053100.time.grb2 | less<br><br></div>What do you see?<br><br>--------------------------------------------------------------------------<br></div>[snip]<br><div> dimensions:<br><b> forecast_time0 = 1224 <=== 2400 forecast times<br></b> lat_0 = 190<br> lon_0 = 384<br> variables:<br> float <b>TMP_P0_L103_GGA0 ( forecast_time0, lat_0, lon_0 )</b><br> center : US National Weather Service - NCEP (WMC)<br> production_status : Operational products<br> long_name : Temperature<br> units : K<br> _FillValue : 1e+20<br></div><div>[snip]<br></div><div> i<b>nitial_time : 05/31/1995 (00:00) <=== no time info 'lost'<br></b></div><div><b> just returned differently<br></b></div><div>[snip]<br> <b><span style="color:rgb(255,0,0)">integer</span></b> forecast_time0 ( forecast_time0 )<br> long_name : Forecast offset from initial time<br> <span style="color:rgb(255,0,0)"><b>units : hours <=====</b></span><br>----------------------------------------------------------------------------------------------<br></div><div>Now look at:<br><br>%> ncl_filedump tmp2m.1995053100.time.grb2 <b>-itime</b> | less</div><div><br><div><div><div><div>[snip]<br> dimensions:<br><b> initial_time0_hours = 1 <=== <br> forecast_time0 = 1224</b><br> lat_0 = 190<br> lon_0 = 384<br><br> float <b>TMP_P0_L103_GGA0 ( initial_time0_hours, forecast_time0, lat_0, lon_0 )<br><br></b></div><div>[snip]<b><br> <span style="color:rgb(255,0,0)">double<span style="background-color:rgb(255,0,0)"></span></span> initial_time0_hours ( initial_time0_hours )<br> </b>long_name : initial time<b><br> units : <span style="color:rgb(255,0,0)">hours since 1800-01-01 00:00</span> </b><--- cd_calendar style<b><br><br>-----------------------------------------------------------------------<br></b></div><div><br></div><div>This gives both the initial-time of the forecast & the 2400 forecast times. For this application, I prefer that NCL include the degenerate dimension. How to do this programmatically? Our 'friend' ... <b><span style="color:rgb(0,0,255)">setfileoption<br><br><a href="https://www.ncl.ucar.edu/Document/Functions/Built-in/setfileoption.shtml">https://www.ncl.ucar.edu/Document/Functions/Built-in/setfileoption.shtml</a><br></span></b></div><div><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)">See Example 6</span><br><span style="color:rgb(0,0,0)"><br>-------------------------------------------------------------------</span><br></span></div><div><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)">NOTE:</span> <br></span></div><div><span style="color:rgb(0,0,255)"><br> <span style="color:rgb(0,0,0)">(a)</span> <span style="color:rgb(0,0,0)">initial_time0_hours is type 'double'<br></span></span></div><div><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)"> (b) forecast_time0 is type 'integer'<br></span></span></div><div><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)"> (c) cd_calendar <b>requires</b> units such as: "hours/days/minutes/seconds since..."<br><br></span></span></div><div><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)">What to do? The attached script contains:<br><br> itime = tmp&initial_time0_hours ; hours since 1800-01-01 00:00 <br> printVarSummary(itime) ; typeof(itime) ="double"<br><br> ftime = f->forecast_time0 ; Forecast **offset** from (hours) initial time<br> ; typeof(ftime) =<b>"integer</b>"<br> printVarSummary(ftime) ; (2400)<br><br></span></span></div><div><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)">If I tried to 'rebase' the forecast times via:<br></span></span><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)"><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)"><br> ftime <b>= </b>itime + ftime ; (double + integer) <br><br></span></span></span></span></div><div><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)"><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)">NCL will not allow because (</span></span></span></span><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)"><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)"><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)">double + integer) returns a 'double'. However, since ftime is type integer</span></span>, <b>NCL which is a strongly typed language</b> default will not allow the type double right-hand-side to overwrite an existing variable of type integer.<br><br></span></span></span></span></div><div><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)"><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)">How to 'solve'? Use our other 'best friend', the reassignment operatoe <b>:=</b><br></span></span></span></span></div><div><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)"><br> ftime <b>:= </b>itime + ftime ; double <b>:=</b> (double + integer) <br> ftime@units = itime@units ; same units as itime but rebased<br><br></span></span></div><div><br><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)"><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)"><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)">I really like the <b>:= </b>operator. I like the fact that upon seeing the syntax, a user is aware that 'something' might change: size, shape, type, etc. In some other interpreted languages, this is the default behavior. IMHO, this can lead to unexpected errors.<br><br>------------------------------------- <br></span></span></span></span></span></span></div><div><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)">Cheers<br></span></span></div><div><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)">D<br></span></span></div><div><span style="color:rgb(0,0,255)"><span style="color:rgb(0,0,0)"><br></span></span></div><div><b><span style="color:rgb(0,0,255)"></span></b></div></div></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Oct 8, 2017 at 7:09 PM, Alan Brammer <span dir="ltr"><<a href="mailto:abrammer@albany.edu" target="_blank">abrammer@albany.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif">Forecast time in your file will be hours since simulation started. e.g. 0,6,12,18. Without any guidance the cd_ routines will think this is hours since 1979-01-01. </div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">I don't want to download a 300MB file just to see if there is another time variable inside, so working with what I can see in the email, you can grab the initialisation date from the file name using cd_inv_string() incldued in 6.4.0 <a href="http://www.ncl.ucar.edu/Document/Functions/User_contributed/cd_inv_string.shtml" target="_blank">http://www.ncl.ucar.edu/<wbr>Document/Functions/User_contri<wbr>buted/cd_inv_string.shtml</a></div><div class="gmail_default" style="font-family:verdana,sans-serif"><span style="font-family:monospace,monospace"><br></span></div><div class="gmail_default" style="font-family:verdana,sans-serif"><span style="font-family:monospace,monospace"><br></span></div><div class="gmail_default" style="font-family:verdana,sans-serif"><span style="font-family:monospace,monospace">load "$NCARG_ROOT/lib/ncarg/<wbr>nclscripts/contrib/cd_inv_<wbr>string.ncl"</span><br></div><div class="gmail_default"><font face="monospace, monospace"><div class="gmail_default">load "$NCARG_ROOT/lib/ncarg/<wbr>nclscripts/contrib/cd_string.<wbr>ncl"</div><div><br></div></font></div><div class="gmail_default"><font face="monospace, monospace">fname="<a href="http://tmp2m.2002050100.time.nc" target="_blank">tmp2m.2002050100.time.<wbr>nc</a>"<br></font></div><div class="gmail_default"><font face="monospace, monospace">a = addfile(fname, "r")</font></div><div class="gmail_default"><font face="monospace, monospace">init_time = cd_inv_string(fname, "tmp2m.%Y%N%D%<a href="http://H.time.nc" target="_blank">H.time.nc</a>" )<br></font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><span style="font-family:verdana,sans-serif">; Then either add the forecast times to the initial_time, or set the calendar for the forecast times so that it is appropriate. </span><br></div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default"><div class="gmail_default"><font face="monospace, monospace">forecast_hours = a->forecast_time0</font></div><div class="gmail_default"><font face="monospace, monospace">forecast_hours@units = cd_string(init_time, "hours since %Y-%N-%D %H:%M")</font></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace">total_time = init_time + forecast_hours</font></div><div class="gmail_default"><font face="monospace, monospace">total_time@units = init_time@units</font></div><div><br></div><div><br></div><div><br></div></div><div class="gmail_default" style="font-family:verdana,sans-serif">Good luck<br></div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">Alan</div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On Sun, Oct 8, 2017 at 3:48 PM, dale zuri <span dir="ltr"><<a href="mailto:dalezuri@gmail.com" target="_blank">dalezuri@gmail.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div><div class="h5"><div dir="ltr"><div><div><div><div><div><div>Hi ,<br></div>This result is almost similar to cd_calendar result.<br>(0) Forecast for 1 Jan. 1979 at 06:00 <br>(1) Forecast for 1 Jan. 1979 at 12:00 <br>(2) Forecast for 1 Jan. 1979 at 18:00 <br>(3) Forecast for 2 Jan. 1979 at 00:00 <br>(4) Forecast for 2 Jan. 1979 at 06:00 <br></div>I am confused with 1979 year . <br></div>But the initial_time : 05/31/1995 (00:00)<br></div><br></div>Thanks<span class="m_1103080053013883208gmail-m_-6668886234285004292m_-5990196081112008516HOEnZb"><font color="#888888"><br><br></font></span></div><span class="m_1103080053013883208gmail-m_-6668886234285004292m_-5990196081112008516HOEnZb"><font color="#888888">DZ<br></font></span></div><div class="m_1103080053013883208gmail-m_-6668886234285004292m_-5990196081112008516HOEnZb"><div class="m_1103080053013883208gmail-m_-6668886234285004292m_-5990196081112008516h5"><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Oct 8, 2017 at 11:24 AM, Guido Cioni <span dir="ltr"><<a href="mailto:guidocioni@gmail.com" target="_blank">guidocioni@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word">You need this in your preamble:<div><span class="m_1103080053013883208gmail-m_-6668886234285004292m_-5990196081112008516m_8909718647525004197m_938275100325876335pl-k" style="box-sizing:border-box;color:rgb(215,58,73);font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;font-variant-ligatures:normal;white-space:pre-wrap;background-color:rgb(255,255,255)">load</span><span style="color:rgb(36,41,46);font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;font-variant-ligatures:normal;white-space:pre-wrap;background-color:rgb(255,255,255)"> </span><span class="m_1103080053013883208gmail-m_-6668886234285004292m_-5990196081112008516m_8909718647525004197m_938275100325876335pl-s" style="box-sizing:border-box;color:rgb(3,47,98);font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;font-variant-ligatures:normal;white-space:pre-wrap;background-color:rgb(255,255,255)">"<span class="m_1103080053013883208gmail-m_-6668886234285004292m_-5990196081112008516m_8909718647525004197m_938275100325876335pl-k" style="box-sizing:border-box;color:rgb(215,58,73)">$NCARG_ROOT</span>/lib/ncarg/nclscri<wbr>pts/contrib/cd_string<span class="m_1103080053013883208gmail-m_-6668886234285004292m_-5990196081112008516m_8909718647525004197m_938275100325876335pl-cce" style="box-sizing:border-box">.</span>ncl”</span></div><div><div class="m_1103080053013883208gmail-m_-6668886234285004292m_-5990196081112008516m_8909718647525004197h5"><div><span class="m_1103080053013883208gmail-m_-6668886234285004292m_-5990196081112008516m_8909718647525004197m_938275100325876335pl-s" style="box-sizing:border-box;color:rgb(3,47,98);font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;font-variant-ligatures:normal;white-space:pre-wrap;background-color:rgb(255,255,255)"><br></span></div><div><br></div><div><br><div><blockquote type="cite"><div>Il giorno 08 ott 2017, alle ore 21:23, dale zuri <<a href="mailto:dalezuri@gmail.com" target="_blank">dalezuri@gmail.com</a>> ha scritto:</div><br class="m_1103080053013883208gmail-m_-6668886234285004292m_-5990196081112008516m_8909718647525004197m_938275100325876335Apple-interchange-newline"><div><div dir="ltr"><div>Hi ,<br></div><div>Thanks for your reply. I need to create a time array with the actual date associated with each forecast time. <br></div><div>fatal:Undefined identifier: (cd_string) is undefined, can't continue error<br>t=cd_string(time, "%H:%M")<br><br></div><div>DZ<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Oct 8, 2017 at 9:32 AM, Guido Cioni <span dir="ltr"><<a href="mailto:guidocioni@gmail.com" target="_blank">guidocioni@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word">You should really take a look at the starting guide of NCL and to the documentation of the individual functions before posting questions here.<div><br></div><div>I’ve just checked your file and it seems that the time variable has the right attributes. <br><div><br></div><div>Something like this should work (NOT TESTED)<br><div><br></div><div><font size="1" face="Menlo">a=addfile("tmp2m.1995053100.ti<wbr>me.grb2","r”)</font></div><div><font size="1" face="Menlo">time=a->forecast_time0</font></div><div><span style="font-family:Menlo;font-size:x-small"><br></span></div><div><span style="font-family:Menlo;font-size:x-small">date_title= </span><span style="font-family:Menlo;font-size:x-small">"Forecast for "</span><span style="font-family:Menlo;font-size:x-small">+</span><span style="font-family:Menlo;font-size:x-small">cd_string</span><span style="font-family:Menlo;font-size:x-small">(time, </span><span style="font-family:Menlo;font-size:x-small">"%d %c</span><span style="font-family:Menlo;font-size:x-small">.</span><span style="font-family:Menlo;font-size:x-small"> %Y"</span><span style="font-family:Menlo;font-size:x-small">)+</span><span style="font-family:Menlo;font-size:x-small">" at "</span><span style="font-family:Menlo;font-size:x-small">+</span><span style="font-family:Menlo;font-size:x-small">cd_string</span><span style="font-family:Menlo;font-size:x-small">(time, </span><span style="font-family:Menlo;font-size:x-small">"%H:%M"</span><span style="font-family:Menlo;font-size:x-small">)+" UTC</span><font size="1" face="Menlo">”</font></div><div><span style="font-family:Menlo;font-size:x-small"><br></span></div><div><span style="font-family:Menlo;font-size:x-small">Cheers </span></div><div><div><br><div><blockquote type="cite"><div>Il giorno 08 ott 2017, alle ore 11:40, dale zuri <<a href="mailto:dalezuri@gmail.com" target="_blank">dalezuri@gmail.com</a>> ha scritto:</div><br class="m_1103080053013883208gmail-m_-6668886234285004292m_-5990196081112008516m_8909718647525004197m_938275100325876335m_5624277842751735818Apple-interchange-newline"><div><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline">date = cd_calendar(r, -3)</span></div></blockquote></div><br></div></div></div></div></div></blockquote></div><br></div>
</div></blockquote></div><br></div></div></div></div></blockquote></div><br></div>
</div></div><br></div></div>______________________________<wbr>_________________<br>
ncl-talk mailing list<br>
<a href="mailto:ncl-talk@ucar.edu" target="_blank">ncl-talk@ucar.edu</a><br>
List instructions, subscriber options, unsubscribe:<br>
<a href="http://mailman.ucar.edu/mailman/listinfo/ncl-talk" rel="noreferrer" target="_blank">http://mailman.ucar.edu/mailma<wbr>n/listinfo/ncl-talk</a><br>
<br></blockquote></div><br></div></div>
<br>______________________________<wbr>_________________<br>
ncl-talk mailing list<br>
<a href="mailto:ncl-talk@ucar.edu">ncl-talk@ucar.edu</a><br>
List instructions, subscriber options, unsubscribe:<br>
<a href="http://mailman.ucar.edu/mailman/listinfo/ncl-talk" rel="noreferrer" target="_blank">http://mailman.ucar.edu/<wbr>mailman/listinfo/ncl-talk</a><br>
<br></blockquote></div><br></div>