Changeset 4996 for LMDZ6/trunk/libf


Ignore:
Timestamp:
Jun 27, 2024, 9:27:27 AM (6 days ago)
Author:
evignon
Message:

ajout d'un flag pour le calcul de qsat dans la condtion de "francis"
pour l'advection de l'humidite (q<qsat_aval). En activant ce flag,
on calcule qsat /liquide quelque soit la temperature et on peut donc
ainsi autoriser l'advection de sursaturations / glace à T<0oC.

Location:
LMDZ6/trunk/libf
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/dyn3d/conf_gcm.F90

    r4519 r4996  
    1818  USE logic_mod, ONLY: fxyhypb, iflag_phys, ok_etat0, ok_gradsfile, &
    1919                       ok_guide, ok_limit, ok_strato, purmats, read_start, &
    20                        ysinus, read_orop
     20                       ysinus, read_orop, adv_qsat_liq
    2121  USE serre_mod, ONLY: clon,clat,grossismx,grossismy,dzoomx,dzoomy, &
    2222                       alphax,alphay,taux,tauy
     
    606606     type_trac = 'lmdz'
    607607     CALL getin('type_trac',type_trac)
     608
     609
     610     !Config  Key  = adv_qsat_liq
     611     !Config  Desc = option for qsat calculation in the dynamics
     612     !Config  Def  = n
     613     !Config  Help = controls which phase is considered for qsat calculation
     614     !Config         
     615     adv_qsat_liq = .FALSE.
     616     CALL getin('adv_qsat_liq',adv_qsat_liq)
    608617
    609618     !Config  Key  = ok_dynzon
     
    672681     write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
    673682     write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
     683     write(lunout,*)' adv_qsat_liq = ', adv_qsat_liq
    674684  ELSE
    675685     !Config  Key  = clon
  • LMDZ6/trunk/libf/dyn3d/logic_mod.F90

    r2665 r4996  
    3030  LOGICAL hybrid ! vertical coordinate is hybrid if true (sigma otherwise)
    3131                 ! (only used if disvert_type==2)
     32  LOGICAL adv_qsat_liq ! true if qsat is calculated alwats wrt liquid for
     33                       ! adapted Van Leer advection scheme
    3234  INTEGER iflag_phys ! type of physics to call: 0 none, 1: phy*** package,
    3335                     ! 2: Held & Suarez, 101-200: aquaplanets & terraplanets
  • LMDZ6/trunk/libf/dyn3d/vlspltqs.F

    r4470 r4996  
    2525     
    2626      USE comconst_mod, ONLY: cpp
    27      
     27      USE logic_mod, ONLY: adv_qsat_liq
    2828      IMPLICIT NONE
    2929c
     
    9292         ENDDO
    9393         DO ij = 1, ip1jmp1
    94           zdelta = MAX( 0., SIGN(1., rtt - tempe(ij)) )
     94          IF (adv_qsat_liq) THEN
     95             zdelta = 0.
     96          ELSE
     97             zdelta = MAX( 0., SIGN(1., rtt - tempe(ij)) )
     98          ENDIF
    9599          play   = 0.5*(p(ij,l)+p(ij,l+1))
    96100          qsat(ij,l) = MIN(0.5, r2es* FOEEW(tempe(ij),zdelta) / play )
  • LMDZ6/trunk/libf/dyn3dmem/conf_gcm.F90

    r4608 r4996  
    2222  USE logic_mod, ONLY: fxyhypb, iflag_phys, ok_etat0, ok_gradsfile, &
    2323                       ok_guide, ok_limit, ok_strato, purmats, read_start, &
    24                        ysinus, read_orop
     24                       ysinus, read_orop, adv_qsat_liq
    2525  USE serre_mod, ONLY: clon,clat,grossismx,grossismy,dzoomx,dzoomy, &
    2626                       alphax,alphay,taux,tauy
     
    660660     type_trac = 'lmdz'
    661661     CALL getin('type_trac',type_trac)
     662
     663
     664     !Config  Key  = adv_qsat_liq
     665     !Config  Desc = option for qsat calculation in the dynamics
     666     !Config  Def  = n
     667     !Config  Help = controls which phase is considered for qsat calculation
     668     !Config         
     669     adv_qsat_liq = .FALSE.
     670     CALL getin('adv_qsat_liq',adv_qsat_liq)
    662671
    663672     !Config  Key  = ok_dynzon
     
    736745     write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
    737746     write(lunout,*)' ok_dyn_xios = ', ok_dyn_xios
     747     write(lunout,*)' adv_qsat_liq = ', adv_qsat_liq
    738748  else
    739749     !Config  Key  = clon
  • LMDZ6/trunk/libf/dyn3dmem/gcm.F90

    r4619 r4996  
    480480  !$OMP COPYIN(saison,ecripar,fxyhypb,ysinus,read_start,ok_guide) &
    481481  !$OMP COPYIN(ok_strato,ok_gradsfile,ok_limit,ok_etat0) &
    482   !$OMP COPYIN(iflag_phys,iflag_trac)
     482  !$OMP COPYIN(iflag_phys,iflag_trac,adv_qsat_liq)
    483483  CALL leapfrog_loc(ucov,vcov,teta,ps,masse,phis,q,time_0)
    484484  !$OMP END PARALLEL
  • LMDZ6/trunk/libf/dyn3dmem/logic_mod.F90

    r2665 r4996  
    3030  LOGICAL hybrid ! vertical coordinate is hybrid if true (sigma otherwise)
    3131                 ! (only used if disvert_type==2)
     32  LOGICAL adv_qsat_liq ! true if qsat is calculated alwats wrt liquid for
     33                       ! adapted Van Leer advection scheme
    3234  INTEGER iflag_phys ! type of physics to call: 0 none, 1: phy*** package,
    3335                     ! 2: Held & Suarez, 101-200: aquaplanets & terraplanets
     
    3739!$OMP     apdiss,apdelq,saison,ecripar,fxyhypb,ysinus, &
    3840!$OMP     read_start,ok_guide,ok_strato,ok_gradsfile, &
    39 !$OMP     ok_limit,ok_etat0,hybrid)
     41!$OMP     ok_limit,ok_etat0,hybrid, adv_qsat_liq)
    4042!$OMP THREADPRIVATE(iflag_phys,iflag_trac)
    4143
  • LMDZ6/trunk/libf/dyn3dmem/vlspltgen_loc.F

    r4469 r4996  
    1010c
    1111c    ********************************************************************
    12 c          Shema  d'advection " pseudo amont " .
     12c          Schema  d'advection " pseudo amont " .
    1313c      + test sur humidite specifique: Q advecte< Qsat aval
    1414c                   (F. Codron, 10/99)
     
    3232      USE vlspltgen_mod
    3333      USE comconst_mod, ONLY: cpp
     34      USE logic_mod, ONLY: adv_qsat_liq
    3435      IMPLICIT NONE
    3536
     
    108109         ENDDO
    109110         DO ij = ijb, ije
    110           zdelta = MAX( 0., SIGN(1., rtt - tempe(ij)) )
     111          IF (adv_qsat_liq) THEN
     112             zdelta = 0.
     113          ELSE
     114             zdelta = MAX( 0., SIGN(1., rtt - tempe(ij)) )
     115          ENDIF
    111116          play   = 0.5*(p(ij,l)+p(ij,l+1))
    112117          qsat(ij,l) = MIN(0.5, r2es* FOEEW(tempe(ij),zdelta) / play )
Note: See TracChangeset for help on using the changeset viewer.