Changeset 5655 for LMDZ6/trunk


Ignore:
Timestamp:
May 15, 2025, 7:24:01 PM (3 weeks ago)
Author:
idelkadi
Message:

Output of direct radiative fluxes when running LMDZ with Ecrad

Location:
LMDZ6/trunk
Files:
7 edited

Legend:

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

    r5614 r5655  
    165165        <field id="cloud_cover_sw"    long_name="Ecrad SW cloud cover"    unit="-" />
    166166        <field id="cloud_cover_sw_s2"    long_name="Ecrad SW cloud cover 2e call"    unit="-" />
     167        <field id="ZFLUX_DIR_SUN" long_name="ZFLUX_DIR_SUN" unit="W/m2" />
     168        <field id="ZFLUX_DIR_SUN_s2" long_name="ZFLUX_DIR_SUN_s2" unit="W/m2" />
    167169        <field id="sols_s2"    long_name="Solar rad. at surf. 2e call"    unit="W/m2" />
    168170        <field id="sols0_s2"    long_name="Solar rad. at surf."    unit="W/m2" />
     
    10261028        <field id="rlu_s2"    long_name="LW upward radiation"    unit="W m-2" />
    10271029        <field id="rld_s2"    long_name="LW downward radiation"    unit="W m-2" />     
     1030        <field id="ZFLUX_DIR" long_name="Direct-beam shortwave radiation" unit="W m-2" />
     1031        <field id="ZFLUX_DIR_CLEAR" long_name="Direct-beam CS shortwave radiation" unit="W m-2" />
     1032        <field id="ZFLUX_DIR_s2" long_name="Direct-beam shortwave radiation" unit="W m-2" />
     1033        <field id="ZFLUX_DIR_CLEAR_s2" long_name="Direct-beam CS shortwave radiation" unit="W m-2" />
    10281034        <field id="kz"    long_name="Kz melange"    unit="m2/s" enabled="FALSE" />
    10291035        <field id="evu"    long_name="Eddy viscosity coefficient for Momentum Variables"    unit="m2 s-1" />
  • LMDZ6/trunk/libf/phylmd/ecrad/lmdz/radiation_scheme_mod.f90

    r5268 r5655  
    160160
    161161! Direct component of surface flux into horizontal plane
    162 REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_DIR(KLON)
    163 REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_DIR_CLEAR(KLON)
     162REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_DIR(KLON,KLEV+1)
     163REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_DIR_CLEAR(KLON,KLEV+1)
    164164! As PFLUX_DIR but into a plane perpendicular to the sun
    165165REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_DIR_INTO_SUN(KLON)
     
    585585!PFLUX_SW_UP_CLEAR_SURF(KIDIA:KFDIA) = flux%sw_up_clear(KIDIA:KFDIA,KLEV+1)
    586586!PFLUX_LW_UP_CLEAR_SURF(KIDIA:KFDIA) = flux%lw_up_clear(KIDIA:KFDIA,KLEV+1)
    587 PFLUX_DIR(KIDIA:KFDIA) = flux%sw_dn_direct(KIDIA:KFDIA,KLEV+1)
    588 PFLUX_DIR_CLEAR(KIDIA:KFDIA) = flux%sw_dn_direct_clear(KIDIA:KFDIA,KLEV+1)
     587! Direct component of flux into horizontal plane
     588PFLUX_DIR(KIDIA:KFDIA,:) = flux%sw_dn_direct(KIDIA:KFDIA,:)
     589PFLUX_DIR_CLEAR(KIDIA:KFDIA,:) = flux%sw_dn_direct_clear(KIDIA:KFDIA,:)
    589590PFLUX_DIR_INTO_SUN(KIDIA:KFDIA) = 0.0_JPRB
    590591WHERE (PMU0(KIDIA:KFDIA) > EPSILON(1.0_JPRB))
    591   PFLUX_DIR_INTO_SUN(KIDIA:KFDIA) = PFLUX_DIR(KIDIA:KFDIA) / PMU0(KIDIA:KFDIA)
     592! Direct Surface component of flux into a plane perpendicular to the sun       
     593  PFLUX_DIR_INTO_SUN(KIDIA:KFDIA) = PFLUX_DIR(KIDIA:KFDIA,KLEV+1) / PMU0(KIDIA:KFDIA)
    592594END WHERE
    593595! Top-of-atmosphere downwelling flux
     
    849851
    850852! Direct component of surface flux into horizontal plane
    851 REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_DIR(KLON)
    852 REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_DIR_CLEAR(KLON)
     853REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_DIR(KLON,KLEV+1)
     854REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_DIR_CLEAR(KLON,KLEV+1)
    853855! As PFLUX_DIR but into a plane perpendicular to the sun
    854856REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_DIR_INTO_SUN(KLON)
     
    12831285!PFLUX_SW_UP_CLEAR_SURF(KIDIA:KFDIA) = flux%sw_up_clear(KIDIA:KFDIA,KLEV+1)
    12841286!PFLUX_LW_UP_CLEAR_SURF(KIDIA:KFDIA) = flux%lw_up_clear(KIDIA:KFDIA,KLEV+1)
    1285 PFLUX_DIR(KIDIA:KFDIA) = flux%sw_dn_direct(KIDIA:KFDIA,KLEV+1)
    1286 PFLUX_DIR_CLEAR(KIDIA:KFDIA) = flux%sw_dn_direct_clear(KIDIA:KFDIA,KLEV+1)
     1287PFLUX_DIR(KIDIA:KFDIA,:) = flux%sw_dn_direct(KIDIA:KFDIA,:)
     1288PFLUX_DIR_CLEAR(KIDIA:KFDIA,:) = flux%sw_dn_direct_clear(KIDIA:KFDIA,:)
    12871289PFLUX_DIR_INTO_SUN(KIDIA:KFDIA) = 0.0_JPRB
    12881290WHERE (PMU0(KIDIA:KFDIA) > EPSILON(1.0_JPRB))
    1289   PFLUX_DIR_INTO_SUN(KIDIA:KFDIA) = PFLUX_DIR(KIDIA:KFDIA) / PMU0(KIDIA:KFDIA)
     1291  PFLUX_DIR_INTO_SUN(KIDIA:KFDIA) = PFLUX_DIR(KIDIA:KFDIA,KLEV+1) / PMU0(KIDIA:KFDIA)
    12901292END WHERE
    12911293! Top-of-atmosphere downwelling flux
  • LMDZ6/trunk/libf/phylmd/phys_output_ctrlout_mod.F90

    r5627 r5655  
    826826!AI Ecrad 3Deffect
    827827#ifdef CPP_ECRAD
     828  TYPE(ctrl_out), SAVE :: o_ZFLUX_DIR_SUN = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     829    'ZFLUX_DIR_SUN', 'Direct radiation into a plane perpendicular to the sun', 'W m-2', (/ ('', i=1, 10) /))
     830  TYPE(ctrl_out), SAVE :: o_ZFLUX_DIR_SUN_s2 = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     831    'ZFLUX_DIR_SUN_s2', 'Direct radiation into a plane perpendicular to the sun', 'W m-2', (/ ('', i=1, 10) /))
     832  TYPE(ctrl_out), SAVE :: o_ZFLUX_DIR = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     833    'ZFLUX_DIR', 'Direct radiation', 'W m-2', (/ ('', i=1, 10) /))
     834  TYPE(ctrl_out), SAVE :: o_ZFLUX_DIR_s2 = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     835    'ZFLUX_DIR_s2', 'Direct radiation', 'W m-2', (/ ('', i=1, 10) /))
     836  TYPE(ctrl_out), SAVE :: o_ZFLUX_DIR_CLEAR = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     837    'ZFLUX_DIR_CLEAR', 'Direct radiation', 'W m-2', (/ ('', i=1, 10) /))
     838  TYPE(ctrl_out), SAVE :: o_ZFLUX_DIR_CLEAR_s2 = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     839    'ZFLUX_DIR_CLEAR_s2', 'Direct radiation', 'W m-2', (/ ('', i=1, 10) /))
    828840  TYPE(ctrl_out), SAVE :: o_cloud_cover_sw = ctrl_out((/ 11, 11, 10, 10, 10, 10, 11, 11, 11, 11/), &
    829841    'cloud_cover_sw', 'Ecrad SW cloud cover', '-', (/ ('', i=1, 10) /))
  • LMDZ6/trunk/libf/phylmd/phys_output_var_mod.f90

    r5483 r5655  
    179179  !$OMP THREADPRIVATE(cloud_cover_sw, cloud_cover_sw_s2)
    180180
     181  ! Direct-beam shortwave into a horizontal plane
     182  REAL, SAVE, ALLOCATABLE :: ZFLUX_DIR(:,:), ZFLUX_DIR_CLEAR(:,:), &
     183         &     ZFLUX_DIR_s2(:,:), ZFLUX_DIR_CLEAR_s2(:,:)
     184  !$OMP THREADPRIVATE(ZFLUX_DIR, ZFLUX_DIR_CLEAR, ZFLUX_DIR_s2, ZFLUX_DIR_CLEAR_s2)
     185  REAL, SAVE, ALLOCATABLE :: ZFLUX_DIR_SUN(:), ZFLUX_DIR_SUN_s2(:)
     186  !$OMP THREADPRIVATE(ZFLUX_DIR_SUN, ZFLUX_DIR_SUN_s2)
     187
    181188CONTAINS
    182189
     
    252259    ALLOCATE(icc3dstra(klon, klev))
    253260
    254     ! cloud_cover_sw, cloud_cover_sw_s2 from Ecrad
     261! cloud_cover_sw, cloud_cover_sw_s2 from Ecrad
    255262    ALLOCATE(cloud_cover_sw(klon))
    256263    ALLOCATE(cloud_cover_sw_s2(klon))
     264    ALLOCATE(ZFLUX_DIR(klon,klev+1))
     265    ALLOCATE(ZFLUX_DIR_CLEAR(klon,klev+1))
     266    ALLOCATE(ZFLUX_DIR_s2(klon,klev+1))
     267    ALLOCATE(ZFLUX_DIR_CLEAR_s2(klon,klev+1))
     268    ALLOCATE(ZFLUX_DIR_SUN(klon))
     269    ALLOCATE(ZFLUX_DIR_SUN_s2(klon))
    257270
    258271  END SUBROUTINE phys_output_var_init
     
    308321    !AI cloud_cover_sw, cloud_cover_sw_s2 from Ecrad
    309322    DEALLOCATE(cloud_cover_sw, cloud_cover_sw_s2)
     323    DEALLOCATE(ZFLUX_DIR, ZFLUX_DIR_CLEAR, ZFLUX_DIR_s2, ZFLUX_DIR_CLEAR_s2)
     324    DEALLOCATE(ZFLUX_DIR_SUN, ZFLUX_DIR_SUN_s2)
    310325
    311326  END SUBROUTINE phys_output_var_end
  • LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90

    r5627 r5655  
    257257         o_LWupSFC_s2, o_LWdnSFC_s2, o_rlu_s2, o_rld_s2, &
    258258         o_rlucs_s2, o_rldcs_s2, o_rsu_s2, o_rsd_s2, &
    259          o_rsucs_s2, o_rsdcs_s2   
     259         o_rsucs_s2, o_rsdcs_s2, o_ZFLUX_DIR, o_ZFLUX_DIR_s2, &
     260         o_ZFLUX_DIR_CLEAR, o_ZFLUX_DIR_CLEAR_s2, &
     261         o_ZFLUX_DIR_SUN, o_ZFLUX_DIR_SUN_s2   
    260262#endif
    261263
     
    324326        sollwdown_s2,lwdn0_s2,lwup_s2,lwdn_s2,lwup0_s2,lwdn0_s2
    325327    USE phys_output_var_mod, ONLY: cloud_cover_sw, &
    326         cloud_cover_sw_s2
     328        cloud_cover_sw_s2, ZFLUX_DIR, ZFLUX_DIR_s2, &
     329        ZFLUX_DIR_CLEAR, ZFLUX_DIR_CLEAR_s2, ZFLUX_DIR_SUN, ZFLUX_DIR_SUN_s2
    327330#endif
    328331
     
    12821285       CALL histwrite_phy(o_rlucs_s2, lwup0_s2)
    12831286       CALL histwrite_phy(o_rldcs_s2, lwdn0_s2)
     1287       CALL histwrite_phy(o_ZFLUX_DIR, ZFLUX_DIR)
     1288       CALL histwrite_phy(o_ZFLUX_DIR_s2, ZFLUX_DIR_s2)
     1289       CALL histwrite_phy(o_ZFLUX_DIR_CLEAR, ZFLUX_DIR_CLEAR)
     1290       CALL histwrite_phy(o_ZFLUX_DIR_CLEAR_s2, ZFLUX_DIR_CLEAR_s2)
     1291       CALL histwrite_phy(o_ZFLUX_DIR_SUN, ZFLUX_DIR_SUN)
     1292       CALL histwrite_phy(o_ZFLUX_DIR_SUN_s2, ZFLUX_DIR_SUN_s2)
    12841293    ENDIF !ok_3Deffect
    12851294#endif       
  • LMDZ6/trunk/libf/phylmd/physiq_mod.F90

    r5645 r5655  
    9494    USE lmdz_cloud_optics_prop_ini, ONLY : cloud_optics_prop_ini
    9595    USE phys_output_var_mod, ONLY :      cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv
    96     USE phys_output_var_mod, ONLY : cloud_cover_sw, cloud_cover_sw_s2
     96    USE phys_output_var_mod, ONLY : cloud_cover_sw, cloud_cover_sw_s2, ZFLUX_DIR, ZFLUX_DIR_CLEAR, &
     97  &      ZFLUX_DIR_s2, ZFLUX_DIR_CLEAR_s2, ZFLUX_DIR_SUN, ZFLUX_DIR_SUN_s2
    9798
    9899
     
    46484649               ZLWFT0_i, ZFLDN0, ZFLUP0, &
    46494650               ZSWFT0_i, ZFSDN0, ZFSUP0, &
     4651               ZFLUX_DIR, ZFLUX_DIR_CLEAR, ZFLUX_DIR_SUN, &
    46504652               cloud_cover_sw)
    46514653
     
    47264728                     ZLWFT0_i, ZFLDN0, ZFLUP0, &
    47274729                     ZSWFT0_i, ZFSDN0, ZFSUP0, &
     4730                     ZFLUX_DIR, ZFLUX_DIR_CLEAR, ZFLUX_DIR_SUN, &
    47284731                     cloud_cover_sw)
    47294732          ENDIF !ok_4xCO2atm
     
    47724775                     ZLWFT0_i, ZFLDN0, ZFLUP0, &
    47734776                     ZSWFT0_i, ZFSDN0, ZFSUP0, &
     4777                     ZFLUX_DIR, ZFLUX_DIR_CLEAR, ZFLUX_DIR_SUN, &
    47744778                     cloud_cover_sw_s2)
    47754779          ENDIF ! ok_3Deffect
  • LMDZ6/trunk/libf/phylmd/radlwsw_m.F90

    r5325 r5655  
    4545       ZLWFT0_i, ZFLDN0, ZFLUP0, &
    4646       ZSWFT0_i, ZFSDN0, ZFSUP0, &
     47       ZFLUX_DIR, ZFLUX_DIR_CLEAR, ZFLUX_DIR_INTO_SUN, &
    4748       cloud_cover_sw)
    4849
     
    333334    REAL(KIND=8) ZAEROSOL_OLD(KLON,6,KLEV), &  !
    334335         ZAEROSOL(KLON,KLEV,naero_spc) !
     336    ! Interm
     337    REAL(KIND=8), dimension(klon,klev+1) :: ZFLUX_DIR_i, &           ! Direct compt of surf flux into horizontal plane
     338                                             ZFLUX_DIR_CLEAR_i        ! CS Direct
    335339    ! OUTPUTS
    336     REAL(KIND=8) ZFLUX_DIR(klon), &           ! Direct compt of surf flux into horizontal plane
    337          ZFLUX_DIR_CLEAR(klon), &     ! CS Direct
    338          ZFLUX_DIR_INTO_SUN(klon), &  !
    339          ZFLUX_UV(klon), &            ! UV flux
    340          ZFLUX_PAR(klon), &           ! photosynthetically active radiation similarly
    341          ZFLUX_PAR_CLEAR(klon), &     ! CS photosynthetically
    342          ZFLUX_SW_DN_TOA(klon), &     ! DN SW flux at TOA
    343          ZEMIS_OUT(klon)              ! effective broadband emissivity
    344 
    345     REAL(KIND=8) ZLWDERIVATIVE(klon,klev+1)   ! LW derivatives
    346     REAL(KIND=8) ZSWDIFFUSEBAND(klon,NSW), &  ! SW DN flux in diffuse albedo band
    347          ZSWDIRECTBAND(klon,NSW)      ! SW DN flux in direct albedo band
     340    REAL(KIND=8), dimension(klon,klev+1) :: ZFLUX_DIR, &           ! Direct compt of surf flux into horizontal plane
     341                                                         ZFLUX_DIR_CLEAR        ! CS Direct
     342    REAL(KIND=8), dimension(klon)        ::  ZFLUX_DIR_INTO_SUN, &  !
     343                                                 ZFLUX_UV, &            ! UV flux
     344                                                 ZFLUX_PAR, &           ! photosynthetically active radiation similarly
     345                                                 ZFLUX_PAR_CLEAR, &     ! CS photosynthetically
     346                                                 ZFLUX_SW_DN_TOA(klon), &     ! DN SW flux at TOA
     347                                                 ZEMIS_OUT              ! effective broadband emissivity
     348    REAL(KIND=8), dimension(klon,klev+1) ::  ZLWDERIVATIVE   ! LW derivatives
     349
     350    ! REAL(KIND=8) ZSWDIFFUSEBAND(klon,NSW), &  ! SW DN flux in diffuse albedo band
     351    !     ZSWDIRECTBAND(klon,NSW)      ! SW DN flux in direct albedo band
    348352    REAL(KIND=8) SOLARIRAD
    349353    REAL(KIND=8) seuilmach
     
    13921396                  & ZFSUP_i, ZFLUX_i(:,1,:), ZFCUP_i, ZFLUC_i(:,1,:), &
    13931397                  !       Surf Direct flux : ATTENTION
    1394                   & ZFLUX_DIR, ZFLUX_DIR_CLEAR, ZFLUX_DIR_INTO_SUN, &
     1398                  & ZFLUX_DIR_i, ZFLUX_DIR_CLEAR_i, ZFLUX_DIR_INTO_SUN, &
    13951399                  !       UV and para flux
    13961400                  & ZFLUX_UV, ZFLUX_PAR, ZFLUX_PAR_CLEAR, &
     
    14361440                  & ZFSUP_i, ZFLUX_i(:,1,:), ZFCUP_i, ZFLUC_i(:,1,:), &
    14371441                  !       Surf Direct flux : ATTENTION
    1438                   & ZFLUX_DIR, ZFLUX_DIR_CLEAR, ZFLUX_DIR_INTO_SUN, &
     1442                  & ZFLUX_DIR_i, ZFLUX_DIR_CLEAR_i, ZFLUX_DIR_INTO_SUN, &
    14391443                  !       UV and para flux
    14401444                  & ZFLUX_UV, ZFLUX_PAR, ZFLUX_PAR_CLEAR, &
     
    14961500                ZFLDNC0(i,k+1)= -1.*ZFLCCDWN_i(i,klev+1-k)
    14971501                ZFLUPC0(i,k+1)= ZFLCCUP_i(i,klev+1-k)
     1502                ! Direct flux
     1503                ZFLUX_DIR(i,k+1) = ZFLUX_DIR_i(i,klev+1-k)
     1504                ZFLUX_DIR_CLEAR  = ZFLUX_DIR_CLEAR_i(i,klev+1-k)
    14981505                IF (ok_volcan) THEN
    14991506                   ZSWADAERO(i,k+1)=ZSWADAERO(i,klev+1-k)*fract(i) !--NL
Note: See TracChangeset for help on using the changeset viewer.