[ncl-talk] how to Calculate Seasonal average for a variable for different years
adriana.bossolasco at cnrs-orleans.fr
adriana.bossolasco at cnrs-orleans.fr
Fri Sep 13 07:47:27 MDT 2019
Hi everyone
I have different .nc daily files and I want to calculate the seasonal
(JJA) for several year and save in one variable that contain all the
years for this three months. I did one code ncl that works for one year
but after I don't realize how to continue. I think the problem is
because I add time dimension after using dim_avg_n and the index doesn't
change. I will put part of my code to be clear
year1=2005
year2=2007
nyear=year2-year1
month1=6
month2=8
nmonths=month2-month1+1
do i = 1,nyear
y= i+year1-1
do j = 1,nmonths
print(nmonths)
if (month1+j-1 .ge. 10) then
mois=10
else
mois="0"+(j-1+month1) ; ver aqui
end if
printVarSummary(mois)
file1 := systemfunc(" ls
/PROJETS/MOUSSON-NEW/MAM7_CMIP6_CAMS/MAM7_test10_MERRA2.cam.h0."+y+"-"+mois+"-*.nc")
print(file1)
setfileoption("nc","SuppressClose", False)
f = addfiles(file1,"r")
ListSetType (f, "cat")
After I read different variables and for calculate the seasonal average
I do the next:
;------------------
if (j .eq. 1) then ;for JUN
CO_press_JUN = new ((/60*nyear,nlev,nlat,nlon/),"float",CO_2 at _FillValue)
CO_press_JUN(60*(i-1):60*(i)-1,:,:,:) = CO_2
CO_JUN_avg = CO_press_JUN(0:0,:,:,:)
CO_JUN_avg(0,:,:,:) = (/ dim_avg_n(CO_press_JUN,0)/)
printMinMax(CO_JUN_avg, True)
printVarSummary(CO_JUN_avg)
if (j .eq. 2) then ; for JUL
CO_press_JUL = new ((/62*nyear,nlev,nlat,nlon/),"float",CO_2 at _FillValue)
CO_press_JUL(62*(i-1):62*(i)-1,:,:,:) = CO_2
CO_JUL_avg = CO_press_JUL(0:0,:,:,:)
CO_JUL_avg(0,:,:,:) = (/dim_avg_n(CO_press_JUL,0)/)
printMinMax(CO_JUL_avg, True)
printVarSummary(CO_JUL_avg)
if (j .eq. 3) then ; For AUG
CO_press_AUG = new ((/62*nyear,nlev,nlat,nlon/),"float",CO_2 at _FillValue)
CO_press_AUG(62*(i-1):62*(i)-1,:,:,:) = CO_2
CO_AUG_avg = CO_press_AUG(0:0,:,:,:)
CO_AUG_avg(0,:,:,:) = (/dim_avg_n(CO_press_AUG,0)/)
printMinMax(CO_AUG_avg, True)
printVarSummary(CO_AUG_avg)
end do ; boucle mois
;---------
Now I want to create a variable
CO_JJA = new((/nyear,nlev,nlat,nlon/),"float")
which contain the number of year and the values CO_JUN_avg, CO_JUL_avg,
CO_AUG_avg of each year
However I didn't arrive to this because I think that the problem is due
to this CO_AUG_avg = CO_press_AUG(0:0,:,:,:) and the index is always 0.
I'm stuck with this! Can anyone give me any advice or help?
I really appreciate
Thank you in advance
Adriana
--
Adriana Bossolasco
LPC2E UMR 7328 (CNRS, Université d'Orléans)
3A avenue de la Recherche Scientifique
45071 Orléans Cedex 2 - FRANCE
Tel +33 (0)2 38 25 52 85
e-mail: adriana.bossolasco at cnrs-orleans.fr
More information about the ncl-talk
mailing list