[3403] | 1 | dirpwd=`pwd` |
---|
| 2 | |
---|
[4605] | 3 | #original CMIP6 files |
---|
| 4 | vv='v3' |
---|
| 5 | #corrected CMIP6 files + extended in time |
---|
[4473] | 6 | vv='v4' |
---|
[3403] | 7 | |
---|
| 8 | #--choose the resolution |
---|
[3766] | 9 | #--only LR and zoom works fully for now ! |
---|
[4605] | 10 | #lmdz='VVLR_l19' |
---|
| 11 | lmdz='VLR_l39' |
---|
| 12 | #lmdz='VLR_l79' |
---|
| 13 | #lmdz='LR_l79' |
---|
| 14 | #lmdz='MR_l79' |
---|
[3766] | 15 | #--added for Frederique Cheruy |
---|
[4605] | 16 | #lmdz='zoom_128x89_l79' |
---|
[3403] | 17 | |
---|
| 18 | dirout='/data/'${USER}'/CMIP6/VOLC/'${lmdz}'_'${vv}'/' |
---|
| 19 | echo $dirout |
---|
| 20 | if [ ! -d ${dirout} ] ; then mkdir -p ${dirout} ; fi |
---|
| 21 | |
---|
[4183] | 22 | cat > process_volc_${lmdz}.pro << EOF |
---|
[3403] | 23 | pro 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 | ; |
---|
[3765] | 29 | lmdz='${lmdz}' |
---|
[3764] | 30 | ; |
---|
[4605] | 31 | if (lmdz eq 'VVLR_l19') then begin |
---|
[3403] | 32 | dimlonlmdz=48 |
---|
| 33 | dimlatlmdz=37 |
---|
| 34 | dimz=19 |
---|
[4605] | 35 | output='/data/${USER}/CMIP6/VOLC/${lmdz}_${vv}/' |
---|
[3766] | 36 | latfirst=90. |
---|
| 37 | latinc=-180./float(dimlatlmdz-1) |
---|
| 38 | latitudelmdz=latfirst+latinc*indgen(dimlatlmdz) |
---|
[3403] | 39 | endif |
---|
| 40 | |
---|
[4605] | 41 | if (lmdz eq 'VLR_l39') then begin |
---|
[3403] | 42 | dimlonlmdz=96 |
---|
| 43 | dimlatlmdz=96 |
---|
| 44 | dimz=39 |
---|
[4605] | 45 | output='/data/${USER}/CMIP6/VOLC/${lmdz}_${vv}/' |
---|
[3766] | 46 | latfirst=90. |
---|
| 47 | latinc=-180./float(dimlatlmdz-1) |
---|
| 48 | latitudelmdz=latfirst+latinc*indgen(dimlatlmdz) |
---|
[3403] | 49 | endif |
---|
| 50 | |
---|
[4605] | 51 | if (lmdz eq 'VLR_l79') then begin |
---|
[3403] | 52 | dimlonlmdz=96 |
---|
| 53 | dimlatlmdz=96 |
---|
| 54 | dimz=79 |
---|
[4605] | 55 | output='/data/${USER}/CMIP6/VOLC/${lmdz}_${vv}/' |
---|
[3766] | 56 | latfirst=90. |
---|
| 57 | latinc=-180./float(dimlatlmdz-1) |
---|
| 58 | latitudelmdz=latfirst+latinc*indgen(dimlatlmdz) |
---|
[3403] | 59 | endif |
---|
| 60 | |
---|
[4605] | 61 | if (lmdz eq 'LR_l79') then begin |
---|
[3403] | 62 | dimlonlmdz=144 |
---|
| 63 | dimlatlmdz=143 |
---|
| 64 | dimz=79 |
---|
[4605] | 65 | output='/data/${USER}/CMIP6/VOLC/${lmdz}_${vv}/' |
---|
[3766] | 66 | latfirst=90. |
---|
| 67 | latinc=-180./float(dimlatlmdz-1) |
---|
| 68 | latitudelmdz=latfirst+latinc*indgen(dimlatlmdz) |
---|
[3403] | 69 | endif |
---|
| 70 | |
---|
[4605] | 71 | if (lmdz eq 'MR_l79') then begin |
---|
[3403] | 72 | dimlonlmdz=256 |
---|
| 73 | dimlatlmdz=257 |
---|
| 74 | dimz=79 |
---|
[4605] | 75 | output='/data/${USER}/CMIP6/VOLC/${lmdz}_${vv}/' |
---|
[3403] | 76 | latfirst=90. |
---|
| 77 | latinc=-180./float(dimlatlmdz-1) |
---|
| 78 | latitudelmdz=latfirst+latinc*indgen(dimlatlmdz) |
---|
[3766] | 79 | endif |
---|
| 80 | |
---|
[4605] | 81 | if (lmdz eq 'zoom_128x89_l79') then begin |
---|
[3766] | 82 | dimlonlmdz=128 |
---|
| 83 | dimlatlmdz=89 |
---|
| 84 | dimz=79 |
---|
| 85 | output='/data/${USER}/CMIP6/VOLC/${lmdz}_${vv}/' |
---|
| 86 | latitudelmdz=[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.] |
---|
| 97 | endif |
---|
| 98 | |
---|
[3403] | 99 | NSW=6 |
---|
| 100 | NLW=16 |
---|
| 101 | ; |
---|
| 102 | ;--script only works on ciclad |
---|
[6048] | 103 | dir='/bdd/input4MIPs/VOLC/${vv}/' |
---|
[4473] | 104 | ;;;not available for v4 |
---|
| 105 | ;;;filename=dir+'CMIP_1850_2014_extinction_550nm_${vv}.nc' |
---|
| 106 | ;;;NETCDFREAD,filename,'altitude',altitude,dimaltitude |
---|
| 107 | ;;;NETCDFREAD,filename,'ext550',ext550,dimext |
---|
[3403] | 108 | ; |
---|
| 109 | filename=dir+'CMIP_IPSL-CM6_radiation_${vv}.nc' |
---|
| 110 | ; |
---|
| 111 | NETCDFREAD,filename,'altitude',altitude,dimaltitude |
---|
| 112 | NETCDFREAD,filename,'latitude',latitude,dimlatitude |
---|
| 113 | NETCDFREAD,filename,'wl1_sun',wl1_sun,solar_bands |
---|
| 114 | NETCDFREAD,filename,'wl2_sun',wl2_sun,solar_bands |
---|
| 115 | NETCDFREAD,filename,'wl1_earth',wl1_earth,terrestrial_bands |
---|
| 116 | NETCDFREAD,filename,'wl2_earth',wl2_earth,terrestrial_bands |
---|
| 117 | NETCDFREAD,filename,'month',month,dimmonth |
---|
| 118 | NETCDFREAD,filename,'ext_sun',ext_sun,dimext |
---|
| 119 | NETCDFREAD,filename,'omega_sun',omega_sun,dimext |
---|
| 120 | NETCDFREAD,filename,'g_sun',g_sun,dimext |
---|
| 121 | NETCDFREAD,filename,'ext_earth',ext_earth,dimext |
---|
| 122 | NETCDFREAD,filename,'omega_earth',omega_earth,dimext |
---|
| 123 | NETCDFREAD,filename,'g_earth',g_earth,dimext |
---|
| 124 | ; |
---|
| 125 | print ,'wl1_sun=', wl1_sun |
---|
| 126 | print ,'wl2_sun=', wl2_sun |
---|
| 127 | print ,'wl1_ear=', wl1_earth |
---|
| 128 | print ,'wl2_ear=', wl2_earth |
---|
| 129 | ; |
---|
| 130 | print ,'min max ext_sun=', min(ext_sun), max(ext_sun) |
---|
| 131 | print ,'min max ome_sun=', min(omega_sun), max(omega_sun) |
---|
| 132 | ;for nl=0, NSW-1 do begin |
---|
| 133 | ;print ,'min max ome_sun nl=', nl, min(omega_sun(*,*,*,nl)), max(omega_sun(*,*,*,nl)) |
---|
| 134 | ;endfor |
---|
| 135 | print ,'min max ggg_sun=', min(g_sun), max(g_sun) |
---|
| 136 | print ,'min max ext_ear=', min(ext_earth), max(ext_earth) |
---|
| 137 | ; |
---|
| 138 | dimlat=dimlatitude(0) |
---|
| 139 | dimalt=dimaltitude(0) |
---|
| 140 | dimtime=dimmonth(0) |
---|
| 141 | ; |
---|
| 142 | ;--vertical resolution in Beiping's code |
---|
| 143 | dz=0.5 |
---|
| 144 | ; |
---|
| 145 | month_in_year=12 |
---|
| 146 | ;;month_in_year=1 |
---|
| 147 | ; |
---|
| 148 | ;--compute optical depth of input data |
---|
| 149 | ;--dimension ext_sun(l,k,j,nl) |
---|
| 150 | ;ext_sun0=ext_sun(0,*,*,*) |
---|
| 151 | ;print , 'size ext_sun0=', size(ext_sun0) |
---|
| 152 | ;tau_sun=TOTAL(ext_sun0,2)*dz |
---|
| 153 | ;print ,'min max tau_sun l=0 =', min(tau_sun), max(tau_sun) |
---|
| 154 | ; |
---|
| 155 | zz=fltarr(dimz) |
---|
| 156 | ; |
---|
| 157 | ;---exact altitudes of LMDZ -- L79 |
---|
[4605] | 158 | ;--only exists for VLR, LR, MR and zoom_128x89 at the moment |
---|
[3403] | 159 | ; |
---|
[4605] | 160 | filename='/bdd/input4MIPs/ZALT/zalt_zonmean_${lmdz}_rev.nc' |
---|
| 161 | NETCDFREAD,filename,'GEOP',zz,dimzz |
---|
| 162 | NETCDFREAD,filename,'LAT',zzlat,dimzzlat |
---|
| 163 | NETCDFREAD,filename,'TIME_COUNTER',zztime,dimzztime |
---|
| 164 | dimzzilat=dimzzlat[0] |
---|
| 165 | dimzzitime=dimzztime[0] |
---|
| 166 | ;--becareful zz comes with four dimensions |
---|
| 167 | ;--lon lat k time |
---|
| 168 | print, 'GEOP size=', size(zz) |
---|
| 169 | ;--becareful zzlat comes with South Pole first |
---|
| 170 | print, 'LAT from zalt field=', zzlat |
---|
| 171 | if (dimzzilat ne dimlatlmdz) then begin |
---|
| 172 | print , 'PB dimension latitude' |
---|
[4473] | 173 | endif |
---|
[3403] | 174 | ; |
---|
[4473] | 175 | ; |
---|
[3403] | 176 | ;--reconstructing the vertical coordinate at interfaces (in unit km) |
---|
| 177 | ;--and reverse lat axis for zzi i==>ii |
---|
| 178 | ;--and reverse zz axis for zzi dimz-1-k==>k |
---|
| 179 | ;--and forget about lon axis : index 0 in zz |
---|
| 180 | zzi=fltarr(dimzzilat,dimzzitime,dimz+1) |
---|
| 181 | for i=0, dimzzilat-1 do begin |
---|
| 182 | ii=dimzzilat-1-i |
---|
| 183 | for t=0, dimzzitime-1 do begin |
---|
| 184 | zzi(ii,t,0)=0.0 |
---|
| 185 | for k=1, dimz-1 do begin |
---|
| 186 | zzi(ii,t,k)=(zz(0,i,dimz-1-(k-1),t)+zz(0,i,dimz-1-k,t))/2.0 |
---|
| 187 | endfor |
---|
| 188 | zzi(ii,t,dimz)=100.00 |
---|
| 189 | endfor |
---|
| 190 | endfor |
---|
| 191 | print, 'zzi=',zzi |
---|
| 192 | ; |
---|
| 193 | lev=indgen(dimz)+1 |
---|
| 194 | ; |
---|
| 195 | dimzori=dimalt |
---|
| 196 | zziori=fltarr(dimzori+1) |
---|
| 197 | zziori(0)=altitude(0)-0.25 |
---|
| 198 | for k=1, dimzori do begin |
---|
| 199 | zziori(k)=altitude(k-1)+0.25 |
---|
| 200 | endfor |
---|
| 201 | ; |
---|
| 202 | ;--550 nm properties |
---|
[4473] | 203 | ;;;not available for v4 |
---|
| 204 | ;;;tau_550_lmdz=fltarr(dimlatlmdz,dimz,month_in_year) |
---|
[3403] | 205 | ; |
---|
| 206 | ;--SW properties |
---|
| 207 | tau_sun_lmdz=fltarr(dimlatlmdz,dimz,NSW,month_in_year) |
---|
| 208 | ome_sun_lmdz=fltarr(dimlatlmdz,dimz,NSW,month_in_year) |
---|
| 209 | ggg_sun_lmdz=fltarr(dimlatlmdz,dimz,NSW,month_in_year) |
---|
| 210 | ; |
---|
| 211 | tau_sun_lmdz_ave=fltarr(dimlatlmdz,dimz,NSW,month_in_year) |
---|
| 212 | ome_sun_lmdz_ave=fltarr(dimlatlmdz,dimz,NSW,month_in_year) |
---|
| 213 | ggg_sun_lmdz_ave=fltarr(dimlatlmdz,dimz,NSW,month_in_year) |
---|
| 214 | ; |
---|
[3938] | 215 | tau_sun_lmdz_tr=fltarr(dimlatlmdz,dimz,NSW,month_in_year) |
---|
| 216 | ome_sun_lmdz_tr=fltarr(dimlatlmdz,dimz,NSW,month_in_year) |
---|
| 217 | ggg_sun_lmdz_tr=fltarr(dimlatlmdz,dimz,NSW,month_in_year) |
---|
| 218 | ; |
---|
[3403] | 219 | ;--LW properties tau_abs |
---|
| 220 | tau_ear_lmdz=fltarr(dimlatlmdz,dimz,NLW,month_in_year) |
---|
| 221 | ; |
---|
| 222 | tau_ear_lmdz_ave=fltarr(dimlatlmdz,dimz,NLW,month_in_year) |
---|
| 223 | ; |
---|
[3938] | 224 | tau_ear_lmdz_tr=fltarr(dimlatlmdz,dimz,NLW,month_in_year) |
---|
| 225 | ; |
---|
[3403] | 226 | tau_sun_lmdz_ave(*,*,*,0)=1.e-15 |
---|
| 227 | ome_sun_lmdz_ave(*,*,*,0)=1.e-15 |
---|
| 228 | ggg_sun_lmdz_ave(*,*,*,0)=0.0 |
---|
| 229 | tau_ear_lmdz_ave(*,*,*,0)=1.e-15 |
---|
| 230 | ; |
---|
[4473] | 231 | yearend=dimtime/month_in_year-1 |
---|
[3403] | 232 | ; |
---|
[4473] | 233 | for year=0, yearend do begin |
---|
| 234 | ; |
---|
| 235 | ;;;not available for v4 |
---|
| 236 | ;;;tau_550_lmdz(*,*,*)=1.e-15 |
---|
[3403] | 237 | tau_sun_lmdz(*,*,*,*)=1.e-15 |
---|
| 238 | ome_sun_lmdz(*,*,*,*)=1.e-15 |
---|
| 239 | ggg_sun_lmdz(*,*,*,*)=0.0 |
---|
| 240 | tau_ear_lmdz(*,*,*,*)=1.e-15 |
---|
| 241 | ; |
---|
| 242 | chyr=strcompress(1850+year,/rem) |
---|
| 243 | ; |
---|
| 244 | for mth=0,month_in_year-1 do begin |
---|
| 245 | ; |
---|
| 246 | ;--timestep |
---|
| 247 | l=mth+month_in_year*year |
---|
| 248 | print,'year mth l=',chyr, mth, l |
---|
| 249 | ; |
---|
| 250 | ;regridding |
---|
| 251 | for j=0, dimlatlmdz-1 do begin |
---|
| 252 | ; |
---|
| 253 | ;--finding latitude in beiping luo data |
---|
| 254 | jj=0 |
---|
| 255 | for jluo=0,dimlat-2 do begin |
---|
| 256 | if (latitudelmdz(j) gt (latitude(jluo)+latitude(jluo+1))/2. ) then begin |
---|
| 257 | jj=jluo+1 |
---|
| 258 | endif |
---|
| 259 | endfor |
---|
| 260 | ; |
---|
| 261 | for k=0, dimz-1 do begin |
---|
| 262 | for kori=0, dimzori-1 do begin |
---|
| 263 | ; |
---|
| 264 | ;fraction de la maille kori qui se trouve dans la maille k |
---|
| 265 | 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)) |
---|
| 266 | ; |
---|
[4473] | 267 | ;;;not available for v4 |
---|
| 268 | ;;;tau_550_lmdz(j,k,mth)=tau_550_lmdz(j,k,mth)+ext550(l,kori,jj)*dz*frac |
---|
[3403] | 269 | ; |
---|
| 270 | for nl=0, NSW-1 do begin |
---|
| 271 | tau_sun_lmdz(j,k,nl,mth)=tau_sun_lmdz(j,k,nl,mth)+ext_sun(l,kori,jj,nl)*dz*frac |
---|
| 272 | 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 |
---|
| 273 | 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 |
---|
| 274 | ; |
---|
| 275 | tau_sun_lmdz_ave(j,k,nl,0)=tau_sun_lmdz_ave(j,k,nl,0)+ext_sun(l,kori,jj,nl)*dz*frac |
---|
| 276 | 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 |
---|
| 277 | 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 |
---|
| 278 | endfor |
---|
| 279 | ; |
---|
| 280 | for nl=0, NLW-1 do begin |
---|
| 281 | 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 |
---|
| 282 | 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 |
---|
| 283 | endfor |
---|
| 284 | ; |
---|
| 285 | endfor |
---|
| 286 | ;--end lat loop |
---|
| 287 | ; |
---|
| 288 | endfor |
---|
| 289 | endfor |
---|
| 290 | ;--end k loops |
---|
| 291 | ; |
---|
| 292 | endfor |
---|
| 293 | ;--end month loop |
---|
| 294 | ; |
---|
| 295 | ;renormalizing intensive SW properties |
---|
| 296 | ggg_sun_lmdz(*,*,*,*)=ggg_sun_lmdz(*,*,*,*)/ome_sun_lmdz(*,*,*,*) |
---|
| 297 | ome_sun_lmdz(*,*,*,*)=ome_sun_lmdz(*,*,*,*)/tau_sun_lmdz(*,*,*,*) |
---|
| 298 | ; |
---|
| 299 | ;saving netcdf file |
---|
| 300 | ; |
---|
| 301 | print ,'min max ext_sun lmdz=', min(tau_sun_lmdz), max(tau_sun_lmdz) |
---|
| 302 | print ,'min max ome_sun lmdz=', min(ome_sun_lmdz), max(ome_sun_lmdz) |
---|
| 303 | ;for nl=0, NSW-1 do begin |
---|
| 304 | ;print ,'min max ome_sun lmdz nl =', nl, min(ome_sun_lmdz(*,*,nl,*)), max(ome_sun_lmdz(*,*,nl,*)) |
---|
| 305 | ;endfor |
---|
| 306 | print ,'min max ggg_sun lmdz=', min(ggg_sun_lmdz), max(ggg_sun_lmdz) |
---|
| 307 | print ,'min max ext_ear lmdz=', min(tau_ear_lmdz), max(tau_ear_lmdz) |
---|
| 308 | ; |
---|
| 309 | print ,'min max ext_sun lmdz l=1=', min(tau_sun_lmdz(*,*,*,0)), max(tau_sun_lmdz(*,*,*,0)) |
---|
| 310 | print ,'min max ome_sun lmdz l=1=', min(ome_sun_lmdz(*,*,*,0)), max(ome_sun_lmdz(*,*,*,0)) |
---|
| 311 | print ,'min max ggg_sun lmdz l=1=', min(ggg_sun_lmdz(*,*,*,0)), max(ggg_sun_lmdz(*,*,*,0)) |
---|
| 312 | print ,'min max ext_ear lmdz l=1=', min(tau_ear_lmdz(*,*,*,0)), max(tau_ear_lmdz(*,*,*,0)) |
---|
| 313 | ; |
---|
| 314 | ;--compute optical depth of output data |
---|
| 315 | ;tau_sun=TOTAL(tau_sun_lmdz,2) |
---|
| 316 | ;print ,'min max tau_sun_lmdz vert=', min(tau_sun), max(tau_sun) |
---|
| 317 | ; |
---|
| 318 | opticstruct={lat:fltarr(dimlatlmdz),lev:fltarr(dimz), $ |
---|
| 319 | wav:fltarr(NSW),time:fltarr(month_in_year), $ |
---|
| 320 | tau_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year), $ |
---|
| 321 | ome_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year), $ |
---|
| 322 | ggg_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year) } |
---|
| 323 | ; |
---|
| 324 | opticstruct.lat=latitudelmdz |
---|
| 325 | opticstruct.lev=lev |
---|
| 326 | opticstruct.wav=(wl1_sun(0:NSW-1)+wl2_sun(0:NSW-1))/2. |
---|
| 327 | opticstruct.time=float(indgen(month_in_year)+1) |
---|
| 328 | opticstruct.tau_sun=tau_sun_lmdz |
---|
| 329 | opticstruct.ome_sun=ome_sun_lmdz |
---|
| 330 | opticstruct.ggg_sun=ggg_sun_lmdz |
---|
| 331 | ; |
---|
| 332 | attributes = {units:strarr(7),long_name:strarr(7)} |
---|
| 333 | attributes.units = ['degrees_north','level','meters','month','-','-','-'] |
---|
| 334 | attributes.long_name = ['latitude','level','wavelength','time','tau_sun','ome_sun','g_sun'] |
---|
| 335 | ; |
---|
| 336 | dimensions = {isdim:intarr(7), links:intarr(4,7)} |
---|
| 337 | dimensions.isdim = [1,1,1,1,0,0,0] ; (1=dimension, 0=variable) |
---|
| 338 | dimensions.links = [ [-1,-1,-1,-1],[-1,-1,-1,-1], $ |
---|
| 339 | [-1,-1,-1,-1],[-1,-1,-1,-1], $ |
---|
| 340 | [0,1,2,3],[0,1,2,3],[0,1,2,3] ] |
---|
| 341 | ; |
---|
| 342 | netcdfwrite,output+'tauswstrat.2D.'+chyr+'.nc',opticstruct,clobber=1, $ |
---|
| 343 | attributes=attributes, dimensions=dimensions |
---|
| 344 | ; |
---|
| 345 | opticstruct={lat:fltarr(dimlatlmdz),lev:fltarr(dimz), $ |
---|
| 346 | wav:fltarr(NLW),time:fltarr(month_in_year), $ |
---|
| 347 | tau_ear:fltarr(dimlatlmdz,dimz,NLW,month_in_year) } |
---|
| 348 | ; |
---|
| 349 | opticstruct.lat=latitudelmdz |
---|
| 350 | opticstruct.lev=lev |
---|
| 351 | opticstruct.wav=(wl1_earth+wl2_earth)/2. |
---|
| 352 | opticstruct.time=float(indgen(month_in_year)+1) |
---|
| 353 | opticstruct.tau_ear=tau_ear_lmdz |
---|
| 354 | ; |
---|
| 355 | attributes = {units:strarr(5),long_name:strarr(5)} |
---|
| 356 | attributes.units = ['degrees_north','level','cm-1','month','-'] |
---|
| 357 | attributes.long_name = ['latitude','level','wavenumber','time','tau_ear'] |
---|
| 358 | ; |
---|
| 359 | dimensions = {isdim:intarr(5), links:intarr(4,5)} |
---|
| 360 | dimensions.isdim = [1,1,1,1,0] ; (1=dimension, 0=variable) |
---|
| 361 | dimensions.links = [ [-1,-1,-1,-1],[-1,-1,-1,-1], $ |
---|
| 362 | [-1,-1,-1,-1],[-1,-1,-1,-1], $ |
---|
| 363 | [0,1,2,3] ] |
---|
| 364 | ; |
---|
| 365 | netcdfwrite,output+'taulwstrat.2D.'+chyr+'.nc',opticstruct,clobber=1, $ |
---|
| 366 | attributes=attributes, dimensions=dimensions |
---|
| 367 | ; |
---|
[4473] | 368 | ;;;not available in v4 |
---|
| 369 | ;;;opticstruct={lat:fltarr(dimlatlmdz),lev:fltarr(dimz), $ |
---|
| 370 | ;;; time:fltarr(month_in_year), $ |
---|
| 371 | ;;; tau550:fltarr(dimlatlmdz,dimz,month_in_year) } |
---|
[3403] | 372 | ; |
---|
[4473] | 373 | ;;;opticstruct.lat=latitudelmdz |
---|
| 374 | ;;;opticstruct.lev=lev |
---|
| 375 | ;;;opticstruct.time=float(indgen(month_in_year)+1) |
---|
| 376 | ;;;opticstruct.tau550=tau_550_lmdz |
---|
[3403] | 377 | ; |
---|
[4473] | 378 | ;;;attributes = {units:strarr(4),long_name:strarr(4)} |
---|
| 379 | ;;;attributes.units = ['degrees_north','level','month','-'] |
---|
| 380 | ;;;attributes.long_name = ['latitude','level','time','tau550'] |
---|
[3403] | 381 | ; |
---|
[4473] | 382 | ;;;dimensions = {isdim:intarr(4), links:intarr(3,4)} |
---|
| 383 | ;;; dimensions.isdim = [1,1,1,0] ; (1=dimension, 0=variable) |
---|
| 384 | ;;; dimensions.links = [ [-1,-1,-1],[-1,-1,-1], $ |
---|
| 385 | ;;; [-1,-1,-1],[0,1,2] ] |
---|
[3403] | 386 | ; |
---|
[4473] | 387 | ;;;netcdfwrite,output+'tau550strat.2D.'+chyr+'.nc',opticstruct,clobber=1, $ |
---|
| 388 | ;;; attributes=attributes, dimensions=dimensions |
---|
[3403] | 389 | ; |
---|
| 390 | endfor |
---|
| 391 | ;--end loop on years |
---|
| 392 | ; |
---|
| 393 | ;now deal with average conditions |
---|
| 394 | ggg_sun_lmdz_ave(*,*,*,0)=ggg_sun_lmdz_ave(*,*,*,0)/ome_sun_lmdz_ave(*,*,*,0) |
---|
| 395 | ome_sun_lmdz_ave(*,*,*,0)=ome_sun_lmdz_ave(*,*,*,0)/tau_sun_lmdz_ave(*,*,*,0) |
---|
| 396 | tau_sun_lmdz_ave(*,*,*,0)=tau_sun_lmdz_ave(*,*,*,0)/float(dimtime) |
---|
| 397 | tau_ear_lmdz_ave(*,*,*,0)=tau_ear_lmdz_ave(*,*,*,0)/float(dimtime) |
---|
| 398 | ; |
---|
| 399 | for mth=1, month_in_year-1 do begin |
---|
[3938] | 400 | ggg_sun_lmdz_ave(*,*,*,mth)=ggg_sun_lmdz_ave(*,*,*,0) |
---|
| 401 | ome_sun_lmdz_ave(*,*,*,mth)=ome_sun_lmdz_ave(*,*,*,0) |
---|
| 402 | tau_sun_lmdz_ave(*,*,*,mth)=tau_sun_lmdz_ave(*,*,*,0) |
---|
| 403 | tau_ear_lmdz_ave(*,*,*,mth)=tau_ear_lmdz_ave(*,*,*,0) |
---|
[3403] | 404 | endfor |
---|
| 405 | ; |
---|
| 406 | opticstruct={lat:fltarr(dimlatlmdz),lev:fltarr(dimz), $ |
---|
| 407 | wav:fltarr(NSW),time:fltarr(month_in_year), $ |
---|
| 408 | tau_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year), $ |
---|
| 409 | ome_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year), $ |
---|
| 410 | ggg_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year) } |
---|
| 411 | ; |
---|
| 412 | opticstruct.lat=latitudelmdz |
---|
| 413 | opticstruct.lev=lev |
---|
| 414 | opticstruct.wav=(wl1_sun(0:NSW-1)+wl2_sun(0:NSW-1))/2. |
---|
| 415 | opticstruct.time=float(indgen(month_in_year)) |
---|
| 416 | opticstruct.tau_sun=tau_sun_lmdz_ave |
---|
| 417 | opticstruct.ome_sun=ome_sun_lmdz_ave |
---|
| 418 | opticstruct.ggg_sun=ggg_sun_lmdz_ave |
---|
| 419 | ; |
---|
| 420 | attributes = {units:strarr(7),long_name:strarr(7)} |
---|
| 421 | attributes.units = ['degrees_north','level','meters','month','-','-','-'] |
---|
| 422 | attributes.long_name = ['latitude','level','wavelength','time','tau_sun','ome_sun','g_sun'] |
---|
| 423 | ; |
---|
| 424 | dimensions = {isdim:intarr(7), links:intarr(4,7)} |
---|
| 425 | dimensions.isdim = [1,1,1,1,0,0,0] ; (1=dimension, 0=variable) |
---|
| 426 | dimensions.links = [ [-1,-1,-1,-1],[-1,-1,-1,-1], $ |
---|
| 427 | [-1,-1,-1,-1],[-1,-1,-1,-1], $ |
---|
| 428 | [0,1,2,3],[0,1,2,3],[0,1,2,3] ] |
---|
| 429 | ; |
---|
| 430 | netcdfwrite,output+'tauswstrat.2D.ave.nc',opticstruct,clobber=1, $ |
---|
| 431 | attributes=attributes, dimensions=dimensions |
---|
| 432 | ; |
---|
| 433 | opticstruct={lat:fltarr(dimlatlmdz),lev:fltarr(dimz), $ |
---|
| 434 | wav:fltarr(NLW),time:fltarr(month_in_year), $ |
---|
| 435 | tau_ear:fltarr(dimlatlmdz,dimz,NLW,month_in_year) } |
---|
| 436 | ; |
---|
| 437 | opticstruct.lat=latitudelmdz |
---|
| 438 | opticstruct.lev=lev |
---|
| 439 | opticstruct.wav=(wl1_earth+wl2_earth)/2. |
---|
| 440 | opticstruct.time=float(indgen(month_in_year)) |
---|
| 441 | opticstruct.tau_ear=tau_ear_lmdz_ave |
---|
| 442 | ; |
---|
| 443 | attributes = {units:strarr(5),long_name:strarr(5)} |
---|
| 444 | attributes.units = ['degrees_north','level','cm-1','month','-'] |
---|
| 445 | attributes.long_name = ['latitude','level','wavenumber','time','tau_ear'] |
---|
| 446 | ; |
---|
| 447 | dimensions = {isdim:intarr(5), links:intarr(4,5)} |
---|
| 448 | dimensions.isdim = [1,1,1,1,0] ; (1=dimension, 0=variable) |
---|
| 449 | dimensions.links = [ [-1,-1,-1,-1],[-1,-1,-1,-1], $ |
---|
| 450 | [-1,-1,-1,-1],[-1,-1,-1,-1], $ |
---|
| 451 | [0,1,2,3] ] |
---|
| 452 | ; |
---|
| 453 | netcdfwrite,output+'taulwstrat.2D.ave.nc',opticstruct,clobber=1, $ |
---|
| 454 | attributes=attributes, dimensions=dimensions |
---|
| 455 | ; |
---|
[4473] | 456 | ;--finally prepare the 10-year transition period |
---|
| 457 | ;--that is 2015-2023 for v3 or 2017-2025 for v4 |
---|
[3938] | 458 | ;--we mix the last year of the period with the climatology |
---|
| 459 | ; |
---|
[4473] | 460 | for year=1850+yearend+1,1850+yearend+9 do begin |
---|
[3938] | 461 | ; |
---|
| 462 | chyr=strcompress(year,/rem) |
---|
[4473] | 463 | print,'year =',chyr |
---|
[3938] | 464 | ;--compute weights |
---|
[4473] | 465 | w1=float(1850+yearend+10-year)/10. |
---|
[3954] | 466 | w2=1.0-w1 |
---|
[3938] | 467 | ;--SW properties |
---|
| 468 | tau_sun_lmdz_tr=w1*tau_sun_lmdz+w2*tau_sun_lmdz_ave |
---|
| 469 | ome_sun_lmdz_tr=w1*tau_sun_lmdz*ome_sun_lmdz+w2*tau_sun_lmdz_ave*ome_sun_lmdz_ave |
---|
| 470 | ggg_sun_lmdz_tr=w1*tau_sun_lmdz*ome_sun_lmdz*ggg_sun_lmdz+ $ |
---|
| 471 | w2*tau_sun_lmdz_ave*ome_sun_lmdz_ave*ggg_sun_lmdz_ave |
---|
| 472 | ggg_sun_lmdz_tr=ggg_sun_lmdz_tr/ome_sun_lmdz_tr |
---|
| 473 | ome_sun_lmdz_tr=ome_sun_lmdz_tr/tau_sun_lmdz_tr |
---|
| 474 | ; |
---|
| 475 | ;--LW properties |
---|
[3954] | 476 | tau_ear_lmdz_tr=w1*tau_ear_lmdz+w2*tau_ear_lmdz_ave |
---|
[3938] | 477 | ; |
---|
| 478 | ;--prepare SW output |
---|
| 479 | opticstruct={lat:fltarr(dimlatlmdz),lev:fltarr(dimz), $ |
---|
| 480 | wav:fltarr(NSW),time:fltarr(month_in_year), $ |
---|
| 481 | tau_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year), $ |
---|
| 482 | ome_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year), $ |
---|
| 483 | ggg_sun:fltarr(dimlatlmdz,dimz,NSW,month_in_year) } |
---|
| 484 | ; |
---|
| 485 | opticstruct.lat=latitudelmdz |
---|
| 486 | opticstruct.lev=lev |
---|
| 487 | opticstruct.wav=(wl1_sun(0:NSW-1)+wl2_sun(0:NSW-1))/2. |
---|
| 488 | opticstruct.time=float(indgen(month_in_year)+1) |
---|
| 489 | opticstruct.tau_sun=tau_sun_lmdz_tr |
---|
| 490 | opticstruct.ome_sun=ome_sun_lmdz_tr |
---|
| 491 | opticstruct.ggg_sun=ggg_sun_lmdz_tr |
---|
| 492 | ; |
---|
| 493 | attributes = {units:strarr(7),long_name:strarr(7)} |
---|
| 494 | attributes.units = ['degrees_north','level','meters','month','-','-','-'] |
---|
| 495 | attributes.long_name = ['latitude','level','wavelength','time','tau_sun','ome_sun','g_sun'] |
---|
| 496 | ; |
---|
| 497 | dimensions = {isdim:intarr(7), links:intarr(4,7)} |
---|
| 498 | dimensions.isdim = [1,1,1,1,0,0,0] ; (1=dimension, 0=variable) |
---|
| 499 | dimensions.links = [ [-1,-1,-1,-1],[-1,-1,-1,-1], $ |
---|
| 500 | [-1,-1,-1,-1],[-1,-1,-1,-1], $ |
---|
| 501 | [0,1,2,3],[0,1,2,3],[0,1,2,3] ] |
---|
| 502 | ; |
---|
| 503 | netcdfwrite,output+'tauswstrat.2D.'+chyr+'.nc',opticstruct,clobber=1, $ |
---|
| 504 | attributes=attributes, dimensions=dimensions |
---|
| 505 | ; |
---|
| 506 | ;--prepare LW output |
---|
| 507 | opticstruct={lat:fltarr(dimlatlmdz),lev:fltarr(dimz), $ |
---|
| 508 | wav:fltarr(NLW),time:fltarr(month_in_year), $ |
---|
| 509 | tau_ear:fltarr(dimlatlmdz,dimz,NLW,month_in_year) } |
---|
| 510 | ; |
---|
| 511 | opticstruct.lat=latitudelmdz |
---|
| 512 | opticstruct.lev=lev |
---|
| 513 | opticstruct.wav=(wl1_earth+wl2_earth)/2. |
---|
| 514 | opticstruct.time=float(indgen(month_in_year)+1) |
---|
| 515 | opticstruct.tau_ear=tau_ear_lmdz_tr |
---|
| 516 | ; |
---|
| 517 | attributes = {units:strarr(5),long_name:strarr(5)} |
---|
| 518 | attributes.units = ['degrees_north','level','cm-1','month','-'] |
---|
| 519 | attributes.long_name = ['latitude','level','wavenumber','time','tau_ear'] |
---|
| 520 | ; |
---|
| 521 | dimensions = {isdim:intarr(5), links:intarr(4,5)} |
---|
| 522 | dimensions.isdim = [1,1,1,1,0] ; (1=dimension, 0=variable) |
---|
| 523 | dimensions.links = [ [-1,-1,-1,-1],[-1,-1,-1,-1], $ |
---|
| 524 | [-1,-1,-1,-1],[-1,-1,-1,-1], $ |
---|
| 525 | [0,1,2,3] ] |
---|
| 526 | ; |
---|
| 527 | netcdfwrite,output+'taulwstrat.2D.'+chyr+'.nc',opticstruct,clobber=1, $ |
---|
| 528 | attributes=attributes, dimensions=dimensions |
---|
| 529 | ; |
---|
| 530 | endfor |
---|
| 531 | ;--end loop on years |
---|
| 532 | ; |
---|
[3403] | 533 | end |
---|
| 534 | EOF |
---|
| 535 | |
---|
[4183] | 536 | cat > volc_${lmdz}.job << EOF2 |
---|
| 537 | #PBS -N process_volc_${lmdz} |
---|
[3403] | 538 | #PBS -S /bin/bash |
---|
| 539 | #PBS -q week # there exist: short, day, days3, week... |
---|
| 540 | #PBS -k eo # to write the output of stdin |
---|
| 541 | ### Max memory |
---|
| 542 | #PBS -l vmem=10gb # virtual memory |
---|
| 543 | #PBS -l mem=10gb |
---|
| 544 | |
---|
| 545 | cd $dirpwd |
---|
| 546 | |
---|
| 547 | idl << eof |
---|
| 548 | .r netcdf |
---|
[4183] | 549 | .r process_volc_${lmdz} |
---|
[3403] | 550 | regrid |
---|
| 551 | eof |
---|
| 552 | EOF2 |
---|
| 553 | |
---|
[4183] | 554 | qsub volc_${lmdz}.job |
---|