1 | dirpwd=`pwd` |
---|
2 | |
---|
3 | vv='v3' |
---|
4 | |
---|
5 | #--choose the resolution |
---|
6 | #--only LR works for now ! |
---|
7 | #lmdz='VVLR' |
---|
8 | #lmdz='VLR_L79' |
---|
9 | #lmdz='VLR' |
---|
10 | lmdz='LR' |
---|
11 | #lmdz='MR' |
---|
12 | |
---|
13 | dirout='/data/'${USER}'/CMIP6/VOLC/'${lmdz}'_'${vv}'/' |
---|
14 | echo $dirout |
---|
15 | if [ ! -d ${dirout} ] ; then mkdir -p ${dirout} ; fi |
---|
16 | |
---|
17 | cat > process_volc.pro << EOF |
---|
18 | pro regrid |
---|
19 | ;--version sans longitude |
---|
20 | ;--latitude - level - wavelength - time |
---|
21 | ;--sep 2017: add lat and month z variations of model layers |
---|
22 | ;--Olivier Boucher |
---|
23 | ; |
---|
24 | if (lmdz eq 'VVLR') then begin |
---|
25 | dimlonlmdz=48 |
---|
26 | dimlatlmdz=37 |
---|
27 | dimz=19 |
---|
28 | output='/data/${USER}/CMIP6/VOLC/VVLR_${vv}/' |
---|
29 | endif |
---|
30 | |
---|
31 | if (lmdz eq 'VLR') then begin |
---|
32 | dimlonlmdz=96 |
---|
33 | dimlatlmdz=96 |
---|
34 | dimz=39 |
---|
35 | output='/data/${USER}/CMIP6/VOLC/VLR_${vv}/' |
---|
36 | endif |
---|
37 | |
---|
38 | if (lmdz eq 'VLR_L79') then begin |
---|
39 | dimlonlmdz=96 |
---|
40 | dimlatlmdz=96 |
---|
41 | dimz=79 |
---|
42 | output='/data/${USER}/CMIP6/VOLC/VLR_L79_${vv}/' |
---|
43 | endif |
---|
44 | |
---|
45 | if (lmdz eq 'LR') then begin |
---|
46 | dimlonlmdz=144 |
---|
47 | dimlatlmdz=143 |
---|
48 | dimz=79 |
---|
49 | output='/data/${USER}/CMIP6/VOLC/LR_${vv}/' |
---|
50 | endif |
---|
51 | |
---|
52 | if (lmdz eq 'MR') then begin |
---|
53 | dimlonlmdz=256 |
---|
54 | dimlatlmdz=257 |
---|
55 | dimz=79 |
---|
56 | output='/data/${USER}/CMIP6/VOLC/MR_${vv}/' |
---|
57 | endif |
---|
58 | |
---|
59 | latfirst=90. |
---|
60 | latinc=-180./float(dimlatlmdz-1) |
---|
61 | lonfirst=-180. |
---|
62 | loninc=360./float(dimlonlmdz-1) |
---|
63 | latitudelmdz=latfirst+latinc*indgen(dimlatlmdz) |
---|
64 | longitudelmdz=lonfirst+loninc*indgen(dimlonlmdz) |
---|
65 | NSW=6 |
---|
66 | NLW=16 |
---|
67 | ; |
---|
68 | ;--script only works on ciclad |
---|
69 | dir='/prodigfs/project/input4MIPs/VOLC/${vv}/' |
---|
70 | filename=dir+'CMIP_1850_2014_extinction_550nm_${vv}.nc' |
---|
71 | NETCDFREAD,filename,'altitude',altitude,dimaltitude |
---|
72 | NETCDFREAD,filename,'ext550',ext550,dimext |
---|
73 | ; |
---|
74 | filename=dir+'CMIP_IPSL-CM6_radiation_${vv}.nc' |
---|
75 | ; |
---|
76 | NETCDFREAD,filename,'altitude',altitude,dimaltitude |
---|
77 | NETCDFREAD,filename,'latitude',latitude,dimlatitude |
---|
78 | NETCDFREAD,filename,'wl1_sun',wl1_sun,solar_bands |
---|
79 | NETCDFREAD,filename,'wl2_sun',wl2_sun,solar_bands |
---|
80 | NETCDFREAD,filename,'wl1_earth',wl1_earth,terrestrial_bands |
---|
81 | NETCDFREAD,filename,'wl2_earth',wl2_earth,terrestrial_bands |
---|
82 | NETCDFREAD,filename,'month',month,dimmonth |
---|
83 | NETCDFREAD,filename,'ext_sun',ext_sun,dimext |
---|
84 | NETCDFREAD,filename,'omega_sun',omega_sun,dimext |
---|
85 | NETCDFREAD,filename,'g_sun',g_sun,dimext |
---|
86 | NETCDFREAD,filename,'ext_earth',ext_earth,dimext |
---|
87 | NETCDFREAD,filename,'omega_earth',omega_earth,dimext |
---|
88 | NETCDFREAD,filename,'g_earth',g_earth,dimext |
---|
89 | ; |
---|
90 | print ,'wl1_sun=', wl1_sun |
---|
91 | print ,'wl2_sun=', wl2_sun |
---|
92 | print ,'wl1_ear=', wl1_earth |
---|
93 | print ,'wl2_ear=', wl2_earth |
---|
94 | ; |
---|
95 | print ,'min max ext_sun=', min(ext_sun), max(ext_sun) |
---|
96 | print ,'min max ome_sun=', min(omega_sun), max(omega_sun) |
---|
97 | ;for nl=0, NSW-1 do begin |
---|
98 | ;print ,'min max ome_sun nl=', nl, min(omega_sun(*,*,*,nl)), max(omega_sun(*,*,*,nl)) |
---|
99 | ;endfor |
---|
100 | print ,'min max ggg_sun=', min(g_sun), max(g_sun) |
---|
101 | print ,'min max ext_ear=', min(ext_earth), max(ext_earth) |
---|
102 | ; |
---|
103 | dimlat=dimlatitude(0) |
---|
104 | dimalt=dimaltitude(0) |
---|
105 | dimtime=dimmonth(0) |
---|
106 | ; |
---|
107 | ;--vertical resolution in Beiping's code |
---|
108 | dz=0.5 |
---|
109 | ; |
---|
110 | month_in_year=12 |
---|
111 | ;;month_in_year=1 |
---|
112 | ; |
---|
113 | ;--compute optical depth of input data |
---|
114 | ;--dimension ext_sun(l,k,j,nl) |
---|
115 | ;ext_sun0=ext_sun(0,*,*,*) |
---|
116 | ;print , 'size ext_sun0=', size(ext_sun0) |
---|
117 | ;tau_sun=TOTAL(ext_sun0,2)*dz |
---|
118 | ;print ,'min max tau_sun l=0 =', min(tau_sun), max(tau_sun) |
---|
119 | ; |
---|
120 | zz=fltarr(dimz) |
---|
121 | ; |
---|
122 | ;---approximate altitudes of LMDZ - L19 and L39 |
---|
123 | ;---NOT RECOMMENDED |
---|
124 | ; |
---|
125 | if (dimz eq 19) then begin |
---|
126 | zz=[ 0.07125416, 0.2402302, 0.4865242, 0.8627044, 1.426484, 2.244528, $ |
---|
127 | 3.394085, 4.952366, 6.950302, 9.26943, 11.59338, 13.71214, 15.83651, $ |
---|
128 | 18.27338, 21.16397, 24.63156, 28.9039, 34.57184, 44.51565] ; |
---|
129 | endif |
---|
130 | ; |
---|
131 | if (dimz eq 39) then begin |
---|
132 | zz=[0.0338988, 0.1106602, 0.2139233, 0.3609663, 0.5685416, 0.8534464, $ |
---|
133 | 1.233232, 1.726868, 2.355076, 3.139813, 4.101937, 5.25541, 6.596076, $ |
---|
134 | 8.085103, 9.636482, 11.13441, 12.50023, 13.75765, 15.00424, 16.32207, $ |
---|
135 | 17.74403, 19.27899, 20.93219, 22.70941, 24.61736, 26.66389, 28.85831, $ |
---|
136 | 31.21178, 33.73778, 36.45278, 39.37709, 42.53607, 45.96209, 49.69786, $ |
---|
137 | 53.80379, 58.37727, 63.61497, 70.07092, 80.52708] |
---|
138 | endif |
---|
139 | ; |
---|
140 | ;---exact altitudes of LMDZ -- L79 |
---|
141 | ;--only exists for LR at the moment |
---|
142 | if (dimz eq 79) then begin |
---|
143 | filename='./zalt_zonmean_LR_l79_rev.nc' |
---|
144 | NETCDFREAD,filename,'GEOP',zz,dimzz |
---|
145 | NETCDFREAD,filename,'LAT',zzlat,dimzzlat |
---|
146 | NETCDFREAD,filename,'TIME_COUNTER',zztime,dimzztime |
---|
147 | dimzzilat=dimzzlat[0] |
---|
148 | dimzzitime=dimzztime[0] |
---|
149 | ;--becareful zz comes with four dimensions |
---|
150 | ;--lon lat k time |
---|
151 | print, 'GEOP size=', size(zz) |
---|
152 | ;--becareful zzlat comes with South Pole first |
---|
153 | print, 'LAT from zalt field=', zzlat |
---|
154 | if (dimzzilat ne dimlatlmdz) then begin |
---|
155 | print , 'PB dimension latitude' |
---|
156 | endif |
---|
157 | endif |
---|
158 | ; |
---|
159 | ; |
---|
160 | ;--reconstructing the vertical coordinate at interfaces (in unit km) |
---|
161 | ;--and reverse lat axis for zzi i==>ii |
---|
162 | ;--and reverse zz axis for zzi dimz-1-k==>k |
---|
163 | ;--and forget about lon axis : index 0 in zz |
---|
164 | zzi=fltarr(dimzzilat,dimzzitime,dimz+1) |
---|
165 | for i=0, dimzzilat-1 do begin |
---|
166 | ii=dimzzilat-1-i |
---|
167 | for t=0, dimzzitime-1 do begin |
---|
168 | zzi(ii,t,0)=0.0 |
---|
169 | for k=1, dimz-1 do begin |
---|
170 | zzi(ii,t,k)=(zz(0,i,dimz-1-(k-1),t)+zz(0,i,dimz-1-k,t))/2.0 |
---|
171 | endfor |
---|
172 | zzi(ii,t,dimz)=100.00 |
---|
173 | endfor |
---|
174 | endfor |
---|
175 | print, 'zzi=',zzi |
---|
176 | ; |
---|
177 | lev=indgen(dimz)+1 |
---|
178 | ; |
---|
179 | dimzori=dimalt |
---|
180 | zziori=fltarr(dimzori+1) |
---|
181 | zziori(0)=altitude(0)-0.25 |
---|
182 | for k=1, dimzori do begin |
---|
183 | zziori(k)=altitude(k-1)+0.25 |
---|
184 | endfor |
---|
185 | ; |
---|
186 | ;--550 nm properties |
---|
187 | tau_550_lmdz=fltarr(dimlatlmdz,dimz,month_in_year) |
---|
188 | ; |
---|
189 | ;--SW properties |
---|
190 | tau_sun_lmdz=fltarr(dimlatlmdz,dimz,NSW,month_in_year) |
---|
191 | ome_sun_lmdz=fltarr(dimlatlmdz,dimz,NSW,month_in_year) |
---|
192 | ggg_sun_lmdz=fltarr(dimlatlmdz,dimz,NSW,month_in_year) |
---|
193 | ; |
---|
194 | tau_sun_lmdz_ave=fltarr(dimlatlmdz,dimz,NSW,month_in_year) |
---|
195 | ome_sun_lmdz_ave=fltarr(dimlatlmdz,dimz,NSW,month_in_year) |
---|
196 | ggg_sun_lmdz_ave=fltarr(dimlatlmdz,dimz,NSW,month_in_year) |
---|
197 | ; |
---|
198 | ;--LW properties tau_abs |
---|
199 | tau_ear_lmdz=fltarr(dimlatlmdz,dimz,NLW,month_in_year) |
---|
200 | ; |
---|
201 | tau_ear_lmdz_ave=fltarr(dimlatlmdz,dimz,NLW,month_in_year) |
---|
202 | ; |
---|
203 | tau_sun_lmdz_ave(*,*,*,0)=1.e-15 |
---|
204 | ome_sun_lmdz_ave(*,*,*,0)=1.e-15 |
---|
205 | ggg_sun_lmdz_ave(*,*,*,0)=0.0 |
---|
206 | tau_ear_lmdz_ave(*,*,*,0)=1.e-15 |
---|
207 | ; |
---|
208 | for year=0, dimtime/month_in_year-1 do begin |
---|
209 | ;for year=141, 142 do begin ;--Pinatubo |
---|
210 | ; |
---|
211 | tau_550_lmdz(*,*,*)=1.e-15 |
---|
212 | tau_sun_lmdz(*,*,*,*)=1.e-15 |
---|
213 | ome_sun_lmdz(*,*,*,*)=1.e-15 |
---|
214 | ggg_sun_lmdz(*,*,*,*)=0.0 |
---|
215 | tau_ear_lmdz(*,*,*,*)=1.e-15 |
---|
216 | ; |
---|
217 | chyr=strcompress(1850+year,/rem) |
---|
218 | ; |
---|
219 | for mth=0,month_in_year-1 do begin |
---|
220 | ; |
---|
221 | ;--timestep |
---|
222 | l=mth+month_in_year*year |
---|
223 | print,'year mth l=',chyr, mth, l |
---|
224 | ; |
---|
225 | ;regridding |
---|
226 | for j=0, dimlatlmdz-1 do begin |
---|
227 | ; |
---|
228 | ;--finding latitude in beiping luo data |
---|
229 | jj=0 |
---|
230 | for jluo=0,dimlat-2 do begin |
---|
231 | if (latitudelmdz(j) gt (latitude(jluo)+latitude(jluo+1))/2. ) then begin |
---|
232 | jj=jluo+1 |
---|
233 | endif |
---|
234 | endfor |
---|
235 | ; |
---|
236 | for k=0, dimz-1 do begin |
---|
237 | for kori=0, dimzori-1 do begin |
---|
238 | ; |
---|
239 | ;fraction de la maille kori qui se trouve dans la maille k |
---|
240 | frac= max([0.0,min([zzi(j,mth,k+1),zziori(kori+1)])-max([zzi(j,mth,k),zziori(kori)])])/(zziori(kori+1)-zziori(kori)) |
---|
241 | ; |
---|
242 | tau_550_lmdz(j,k,mth)=tau_550_lmdz(j,k,mth)+ext550(l,kori,jj)*dz*frac |
---|
243 | ; |
---|
244 | for nl=0, NSW-1 do begin |
---|
245 | tau_sun_lmdz(j,k,nl,mth)=tau_sun_lmdz(j,k,nl,mth)+ext_sun(l,kori,jj,nl)*dz*frac |
---|
246 | ome_sun_lmdz(j,k,nl,mth)=ome_sun_lmdz(j,k,nl,mth)+omega_sun(l,kori,jj,nl)*ext_sun(l,kori,jj,nl)*dz*frac |
---|
247 | ggg_sun_lmdz(j,k,nl,mth)=ggg_sun_lmdz(j,k,nl,mth)+g_sun(l,kori,jj,nl)*omega_sun(l,kori,jj,nl)*ext_sun(l,kori,jj,nl)*dz*frac |
---|
248 | ; |
---|
249 | tau_sun_lmdz_ave(j,k,nl,0)=tau_sun_lmdz_ave(j,k,nl,0)+ext_sun(l,kori,jj,nl)*dz*frac |
---|
250 | ome_sun_lmdz_ave(j,k,nl,0)=ome_sun_lmdz_ave(j,k,nl,0)+omega_sun(l,kori,jj,nl)*ext_sun(l,kori,jj,nl)*dz*frac |
---|
251 | ggg_sun_lmdz_ave(j,k,nl,0)=ggg_sun_lmdz_ave(j,k,nl,0)+g_sun(l,kori,jj,nl)*omega_sun(l,kori,jj,nl)*ext_sun(l,kori,jj,nl)*dz*frac |
---|
252 | endfor |
---|
253 | ; |
---|
254 | for nl=0, NLW-1 do begin |
---|
255 | tau_ear_lmdz(j,k,nl,mth)=tau_ear_lmdz(j,k,nl,mth)+ext_earth(l,kori,jj,nl)*(1.-omega_earth(l,kori,jj,nl))*dz*frac |
---|
256 | tau_ear_lmdz_ave(j,k,nl,0)=tau_ear_lmdz_ave(j,k,nl,0)+ext_earth(l,kori,jj,nl)*(1.-omega_earth(l,kori,jj,nl))*dz*frac |
---|
257 | endfor |
---|
258 | ; |
---|
259 | endfor |
---|
260 | ;--end lat loop |
---|
261 | ; |
---|
262 | endfor |
---|
263 | endfor |
---|
264 | ;--end k loops |
---|
265 | ; |
---|
266 | endfor |
---|
267 | ;--end month loop |
---|
268 | ; |
---|
269 | ;renormalizing intensive SW properties |
---|
270 | ggg_sun_lmdz(*,*,*,*)=ggg_sun_lmdz(*,*,*,*)/ome_sun_lmdz(*,*,*,*) |
---|
271 | ome_sun_lmdz(*,*,*,*)=ome_sun_lmdz(*,*,*,*)/tau_sun_lmdz(*,*,*,*) |
---|
272 | ; |
---|
273 | ;saving netcdf file |
---|
274 | ; |
---|
275 | print ,'min max ext_sun lmdz=', min(tau_sun_lmdz), max(tau_sun_lmdz) |
---|
276 | print ,'min max ome_sun lmdz=', min(ome_sun_lmdz), max(ome_sun_lmdz) |
---|
277 | ;for nl=0, NSW-1 do begin |
---|
278 | ;print ,'min max ome_sun lmdz nl =', nl, min(ome_sun_lmdz(*,*,nl,*)), max(ome_sun_lmdz(*,*,nl,*)) |
---|
279 | ;endfor |
---|
280 | print ,'min max ggg_sun lmdz=', min(ggg_sun_lmdz), max(ggg_sun_lmdz) |
---|
281 | print ,'min max ext_ear lmdz=', min(tau_ear_lmdz), max(tau_ear_lmdz) |
---|
282 | ; |
---|
283 | print ,'min max ext_sun lmdz l=1=', min(tau_sun_lmdz(*,*,*,0)), max(tau_sun_lmdz(*,*,*,0)) |
---|
284 | print ,'min max ome_sun lmdz l=1=', min(ome_sun_lmdz(*,*,*,0)), max(ome_sun_lmdz(*,*,*,0)) |
---|
285 | print ,'min max ggg_sun lmdz l=1=', min(ggg_sun_lmdz(*,*,*,0)), max(ggg_sun_lmdz(*,*,*,0)) |
---|
286 | print ,'min max ext_ear lmdz l=1=', min(tau_ear_lmdz(*,*,*,0)), max(tau_ear_lmdz(*,*,*,0)) |
---|
287 | ; |
---|
288 | ;--compute optical depth of output data |
---|
289 | ;tau_sun=TOTAL(tau_sun_lmdz,2) |
---|
290 | ;print ,'min max tau_sun_lmdz vert=', min(tau_sun), max(tau_sun) |
---|
291 | ; |
---|
292 | opticstruct={lat:fltarr(dimlatlmdz),lev:fltarr(dimz), $ |
---|
293 | wav:fltarr(NSW),time:fltarr(month_in_year), $ |
---|
294 | tau_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year), $ |
---|
295 | ome_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year), $ |
---|
296 | ggg_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year) } |
---|
297 | ; |
---|
298 | opticstruct.lat=latitudelmdz |
---|
299 | opticstruct.lev=lev |
---|
300 | opticstruct.wav=(wl1_sun(0:NSW-1)+wl2_sun(0:NSW-1))/2. |
---|
301 | opticstruct.time=float(indgen(month_in_year)+1) |
---|
302 | opticstruct.tau_sun=tau_sun_lmdz |
---|
303 | opticstruct.ome_sun=ome_sun_lmdz |
---|
304 | opticstruct.ggg_sun=ggg_sun_lmdz |
---|
305 | ; |
---|
306 | attributes = {units:strarr(7),long_name:strarr(7)} |
---|
307 | attributes.units = ['degrees_north','level','meters','month','-','-','-'] |
---|
308 | attributes.long_name = ['latitude','level','wavelength','time','tau_sun','ome_sun','g_sun'] |
---|
309 | ; |
---|
310 | dimensions = {isdim:intarr(7), links:intarr(4,7)} |
---|
311 | dimensions.isdim = [1,1,1,1,0,0,0] ; (1=dimension, 0=variable) |
---|
312 | dimensions.links = [ [-1,-1,-1,-1],[-1,-1,-1,-1], $ |
---|
313 | [-1,-1,-1,-1],[-1,-1,-1,-1], $ |
---|
314 | [0,1,2,3],[0,1,2,3],[0,1,2,3] ] |
---|
315 | ; |
---|
316 | netcdfwrite,output+'tauswstrat.2D.'+chyr+'.nc',opticstruct,clobber=1, $ |
---|
317 | attributes=attributes, dimensions=dimensions |
---|
318 | ; |
---|
319 | opticstruct={lat:fltarr(dimlatlmdz),lev:fltarr(dimz), $ |
---|
320 | wav:fltarr(NLW),time:fltarr(month_in_year), $ |
---|
321 | tau_ear:fltarr(dimlatlmdz,dimz,NLW,month_in_year) } |
---|
322 | ; |
---|
323 | opticstruct.lat=latitudelmdz |
---|
324 | opticstruct.lev=lev |
---|
325 | opticstruct.wav=(wl1_earth+wl2_earth)/2. |
---|
326 | opticstruct.time=float(indgen(month_in_year)+1) |
---|
327 | opticstruct.tau_ear=tau_ear_lmdz |
---|
328 | ; |
---|
329 | attributes = {units:strarr(5),long_name:strarr(5)} |
---|
330 | attributes.units = ['degrees_north','level','cm-1','month','-'] |
---|
331 | attributes.long_name = ['latitude','level','wavenumber','time','tau_ear'] |
---|
332 | ; |
---|
333 | dimensions = {isdim:intarr(5), links:intarr(4,5)} |
---|
334 | dimensions.isdim = [1,1,1,1,0] ; (1=dimension, 0=variable) |
---|
335 | dimensions.links = [ [-1,-1,-1,-1],[-1,-1,-1,-1], $ |
---|
336 | [-1,-1,-1,-1],[-1,-1,-1,-1], $ |
---|
337 | [0,1,2,3] ] |
---|
338 | ; |
---|
339 | netcdfwrite,output+'taulwstrat.2D.'+chyr+'.nc',opticstruct,clobber=1, $ |
---|
340 | attributes=attributes, dimensions=dimensions |
---|
341 | ; |
---|
342 | opticstruct={lat:fltarr(dimlatlmdz),lev:fltarr(dimz), $ |
---|
343 | time:fltarr(month_in_year), $ |
---|
344 | tau550:fltarr(dimlatlmdz,dimz,month_in_year) } |
---|
345 | ; |
---|
346 | opticstruct.lat=latitudelmdz |
---|
347 | opticstruct.lev=lev |
---|
348 | opticstruct.time=float(indgen(month_in_year)+1) |
---|
349 | opticstruct.tau550=tau_550_lmdz |
---|
350 | ; |
---|
351 | attributes = {units:strarr(4),long_name:strarr(4)} |
---|
352 | attributes.units = ['degrees_north','level','month','-'] |
---|
353 | attributes.long_name = ['latitude','level','time','tau550'] |
---|
354 | ; |
---|
355 | dimensions = {isdim:intarr(4), links:intarr(3,4)} |
---|
356 | dimensions.isdim = [1,1,1,0] ; (1=dimension, 0=variable) |
---|
357 | dimensions.links = [ [-1,-1,-1],[-1,-1,-1], $ |
---|
358 | [-1,-1,-1],[0,1,2] ] |
---|
359 | ; |
---|
360 | netcdfwrite,output+'tau550strat.2D.'+chyr+'.nc',opticstruct,clobber=1, $ |
---|
361 | attributes=attributes, dimensions=dimensions |
---|
362 | ; |
---|
363 | endfor |
---|
364 | ;--end loop on years |
---|
365 | ; |
---|
366 | ;now deal with average conditions |
---|
367 | ggg_sun_lmdz_ave(*,*,*,0)=ggg_sun_lmdz_ave(*,*,*,0)/ome_sun_lmdz_ave(*,*,*,0) |
---|
368 | ome_sun_lmdz_ave(*,*,*,0)=ome_sun_lmdz_ave(*,*,*,0)/tau_sun_lmdz_ave(*,*,*,0) |
---|
369 | tau_sun_lmdz_ave(*,*,*,0)=tau_sun_lmdz_ave(*,*,*,0)/float(dimtime) |
---|
370 | tau_ear_lmdz_ave(*,*,*,0)=tau_ear_lmdz_ave(*,*,*,0)/float(dimtime) |
---|
371 | ; |
---|
372 | for mth=1, month_in_year-1 do begin |
---|
373 | ggg_sun_lmdz_ave(*,*,*,mth)=ggg_sun_lmdz_ave(*,*,*,0) |
---|
374 | ome_sun_lmdz_ave(*,*,*,mth)=ome_sun_lmdz_ave(*,*,*,0) |
---|
375 | tau_sun_lmdz_ave(*,*,*,mth)=tau_sun_lmdz_ave(*,*,*,0) |
---|
376 | tau_ear_lmdz_ave(*,*,*,mth)=tau_ear_lmdz_ave(*,*,*,0) |
---|
377 | endfor |
---|
378 | ; |
---|
379 | opticstruct={lat:fltarr(dimlatlmdz),lev:fltarr(dimz), $ |
---|
380 | wav:fltarr(NSW),time:fltarr(month_in_year), $ |
---|
381 | tau_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year), $ |
---|
382 | ome_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year), $ |
---|
383 | ggg_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year) } |
---|
384 | ; |
---|
385 | opticstruct.lat=latitudelmdz |
---|
386 | opticstruct.lev=lev |
---|
387 | opticstruct.wav=(wl1_sun(0:NSW-1)+wl2_sun(0:NSW-1))/2. |
---|
388 | opticstruct.time=float(indgen(month_in_year)) |
---|
389 | opticstruct.tau_sun=tau_sun_lmdz_ave |
---|
390 | opticstruct.ome_sun=ome_sun_lmdz_ave |
---|
391 | opticstruct.ggg_sun=ggg_sun_lmdz_ave |
---|
392 | ; |
---|
393 | attributes = {units:strarr(7),long_name:strarr(7)} |
---|
394 | attributes.units = ['degrees_north','level','meters','month','-','-','-'] |
---|
395 | attributes.long_name = ['latitude','level','wavelength','time','tau_sun','ome_sun','g_sun'] |
---|
396 | ; |
---|
397 | dimensions = {isdim:intarr(7), links:intarr(4,7)} |
---|
398 | dimensions.isdim = [1,1,1,1,0,0,0] ; (1=dimension, 0=variable) |
---|
399 | dimensions.links = [ [-1,-1,-1,-1],[-1,-1,-1,-1], $ |
---|
400 | [-1,-1,-1,-1],[-1,-1,-1,-1], $ |
---|
401 | [0,1,2,3],[0,1,2,3],[0,1,2,3] ] |
---|
402 | ; |
---|
403 | netcdfwrite,output+'tauswstrat.2D.ave.nc',opticstruct,clobber=1, $ |
---|
404 | attributes=attributes, dimensions=dimensions |
---|
405 | ; |
---|
406 | opticstruct={lat:fltarr(dimlatlmdz),lev:fltarr(dimz), $ |
---|
407 | wav:fltarr(NLW),time:fltarr(month_in_year), $ |
---|
408 | tau_ear:fltarr(dimlatlmdz,dimz,NLW,month_in_year) } |
---|
409 | ; |
---|
410 | opticstruct.lat=latitudelmdz |
---|
411 | opticstruct.lev=lev |
---|
412 | opticstruct.wav=(wl1_earth+wl2_earth)/2. |
---|
413 | opticstruct.time=float(indgen(month_in_year)) |
---|
414 | opticstruct.tau_ear=tau_ear_lmdz_ave |
---|
415 | ; |
---|
416 | attributes = {units:strarr(5),long_name:strarr(5)} |
---|
417 | attributes.units = ['degrees_north','level','cm-1','month','-'] |
---|
418 | attributes.long_name = ['latitude','level','wavenumber','time','tau_ear'] |
---|
419 | ; |
---|
420 | dimensions = {isdim:intarr(5), links:intarr(4,5)} |
---|
421 | dimensions.isdim = [1,1,1,1,0] ; (1=dimension, 0=variable) |
---|
422 | dimensions.links = [ [-1,-1,-1,-1],[-1,-1,-1,-1], $ |
---|
423 | [-1,-1,-1,-1],[-1,-1,-1,-1], $ |
---|
424 | [0,1,2,3] ] |
---|
425 | ; |
---|
426 | netcdfwrite,output+'taulwstrat.2D.ave.nc',opticstruct,clobber=1, $ |
---|
427 | attributes=attributes, dimensions=dimensions |
---|
428 | ; |
---|
429 | end |
---|
430 | EOF |
---|
431 | |
---|
432 | cat > volc.job << EOF2 |
---|
433 | #PBS -N process_volc |
---|
434 | #PBS -S /bin/bash |
---|
435 | #PBS -q week # there exist: short, day, days3, week... |
---|
436 | #PBS -k eo # to write the output of stdin |
---|
437 | ### Max memory |
---|
438 | #PBS -l vmem=10gb # virtual memory |
---|
439 | #PBS -l mem=10gb |
---|
440 | |
---|
441 | cd $dirpwd |
---|
442 | |
---|
443 | idl << eof |
---|
444 | .r netcdf |
---|
445 | .r process_volc |
---|
446 | regrid |
---|
447 | eof |
---|
448 | EOF2 |
---|
449 | |
---|
450 | #qsub volc.job |
---|