source: TOOLS/CMIP6_FORCING/AER_STRAT/ECRAD/volc_ECRAD.sh @ 6267

Last change on this file since 6267 was 6267, checked in by tlurton, 20 months ago

Storing scripts for generation of ECRAD strat aerosols files.

  • Property svn:executable set to *
File size: 21.8 KB
Line 
1dirpwd=`pwd`
2
3#original CMIP6 files
4#vv='v3'
5#corrected CMIP6 files + extended in time
6vv='v4_ECRAD'
7
8#--choose the resolution
9#--only LR and zoom works fully for now !
10#lmdz='VVLR_l19'
11#lmdz='VLR_l39'
12#lmdz='VLR_l79'
13lmdz='LR_l79'
14#lmdz='MR_l79'
15#--added for Frederique Cheruy
16#lmdz='zoom_128x89_l79'
17
18dirout='/data/'${USER}'/CMIP6/VOLC/'${lmdz}'_'${vv}'/'
19echo $dirout
20if [ ! -d ${dirout} ] ; then mkdir -p ${dirout} ; fi
21
22cat > process_volc_${lmdz}.pro << EOF
23pro regrid
24;--version sans longitude
25;--latitude - level - wavelength - time
26;--sep 2017: add lat and month z variations of model layers
27;--Olivier Boucher
28;
29lmdz='${lmdz}'
30;
31if (lmdz eq 'VVLR_l19') then begin
32dimlonlmdz=48
33dimlatlmdz=37
34dimz=19
35output='/data/${USER}/CMIP6/VOLC/${lmdz}_${vv}/'
36latfirst=90.
37latinc=-180./float(dimlatlmdz-1)
38latitudelmdz=latfirst+latinc*indgen(dimlatlmdz)
39endif
40
41if (lmdz eq 'VLR_l39') then begin
42dimlonlmdz=96
43dimlatlmdz=96
44dimz=39
45output='/data/${USER}/CMIP6/VOLC/${lmdz}_${vv}/'
46latfirst=90.
47latinc=-180./float(dimlatlmdz-1)
48latitudelmdz=latfirst+latinc*indgen(dimlatlmdz)
49endif
50
51if (lmdz eq 'VLR_l79') then begin
52dimlonlmdz=96
53dimlatlmdz=96
54dimz=79
55output='/data/${USER}/CMIP6/VOLC/${lmdz}_${vv}/'
56latfirst=90.
57latinc=-180./float(dimlatlmdz-1)
58latitudelmdz=latfirst+latinc*indgen(dimlatlmdz)
59endif
60
61if (lmdz eq 'LR_l79') then begin
62dimlonlmdz=144
63dimlatlmdz=143
64dimz=79
65output='/data/${USER}/CMIP6/VOLC/${lmdz}_${vv}/'
66latfirst=90.
67latinc=-180./float(dimlatlmdz-1)
68latitudelmdz=latfirst+latinc*indgen(dimlatlmdz)
69endif
70
71if (lmdz eq 'MR_l79') then begin
72dimlonlmdz=256
73dimlatlmdz=257
74dimz=79
75output='/data/${USER}/CMIP6/VOLC/${lmdz}_${vv}/'
76latfirst=90.
77latinc=-180./float(dimlatlmdz-1)
78latitudelmdz=latfirst+latinc*indgen(dimlatlmdz)
79endif
80
81if (lmdz eq 'zoom_128x89_l79') then begin
82dimlonlmdz=128
83dimlatlmdz=89
84dimz=79
85output='/data/${USER}/CMIP6/VOLC/${lmdz}_${vv}/'
86latitudelmdz=[90., 86.85495, 83.8430634, 80.9792252, 78.2779922, 75.7526321, 73.4137878, 71.2680206, 69.3164978, $
87              67.5542145,   65.9702301, 64.5487747, 63.2709846, 62.1167107, 61.0660896, 60.1005592, 59.2034454, $
88              58.360157,    57.5581551, 56.7868576, 56.0374718, 55.302887,  54.5775719, 53.8574829, 53.1399384, $
89              52.4233971,   51.7071419, 50.9909439, 50.2747459, 49.5585518, 48.8423538, 48.1261597, 47.4099655, $
90              46.6937675,   45.9775734, 45.2613792, 44.5451813, 43.8289604, 43.1125679, 42.395504,  41.6765518, $
91              40.9534645,   40.2226982, 39.4792557, 38.7165909, 37.9265213, 37.099102,  36.2225075, 35.2828789, $
92              34.2642632,   33.1487236, 31.9167614, 30.5481758, 29.0234509, 27.32551,   25.4415455, 23.3643932, $
93              21.0930786,   18.6323872, 15.9917059, 13.1835403, 10.2221146, 7.12228632, 3.89880991, 0.565921485,$
94              -2.86286402, -6.37483072, -9.95808029, -13.6015415, -17.2949867, -21.029068, -24.7953758, -28.5864811, $
95             -32.3959961, -36.2186012, -40.0500298, -43.8870316, -47.7272758, -51.5692215, -55.4119453, -59.2549667, $
96             -63.0980797, -66.9412079, -70.7843399, -74.6274719, -78.4706039, -82.313736, -86.156868, -90.]
97endif
98
99; Modif ThL: for ECRAD, we have 14 SW bands and 16 LW bands.
100NSW=14
101NLW=16
102;
103;--script only works on ciclad
104dir='/bdd/input4MIPs/VOLC/${vv}/'
105;;;not available for v4
106;;;filename=dir+'CMIP_1850_2014_extinction_550nm_${vv}.nc'
107;;;NETCDFREAD,filename,'altitude',altitude,dimaltitude
108;;;NETCDFREAD,filename,'ext550',ext550,dimext
109;
110filename=dir+'CMIP_ECRAD_radiation_v4_1850-2018.nc'
111;
112NETCDFREAD,filename,'altitude',altitude,dimaltitude
113NETCDFREAD,filename,'latitude',latitude,dimlatitude
114NETCDFREAD,filename,'wl1_sun',wl1_sun,solar_bands
115NETCDFREAD,filename,'wl2_sun',wl2_sun,solar_bands
116NETCDFREAD,filename,'wl1_earth',wl1_earth,terrestrial_bands
117NETCDFREAD,filename,'wl2_earth',wl2_earth,terrestrial_bands
118NETCDFREAD,filename,'month',month,dimmonth
119NETCDFREAD,filename,'ext_sun',ext_sun,dimext
120NETCDFREAD,filename,'omega_sun',omega_sun,dimext
121NETCDFREAD,filename,'g_sun',g_sun,dimext
122NETCDFREAD,filename,'ext_earth',ext_earth,dimext
123NETCDFREAD,filename,'omega_earth',omega_earth,dimext
124NETCDFREAD,filename,'g_earth',g_earth,dimext
125;
126print ,'wl1_sun=', wl1_sun
127print ,'wl2_sun=', wl2_sun
128print ,'wl1_ear=', wl1_earth
129print ,'wl2_ear=', wl2_earth
130;
131print ,'min max ext_sun=', min(ext_sun),   max(ext_sun)
132print ,'min max ome_sun=', min(omega_sun), max(omega_sun)
133;for nl=0, NSW-1 do begin
134;print ,'min max ome_sun nl=', nl, min(omega_sun(*,*,*,nl)), max(omega_sun(*,*,*,nl))
135;endfor
136print ,'min max ggg_sun=', min(g_sun),     max(g_sun)
137print ,'min max ext_ear=', min(ext_earth), max(ext_earth)
138;
139dimlat=dimlatitude(0)
140dimalt=dimaltitude(0)
141dimtime=dimmonth(0)
142;
143;--vertical resolution in Beiping's code
144dz=0.5
145;
146month_in_year=12
147;;month_in_year=1
148;
149;--compute optical depth of input data
150;--dimension ext_sun(l,k,j,nl)
151;ext_sun0=ext_sun(0,*,*,*)
152;print , 'size ext_sun0=', size(ext_sun0)
153;tau_sun=TOTAL(ext_sun0,2)*dz
154;print ,'min max tau_sun l=0 =', min(tau_sun),   max(tau_sun)
155;
156zz=fltarr(dimz)
157;
158;---exact altitudes of LMDZ -- L79
159;--only exists for VLR, LR, MR and zoom_128x89 at the moment
160;
161filename='/bdd/input4MIPs/ZALT/zalt_zonmean_${lmdz}_rev.nc'
162NETCDFREAD,filename,'GEOP',zz,dimzz
163NETCDFREAD,filename,'LAT',zzlat,dimzzlat
164NETCDFREAD,filename,'TIME_COUNTER',zztime,dimzztime
165dimzzilat=dimzzlat[0]
166dimzzitime=dimzztime[0]
167;--becareful zz comes with four dimensions
168;--lon lat k time
169print, 'GEOP size=', size(zz)
170;--becareful zzlat comes with South Pole first
171print, 'LAT from zalt field=', zzlat
172if (dimzzilat ne dimlatlmdz) then begin
173  print , 'PB dimension latitude'
174endif
175;
176;
177;--reconstructing the vertical coordinate at interfaces (in unit km)
178;--and reverse lat axis for zzi  i==>ii
179;--and reverse zz axis for zzi   dimz-1-k==>k
180;--and forget about lon axis : index 0 in zz
181zzi=fltarr(dimzzilat,dimzzitime,dimz+1)
182for i=0, dimzzilat-1 do begin
183 ii=dimzzilat-1-i
184 for t=0, dimzzitime-1 do begin
185  zzi(ii,t,0)=0.0
186  for k=1, dimz-1 do begin
187   zzi(ii,t,k)=(zz(0,i,dimz-1-(k-1),t)+zz(0,i,dimz-1-k,t))/2.0
188  endfor
189  zzi(ii,t,dimz)=100.00
190 endfor
191endfor
192print, 'zzi=',zzi
193;
194lev=indgen(dimz)+1
195;
196dimzori=dimalt
197zziori=fltarr(dimzori+1)
198zziori(0)=altitude(0)-0.25
199for k=1, dimzori do begin
200 zziori(k)=altitude(k-1)+0.25
201endfor
202;
203;--550 nm properties
204;;;not available for v4
205;;;tau_550_lmdz=fltarr(dimlatlmdz,dimz,month_in_year)
206;
207;--SW properties
208tau_sun_lmdz=fltarr(dimlatlmdz,dimz,NSW,month_in_year)
209ome_sun_lmdz=fltarr(dimlatlmdz,dimz,NSW,month_in_year)
210ggg_sun_lmdz=fltarr(dimlatlmdz,dimz,NSW,month_in_year)
211;
212tau_sun_lmdz_ave=fltarr(dimlatlmdz,dimz,NSW,month_in_year)
213ome_sun_lmdz_ave=fltarr(dimlatlmdz,dimz,NSW,month_in_year)
214ggg_sun_lmdz_ave=fltarr(dimlatlmdz,dimz,NSW,month_in_year)
215;
216tau_sun_lmdz_tr=fltarr(dimlatlmdz,dimz,NSW,month_in_year)
217ome_sun_lmdz_tr=fltarr(dimlatlmdz,dimz,NSW,month_in_year)
218ggg_sun_lmdz_tr=fltarr(dimlatlmdz,dimz,NSW,month_in_year)
219;
220;--LW properties
221tau_ear_lmdz=fltarr(dimlatlmdz,dimz,NLW,month_in_year)
222ome_ear_lmdz=fltarr(dimlatlmdz,dimz,NLW,month_in_year)
223ggg_ear_lmdz=fltarr(dimlatlmdz,dimz,NLW,month_in_year)
224;
225tau_ear_lmdz_ave=fltarr(dimlatlmdz,dimz,NLW,month_in_year)
226ome_ear_lmdz_ave=fltarr(dimlatlmdz,dimz,NLW,month_in_year)
227ggg_ear_lmdz_ave=fltarr(dimlatlmdz,dimz,NLW,month_in_year)
228;
229tau_ear_lmdz_tr=fltarr(dimlatlmdz,dimz,NLW,month_in_year)
230ome_ear_lmdz_tr=fltarr(dimlatlmdz,dimz,NLW,month_in_year)
231ggg_ear_lmdz_tr=fltarr(dimlatlmdz,dimz,NLW,month_in_year)
232;
233tau_sun_lmdz_ave(*,*,*,0)=1.e-15
234ome_sun_lmdz_ave(*,*,*,0)=1.e-15
235ggg_sun_lmdz_ave(*,*,*,0)=0.0
236tau_ear_lmdz_ave(*,*,*,0)=1.e-15
237ome_ear_lmdz_ave(*,*,*,0)=1.e-15
238ggg_ear_lmdz_ave(*,*,*,0)=0.0
239;
240yearend=dimtime/month_in_year-1
241;
242for year=0, yearend do begin
243;
244;;;not available for v4
245;;;tau_550_lmdz(*,*,*)=1.e-15
246tau_sun_lmdz(*,*,*,*)=1.e-15
247ome_sun_lmdz(*,*,*,*)=1.e-15
248ggg_sun_lmdz(*,*,*,*)=0.0
249tau_ear_lmdz(*,*,*,*)=1.e-15
250ome_ear_lmdz(*,*,*,*)=1.e-15
251ggg_ear_lmdz(*,*,*,*)=0.0
252;
253chyr=strcompress(1850+year,/rem)
254;
255for mth=0,month_in_year-1 do begin
256;
257;--timestep
258l=mth+month_in_year*year
259print,'year mth l=',chyr, mth, l
260;
261;regridding
262for j=0, dimlatlmdz-1  do begin
263;
264;--finding latitude in beiping luo data
265jj=0
266for jluo=0,dimlat-2 do begin
267  if (latitudelmdz(j) gt (latitude(jluo)+latitude(jluo+1))/2. ) then begin
268    jj=jluo+1
269  endif
270endfor
271;
272for k=0, dimz-1 do begin
273for kori=0, dimzori-1 do begin
274;
275;fraction de la maille kori qui se trouve dans la maille k
276frac= max([0.0,min([zzi(j,mth,k+1),zziori(kori+1)])-max([zzi(j,mth,k),zziori(kori)])])/(zziori(kori+1)-zziori(kori))
277;
278;;;not available for v4
279;;;tau_550_lmdz(j,k,mth)=tau_550_lmdz(j,k,mth)+ext550(l,kori,jj)*dz*frac
280;
281for nl=0, NSW-1 do begin
282  tau_sun_lmdz(j,k,nl,mth)=tau_sun_lmdz(j,k,nl,mth)+ext_sun(l,kori,jj,nl)*dz*frac
283  ome_sun_lmdz(j,k,nl,mth)=ome_sun_lmdz(j,k,nl,mth)+ext_sun(l,kori,jj,nl)*omega_sun(l,kori,jj,nl)*dz*frac
284  ggg_sun_lmdz(j,k,nl,mth)=ggg_sun_lmdz(j,k,nl,mth)+ext_sun(l,kori,jj,nl)*omega_sun(l,kori,jj,nl)*g_sun(l,kori,jj,nl)*dz*frac
285;
286  tau_sun_lmdz_ave(j,k,nl,0)=tau_sun_lmdz_ave(j,k,nl,0)+ext_sun(l,kori,jj,nl)*dz*frac
287  ome_sun_lmdz_ave(j,k,nl,0)=ome_sun_lmdz_ave(j,k,nl,0)+ext_sun(l,kori,jj,nl)*omega_sun(l,kori,jj,nl)*dz*frac
288  ggg_sun_lmdz_ave(j,k,nl,0)=ggg_sun_lmdz_ave(j,k,nl,0)+ext_sun(l,kori,jj,nl)*omega_sun(l,kori,jj,nl)*g_sun(l,kori,jj,nl)*dz*frac
289endfor
290;
291; For LW, script differs from previous versions in that
292; (1.-omega_earth) factor becomes (omega_earth)
293;
294for nl=0, NLW-1 do begin
295  tau_ear_lmdz(j,k,nl,mth)=tau_ear_lmdz(j,k,nl,mth)+ext_earth(l,kori,jj,nl)*dz*frac
296  ome_ear_lmdz(j,k,nl,mth)=ome_ear_lmdz(j,k,nl,mth)+ext_earth(l,kori,jj,nl)*omega_earth(l,kori,jj,nl)*dz*frac
297  ggg_ear_lmdz(j,k,nl,mth)=ggg_ear_lmdz(j,k,nl,mth)+ext_earth(l,kori,jj,nl)*omega_earth(l,kori,jj,nl)*g_earth(l,kori,jj,nl)*dz*frac
298;
299  tau_ear_lmdz_ave(j,k,nl,0)=tau_ear_lmdz_ave(j,k,nl,0)+ext_earth(l,kori,jj,nl)*dz*frac
300  ome_ear_lmdz_ave(j,k,nl,0)=ome_ear_lmdz_ave(j,k,nl,0)+ext_earth(l,kori,jj,nl)*omega_earth(l,kori,jj,nl)*dz*frac
301  ggg_ear_lmdz_ave(j,k,nl,0)=ggg_ear_lmdz_ave(j,k,nl,0)+ext_earth(l,kori,jj,nl)*omega_earth(l,kori,jj,nl)*g_earth(l,kori,jj,nl)*dz*frac
302endfor
303;
304endfor
305;--end lat loop
306;
307endfor
308endfor
309;--end k loops
310;
311endfor
312;--end month loop
313;
314;renormalizing intensive SW properties
315ggg_sun_lmdz(*,*,*,*)=ggg_sun_lmdz(*,*,*,*)/ome_sun_lmdz(*,*,*,*)
316ome_sun_lmdz(*,*,*,*)=ome_sun_lmdz(*,*,*,*)/tau_sun_lmdz(*,*,*,*)
317;
318;saving netcdf file
319;
320print ,'min max ext_sun lmdz=', min(tau_sun_lmdz), max(tau_sun_lmdz)
321print ,'min max ome_sun lmdz=', min(ome_sun_lmdz), max(ome_sun_lmdz)
322print ,'min max ggg_sun lmdz=', min(ggg_sun_lmdz), max(ggg_sun_lmdz)
323print ,'min max ext_ear lmdz=', min(tau_ear_lmdz), max(tau_ear_lmdz)
324print ,'min max ome_ear lmdz=', min(ome_ear_lmdz), max(ome_ear_lmdz)
325print ,'min max ggg_ear lmdz=', min(ggg_ear_lmdz), max(ggg_ear_lmdz)
326;
327print ,'min max ext_sun lmdz l=1=', min(tau_sun_lmdz(*,*,*,0)), max(tau_sun_lmdz(*,*,*,0))
328print ,'min max ome_sun lmdz l=1=', min(ome_sun_lmdz(*,*,*,0)), max(ome_sun_lmdz(*,*,*,0))
329print ,'min max ggg_sun lmdz l=1=', min(ggg_sun_lmdz(*,*,*,0)), max(ggg_sun_lmdz(*,*,*,0))
330print ,'min max ext_ear lmdz l=1=', min(tau_ear_lmdz(*,*,*,0)), max(tau_ear_lmdz(*,*,*,0))
331print ,'min max ome_ear lmdz l=1=', min(ome_ear_lmdz(*,*,*,0)), max(ome_ear_lmdz(*,*,*,0))
332print ,'min max ggg_ear lmdz l=1=', min(ggg_ear_lmdz(*,*,*,0)), max(ggg_ear_lmdz(*,*,*,0))
333
334;
335;--compute optical depth of output data
336;tau_sun=TOTAL(tau_sun_lmdz,2)
337;print ,'min max tau_sun_lmdz vert=', min(tau_sun),   max(tau_sun)
338;
339opticstruct={lat:fltarr(dimlatlmdz),lev:fltarr(dimz),             $
340             wav:fltarr(NSW),time:fltarr(month_in_year),          $
341             tau_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year),   $
342             ome_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year),   $
343             ggg_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year) }
344;
345opticstruct.lat=latitudelmdz
346opticstruct.lev=lev
347opticstruct.wav=(wl1_sun(0:NSW-1)+wl2_sun(0:NSW-1))/2.
348opticstruct.time=float(indgen(month_in_year)+1)
349opticstruct.tau_sun=tau_sun_lmdz
350opticstruct.ome_sun=ome_sun_lmdz
351opticstruct.ggg_sun=ggg_sun_lmdz
352;
353attributes = {units:strarr(7),long_name:strarr(7)}
354attributes.units =     ['degrees_north','level','µm','month','-','-','-']
355attributes.long_name = ['latitude','level','wavelength','time','tau_sun','ome_sun','g_sun']
356;
357dimensions = {isdim:intarr(7), links:intarr(4,7)}
358       dimensions.isdim =  [1,1,1,1,0,0,0]  ; (1=dimension, 0=variable)
359       dimensions.links = [ [-1,-1,-1,-1],[-1,-1,-1,-1],   $
360                            [-1,-1,-1,-1],[-1,-1,-1,-1],   $
361                            [0,1,2,3],[0,1,2,3],[0,1,2,3]  ]
362;
363netcdfwrite,output+'tauswstrat.2D.'+chyr+'.nc',opticstruct,clobber=1, $
364            attributes=attributes, dimensions=dimensions
365;
366; NOW FOR LW
367;
368opticstruct={lat:fltarr(dimlatlmdz),lev:fltarr(dimz),             $
369             wav:fltarr(NLW),time:fltarr(month_in_year),          $
370             tau_ear:fltarr(dimlatlmdz,dimz,NLW,month_in_year),   $
371             ome_ear:fltarr(dimlatlmdz,dimz,NLW,month_in_year),   $
372             ggg_ear:fltarr(dimlatlmdz,dimz,NLW,month_in_year) }             
373;
374opticstruct.lat=latitudelmdz
375opticstruct.lev=lev
376opticstruct.wav=(wl1_earth+wl2_earth)/2.
377opticstruct.time=float(indgen(month_in_year)+1)
378opticstruct.tau_ear=tau_ear_lmdz
379opticstruct.ome_ear=ome_sun_lmdz
380opticstruct.ggg_ear=ggg_sun_lmdz
381
382;
383attributes = {units:strarr(7),long_name:strarr(7)}
384attributes.units = ['degrees_north','level','µm','month','-','-','-']
385attributes.long_name = ['latitude','level','wavelength','time','tau_ear','ome_ear','g_ear']
386;
387dimensions = {isdim:intarr(7), links:intarr(4,7)}
388       dimensions.isdim =  [1,1,1,1,0,0,0]  ; (1=dimension, 0=variable)
389       dimensions.links = [ [-1,-1,-1,-1],[-1,-1,-1,-1],   $
390                            [-1,-1,-1,-1],[-1,-1,-1,-1],   $
391                            [0,1,2,3],[0,1,2,3],[0,1,2,3]  ]
392;
393netcdfwrite,output+'taulwstrat.2D.'+chyr+'.nc',opticstruct,clobber=1, $
394            attributes=attributes, dimensions=dimensions
395;
396;;;not available in v4
397;;;opticstruct={lat:fltarr(dimlatlmdz),lev:fltarr(dimz),             $
398;;;             time:fltarr(month_in_year),                          $
399;;;             tau550:fltarr(dimlatlmdz,dimz,month_in_year) }
400;
401;;;opticstruct.lat=latitudelmdz
402;;;opticstruct.lev=lev
403;;;opticstruct.time=float(indgen(month_in_year)+1)
404;;;opticstruct.tau550=tau_550_lmdz
405;
406;;;attributes = {units:strarr(4),long_name:strarr(4)}
407;;;attributes.units = ['degrees_north','level','month','-']
408;;;attributes.long_name = ['latitude','level','time','tau550']
409;
410;;;dimensions = {isdim:intarr(4), links:intarr(3,4)}
411;;;       dimensions.isdim =  [1,1,1,0]  ; (1=dimension, 0=variable)
412;;;       dimensions.links = [ [-1,-1,-1],[-1,-1,-1],   $
413;;;                            [-1,-1,-1],[0,1,2]  ]
414;
415;;;netcdfwrite,output+'tau550strat.2D.'+chyr+'.nc',opticstruct,clobber=1, $
416;;;            attributes=attributes, dimensions=dimensions
417;
418endfor
419;--end loop on years
420;
421; Now deal with average conditions
422;
423ggg_sun_lmdz_ave(*,*,*,0)=ggg_sun_lmdz_ave(*,*,*,0)/ome_sun_lmdz_ave(*,*,*,0)
424ome_sun_lmdz_ave(*,*,*,0)=ome_sun_lmdz_ave(*,*,*,0)/tau_sun_lmdz_ave(*,*,*,0)
425tau_sun_lmdz_ave(*,*,*,0)=tau_sun_lmdz_ave(*,*,*,0)/float(dimtime)
426;
427ggg_ear_lmdz_ave(*,*,*,0)=ggg_ear_lmdz_ave(*,*,*,0)/ome_ear_lmdz_ave(*,*,*,0)
428ome_ear_lmdz_ave(*,*,*,0)=ome_ear_lmdz_ave(*,*,*,0)/tau_ear_lmdz_ave(*,*,*,0)
429tau_ear_lmdz_ave(*,*,*,0)=tau_ear_lmdz_ave(*,*,*,0)/float(dimtime)
430;
431for mth=1, month_in_year-1 do begin
432  ggg_sun_lmdz_ave(*,*,*,mth)=ggg_sun_lmdz_ave(*,*,*,0)
433  ome_sun_lmdz_ave(*,*,*,mth)=ome_sun_lmdz_ave(*,*,*,0)
434  tau_sun_lmdz_ave(*,*,*,mth)=tau_sun_lmdz_ave(*,*,*,0)
435  ggg_ear_lmdz_ave(*,*,*,mth)=ggg_ear_lmdz_ave(*,*,*,0)
436  ome_ear_lmdz_ave(*,*,*,mth)=ome_ear_lmdz_ave(*,*,*,0)
437  tau_ear_lmdz_ave(*,*,*,mth)=tau_ear_lmdz_ave(*,*,*,0)
438endfor
439;
440opticstruct={lat:fltarr(dimlatlmdz),lev:fltarr(dimz),             $
441             wav:fltarr(NSW),time:fltarr(month_in_year),          $
442             tau_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year),   $
443             ome_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year),   $
444             ggg_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year) }
445;
446opticstruct.lat=latitudelmdz
447opticstruct.lev=lev
448opticstruct.wav=(wl1_sun(0:NSW-1)+wl2_sun(0:NSW-1))/2.
449opticstruct.time=float(indgen(month_in_year))
450opticstruct.tau_sun=tau_sun_lmdz_ave
451opticstruct.ome_sun=ome_sun_lmdz_ave
452opticstruct.ggg_sun=ggg_sun_lmdz_ave
453;
454attributes = {units:strarr(7),long_name:strarr(7)}
455attributes.units =     ['degrees_north','level','µm','month','-','-','-']
456attributes.long_name = ['latitude','level','wavelength','time','tau_sun','ome_sun','g_sun']
457;
458dimensions = {isdim:intarr(7), links:intarr(4,7)}
459       dimensions.isdim =  [1,1,1,1,0,0,0]  ; (1=dimension, 0=variable)
460       dimensions.links = [ [-1,-1,-1,-1],[-1,-1,-1,-1],   $
461                            [-1,-1,-1,-1],[-1,-1,-1,-1],   $
462                            [0,1,2,3],[0,1,2,3],[0,1,2,3]  ]
463;
464netcdfwrite,output+'tauswstrat.2D.ave.nc',opticstruct,clobber=1, $
465            attributes=attributes, dimensions=dimensions
466;
467opticstruct={lat:fltarr(dimlatlmdz),lev:fltarr(dimz),             $
468             wav:fltarr(NLW),time:fltarr(month_in_year),          $
469             tau_ear:fltarr(dimlatlmdz,dimz,NLW,month_in_year),   $
470             ome_ear:fltarr(dimlatlmdz,dimz,NLW,month_in_year),   $
471             ggg_ear:fltarr(dimlatlmdz,dimz,NLW,month_in_year) }
472;
473opticstruct.lat=latitudelmdz
474opticstruct.lev=lev
475opticstruct.wav=(wl1_earth+wl2_earth)/2.
476opticstruct.time=float(indgen(month_in_year))
477opticstruct.tau_ear=tau_ear_lmdz_ave
478opticstruct.ome_ear=tau_ome_lmdz_ave
479opticstruct.ggg_ear=tau_ggg_lmdz_ave
480;
481attributes = {units:strarr(7),long_name:strarr(7)}
482attributes.units = ['degrees_north','level','µm','month','-','-','-']
483attributes.long_name = ['latitude','level','wavelength','time','tau_ear','ome_ear','g_ear']
484;
485dimensions = {isdim:intarr(7), links:intarr(4,7)}
486       dimensions.isdim =  [1,1,1,1,0]  ; (1=dimension, 0=variable)
487       dimensions.links = [ [-1,-1,-1,-1],[-1,-1,-1,-1],   $
488                            [-1,-1,-1,-1],[-1,-1,-1,-1],   $
489                            [0,1,2,3],[0,1,2,3],[0,1,2,3]  ]
490;
491netcdfwrite,output+'taulwstrat.2D.ave.nc',opticstruct,clobber=1, $
492            attributes=attributes, dimensions=dimensions
493;
494;--finally prepare the 10-year transition period
495;--that is 2015-2023 for v3 or 2017-2025 for v4
496;--we mix the last year of the period with the climatology
497;
498for year=1850+yearend+1,1850+yearend+9 do begin
499;
500chyr=strcompress(year,/rem)
501print,'year =',chyr
502;--compute weights
503w1=float(1850+yearend+10-year)/10.
504w2=1.0-w1
505;--SW properties
506tau_sun_lmdz_tr=w1*tau_sun_lmdz+w2*tau_sun_lmdz_ave
507ome_sun_lmdz_tr=w1*tau_sun_lmdz*ome_sun_lmdz+w2*tau_sun_lmdz_ave*ome_sun_lmdz_ave
508ggg_sun_lmdz_tr=w1*tau_sun_lmdz*ome_sun_lmdz*ggg_sun_lmdz+ $
509                w2*tau_sun_lmdz_ave*ome_sun_lmdz_ave*ggg_sun_lmdz_ave
510ggg_sun_lmdz_tr=ggg_sun_lmdz_tr/ome_sun_lmdz_tr
511ome_sun_lmdz_tr=ome_sun_lmdz_tr/tau_sun_lmdz_tr
512;
513;--LW properties
514tau_ear_lmdz_tr=w1*tau_ear_lmdz+w2*tau_ear_lmdz_ave
515ome_ear_lmdz_tr=w1*tau_ear_lmdz*ome_ear_lmdz+w2*tau_ear_lmdz_ave*ome_ear_lmdz_ave
516ggg_ear_lmdz_tr=w1*tau_ear_lmdz*ome_ear_lmdz*ggg_ear_lmdz+ $
517                w2*tau_ear_lmdz_ave*ome_ear_lmdz_ave*ggg_ear_lmdz_ave
518ggg_ear_lmdz_tr=ggg_ear_lmdz_tr/ome_ear_lmdz_tr
519ome_ear_lmdz_tr=ome_ear_lmdz_tr/tau_ear_lmdz_tr
520;
521;--prepare SW output
522opticstruct={lat:fltarr(dimlatlmdz),lev:fltarr(dimz),             $
523             wav:fltarr(NSW),time:fltarr(month_in_year),          $
524             tau_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year),   $
525             ome_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year),   $
526             ggg_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year) }
527;
528opticstruct.lat=latitudelmdz
529opticstruct.lev=lev
530opticstruct.wav=(wl1_sun(0:NSW-1)+wl2_sun(0:NSW-1))/2.
531opticstruct.time=float(indgen(month_in_year)+1)
532opticstruct.tau_sun=tau_sun_lmdz_tr
533opticstruct.ome_sun=ome_sun_lmdz_tr
534opticstruct.ggg_sun=ggg_sun_lmdz_tr
535;
536attributes = {units:strarr(7),long_name:strarr(7)}
537attributes.units =     ['degrees_north','level','µm','month','-','-','-']
538attributes.long_name = ['latitude','level','wavelength','time','tau_sun','ome_sun','g_sun']
539;
540dimensions = {isdim:intarr(7), links:intarr(4,7)}
541       dimensions.isdim =  [1,1,1,1,0,0,0]  ; (1=dimension, 0=variable)
542       dimensions.links = [ [-1,-1,-1,-1],[-1,-1,-1,-1],   $
543                            [-1,-1,-1,-1],[-1,-1,-1,-1],   $
544                            [0,1,2,3],[0,1,2,3],[0,1,2,3]  ]
545;
546netcdfwrite,output+'tauswstrat.2D.'+chyr+'.nc',opticstruct,clobber=1, $
547            attributes=attributes, dimensions=dimensions
548;
549;--prepare LW output
550opticstruct={lat:fltarr(dimlatlmdz),lev:fltarr(dimz),             $
551             wav:fltarr(NLW),time:fltarr(month_in_year),          $
552             tau_ear:fltarr(dimlatlmdz,dimz,NLW,month_in_year),   $
553             ome_ear:fltarr(dimlatlmdz,dimz,NLW,month_in_year),   $
554             ggg_ear:fltarr(dimlatlmdz,dimz,NLW,month_in_year) }
555;
556opticstruct.lat=latitudelmdz
557opticstruct.lev=lev
558opticstruct.wav=(wl1_earth+wl2_earth)/2.
559opticstruct.time=float(indgen(month_in_year)+1)
560opticstruct.tau_ear=tau_ear_lmdz_tr
561opticstruct.ome_ear=ome_ear_lmdz_tr
562opticstruct.ggg_ear=ggg_ear_lmdz_tr
563;
564attributes = {units:strarr(7),long_name:strarr(7)}
565attributes.units = ['degrees_north','level','µm','month','-','-','-']
566attributes.long_name = ['latitude','level','wavelength','time','tau_ear','ome_ear','g_ear']
567;
568dimensions = {isdim:intarr(7), links:intarr(4,7)}
569       dimensions.isdim =  [1,1,1,1,0]  ; (1=dimension, 0=variable)
570       dimensions.links = [ [-1,-1,-1,-1],[-1,-1,-1,-1],   $
571                            [-1,-1,-1,-1],[-1,-1,-1,-1],   $
572                            [0,1,2,3],[0,1,2,3],[0,1,2,3]  ]
573;
574netcdfwrite,output+'taulwstrat.2D.'+chyr+'.nc',opticstruct,clobber=1, $
575            attributes=attributes, dimensions=dimensions
576;
577endfor
578;--end loop on years
579;
580end
581EOF
582
583cat > volc_${lmdz}.job << EOF2
584#PBS -N process_volc_${lmdz}
585#PBS -S /bin/bash
586#PBS -q week # there exist: short, day, days3, week...
587#PBS -k eo  # to write the output of stdin
588### Max memory
589#PBS -l vmem=10gb   # virtual memory
590#PBS -l  mem=10gb
591
592cd $dirpwd
593
594idl << eof
595.r netcdf
596.r process_volc_${lmdz}
597regrid
598eof
599EOF2
600
601qsub volc_${lmdz}.job
Note: See TracBrowser for help on using the repository browser.