wiki:model/IPSLCM6.0.5

Version 2 (modified by nillod, 8 years ago) (diff)

--

Test IPSLCM6.0.5 RRTM with CMIP6 volcanic forcings

Model installation

  1. Start to import modIPSL: svn co http://forge.ipsl.jussieu.fr/igcmg/svn/modipsl/trunk modipsl
  2. Install the model: cd modipsl/util ; ./model IPSLCM6.0.5-LR
  3. Add in code some diagnostics (see below).
  4. 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

  1. 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="-" />
    


  1. 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

  1. 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)
    
  2. Recompile the code.
  3. 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-->
    
  1. 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_aerPerLen?PackFq?Physic Restart RRTMOut Volc forcing Results Comment
TT6.0.5 577 2 1M 2YNPv5.70 CPL.CM6.0.5 Yes DEVTyearly CMIP6 Ok 2Y -
TT6.0.5.CTL 577 2 1M 2YNPv5.70 CPL.CM6.0.5 Yes DEVT1960 CMIP6 Ok 2Y -
TT6.0.5.AVE 577 2 1M 2YNPv5.70 CPL.CM6.0.5 Yes DEVTave CMIP6 Ok 2Y -

TT6.0.5

Pair Anomaly

https://pagesperso.locean-ipsl.upmc.fr/nillod/img/IPSLCM6.0.5/TT6.0.5_Tops0_zonAveAnomPair.gif

https://pagesperso.locean-ipsl.upmc.fr/nillod/img/IPSLCM6.0.5/TT6.0.5_Tops0_Topl0_nettop_glbAveAnomPair.gif

https://pagesperso.locean-ipsl.upmc.fr/nillod/img/IPSLCM6.0.5/TT6.0.5_T2m_glbAveAnomPair.gif

TT6.0.5.AVE (CMIP6 forcing averaged on historical period)

Pair Anomaly

https://pagesperso.locean-ipsl.upmc.fr/nillod/img/IPSLCM6.0.5/TT6.0.5.AVE_Tops0_zonAveAnomPair.gif

https://pagesperso.locean-ipsl.upmc.fr/nillod/img/IPSLCM6.0.5/TT6.0.5.AVE_Tops0_Topl0_nettop_glbAveAnomPair.gif

https://pagesperso.locean-ipsl.upmc.fr/nillod/img/IPSLCM6.0.5/TT6.0.5.AVE_T2m_glbAveAnomPair.gif