Changeset 4773


Ignore:
Timestamp:
Dec 14, 2023, 11:00:52 PM (5 months ago)
Author:
idelkadi
Message:
  • Update of Ecrad in LMDZ The same organization of the Ecrad offline version is retained in order to facilitate the updating of Ecrad in LMDZ and the comparison between online and offline results. version 1.6.1 of Ecrad (https://github.com/lguez/ecrad.git)
  • Implementation of the double call of Ecrad in LMDZ


Location:
LMDZ6/trunk
Files:
575 added
10 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/DefLists/context_lmdz.xml

    r4608 r4773  
    2222  <file_definition src="./file_def_histdayCOSP_lmdz.xml"/>
    2323  <file_definition src="./file_def_histhfCOSP_lmdz.xml"/>
     24  <!-- <file_definition src="./file_def_histmthECRAD2app_lmdz.xml"/> -->
     25  <!-- <file_definition src="./file_def_histhfECRAD2app_lmdz.xml"/> -->
     26  <!-- <file_definition src="./file_def_histdayECRAD2app_lmdz.xml"/> -->
    2427  <!-- <file_definition src="./file_def_histmthCOSPv2_lmdz.xml"/> -->
    2528  <!-- <file_definition src="./file_def_histdayCOSPv2_lmdz.xml"/> -->
  • LMDZ6/trunk/bld.cfg

    r4598 r4773  
    3535src::ext_src %EXT_SRC
    3636src::Ocean_skin %SRC_PATH/%PHYS/Ocean_skin
     37src::radiation %RAD/radiation
     38src::ifsrrtm %RAD/ifsrrtm
     39src::ifsaux %RAD/ifsaux
     40src::ecradinc %RAD/include
     41src::ecradhook %RAD/drhook
     42src::ecradutil %RAD/utilities
    3743
    3844bld::lib            lmdz
  • LMDZ6/trunk/libf/phylmd/clesphys.h

    r4722 r4773  
    109109!AI flags pour ECRAD       
    110110       LOGICAL :: ok_3Deffect
    111        CHARACTER(len=512) :: namelist_ecrad_file
    112111
    113112       COMMON/clesphys/                                                 &
     
    162161     &     , iflag_phytrac, ok_new_lscp, ok_bs, ok_rad_bs               &
    163162     &     ,  iflag_thermals,nsplit_thermals, tau_thermals              &
    164      &     , iflag_physiq, ok_3Deffect, namelist_ecrad_file
     163     &     , iflag_physiq, ok_3Deffect
    165164       save /clesphys/
    166165!$OMP THREADPRIVATE(/clesphys/)
  • LMDZ6/trunk/libf/phylmd/phys_output_ctrlout_mod.F90

    r4677 r4773  
    539539!AI Ecrad 3Deffect
    540540#ifdef CPP_ECRAD
     541  TYPE(ctrl_out), SAVE :: o_cloud_cover_sw = ctrl_out((/ 11, 11, 10, 10, 10, 10, 11, 11, 11, 11/), &
     542    'cloud_cover_sw', 'Ecrad SW cloud cover', '-', (/ ('', i=1, 10) /))
     543  TYPE(ctrl_out), SAVE :: o_cloud_cover_sw_s2 = ctrl_out((/ 11, 11, 10, 10, 10, 10, 11, 11, 11, 11/), &
     544    'cloud_cover_sw_s2', 'Ecrad SW cloud cover 2 call', '-', (/ ('', i=1, 10) /))
    541545  TYPE(ctrl_out), SAVE :: o_sols_s2 = ctrl_out((/ 11, 11, 10, 10, 10, 10, 11, 11, 11, 11/), &
    542546    'sols_s2', 'Solar rad. at surf.', 'W/m2', (/ ('', i=1, 10) /))
  • LMDZ6/trunk/libf/phylmd/phys_output_var_mod.F90

    r4703 r4773  
    177177  !$OMP THREADPRIVATE(tkt, tks, taur, sss)
    178178
     179  !AI. cloud_cover_sw, cloud_cover_sw_s2 from Ecrad (1rt and 2 call)
     180  REAL, SAVE, ALLOCATABLE:: cloud_cover_sw(:), cloud_cover_sw_s2(:)
     181  !$OMP THREADPRIVATE(cloud_cover_sw, cloud_cover_sw_s2)
     182
    179183CONTAINS
    180184
     
    253257    ALLOCATE(icc3dstra(klon, klev))
    254258
     259    ! cloud_cover_sw, cloud_cover_sw_s2 from Ecrad
     260    ALLOCATE(cloud_cover_sw(klon))
     261    ALLOCATE(cloud_cover_sw_s2(klon))
     262
    255263  END SUBROUTINE phys_output_var_init
    256264
     
    304312    DEALLOCATE(icc3dstra)
    305313
     314    !AI cloud_cover_sw, cloud_cover_sw_s2 from Ecrad
     315    DEALLOCATE(cloud_cover_sw, cloud_cover_sw_s2)
     316
    306317  END SUBROUTINE phys_output_var_end
    307318
  • LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90

    r4755 r4773  
    231231    USE phys_output_ctrlout_mod, ONLY:  &
    232232         o_soll0_s2,o_soll_s2,o_sols0_s2,o_sols_s2, &
    233          o_topl0_s2,o_topl_s2,o_tops0_s2,o_tops_s2   
     233         o_topl0_s2,o_topl_s2,o_tops0_s2,o_tops_s2, &
     234         o_SWupTOA_s2,o_SWupTOAclr_s2,o_cloud_cover_sw, &
     235         o_cloud_cover_sw_s2,o_SWdnTOA_s2,o_SWdnTOAclr_s2, &
     236         o_LWupSFCclr_s2, o_LWdnSFCclr_s2, o_SWupSFC_s2, &
     237         o_SWupSFCclr_s2, o_SWdnSFC_s2, o_SWdnSFCclr_s2, &
     238         o_LWupSFC_s2, o_LWdnSFC_s2   
    234239#endif
    235240
     
    290295    USE phys_state_var_mod, ONLY: &
    291296        sollw0_s2,sollw_s2,solsw0_s2,solsw_s2, &
    292         toplw0_s2,toplw_s2,topsw0_s2,topsw_s2
     297        toplw0_s2,toplw_s2,topsw0_s2,topsw_s2, &
     298        toplw0_s2,toplw_s2,topsw0_s2,topsw_s2, &
     299        swup0_s2,swup_s2,swdn_s2,swdn0_s2,sollwdownclr_s2, &
     300        sollwdown_s2,lwdn0_s2
     301    USE phys_output_var_mod, ONLY: cloud_cover_sw, &
     302        cloud_cover_sw_s2
    293303#endif
    294304
     
    10631073!AI 08 2023 Ecrad 3Deffect
    10641074#ifdef CPP_ECRAD
     1075     CALL histwrite_phy(o_cloud_cover_sw, cloud_cover_sw)
    10651076     IF (ok_3Deffect) THEN
    1066         IF (vars_defined) THEN
     1077       CALL histwrite_phy(o_cloud_cover_sw_s2, cloud_cover_sw_s2)
     1078       IF (vars_defined) THEN
    10671079          zx_tmp_fi2d = solsw_s2*swradcorr
    10681080       ENDIF
     
    10861098       CALL histwrite_phy(o_topl_s2, toplw_s2)
    10871099       CALL histwrite_phy(o_topl0_s2, toplw0_s2)
    1088      ENDIF
     1100
     1101       IF (vars_defined) THEN
     1102          zx_tmp_fi2d(:) = swup_s2(:,klevp1)*swradcorr(:)
     1103       ENDIF
     1104       CALL histwrite_phy(o_SWupTOA_s2, zx_tmp_fi2d)
     1105
     1106       IF (vars_defined) THEN
     1107          zx_tmp_fi2d(:) = swup0_s2(:,klevp1)*swradcorr(:)
     1108       ENDIF
     1109       CALL histwrite_phy(o_SWupTOAclr_s2, zx_tmp_fi2d)
     1110
     1111       IF (vars_defined) THEN
     1112          zx_tmp_fi2d(:) = swdn_s2(:,klevp1)*swradcorr(:)
     1113       ENDIF
     1114       CALL histwrite_phy(o_SWdnTOA_s2, zx_tmp_fi2d)
     1115
     1116       IF (vars_defined) THEN
     1117          zx_tmp_fi2d(:) = swdn0_s2(:,klevp1)*swradcorr(:)
     1118       ENDIF
     1119       CALL histwrite_phy(o_SWdnTOAclr_s2, zx_tmp_fi2d)
     1120
     1121       IF (vars_defined) THEN
     1122          zx_tmp_fi2d(:)=sollwdown_s2(:)-sollw_s2(:)
     1123       ENDIF
     1124       CALL histwrite_phy(o_LWupSFC_s2, zx_tmp_fi2d)
     1125       CALL histwrite_phy(o_LWdnSFC_s2, sollwdown_s2)
     1126
     1127       IF (vars_defined) THEN
     1128          sollwdownclr_s2(1:klon) = -1.*lwdn0_s2(1:klon,1)
     1129          zx_tmp_fi2d(1:klon)=sollwdownclr_s2(1:klon)-sollw0_s2(1:klon)
     1130       ENDIF
     1131       CALL histwrite_phy(o_LWupSFCclr_s2, zx_tmp_fi2d)
     1132       CALL histwrite_phy(o_LWdnSFCclr_s2, sollwdownclr_s2)
     1133
     1134       IF (vars_defined) THEN
     1135          zx_tmp_fi2d(:) = swup_s2(:,1)*swradcorr(:)
     1136       ENDIF
     1137       CALL histwrite_phy(o_SWupSFC_s2, zx_tmp_fi2d)
     1138
     1139       IF (vars_defined) THEN
     1140          zx_tmp_fi2d(:) = swup0_s2(:,1)*swradcorr(:)
     1141       ENDIF
     1142       CALL histwrite_phy(o_SWupSFCclr_s2, zx_tmp_fi2d)
     1143
     1144       IF (vars_defined) THEN
     1145          zx_tmp_fi2d(:) = swdn_s2(:,1)*swradcorr(:)
     1146       ENDIF
     1147       CALL histwrite_phy(o_SWdnSFC_s2, zx_tmp_fi2d)
     1148
     1149       IF (vars_defined) THEN
     1150          zx_tmp_fi2d(:) = swdn0_s2(:,1)*swradcorr(:)
     1151       ENDIF
     1152       CALL histwrite_phy(o_SWdnSFCclr_s2, zx_tmp_fi2d)
     1153    ENDIF !ok_3Deffect
    10891154#endif       
    10901155
  • LMDZ6/trunk/libf/phylmd/phys_state_var_mod.F90

    r4744 r4773  
    411411      REAL,ALLOCATABLE,SAVE :: solsw_s2(:), solswfdiff_s2(:), sollw_s2(:)
    412412!$OMP THREADPRIVATE(solsw_s2, solswfdiff_s2, sollw_s2)
    413       REAL,ALLOCATABLE,SAVE :: sollwdown_s2(:)
    414 !$OMP THREADPRIVATE(sollwdown_s2)
     413      REAL,ALLOCATABLE,SAVE :: sollwdown_s2(:), sollwdownclr_s2(:)
     414!$OMP THREADPRIVATE(sollwdown_s2, sollwdownclr_s2)
    415415      REAL,ALLOCATABLE,SAVE :: topsw0_s2(:),toplw0_s2(:)
    416416      REAL,ALLOCATABLE,SAVE :: solsw0_s2(:),sollw0_s2(:)
     
    728728      ALLOCATE(albpla_s2(klon))
    729729      ALLOCATE(solsw_s2(klon), solswfdiff_s2(klon), sollw_s2(klon))
    730       ALLOCATE(sollwdown_s2(klon))
     730      ALLOCATE(sollwdown_s2(klon),sollwdownclr_s2(klon))
    731731      ALLOCATE(topsw0_s2(klon),toplw0_s2(klon))
    732732      ALLOCATE(solsw0_s2(klon),sollw0_s2(klon))
     
    901901      DEALLOCATE(albpla_s2)
    902902      DEALLOCATE(solsw_s2, solswfdiff_s2, sollw_s2)
    903       DEALLOCATE(sollwdown_s2)
     903      DEALLOCATE(sollwdown_s2, sollwdownclr_s2)
    904904      DEALLOCATE(topsw0_s2,toplw0_s2)
    905905      DEALLOCATE(solsw0_s2,sollw0_s2)
  • LMDZ6/trunk/libf/phylmd/physiq_mod.F90

    r4755 r4773  
    9292    USE lmdz_cloud_optics_prop_ini, ONLY : cloud_optics_prop_ini
    9393    USE phys_output_var_mod, ONLY :      cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv
     94    USE phys_output_var_mod, ONLY : cloud_cover_sw, cloud_cover_sw_s2
    9495
    9596
     
    12681269    REAL viscom, viscoh
    12691270    INTEGER ieru
     1271
     1272    !AI namelist pour gerer le double appel de Ecrad
     1273    CHARACTER(len=512) :: namelist_ecrad_file
    12701274
    12711275    !======================================================================!
     
    45824586          ENDIF
    45834587          !
     4588          ! AI namelist utilise pour l appel principal de radlwsw (ecrad)
     4589          namelist_ecrad_file='namelist_ecrad'
     4590          !
    45844591          CALL radlwsw &
    45854592               (dist, rmu0, fract,  &
     
    46004607               zqsat, flwc, fiwc, &
    46014608               ref_liq, ref_ice, ref_liq_pi, ref_ice_pi, &
     4609               namelist_ecrad_file, &
    46024610               heat,heat0,cool,cool0,albpla, &
    46034611               heat_volc,cool_volc, &
     
    46194627                                !-end
    46204628               ZLWFT0_i, ZFLDN0, ZFLUP0, &
    4621                ZSWFT0_i, ZFSDN0, ZFSUP0)
     4629               ZSWFT0_i, ZFSDN0, ZFSUP0, &
     4630               cloud_cover_sw)
    46224631
    46234632          !lwoff=y, betalwoff=1. : offset LW CRE for radiation code and other
     
    46564665                ENDIF
    46574666                !
     4667                namelist_ecrad_file='namelist_ecrad'
     4668                !
    46584669                CALL radlwsw &
    46594670                     (dist, rmu0, fract,  &
     
    46744685                     zqsat, flwc, fiwc, &
    46754686                     ref_liq, ref_ice, ref_liq_pi, ref_ice_pi, &
     4687                     namelist_ecrad_file, &
    46764688                     heatp,heat0p,coolp,cool0p,albplap, &
    46774689                     heat_volc,cool_volc, &
     
    46934705                                !-end
    46944706                     ZLWFT0_i, ZFLDN0, ZFLUP0, &
    4695                      ZSWFT0_i, ZFSDN0, ZFSUP0)
     4707                     ZSWFT0_i, ZFSDN0, ZFSUP0, &
     4708                     cloud_cover_sw)
    46964709          ENDIF !ok_4xCO2atm
    46974710
     
    47174730                     zqsat, flwc, fiwc, &
    47184731                     ref_liq, ref_ice, ref_liq_pi, ref_ice_pi, &
     4732                     namelist_ecrad_file, &
    47194733! A modifier             
    47204734                     heat_s2,heat0_s2,cool_s2,cool0_s2,albpla_s2, &
     
    47374751                                !-end
    47384752                     ZLWFT0_i, ZFLDN0, ZFLUP0, &
    4739                      ZSWFT0_i, ZFSDN0, ZFSUP0)
    4740              namelist_ecrad_file='namelist_ecrad'
     4753                     ZSWFT0_i, ZFSDN0, ZFSUP0, &
     4754                     cloud_cover_sw_s2)
    47414755          ENDIF ! ok_3Deffect
    47424756#endif
  • LMDZ6/trunk/libf/phylmd/radlwsw_m.F90

    r4677 r4773  
    2424   qsat, flwc, fiwc, &
    2525   ref_liq, ref_ice, ref_liq_pi, ref_ice_pi, &
     26   namelist_ecrad_file, &
    2627   heat,heat0,cool,cool0,albpla,&
    2728   heat_volc, cool_volc,&
     
    4243   toplwad0_aero, sollwad0_aero, &
    4344!-end
    44    ZLWFT0_i, ZFLDN0, ZFLUP0,&
    45    ZSWFT0_i, ZFSDN0, ZFSUP0)
     45   ZLWFT0_i, ZFLDN0, ZFLUP0, &
     46   ZSWFT0_i, ZFSDN0, ZFSUP0, &
     47   cloud_cover_sw)
    4648
    4749! Modules necessaires
     
    8486      USE time_phylmdz_mod, only: current_time
    8587      USE phys_cal_mod, only: day_cur
     88      USE interface_lmdz_ecrad
    8689#endif
    8790
     
    245248  REAL,    INTENT(in)  :: ref_ice_pi(klon,klev) ! ice crystal radius   pre-industrial from newmicro
    246249
     250  CHARACTER(len=512), INTENT(in) :: namelist_ecrad_file
     251
    247252! Output arguments
    248253  REAL,    INTENT(out) :: heat(KLON,KLEV), cool(KLON,KLEV)
     
    301306  REAL(KIND=8) PWV(kdlon,kflev), PQS(kdlon,kflev)
    302307
     308  REAL(KIND=8) cloud_cover_sw(klon)
     309
    303310!!!!!!! Declarations specifiques pour ECRAD !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    304311! AI 02.2021
     
    334341               ZFLUX_SW_DN_TOA(klon), &     ! DN SW flux at TOA
    335342               ZEMIS_OUT(klon)              ! effective broadband emissivity
     343
    336344  REAL(KIND=8) ZLWDERIVATIVE(klon,klev+1)   ! LW derivatives
    337345  REAL(KIND=8) ZSWDIFFUSEBAND(klon,NSW), &  ! SW DN flux in diffuse albedo band
     
    13841392!      & ZFLUX_SW_DN_TOA,
    13851393      & ZEMIS_OUT, ZLWDERIVATIVE, &
    1386       & PSFSWDIF, PSFSWDIR)
     1394      & PSFSWDIF, PSFSWDIR, &
     1395      & cloud_cover_sw)
    13871396
    13881397      print *,'========= RADLWSW: apres RADIATION_SCHEME ==================== '
  • LMDZ6/trunk/makelmdz_fcm

    r4489 r4773  
    777777echo "%EXT_SRC       $EXT_SRC"       >> $config_fcm
    778778
    779 
     779if [[ "$rad" == "ecrad" ]]
     780then
     781\cp bld.cfg.ecrad bld.cfg
     782else
     783\cp bld.cfg.rrtm bld.cfg
     784fi
    780785
    781786ln -s arch/arch-${arch}.fcm arch.fcm
     
    798803ln -s $LIBOGCM/${arch}${SUFF_NAME}/.config/ppsrc tmp_src
    799804
    800 
    801805if [[ -r $LIBFGCM/grid/dimensions.h ]]
    802806then
Note: See TracChangeset for help on using the changeset viewer.