Changeset 3604


Ignore:
Timestamp:
Nov 19, 2019, 11:04:56 PM (5 years ago)
Author:
oboucher
Message:

addition of flag_volc_surfstrat for VolMIP configurations

Location:
LMDZ6/branches/IPSLCM6.0.15/libf
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/IPSLCM6.0.15/libf/dynphy_lonlat/phylmd/etat0phys_netcdf.F90

    r3525 r3604  
    113113  INTEGER :: flag_aerosol
    114114  INTEGER :: flag_aerosol_strat
     115  INTEGER :: flag_volc_surfstrat
    115116  LOGICAL :: flag_aer_feedback
    116117  LOGICAL :: flag_bc_internal_mixture
     
    133134                   iflag_cldcon,                                          &
    134135                   iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs,              &
    135                    ok_ade, ok_aie, ok_alw, ok_cdnc, ok_volcan,            &
     136                   ok_ade,ok_aie,ok_alw,ok_cdnc,ok_volcan,flag_volc_surfstrat,&
    136137                   aerosol_couple, chemistry_couple, flag_aerosol,        &
    137138                   flag_aerosol_strat,                                    &
  • LMDZ6/branches/IPSLCM6.0.15/libf/phylmd/conf_phys_m.F90

    r3525 r3604  
    1717       iflag_cld_th, &
    1818       iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs, &
    19        ok_ade, ok_aie, ok_alw, ok_cdnc, ok_volcan, aerosol_couple, &
     19       ok_ade, ok_aie, ok_alw, ok_cdnc, ok_volcan, flag_volc_surfstrat, aerosol_couple, &
    2020       chemistry_couple, flag_aerosol, flag_aerosol_strat,         &
    2121       flag_aer_feedback, new_aod, &
     
    6464    ! bl95_b*: parameters in the formula to link CDNC to aerosol mass conc
    6565    ! ok_volcan: activate volcanic diags (SW heat & LW cool rate, SW & LW flux)
     66    ! flag_volc_surfstrat: VolMIP flag, activate forcing surface cooling rate (=1), strato heating rate (=2) or nothing (=0, default)
    6667    !
    6768
     
    7778    INTEGER              :: flag_aerosol
    7879    INTEGER              :: flag_aerosol_strat
     80    INTEGER              :: flag_volc_surfstrat !VolMIP flag for surf/strat runs
    7981    LOGICAL              :: flag_aer_feedback
    8082    LOGICAL              :: flag_bc_internal_mixture
     
    99101    INTEGER, SAVE       :: flag_aerosol_omp
    100102    INTEGER, SAVE       :: flag_aerosol_strat_omp
     103    INTEGER, SAVE       :: flag_volc_surfstrat_omp !VolMIP flag for surf/strat runs
    101104    LOGICAL, SAVE       :: flag_aer_feedback_omp
    102105    LOGICAL, SAVE       :: flag_bc_internal_mixture_omp
     
    407410
    408411    !
     412    !Config Key  = flag_volc_surfstrat
     413    !Config Desc = impose cooling rate at the surface (=1),
     414    !              heating rate in the strato (=2), or nothing (=0)
     415    !Config Def  = 0
     416    !Config Help = Used in radlwsw_m.F
     417    !
     418    flag_volc_surfstrat_omp = 0
     419    CALL getin('flag_volc_surfstrat', flag_volc_surfstrat_omp)
     420   
     421    !
    409422    !Config Key  = aerosol_couple
    410423    !Config Desc = read aerosol in file or calcul by inca
     
    23042317    ok_cdnc = ok_cdnc_omp
    23052318    ok_volcan = ok_volcan_omp
     2319    flag_volc_surfstrat=flag_volc_surfstrat_omp
    23062320    aerosol_couple = aerosol_couple_omp
    23072321    chemistry_couple = chemistry_couple_omp
     
    25222536    IF (flag_bc_internal_mixture .AND. flag_aerosol.NE.6) THEN
    25232537       CALL abort_physic('conf_phys', 'flag_bc_internal_mixture can only be activated with flag_aerosol=6',1)
     2538    ENDIF
     2539
     2540    IF (flag_volc_surfstrat.LT.0.OR.flag_volc_surfstrat.GT.2) THEN
     2541       CALL abort_physic('conf_phys', 'flag_volc_surfstrat can only be 0 1 or 2',1)
    25242542    ENDIF
    25252543
     
    26372655    WRITE(lunout,*)' ok_ade = ',ok_ade
    26382656    WRITE(lunout,*)' ok_volcan = ',ok_volcan
     2657    WRITE(lunout,*)' flag_volc_surfstrat = ',flag_volc_surfstrat
    26392658    WRITE(lunout,*)' ok_aie = ',ok_aie
    26402659    WRITE(lunout,*)' ok_alw = ',ok_alw
  • LMDZ6/branches/IPSLCM6.0.15/libf/phylmd/physiq_mod.F90

    r3525 r3604  
    331331    !======================================================================
    332332    LOGICAL, SAVE :: ok_volcan ! pour activer les diagnostics volcaniques
     333    !$OMP THREADPRIVATE(ok_volcan)
     334    INTEGER, SAVE :: flag_volc_surfstrat ! pour imposer le cool/heat rate à la surf/strato
     335    !$OMP THREADPRIVATE(flag_volc_surfstrat)
    333336    LOGICAL ok_cvl  ! pour activer le nouveau driver pour convection KE
    334337    PARAMETER (ok_cvl=.TRUE.)
    335338    LOGICAL ok_gust ! pour activer l'effet des gust sur flux surface
    336339    PARAMETER (ok_gust=.FALSE.)
    337     integer iflag_radia     ! active ou non le rayonnement (MPL)
    338     save iflag_radia
     340    INTEGER iflag_radia     ! active ou non le rayonnement (MPL)
     341    SAVE iflag_radia
    339342    !$OMP THREADPRIVATE(iflag_radia)
    340343    !======================================================================
     
    12381241            fact_cldcon, facttemps,ok_newmicro,iflag_radia, &
    12391242            iflag_cld_th,iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs, &
    1240             ok_ade, ok_aie, ok_alw, ok_cdnc, ok_volcan, aerosol_couple, &
     1243            ok_ade, ok_aie, ok_alw, ok_cdnc, ok_volcan, flag_volc_surfstrat, aerosol_couple, &
    12411244            chemistry_couple, flag_aerosol, flag_aerosol_strat,         &
    12421245            flag_aer_feedback, new_aod, &
     
    39133916               t_seri,q_seri,wo, &
    39143917               cldfrarad, cldemirad, cldtaurad, &
    3915                ok_ade.OR.flag_aerosol_strat.GT.0, ok_aie, ok_volcan, &
     3918               ok_ade.OR.flag_aerosol_strat.GT.0, ok_aie, ok_volcan, flag_volc_surfstrat, &
    39163919               flag_aerosol, flag_aerosol_strat, flag_aer_feedback, &
    39173920               tau_aero, piz_aero, cg_aero, &
     
    39994002                     t_seri,q_seri,wo, &
    40004003                     cldfrarad, cldemirad, cldtaurad, &
    4001                      ok_ade.OR.flag_aerosol_strat.GT.0, ok_aie, ok_volcan, &
     4004                     ok_ade.OR.flag_aerosol_strat.GT.0, ok_aie, ok_volcan, flag_volc_surfstrat, &
    40024005                     flag_aerosol, flag_aerosol_strat, flag_aer_feedback, &
    40034006                     tau_aero, piz_aero, cg_aero, &
  • LMDZ6/branches/IPSLCM6.0.15/libf/phylmd/radlwsw_m.F90

    r3525 r3604  
    1616   t,q,wo,&
    1717   cldfra, cldemi, cldtaupd,&
    18    ok_ade, ok_aie, ok_volcan, flag_aerosol,&
     18   ok_ade, ok_aie, ok_volcan, flag_volc_surfstrat, flag_aerosol,&
    1919   flag_aerosol_strat, flag_aer_feedback, &
    2020   tau_aero, piz_aero, cg_aero,&
     
    102102  ! ok_aie---input-L- apply the Aerosol Indirect Effect or not?
    103103  ! ok_volcan-input-L- activate volcanic diags (SW heat & LW cool rate, SW & LW flux)
     104  ! flag_volc_surfstrat-input-I- activate volcanic surf cooling or strato heating (or nothing)
    104105  ! flag_aerosol-input-I- aerosol flag from 0 to 6
    105106  ! flag_aerosol_strat-input-I- use stratospheric aerosols flag (0, 1, 2)
     
    200201  LOGICAL, INTENT(in)  :: ok_volcan                                      ! produce volcanic diags (SW/LW heat flux and rate)
    201202  LOGICAL              :: lldebug
     203  INTEGER, INTENT(in)  :: flag_volc_surfstrat                            ! allow to impose volcanic cooling rate at surf or heating in strato
    202204  INTEGER, INTENT(in)  :: flag_aerosol                                   ! takes value 0 (no aerosol) or 1 to 6 (aerosols)
    203205  INTEGER, INTENT(in)  :: flag_aerosol_strat                             ! use stratospheric aerosols
     
    319321  REAL(KIND=8) zswadaero(kdlon,kflev+1)                       ! SW Aerosol direct forcing
    320322  REAL(KIND=8) zlwadaero(kdlon,kflev+1)                       ! LW Aerosol direct forcing
     323!-- VolMIP
     324  REAL(KIND=8) volmip_solsw(kdlon) ! SW clear sky in the case of VOLMIP
    321325!-LW by CK
    322326  REAL(KIND=8) ztoplwadaero(kdlon), zsollwadaero(kdlon)     ! LW Aerosol direct forcing at TOAand surface
     
    875879         ZTOPLWAIAERO,ZSOLLWAIAERO, &
    876880         ZLWADAERO, & !--NL
     881         volmip_solsw, flag_volc_surfstrat, & !--VOLMIP
    877882         ok_ade, ok_aie, ok_volcan, flag_aerosol,flag_aerosol_strat, &
    878883         flag_aer_feedback) ! flags aerosols
     
    10251030!     print*,'OK2'
    10261031
     1032!!--add VOLMIP (surf cool or strat heat activate)
     1033      IF (flag_volc_surfstrat > 0) THEN
     1034         DO i = 1, kdlon
     1035            zsolsw(i)    = volmip_solsw(i)*fract(i)
     1036         ENDDO
     1037      ENDIF
     1038
    10271039! extrait de SW_AR4
    10281040!     DO k = 1, KFLEV
  • LMDZ6/branches/IPSLCM6.0.15/libf/phylmd/rrtm/recmwf_aero.F90

    r3525 r3604  
    3636 & PTOPLWAIAERO,PSOLLWAIAERO,&
    3737 & PLWADAERO,& !--NL
     38!--ajout volmip
     39 & volmip_solsw, flag_volc_surfstrat,&
    3840!..end
    3941 & ok_ade, ok_aie, ok_volcan, flag_aerosol,flag_aerosol_strat,flag_aer_feedback)
     
    258260REAL(KIND=JPRB)   ,INTENT(OUT)   :: PFLCCDN(KPROMA,KLEV+1) ! LW clear sky clean (no aerosol) flux down
    259261REAL(KIND=JPRB)   ,INTENT(OUT)   :: PFLCCUP(KPROMA,KLEV+1) ! LW clear sky clean (no aerosol) flux up
     262!--ajout VOLMIP
     263REAL(KIND=JPRB)   ,INTENT(OUT)   :: volmip_solsw(KPROMA) ! SW clear sky in the case of VOLMIP
     264INTEGER, INTENT(IN)              :: flag_volc_surfstrat !--VOlMIP Modif
    260265
    261266!     ==== COMPUTED IN RADITE ===
     
    794799ENDIF
    795800
     801!--VolMIP Strat/Surf
     802!--only ok_ade + ok_aie case treated
     803IF (ok_ade.AND.ok_aie.AND.ok_volcan) THEN
     804   !--in this case the fluxes used for the heating rates come from case 4 but SW surface radiation is kept from case 2
     805   IF (flag_volc_surfstrat.EQ.2) THEN ! STRAT HEATING
     806      volmip_solsw(:)= ZFSDN_AERO(:,1,2)-ZFSUP_AERO(:,1,2)
     807   ELSEIF (flag_volc_surfstrat.EQ.1) THEN ! SURF COOLING
     808      !--in this case the fluxes used for the heating rates come from case 2 but SW surface radiation is kept from case 4
     809      PFSUP(:,:) =    ZFSUP_AERO(:,:,2)
     810      PFSDN(:,:) =    ZFSDN_AERO(:,:,2)
     811      PFSCUP(:,:) =   ZFSUP0_AERO(:,:,2)
     812      PFSCDN(:,:) =   ZFSDN0_AERO(:,:,2)
     813      PFLUX(:,1,:) =  LWUP_AERO(:,:,2)
     814      PFLUX(:,2,:) =  LWDN_AERO(:,:,2)
     815      PFLUC(:,1,:) =  LWDN0_AERO(:,:,2)
     816      PFLUC(:,2,:) =  LWDN0_AERO(:,:,2)
     817      volmip_solsw(:)= ZFSDN_AERO(:,1,4)-ZFSUP_AERO(:,1,4)
     818   ENDIF
     819ENDIF
     820!--End VolMIP Strat/Surf
     821
    796822IF (swaerofree_diag) THEN
    797823! copy shortwave clear-sky clean (no aerosol) case
Note: See TracChangeset for help on using the changeset viewer.