[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