Changeset 3000 for LMDZ5


Ignore:
Timestamp:
Oct 2, 2017, 10:16:06 AM (7 years ago)
Author:
jyg
Message:

(i) Implementation of the conditionning of the Alp
provided by the wakes: when iflag_alp_wk_cond > 0,
Alp_wk is divided by the probability that there is
a gust front within the grid cell.

New subroutine alpale_wk.F90 called by physiq.

(ii) Some changes concerning the initialization of
the variable wake_dens.

Location:
LMDZ5/trunk/libf/phylmd
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/calwake.F90

    r2849 r3000  
    7272  ! Variable internes
    7373  ! -----------------
     74  LOGICAL, SAVE                                      :: first = .TRUE.
     75  !$OMP THREADPRIVATE(first)
    7476  INTEGER                                            :: i, l
    7577  INTEGER, DIMENSION(klon)                           :: znatsurf    ! 0 if pctsrf(is_oce)>0.1; 1 else.
     
    177179
    178180  DO i = 1, klon
    179     wdens(i) = wake_dens(i)
     181    wdens(i) = max(0., wake_dens(i))
    180182  END DO
    181183
     
    298300      wake_dens(i) = wdens(i)
    299301    END DO
    300   ENDIF
     302  ENDIF  ! (iflag_wake_tend .EQ. 0)
     303!
     304  IF (first) THEN
     305    DO i = 1,klon
     306      IF (wake_dens(i) < -1.) THEN
     307        wake_dens(i) = wdens(i)
     308      ENDIF
     309    ENDDO
     310    first=.false.
     311  ENDIF  ! (first)
    301312!>jyg
    302313
  • LMDZ5/trunk/libf/phylmd/phyetat0.F90

    r2979 r3000  
    398398  found=phyetat0_get(klev,wake_deltaq,"WAKE_DELTAQ","Delta hum. wake/env",0.)
    399399  found=phyetat0_get(1,wake_s,"WAKE_S","Wake frac. area",0.)
    400   found=phyetat0_get(1,wake_dens,"WAKE_DENS","Wake num. /unit area",0.)
     400!jyg<
     401!  Set wake_dens to -1000. when there is no restart so that the actual
     402!  initialization is made in calwake.
     403!!  found=phyetat0_get(1,wake_dens,"WAKE_DENS","Wake num. /unit area",0.)
     404  found=phyetat0_get(1,wake_dens,"WAKE_DENS","Wake num. /unit area",-1000.)
     405!>jyg
    401406  found=phyetat0_get(1,wake_cstar,"WAKE_CSTAR","WAKE_CSTAR",0.)
    402407  found=phyetat0_get(1,wake_pe,"WAKE_PE","WAKE_PE",0.)
  • LMDZ5/trunk/libf/phylmd/physiq_mod.F90

    r2999 r3000  
    566566                                                     ! updated within calwake
    567567    !$OMP THREADPRIVATE(iflag_wake_tend)
     568    INTEGER,  SAVE               :: iflag_alp_wk_cond=0 ! wake: if =0, then Alp_wk is the average lifting
     569                                                        ! power provided by the wakes; else, Alp_wk is the
     570                                                        ! lifting power conditionned on the presence of a
     571                                                        ! gust-front in the grid cell.
     572    !$OMP THREADPRIVATE(iflag_alp_wk_cond)
    568573    REAL t_w(klon,klev),q_w(klon,klev) ! temperature and moisture profiles in the wake region
    569574    REAL t_x(klon,klev),q_x(klon,klev) ! temperature and moisture profiles in the off-wake region
     
    591596    !>jyg
    592597
     598    REAL wake_fip_0(klon)           ! Average Front Incoming Power (unconditionned)
    593599    REAL wake_gfl(klon)             ! Gust Front Length
    594600!!!    REAL wake_dens(klon)         ! moved to phys_state_var_mod
     
    12261232    IF (debut) THEN
    12271233       CALL suphel ! initialiser constantes et parametres phys.
     1234       CALL getin_p('iflag_alp_wk_cond', iflag_alp_wk_cond)
    12281235       CALL getin_p('random_notrig_max',random_notrig_max)
    12291236       CALL getin_p('ok_adjwk',ok_adjwk)
     
    28052812               wake_deltat, wake_deltaq, wake_s, wake_dens,  &
    28062813               wake_dth, wake_h,  &
    2807                wake_pe, wake_fip, wake_gfl,  &
     2814!!               wake_pe, wake_fip, wake_gfl,  &
     2815               wake_pe, wake_fip_0, wake_gfl,  &   !! jyg
    28082816               d_t_wake, d_q_wake,  &
    28092817               wake_k, t_x, q_x,  &
     
    28352843          call prt_enerbil('wake',itap)
    28362844       ENDIF   ! (iflag_wake_tend .GT. 0.)
     2845
     2846       IF (iflag_alp_wk_cond .GT. 0.) THEN
     2847
     2848         CALL alpale_wk(dtime, cell_area, wake_k, wake_s, wake_dens, wake_fip_0, &
     2849                        wake_fip)
     2850       ELSE
     2851         wake_fip(:) = wake_fip_0(:)
     2852       ENDIF   ! (iflag_alp_wk_cond .GT. 0.)
    28372853
    28382854    ENDIF  ! (iflag_wake>=1)
Note: See TracChangeset for help on using the changeset viewer.