Ignore:
Timestamp:
Oct 28, 2023, 4:47:32 PM (13 months ago)
Author:
oboucher
Message:

Introduction of a flag ok_conserv_d_q_con to conserve water when convection is called every second timestep.
The idea is to save d_q_con_zmasse from a timestep to the next rather than d_q_con. This is only as good as concvl for conserving water.

Location:
LMDZ6/trunk/libf/phylmdiso
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmdiso/phys_local_var_mod.F90

    r4737 r4742  
    3636      REAL, SAVE, ALLOCATABLE :: d_tr_dyn(:,:,:)
    3737      !$OMP THREADPRIVATE(d_tr_dyn)
    38       REAL, SAVE, ALLOCATABLE :: d_t_con(:,:),d_q_con(:,:)
    39       !$OMP THREADPRIVATE(d_t_con,d_q_con)
     38      REAL, SAVE, ALLOCATABLE :: d_t_con(:,:),d_q_con(:,:),d_q_con_zmasse(:,:)
     39      !$OMP THREADPRIVATE(d_t_con,d_q_con,d_q_con_zmasse)
    4040      REAL, SAVE, ALLOCATABLE :: d_u_con(:,:),d_v_con(:,:)
    4141      !$OMP THREADPRIVATE(d_u_con,d_v_con)
     
    737737      ALLOCATE(d_u_dyn(klon,klev),d_v_dyn(klon,klev))
    738738      ALLOCATE(d_tr_dyn(klon,klev,nbtr))                   !RomP
    739       ALLOCATE(d_t_con(klon,klev),d_q_con(klon,klev))
     739      ALLOCATE(d_t_con(klon,klev),d_q_con(klon,klev),d_q_con_zmasse(klon,klev))
    740740      ALLOCATE(d_u_con(klon,klev),d_v_con(klon,klev))
    741741      ALLOCATE(d_t_wake(klon,klev),d_q_wake(klon,klev))
     
    11391139      DEALLOCATE(d_u_dyn,d_v_dyn)
    11401140      DEALLOCATE(d_tr_dyn)                      !RomP
    1141       DEALLOCATE(d_t_con,d_q_con)
     1141      DEALLOCATE(d_t_con,d_q_con,d_q_con_zmasse)
    11421142      DEALLOCATE(d_u_con,d_v_con)
    11431143      DEALLOCATE(d_t_wake,d_q_wake)
  • LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90

    r4737 r4742  
    197197       d_q_dyn2d,d_ql_dyn2d,d_qs_dyn2d,d_qbs_dyn2d, &
    198198       ! Physic tendencies
    199        d_t_con,d_q_con,d_u_con,d_v_con, &
     199       d_t_con,d_q_con,d_q_con_zmasse,d_u_con,d_v_con, &
    200200       d_tr, &                              !! to be removed?? (jyg)
    201201       d_t_wake,d_q_wake, &
     
    13321332    real xtql1(ntraciso,klon),xtql2(ntraciso,klon),corrxtql(ntraciso)
    13331333#endif
    1334    
     1334
     1335    !--OB flag to activate better conservation of water tendency when convection is not called every timestep
     1336    LOGICAL, PARAMETER :: ok_conserv_d_q_con=.FALSE.
    13351337
    13361338    REAL, dimension(klon,klev) :: t_env,q_env
     
    40424044    ENDIF
    40434045
     4046    !--saving d_q_con * zmass for next timestep if convection is not called every timestep
     4047    IF (ok_conserv_d_q_con) THEN
     4048      d_q_con_zmasse(:,:) = d_q_con(:,:) * zmasse(:,:)
     4049    ENDIF
     4050
    40444051    !     CALL homogene(paprs, q_seri, d_q_con, u_seri,v_seri,
    40454052    !    .              d_u_con, d_v_con)
     
    40714078!!
    40724079!!
     4080
     4081    !--recompute d_q_con with zmasse from new timestep
     4082    IF (ok_conserv_d_q_con) THEN
     4083      d_q_con(:,:)=d_q_con_zmasse(:,:)/zmasse(:,:)
     4084    ENDIF
     4085
    40734086    CALL add_phys_tend(d_u_con, d_v_con, d_t_con, d_q_con, dql0, dqi0, dqbs0, paprs, &
    40744087         'convection',abortphy,flag_inhib_tend,itap,0 &
Note: See TracChangeset for help on using the changeset viewer.