[3403] | 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 |
---|