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

Alan Brammer abrammer at albany.edu
Thu Feb 19 12:39:13 MST 2015


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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20150219/25a17963/attachment.html 


More information about the ncl-talk mailing list