Changeset 2925 for LMDZ5/branches/LMDZ_tree_FC/libf/phylmd/cv3_routines.F90
- Timestamp:
- Jun 30, 2017, 12:17:42 PM (7 years ago)
- Location:
- LMDZ5/branches/LMDZ_tree_FC
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/LMDZ_tree_FC
- Property svn:mergeinfo changed
/LMDZ5/trunk (added) merged: 2899-2906,2908-2912,2915-2916,2918-2923
- Property svn:mergeinfo changed
-
LMDZ5/branches/LMDZ_tree_FC/libf/phylmd/cv3_routines.F90
r2818 r2925 111 111 ok_optim_yield=.False. 112 112 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 113 118 coef_peel=0.25 114 119 CALL getin_p('coef_peel',coef_peel) … … 277 282 278 283 SUBROUTINE cv3_feed(len, nd, ok_conserv_q, & 279 t, q, u, v, p, ph, h m, gz, &284 t, q, u, v, p, ph, h, gz, & 280 285 p1feed, p2feed, wght, & 281 286 wghti, tnk, thnk, qnk, qsnk, unk, vnk, & … … 283 288 284 289 USE mod_phys_lmdz_transfert_para, ONLY : bcast 290 USE add_phys_tend_mod, ONLY: fl_cor_ebil 285 291 IMPLICIT NONE 286 292 … … 292 298 ! - here, nk(i)=minorig 293 299 ! - icb defined differently (plcl compared with ph instead of p) 300 ! - dry static energy as argument instead of moist static energy 294 301 295 302 ! Main differences with convect3: … … 307 314 REAL, DIMENSION (len, nd), INTENT (IN) :: t, q, p 308 315 REAL, DIMENSION (len, nd), INTENT (IN) :: u, v 309 REAL, DIMENSION (len, nd), INTENT (IN) :: h m, gz316 REAL, DIMENSION (len, nd), INTENT (IN) :: h, gz 310 317 REAL, DIMENSION (len, nd+1), INTENT (IN) :: ph 311 318 REAL, DIMENSION (len), INTENT (IN) :: p1feed … … 378 385 pup(i) = p2feed(i) 379 386 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 ) 383 396 ! 1.b- LCL associated with ph(nk+1) 384 397 DO i = 1, len 385 398 plo(i) = ph(i, nk(i)+1) 386 399 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 ) 390 409 ! 2- Iterations 391 410 niter = 5 … … 434 453 !jyg> 435 454 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 ) 439 464 !jyg20140217< 440 465 IF (ok_new_feed) THEN … … 1647 1672 DO i = 1, ncum 1648 1673 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)) 1649 1680 hp(i, k) = hnk(i) + (lv(i,k)+(cpd-cpv)*t(i,k))*ep(i, k)*clw(i, k) 1650 1681 END IF … … 2984 3015 qcondc, wd, & 2985 3016 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 2986 3020 2987 3021 IMPLICIT NONE … … 3220 3254 3221 3255 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 3224 3265 END IF ! iflag 3225 3266 END DO … … 3529 3570 3530 3571 ! 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 * & 3532 3579 (amp1(il)*(t(il,i+1)-t(il,i) + (gz(il,i+1)-gz(il,i))*cpinv) - & 3533 3580 ad(il)*(t(il,i)-t(il,i-1)+(gz(il,i)-gz(il,i-1))*cpinv)) 3581 ENDIF 3582 !>jyg 3534 3583 3535 3584 … … 3538 3587 t(il,i)*(cpv-cpd)*(rr(il,i)-qent(il,i,i)))*cpinv 3539 3588 END IF 3540 3541 3542 3589 ! 3543 3590 ! sb: on ne fait pas encore la correction permettant de mieux 3544 3591 ! conserver l'eau: … … 3873 3920 3874 3921 !!!! 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 3885 3934 3886 3935 !jyg< … … 3920 3969 END DO 3921 3970 ! 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 3923 3974 ! 3924 3975 DO il = 1, ncum
Note: See TracChangeset
for help on using the changeset viewer.