1 ;************************************************
2 ; Read half-hourly data and write monthly data
3 ; input data is : half-hourly
5 ; output data is : CO2_flux, RAD_FLUX, SH_FLUX, LH_FLUX
7 ;************************************************
8 load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
9 load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
10 load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
11 ;************************************************
14 dir_root = "/fis/cgd/cseg/people/jeff/clamp_data/fluxnet/"
15 station_name = "BOREAS_NSA_OBS"
16 file_name_add = "ameriflux"
24 lon_out = -98.480810 + 360.
27 diro = dir_root + station_name + "/"
28 filo = station_name+"_"+year_start+"-"+year_end+"_monthly.nc"
29 c = addfile(diro+filo,"c")
33 diri = dir_root + station_name + "/"
35 nyear = year_end - year_start + 1
40 ; day_of_month = (/31.,28.,31.,30.,31.,30.,31.,31.,30.,31.,30.,31./)
41 end_of_month1 = (/31.,59.,90.,120.,151.,181.,212.,243.,273.,304.,334.,365./)
42 end_of_month2 = (/31.,60.,91.,121.,152.,182.,213.,244.,274.,305.,335.,366./)
44 data_out1 = new((/nyear,nmon/),float)
45 data_out2 = new((/nyear,nmon/),float)
46 data_out3 = new((/nyear,nmon/),float)
47 data_out4 = new((/nyear,nmon/),float)
48 time_out = new((/nyear,nmon/),integer)
53 ; if (mod(year,4) .eq. 0) then
54 if (year.eq.year_leap1.or.year.eq.year_leap2.or.year.eq.year_leap3) then
55 hour_of_month = end_of_month2 * 24.
57 hour_of_month = end_of_month1 * 24.
59 ; print (hour_of_month)
62 fili = file_name_add+"."+station_name+"."+year+".nc"
63 b = addfile(diri+fili,"r")
66 ; co2 flux unit: umol m-2 s-1
68 ; net radiation flux unit: W m-2
70 ; sensible heat flux unit: W m-2
72 ; latent heat flux unit: W m-2
75 ; time unit: hour since 01-01 (mm-dd)
81 timeR = hour_of_month(0)
83 timeL = hour_of_month(n-1)
84 timeR = hour_of_month(n)
89 i = ind(time.ge.timeL .and. time.lt.timeR)
92 data_out1(m,n) = avg(data1(i))
93 data_out2(m,n) = avg(data2(i))
94 data_out3(m,n) = avg(data3(i))
95 data_out4(m,n) = avg(data4(i))
97 time_out(m,n) = year*100 + n + 1
98 ; print (time_out(m,n))
102 if (m.lt.nyear-1) then
112 data_out1!1 = "month"
113 data_out1@long_name = data1@long_name
114 data_out1@units = data1@units
115 data_out1@_FillValue = 1.e+36
119 data_out2!1 = "month"
120 data_out2@long_name = data2@long_name
121 data_out2@units = data2@units
122 data_out2@_FillValue = 1.e+36
126 data_out3!1 = "month"
127 data_out3@long_name = data3@long_name
128 data_out3@units = data3@units
129 data_out3@_FillValue = 1.e+36
133 data_out4!1 = "month"
134 data_out4@long_name = data4@long_name
135 data_out4@units = data4@units
136 data_out4@_FillValue = 1.e+36
141 time_out@long_name = "current date as yyyymm"
142 time_out@units = "current date as yyyymm"
147 lat_out@units = "degrees_north"
148 lat_out@long_name = "Latitude"
149 lon_out@units = "degrees_east"
150 lon_out@long_name = "Longitude"
157 c->CO2_FLUX = data_out1
158 c->RAD_FLUX = data_out2
159 c->SH_FLUX = data_out3
160 c->LH_FLUX = data_out4