Ignore:
Timestamp:
Jun 30, 2017, 12:17:42 PM (7 years ago)
Author:
fcheruy
Message:

Update tree branch to trunk version

Location:
LMDZ5/branches/LMDZ_tree_FC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/branches/LMDZ_tree_FC

  • LMDZ5/branches/LMDZ_tree_FC/libf/phylmd/cv3_routines.F90

    r2818 r2925  
    111111     ok_optim_yield=.False.
    112112     CALL getin_p('ok_optim_yield',ok_optim_yield)
     113     ok_homo_tend=.TRUE.
     114     CALL getin_p('ok_homo_tend',ok_homo_tend)
     115     ok_entrain=.TRUE.
     116     CALL getin_p('ok_entrain',ok_entrain)
     117
    113118     coef_peel=0.25
    114119     CALL getin_p('coef_peel',coef_peel)
     
    277282
    278283SUBROUTINE cv3_feed(len, nd, ok_conserv_q, &
    279                     t, q, u, v, p, ph, hm, gz, &
     284                    t, q, u, v, p, ph, h, gz, &
    280285                    p1feed, p2feed, wght, &
    281286                    wghti, tnk, thnk, qnk, qsnk, unk, vnk, &
     
    283288
    284289  USE mod_phys_lmdz_transfert_para, ONLY : bcast
     290  USE add_phys_tend_mod, ONLY: fl_cor_ebil
    285291  IMPLICIT NONE
    286292
     
    292298! - here, nk(i)=minorig
    293299! - icb defined differently (plcl compared with ph instead of p)
     300! - dry static energy as argument instead of moist static energy
    294301
    295302! Main differences with convect3:
     
    307314  REAL, DIMENSION (len, nd), INTENT (IN)             :: t, q, p
    308315  REAL, DIMENSION (len, nd), INTENT (IN)             :: u, v
    309   REAL, DIMENSION (len, nd), INTENT (IN)             :: hm, gz
     316  REAL, DIMENSION (len, nd), INTENT (IN)             :: h, gz
    310317  REAL, DIMENSION (len, nd+1), INTENT (IN)           :: ph
    311318  REAL, DIMENSION (len), INTENT (IN)                 :: p1feed
     
    378385    pup(i) = p2feed(i)
    379386  END DO
    380   CALL cv3_vertmix(len, nd, iflag, p1feed, pup, p, ph, &
    381                    t, q, u, v, wght, &
    382                    wghti, nk, tnk, thnk, qnk, qsnk, unk, vnk, plclup)
     387  IF (fl_cor_ebil >=2 ) THEN
     388    CALL cv3_estatmix(len, nd, iflag, p1feed, pup, p, ph, &
     389                     t, q, u, v, h, gz, wght, &
     390                     wghti, nk, tnk, thnk, qnk, qsnk, unk, vnk, plclup)
     391  ELSE
     392    CALL cv3_enthalpmix(len, nd, iflag, p1feed, pup, p, ph, &
     393                       t, q, u, v, wght, &
     394                       wghti, nk, tnk, thnk, qnk, qsnk, unk, vnk, plclup)
     395  ENDIF  ! (fl_cor_ebil >=2 )
    383396! 1.b- LCL associated with ph(nk+1)
    384397  DO i = 1, len
    385398    plo(i) = ph(i, nk(i)+1)
    386399  END DO
    387   CALL cv3_vertmix(len, nd, iflag, p1feed, plo, p, ph, &
    388                    t, q, u, v, wght, &
    389                    wghti, nk, tnk, thnk, qnk, qsnk, unk, vnk, plcllo)
     400  IF (fl_cor_ebil >=2 ) THEN
     401    CALL cv3_estatmix(len, nd, iflag, p1feed, plo, p, ph, &
     402                     t, q, u, v, h, gz, wght, &
     403                     wghti, nk, tnk, thnk, qnk, qsnk, unk, vnk, plcllo)
     404  ELSE
     405    CALL cv3_enthalpmix(len, nd, iflag, p1feed, plo, p, ph, &
     406                       t, q, u, v, wght, &
     407                       wghti, nk, tnk, thnk, qnk, qsnk, unk, vnk, plcllo)
     408  ENDIF  ! (fl_cor_ebil >=2 )
    390409! 2- Iterations
    391410  niter = 5
     
    434453!jyg>
    435454
    436     CALL cv3_vertmix(len, nd, iflag, p1feed, pfeed, p, ph, &
    437                    t, q, u, v, wght, &
    438                    wghti, nk, tnk, thnk, qnk, qsnk, unk, vnk, plclfeed)
     455    IF (fl_cor_ebil >=2 ) THEN
     456      CALL cv3_estatmix(len, nd, iflag, p1feed, pfeed, p, ph, &
     457                       t, q, u, v, h, gz, wght, &
     458                       wghti, nk, tnk, thnk, qnk, qsnk, unk, vnk, plclfeed)
     459    ELSE
     460      CALL cv3_enthalpmix(len, nd, iflag, p1feed, pfeed, p, ph, &
     461                         t, q, u, v, wght, &
     462                         wghti, nk, tnk, thnk, qnk, qsnk, unk, vnk, plclfeed)
     463    ENDIF  ! (fl_cor_ebil >=2 )
    439464!jyg20140217<
    440465    IF (ok_new_feed) THEN
     
    16471672      DO i = 1, ncum
    16481673        IF ((k>=icb(i)) .AND. (k<=inb(i))) THEN
     1674!jyg<   (energy conservation tests)
     1675!!          hp(i, k) = hnk(i) + (lv(i,k)+(cpd-cpv)*tp(i,k))*ep(i, k)*clw(i, k)
     1676!!          hp(i, k) = ( hnk(i) + (lv(i,k)+(cpd-cpv)*t(i,k))*ep(i, k)*clw(i, k) ) / &
     1677!!                     (1. - ep(i,k)*clw(i,k))
     1678!!          hp(i, k) = ( hnk(i) + (lv(i,k)+(cpd-cl)*t(i,k))*ep(i, k)*clw(i, k) ) / &
     1679!!                     (1. - ep(i,k)*clw(i,k))
    16491680          hp(i, k) = hnk(i) + (lv(i,k)+(cpd-cpv)*t(i,k))*ep(i, k)*clw(i, k)
    16501681        END IF
     
    29843015                     qcondc, wd, &
    29853016                     ftd, fqd, qnk, qtc, sigt, tau_cld_cv, coefw_cld_cv)
     3017
     3018    USE print_control_mod, ONLY: lunout, prt_level
     3019    USE add_phys_tend_mod, only : fl_cor_ebil
    29863020
    29873021  IMPLICIT NONE
     
    32203254
    32213255      IF ((0.01*grav*work(il)*am(il))>=delti) iflag(il) = 1 !consist vect
    3222       ft(il, 1) = ft(il, 1) + 0.01*grav*work(il)*am(il) * &
    3223                                    (t(il,2)-t(il,1)+(gz(il,2)-gz(il,1))/cpn(il,1))
     3256!jyg<
     3257        IF (fl_cor_ebil >= 2) THEN
     3258          ft(il, 1) = ft(il, 1) + 0.01*grav*work(il)*am(il) * &
     3259                    ((t(il,2)-t(il,1))*cpn(il,2)+gz(il,2)-gz(il,1))/cpn(il,1)
     3260        ELSE
     3261          ft(il, 1) = ft(il, 1) + 0.01*grav*work(il)*am(il) * &
     3262                    (t(il,2)-t(il,1)+(gz(il,2)-gz(il,1))/cpn(il,1))
     3263        ENDIF
     3264!>jyg
    32243265    END IF ! iflag
    32253266  END DO
     
    35293570
    35303571! sature
    3531         ft(il, i) = ft(il, i) + 0.01*grav*dpinv * &
     3572!jyg<
     3573        IF (fl_cor_ebil >= 2) THEN
     3574          ft(il, i) = ft(il, i) + 0.01*grav*dpinv * &
     3575              ( amp1(il)*( (t(il,i+1)-t(il,i))*cpn(il,i+1) + gz(il,i+1)-gz(il,i))*cpinv - &
     3576                ad(il)*( (t(il,i)-t(il,i-1))*cpn(il,i-1) + gz(il,i)-gz(il,i-1))*cpinv)
     3577        ELSE
     3578          ft(il, i) = ft(il, i) + 0.01*grav*dpinv * &
    35323579                     (amp1(il)*(t(il,i+1)-t(il,i) + (gz(il,i+1)-gz(il,i))*cpinv) - &
    35333580                      ad(il)*(t(il,i)-t(il,i-1)+(gz(il,i)-gz(il,i-1))*cpinv))
     3581        ENDIF
     3582!>jyg
    35343583
    35353584
     
    35383587                                    t(il,i)*(cpv-cpd)*(rr(il,i)-qent(il,i,i)))*cpinv
    35393588        END IF
    3540 
    3541 
    3542 
     3589!
    35433590! sb: on ne fait pas encore la correction permettant de mieux
    35443591! conserver l'eau:
     
    38733920
    38743921!!!!      do 700 i=1,icb(il)-1
    3875   DO i = 1, nl
    3876     DO il = 1, ncum
    3877       IF (i<=(icb(il)-1) .AND. iflag(il)<=1) THEN
    3878         ftd(il, i) = esum(il)*t_wake(il, i)/(th_wake(il,i)*hsum(il))
    3879         fqd(il, i) = fsum(il)/gsum(il)
    3880         ft(il, i) = ftd(il, i) + asum(il)*t(il, i)/(th(il,i)*dsum(il))
    3881         fr(il, i) = fqd(il, i) + bsum(il)/csum(il)
    3882       END IF
    3883     END DO
    3884   END DO
     3922  IF (ok_homo_tend) THEN
     3923    DO i = 1, nl
     3924      DO il = 1, ncum
     3925        IF (i<=(icb(il)-1) .AND. iflag(il)<=1) THEN
     3926          ftd(il, i) = esum(il)*t_wake(il, i)/(th_wake(il,i)*hsum(il))
     3927          fqd(il, i) = fsum(il)/gsum(il)
     3928          ft(il, i) = ftd(il, i) + asum(il)*t(il, i)/(th(il,i)*dsum(il))
     3929          fr(il, i) = fqd(il, i) + bsum(il)/csum(il)
     3930        END IF
     3931      END DO
     3932    END DO
     3933  ENDIF
    38853934
    38863935!jyg<
     
    39203969  END DO
    39213970!
    3922 !    print *,' YIELD : alpha_qpos ',alpha_qpos(1)
     3971    IF (prt_level .GE. 5) THEN
     3972      print *,' CV3_YIELD : alpha_qpos ',alpha_qpos(1)
     3973    ENDIF
    39233974!
    39243975  DO il = 1, ncum
Note: See TracChangeset for help on using the changeset viewer.