Converts monthly values to annual values weighted by the number of days in a month.
Available in version 4.2.0.a033 and later.
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" function month_to_annual_weighted ( yyyymm [*] : numeric, x : numeric, opt  : integer )
Year-month dates [eg 198401,198402,...]. This must be the same size as the "time" dimension of x.x
An array containing monthly values. The "time" dimension must be the leftmost dimension if there are multiple dimensions. Ideally, the size of the "time" dimension is evenly divisable by 12.opt
opt=0 returns the weighted sum opt=1 return the weighted annual mean opt=2 return the weighted sum divided by 12 to get monthly mean value
Returns an array with the "time" dimension is decimated by a factor of 12.
Typical usage is that an array of monthly precipitation rate (eg, mm/day) or monthly mean temperatures are input. For precipitation, generally opt=0, and the weighted average is returned. For temperature, generally opt=1, and the weighted annual average is returned.
The weights are the appropriate number days for a month. February oof leap years uses 29 days.
This function does not check for January (mm=1) to be the first month of the yyyymm. Thus, if yyyymm(0)=198103 [say], then the 12-month year will be March 1983 to April 1984.
If the time span is not divisble by 12 then the 'extra' months are ignored. For example, if yyyymm spans 199101 to 199603, weighted annual means will be calculated for 1991 to 1995. There will be no value returned for 1996.
Caveat: This function works as expected for one-dimensional arrays. Also, it works fine when all grid points have 12 non-missing monthly values for any year. However, is any grid point does not have 12 valid values, then the annual values will be returned as missing for all grid points for that year.
A one dimensional array of monthly precipitation [mm/day] is to be converted to annual total. If prc(time) and the size of time is 240 monthly values then 20 (=240/12) values (years) will be returned.
prc_annual_total = month_to_annual_weighted(yyyymm, prc, 0) ; prc_annual_total(20)If the array contains, say, monthly mean temperatures (tmp), then
tmp_annual_mean = month_to_annual_weighted(yyyymm, tmp, 1) ; tmp_annual_mean(20)Example 2
A multi-dimensional array of monthly precipitation totals [mm/day] is to be converted to annual total. If prc(time,lat,lon) and the size of time is 1200 monthly values then 100 (=120/12) values (years) will be returned.
PRC = month_to_annual_weighted(yyyymm, prc, 0) ; PRC(100,nlat,mlon)If the array contains, say, monthly mean temperatures [tmp(time,lev,lat,lon)], then
TMP = month_to_annual_weighted(yyyymm, tmp, 1) ; TMP(100,klev,nlat,mlon))