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/libf/phystd
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified 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
  • TabularUnified 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.