Changeset 2107


Ignore:
Timestamp:
Feb 26, 2019, 4:45:05 PM (6 years ago)
Author:
aboissinot
Message:

Now convective adjustment can be used at the same time as thermal plume model (for layers beyond thermals).

Location:
trunk/LMDZ.GENERIC
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.GENERIC/README

    r2105 r2107  
    14391439- Remove a potential division by zero in thermcell_plume with variable zw2m.
    14401440
    1441 ==14/01/2018 == AB
     1441== 14/01/2018 == AB
    14421442- add comment in README for revisions 2066 and 2067
    14431443- allocate f0 only if calltherm=true
     
    14451445- replace watersat subroutine by Psat_water in the thermal plume model, cf. revision 1993 or 29/08/2018 JL comment.
    14461446
    1447 ==07/02/2018 == AB
     1447== 07/02/2018 == AB
    14481448- uncomment two "corrections" in thermcell_flux. They are used only if iflag_thermals_optflux is set to 0 (1 by default)
    14491449- remove useless parameter fact_shell in thermcell_mod
    14501450- now take d_temp into acocunt in thermcell_plume to trigger the plume and compute first unstable layer speed.
    14511451
    1452 ==15/02/2018 == AB
     1452== 15/02/2018 == AB
    14531453- Fix a bug in thermcell_alim.F90 where loops were inverted.
    14541454- In thermal plume model, arrays size is set with ngrid,nlay arguments, no longer thanks to dimphy module.
     
    14561456- Some minor changes in thermcell_plume and thermcell_main.
    14571457
    1458 ==18/02/2018 == AB
     1458== 18/02/2018 == AB
    14591459- use detr as thermcell_dq argument (called in thermcell_main) and clean up thermcell_dq.
    14601460- fix a bug in thermcell_flux with lmax.
     
    14621462- add new correction in thermcell_flux when entrainement is too high.
    14631463- evaporate ice before calling thermal plume model
     1464
     1465== 26/02/2019 == AB
     1466- now convective adjustment can be used for layers beyond thermals
  • trunk/LMDZ.GENERIC/libf/phystd/convadj.F

    r1805 r2107  
    44     &                   pdufi,pdvfi,pdhfi,pdqfi,
    55     &                   pduadj,pdvadj,pdhadj,
    6      &                   pdqadj)
     6     &                   pdqadj,lmax)
    77
    88      USE tracer_h
     
    4141      REAL pu(ngrid,nlay),pdufi(ngrid,nlay),pduadj(ngrid,nlay)
    4242      REAL pv(ngrid,nlay),pdvfi(ngrid,nlay),pdvadj(ngrid,nlay)
     43      INTEGER lmax(ngrid)
    4344
    4445!     Tracers
     
    156157      DO l=2,nlay
    157158        DO ig=1,ngrid
    158           IF(zhc(ig,l).LT.zhc(ig,l-1)) vtest(ig)=.true.
     159          IF (zhc(ig,l).LT.zhc(ig,l-1).and.(l.GT.lmax(ig))) THEN
     160            vtest(ig)=.true.
     161          ENDIF
    159162        ENDDO
    160163      ENDDO
    161 
     164     
    162165!     Make a list of them
    163166      jcnt=0
     
    194197            l2 = l2 + 1
    195198            IF (l2 .GT. nlay) EXIT
    196             IF (zhc(i, l2) .LT. zhc(i, l2-1)) THEN
     199            IF ((zhc(i, l2).LT.zhc(i, l2-1)).and.(l.GT.lmax(i))) THEN
    197200 
    198201!     l2 is the highest level of the unstable column
     
    223226                down = .false.
    224227                IF (l1 .ne. 1) then    !--  and then
    225                   IF (zhmc .lt. zhc(i, l1-1)) then
     228                  IF ((zhmc.LT.zhc(i, l1-1)).and.(l.GT.lmax(i))) then
    226229                    down = .true.
    227230                  END IF
  • trunk/LMDZ.GENERIC/libf/phystd/physiq_mod.F90

    r2105 r2107  
    11891189     
    11901190      IF (calltherm) THEN
    1191 ! AB : we need to evaporate ice before calling thermcell_main
     1191! AB : We need to evaporate ice before calling thermcell_main
    11921192         IF (water) THEN
    11931193            CALL evap(ngrid,nlayer,nq,ptimestep,pt,pq,pdq,pdt,dqevap,dtevap,zqtherm,zttherm)
     
    11971197         ENDIF
    11981198         
    1199 ! AB:  WARNING: if a plume stops, the parametrization never look above if somewhere the atmosphere is still unstable!
    1200 !               As is, there cannot be more than one plume by grid point by time step.
     1199! AB:  If a plume stops, the parametrization never look above if somewhere the atmosphere is still unstable!
     1200!      Maybe it's a good idea to call convective adjustment too.
    12011201         CALL thermcell_main(icount, ngrid, nlayer, ptimestep,                   &
    12021202                             pplay, pplev, pphi, firstcall,                      &
    1203                              pu, pv, pt, pq(:,:,igcm_h2o_vap),                   &
     1203                             pu, pv, zttherm, zqtherm(:,:,igcm_h2o_vap),         &
    12041204                             zdutherm, zdvtherm, zdttherm, zdotherm,             &
    12051205                             f0, fm0, entr0, detr0,                              &
     
    12081208                             lmin, lmix, lalim, lmax,                            &
    12091209                             zpopsk, ratqscth, ratqsdiff,                        &
    1210 ! AB : next variables are only used for diagnoses
     1210! AB : Next variables are only used for diagnoses
    12111211                             Ale_bl,Alp_bl,lalim_conv,wght_th,                   &
    12121212                             pbl_tke,pctsrf,omega_therm,airephy,                 &
     
    12311231         ENDIF
    12321232         
     1233      ELSE
     1234         
     1235         lmax(1:ngrid) = 0
     1236         
    12331237      ENDIF ! end of 'calltherm'
    12341238     
     
    12501254                      pdu,pdv,zdh,pdq,                      &
    12511255                      zduadj,zdvadj,zdhadj,                 &
    1252                       zdqadj)
     1256                      zdqadj,lmax)
    12531257
    12541258         pdu(1:ngrid,1:nlayer) = pdu(1:ngrid,1:nlayer) + zduadj(1:ngrid,1:nlayer)
Note: See TracChangeset for help on using the changeset viewer.