[ncl-talk] month_to_season() how does it work?

Daniel Barandiaran dbarandiaran at gmail.com
Thu Feb 19 12:56:26 MST 2015


Thanks Alan, that is a helpful reminder.  I have gone looking into
contributed.ncl several times to look at various function mechanics, but
for some reason never thought to look at month_to_season to see how DJF is
actually working.  For some reason I had tripped up on the wording of the
documentation and thought it was saying that DJF=JF just in general,
although I also always thought to myself that it was strange that it would
be that way...



On Thu, Feb 19, 2015 at 12:39 PM, Alan Brammer <abrammer at albany.edu> wrote:

> To add to the discussion here, if you have these sorts of questions about
> functions that have the load "$NCARG_ROOT/"... line at the top of the
> documentation page.  You can look in that file, search for the function
> name and take a browse at what the function is doing.
>
>
> lines in question:
>
> * if (NMO.eq.0) then*
>
> *      nyrStrt = 1*
>
> *  end if*
>
> *  if (NMO.eq.nmos-1) then*
>
> *      nyrLast = nyrs-2*
>
> *  end if*
> This is checking whether season is DJF (NMO .eq. 0) or season is NDJ
> (NMO.eq.nmos-1).
>
> After it loops through all the years it then fills in either the first or
> last year with:
>
> *    if (NMO.eq.0) then*
>
> *         n = 0*
>
> *         xSea(0) = (xMon(n) + xMon(n+1))*0.5*
>
> *     end if*
>
> *     if (NMO.eq.nmos-1) then*
>
> *         n = (nyrs-1)*nmos + NMO*
>
> *         xSea(nyrs-1) = (xMon(n) + xMon(n-1))*0.5*
>
> *     end if*
>
> The function is rather simple and expects the input data to be January to
> December.  If you pass it December to Nov. You would have to trick it by
> then asking for season JFM to get DJF.  It might be better to just find the
> indices yourself and do some simple averaging.
>
>
> This line works on my machine to echo the function in question from
> installed .ncl files to the terminal.
>
> awk '/"month_to_season"/,/end$/' $NCARG_ROOT/lib/ncarg/nclscripts/csm/*.ncl
>
> This may not work on your machine, and is just an example. If it doesn't
> work I'm not going to debug the problem.
>
>
> Good luck.
> ~Alan.
>
> On Thu, Feb 19, 2015 at 1:31 PM, Maria Gehne - NOAA Affiliate <
> maria.gehne at noaa.gov> wrote:
>
>> It won't work. The routine expects the input to have  full years, so the
>> time dimension has to be divisible by 12. I haven't played around with the
>> routine enough to know if it would work if you give it full years, but
>> starting in December. So for example:
>>
>> 1979-Dec 1980-Jan .... 2001-Oct 2001-Nov
>>
>> How about you just try that and see if it works? If it does, I would make
>> sure that the result is what you expect by also computing the averages by
>> index (since you know which months correspond to which indices).
>>
>> Maria
>>
>>
>> On Thu, Feb 19, 2015 at 11:05 AM, Erik Jan Schaffernicht <
>> eschaffe at uni-koeln.de> wrote:
>>
>>>  Ok, usually 3, single month seasons are dropped, and at the start a two
>>> month season is possible.
>>>
>>> Now imagine I select from a long time covering netcdf a sub-time-range
>>> and create a new netcdf based on that range.
>>> This new one has as a first entry 1979-Dec and goes on like you can in
>>> the next line below. Last entry of my sub-time-file will be 2001-Feb:
>>>
>>> 1979-Dec   1980-Jan  1980-Feb  1980-Mar...2000-Nov   2000-Dec
>>> 2001-Jan   2001-Feb
>>>
>>> If I now run ncl, ask to read in the slp for   YYYY.ge.1979  to
>>> YYYY.ge.2001   of this file and  execute then:
>>>
>>> slpSeason=  month_to_season(slp, "DJF")
>>>
>>> do I get then my seasonal field based on three months always? Even for
>>> the first season 1979/80 which starts in Dec-1979  (as I deleted all
>>> 1979AD-months before 1979-Dec beforehand)?
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> On 19.02.2015 17:55, Maria Gehne - NOAA Affiliate wrote:
>>>
>>> It should really do that, only the first year average for DJF is JF and
>>> only the last year NDJ is ND. It doesn't really make sense to talk about
>>> seasonal averages when you only use 2 month averages for one of the season
>>> options. And it's not necessary to only use 2 months for DJF in the middle
>>> of the data where you have DJFs in a row. The reason the documentation
>>> mentions the 2 month averages for the first DJF and last NDJ average is so
>>> that people know those values are only based on 2 months and not 3 like the
>>> rest of the DJF and NDJ values.
>>>
>>>  You can easily test the DJF averages by computing the averages for a
>>> few years yourself and comparing that to the result from month_to_season.
>>>
>>>  Maria
>>>
>>> On Thu, Feb 19, 2015 at 9:18 AM, Daniel Barandiaran <
>>> dbarandiaran at gmail.com> wrote:
>>>
>>>> does it really do that? my reading of the documentation suggests that
>>>> DJF is just JF for all years, and similarly NDJ is just ND.
>>>>  On Feb 19, 2015 8:30 AM, "Maria Gehne - NOAA Affiliate" <
>>>> maria.gehne at noaa.gov> wrote:
>>>>
>>>>> Hi Erik,
>>>>>
>>>>>  month_to_season gives you as many seasons as you have full years in
>>>>> your data. So if your data has 13 years then you will end up with 13 values
>>>>> for DJF with the first one only being computed for JF in the first year.
>>>>> The last december value will be ignored, because that would be the 14th
>>>>> season.
>>>>>
>>>>>  Does that help?
>>>>>
>>>>>  Maria
>>>>>
>>>>> On Thu, Feb 19, 2015 at 12:56 AM, Erik Jan Schaffernicht <
>>>>> eschaffe at uni-koeln.de> wrote:
>>>>>
>>>>>> I am not sure how month_to_season() function works for   DJF   (and
>>>>>> NDJ is probably similar).
>>>>>>
>>>>>> Say, I select "DJF"
>>>>>>
>>>>>> I take the years like this:
>>>>>> [snip]
>>>>>> iYYYY=  ind(YYYY.ge.1979 .and. YYYY.le.2003)
>>>>>> slp= ifle->slp(iYYYY,:,:)   + ...   (further steps, input from ncep
>>>>>> slp data.nc, and I flip some dimension to make it fitting to formal
>>>>>> requirements)
>>>>>> slpSeason=  month_to_season(slp, "DJF")
>>>>>> [snip]
>>>>>>
>>>>>> What does the month_to_season() exactly do?
>>>>>>
>>>>>> My understanding of 'what belongs to a season' written down looks
>>>>>> like this, if I group it by DJFseason:
>>>>>>
>>>>>> 1979-Jan and 1979-Feb
>>>>>> 1979-Dec and 1980-Jan and 1980-Feb
>>>>>> ...
>>>>>> 2002-Dec and 2003-Jan and 2003-Feb
>>>>>> 2003-Dec
>>>>>>
>>>>>> How does  month_to_season() process this?
>>>>>> It says that DJF takes only  two months?   Does it mean only two for
>>>>>> the first entry of this list, i.e. 1979-Jan 1979-Feb     but thereafter it
>>>>>> takes always three, so 1979-Dec + 1980-Jan+1980-Feb, so three months in
>>>>>> general except for one exception at the beginning?
>>>>>> Or is it always
>>>>>> 1979-Jan-Feb
>>>>>> 1980-Jan-Feb
>>>>>> 1981-Jan-Feb,   so December is skipped completely?  Then the "*D*JF"
>>>>>> is confusing!?
>>>>>>
>>>>>> And what happens to the 'lonely'  2003-Dec? It has no neighbouring
>>>>>> DJFmonths due to time range selection by years AD.  Is it skipped? Or is
>>>>>> it: "take this month and define it as a season"?
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> 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
>>>>>
>>>>>
>>>
>>>
>>> _______________________________________________
>>> 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
>>>
>>>
>>
>> _______________________________________________
>> 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
>
>


-- 
Danny Barandiaran
Ph.D. Candidate
Department of Plants, Soils, and Climate
Utah State University
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20150219/973245ca/attachment.html 


More information about the ncl-talk mailing list