Version 2 (modified by nillod, 8 years ago) (diff) |
---|
Test IPSLCM6.0.5 RRTM with CMIP6 volcanic forcings
Model installation
- Start to import modIPSL: svn co http://forge.ipsl.jussieu.fr/igcmg/svn/modipsl/trunk modipsl
- Install the model: cd modipsl/util ; ./model IPSLCM6.0.5-LR
- Add in code some diagnostics (see below).
- Compile: cd modipsl/config/LMDZOR ; gmake IPSLCM6-LR
NOTE: file_def_XXX.xml are taken from the model and not in PARAM subdir in default config. Change directory in lmdz.card.
Add some diagnostics
Get strato mask ouput
- Check that output variable stratomask is defined in LMDZ (file modipsl/modeles/LMDZ/DefLists/field_def_lmdz.xml):
<field id="stratomask" long_name="Stratospheric fraction" unit="-" />
- Add the variable output in PARAM/file_def_histmth_lmdz.xml, PARAM/file_def_histday_lmdz.xml... (i.e for each ouput frequency):
<!-- VARS 3D --> <field_group operation="average" freq_op="1ts" axis_ref="presnivs"> ... <field field_ref="stratomask" level="2" />
Tau aerosol strato
- See modifications using svn diff command (see below) in phylmd:
Index: phys_output_ctrlout_mod.F90 =================================================================== --- phys_output_ctrlout_mod.F90 (revision 2595) +++ phys_output_ctrlout_mod.F90 (working copy) @@ -1060,6 +1060,10 @@ TYPE(ctrl_out), SAVE :: o_tausumaero_lw = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 'OD_10um_STRAT', 'Stratospheric Aerosol Optical depth at 10 um ', '1', (/ ('', i=1, 9) /)) ! +!NL + TYPE(ctrl_out), SAVE :: o_tau_aer_stratoo = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & + 'TAU_AER_STRAT', 'Stratospheric Aerosol', '1', (/ ('', i=1, 9) /)) +!NL TYPE(ctrl_out), SAVE :: o_od550aer = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 'od550aer', 'Total aerosol optical depth at 550nm', '-', (/ ('', i=1, 9) /)) TYPE(ctrl_out), SAVE :: o_od865aer = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & Index: phys_local_var_mod.F90 =================================================================== --- phys_local_var_mod.F90 (revision 2595) +++ phys_local_var_mod.F90 (working copy) @@ -142,6 +142,10 @@ !$OMP THREADPRIVATE(stratomask) REAL, SAVE, ALLOCATABLE :: tausum_aero(:,:,:) !$OMP THREADPRIVATE(tausum_aero) +!NL + real, allocatable, dimension(:,:), save :: tau_aer_stratoo + !$OMP THREADPRIVATE(tau_aer_stratoo) +!NL REAL, SAVE, ALLOCATABLE :: tau3d_aero(:,:,:,:) !$OMP THREADPRIVATE(tau3d_aero) REAL, SAVE, ALLOCATABLE :: scdnc(:,:) @@ -471,6 +475,9 @@ allocate(stratomask(klon,klev)) !--correction mini bug OB allocate(tausum_aero(klon,nwave,naero_tot)) +!NL + allocate(tau_aer_stratoo(klon,klev)) +!NL allocate(tau3d_aero(klon,klev,nwave,naero_tot)) allocate(scdnc(klon, klev)) allocate(cldncl(klon)) @@ -678,7 +685,10 @@ deallocate(topsw0_aero,solsw0_aero) deallocate(topswcf_aero,solswcf_aero) deallocate(stratomask) - deallocate(tausum_aero) + deallocate(tausum_aero) +!NL + deallocate(tau_aer_stratoo) +!NL deallocate(tau3d_aero) deallocate(scdnc) deallocate(cldncl) Index: phys_output_write_mod.F90 =================================================================== --- phys_output_write_mod.F90 (revision 2595) +++ phys_output_write_mod.F90 (working copy) @@ -101,7 +101,10 @@ o_sconcss, o_sconcdust, o_concso4, o_concno3, & o_concoa, o_concbc, o_concss, o_concdust, & o_loadso4, o_loadoa, o_loadbc, o_loadss, & - o_loaddust, o_tausumaero, o_tausumaero_lw, & +!NL + o_loaddust, o_tausumaero, o_tausumaero_lw, o_tau_aer_stratoo, & +! o_loaddust, o_tausumaero, o_tausumaero_lw, & +!NL o_topswad, o_topswad0, o_solswad, o_solswad0, & o_toplwad, o_toplwad0, o_sollwad, o_sollwad0, & o_swtoaas_nat, o_swsrfas_nat, & @@ -179,7 +182,6 @@ o_map_ntot, o_map_hc,o_map_hist,o_map_Cb,o_map_ThCi,o_map_Anv, & o_alt_tropo - USE phys_state_var_mod, only: pctsrf, paire_ter, rain_fall, snow_fall, & qsol, z0m, z0h, fevap, agesno, & nday_rain, rain_con, snow_con, & @@ -239,7 +241,10 @@ od865aer, absvisaer, od550lt1aer, sconcso4, sconcno3, & sconcoa, sconcbc, sconcss, sconcdust, concso4, concno3, & concoa, concbc, concss, concdust, loadso4, & - loadoa, loadbc, loadss, loaddust, tausum_aero, & +!NL + loadoa, loadbc, loadss, loaddust, tausum_aero, tau_aer_stratoo, & +! loadoa, loadbc, loadss, loaddust, tausum_aero, & +!NL topswad_aero, topswad0_aero, solswad_aero, & solswad0_aero, topsw_aero, solsw_aero, & topsw0_aero, solsw0_aero, topswcf_aero, & @@ -1045,6 +1050,11 @@ IF (flag_aerosol_strat.GT.0) THEN CALL histwrite_phy(o_tausumaero_lw, & tausum_aero(:,6,id_STRAT_phy) ) +!NL + print *,'phys_output_write_mod: tau_aer_stratoo((klon-10):klon,(klev-10):klev)=', tau_aer_stratoo((klon-10):klon,(klev-10):klev) + CALL histwrite_phy(o_tau_aer_stratoo, & + tau_aer_stratoo(:,:) ) +!NL ENDIF ENDIF IF (ok_ade) THEN Index: rrtm/readaerosolstrato2_rrtm.F90 =================================================================== --- rrtm/readaerosolstrato2_rrtm.F90 (revision 2595) +++ rrtm/readaerosolstrato2_rrtm.F90 (working copy) @@ -280,6 +280,20 @@ ENDDO ENDDO +!MK + DO i=1, klon + DO k=1, klev + IF (stratomask(i,k).LT.0.999999) THEN + tau_aer_strat(i,k,band)=1.e-15 + ENDIF + tau_aer_stratoo(i,k)=tau_aer_strat(i,k,band) + ENDDO + ENDDO + print *,'readaerosolstrato2_rrtm: tau_aer_stratoo(',klon,',',klev,')=', tau_aer_stratoo(klon,klev) + +! tau_aer_stratoo(:,:,:) = tau_aer_strat(:,:,:) +!MK + !--weighted average for cg, piz and tau, adding strat aerosols on top of tropospheric ones DO band=1, NSW WHERE (stratomask.GT.0.999999)
- Recompile the code.
- Add the TAU_AER_STRAT variable in corresponding PARAM/file_def_XXX.xml (be carreful of the file_def used in lmdz.card - see Note above):
<field field_ref="rldcs4co2" level="5" /> <field field_ref="stratomask" level="2" /> <!--NL--> <field field_ref="TAU_AER_STRAT" level="2" /> <!--NL-->
- Add the TAU_AER_STRAT to the modele field_def LMDZ/DefLists/field_def_lmdz.xml:
<field id="rldcs4co2" long_name="Downwelling CS LW 4xCO2 atmosphere" unit="W/m2" /> <field id="stratomask" long_name="Stratospheric fraction" unit="-" /> <!--NL--> <field id="TAU_AER_STRAT" long_name="Stratospheric Aerosol" unit="-" /> <!--NL-->
TESTS
All outputs were made with IPSLCM6.0.5, physic=NPv5.70. All simulations are with prind type of atmosphere and restart is imposed from 1992-12 in a simulation made from IPSLCM6.0.5. Anomalies are performed by removing control run values (ie TT6.0.5.CTL) in 1991-1993 period.
Name of simulations and Nomenclature:
- TT6.0.5: corresponds to yearly CMIP6 beta0 release forcing dataset (zonally averaged for the 3 parameters).
- TT6.0.5.CTL: CMIP6 beta0 release forcing are fixed in 1960 values.
- TT6.0.5.AVE: corresponds to historical averaged CMIP6 beta0 release forcing dataset (zonally averaged for the 3 parameters).
Name | #CPU | flag_aer | PerLen? | PackFq? | Physic | Restart | RRTM | Out | Volc forcing | Results | Comment |
TT6.0.5 | 577 | 2 | 1M | 2Y | NPv5.70 | CPL.CM6.0.5 | Yes | DEVT | yearly CMIP6 | Ok 2Y | - |
TT6.0.5.CTL | 577 | 2 | 1M | 2Y | NPv5.70 | CPL.CM6.0.5 | Yes | DEVT | 1960 CMIP6 | Ok 2Y | - |
TT6.0.5.AVE | 577 | 2 | 1M | 2Y | NPv5.70 | CPL.CM6.0.5 | Yes | DEVT | ave CMIP6 | Ok 2Y | - |