Changeset 4776 for LMDZ6/trunk/libf/phylmdiso
- Timestamp:
- Dec 15, 2023, 5:48:36 PM (12 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmdiso/cv3_routines.F90
r4613 r4776 379 379 integer ixt 380 380 #endif 381 382 381 !jyg20140217< 383 382 INTEGER iostat … … 411 410 enddo !do i=1,len 412 411 #endif 413 414 412 IF (first) THEN 415 413 !$OMP MASTER … … 561 559 #endif 562 560 #endif 563 564 561 !jyg20140217< 565 562 IF (ok_new_feed) THEN … … 975 972 #endif 976 973 #endif 977 978 979 974 ! ori do 380 k=minorig,icbsmax2 980 975 ! ori do 370 i=1,len … … 1076 1071 1077 1072 END DO 1078 1079 1073 1080 1074 #ifdef ISO … … 1147 1141 #endif 1148 1142 #endif 1149 1150 1143 RETURN 1151 1144 END SUBROUTINE cv3_undilute1 … … 1425 1418 #endif 1426 1419 #endif 1427 1428 1429 1420 RETURN 1430 1421 END SUBROUTINE cv3_compress … … 1584 1575 REAL :: coefx, coefm, Zx, Zm, Ux, U, Um 1585 1576 1586 1587 1577 #ifdef ISO 1588 1578 integer ixt … … 1590 1580 real clw_k(nloc),tg_k(nloc),xt_k(ntraciso,nloc) 1591 1581 #endif 1592 1593 1582 IF (prt_level >= 10) THEN 1594 1583 print *,'cv3_undilute2.0. icvflag_Tpa, t(1,k), q(1,k), qs(1,k) ', & … … 1686 1675 enddo 1687 1676 #endif 1688 1689 1677 !jyg< 1690 1678 ! ===================================================================== … … 1822 1810 CALL abort_gcm('cv3_routines 1813','isos pas prevus ici',1) 1823 1811 #endif 1824 1825 1812 DO k = minorig + 1, nl 1826 1813 DO i = 1,ncum … … 2103 2090 !>jyg 2104 2091 END DO 2105 2106 2092 #ifdef ISO 2107 2093 ! calcul de zfice … … 2171 2157 #endif 2172 2158 #endif 2173 2174 2175 2159 END DO 2176 2160 … … 2178 2162 ! 2179 2163 ENDIF ! (icvflag_Tpa == 2) ELSEIF (icvflag_Tpa == 1) ELSE (icvflag_Tpa == 0) 2180 2181 2182 2164 #ifdef ISOVERIF 2183 2165 DO k = 1, nl … … 2993 2975 END IF ! new 2994 2976 END DO 2995 2996 2977 #ifdef ISO 2997 2978 do il=1,ncum … … 3150 3131 ! write(*,*) 'cv3_routine tmp 1984: cond=',elij(il,i,j) 3151 3132 #endif 3152 3153 3154 3155 3133 END DO 3156 3134 … … 3235 3213 3236 3214 #endif 3237 3238 3215 END IF 3239 3216 END DO … … 3469 3446 endif !if (option_tmin.ge.1) then 3470 3447 #endif 3471 3472 3448 END IF 3473 3449 END DO ! il … … 3511 3487 END DO 3512 3488 END DO 3513 3514 3515 3489 3516 3490 #ifdef ISO … … 3595 3569 endif !if (option_tmin.eq.1) then 3596 3570 #endif 3597 #endif 3598 3599 3571 #endif 3600 3572 RETURN 3601 3573 END SUBROUTINE cv3_mixing … … 3671 3643 #endif 3672 3644 3673 3674 3645 !input/output 3675 3646 INTEGER, DIMENSION (nloc), INTENT (INOUT) :: iflag(nloc) … … 3693 3664 REAL, DIMENSION (ntraciso,nloc, na), INTENT (OUT) :: xtwdtrainA 3694 3665 #endif 3695 3696 3666 3697 3667 !local variables … … 3774 3744 enddo !do i=1,nd 3775 3745 #endif 3776 3777 3746 3778 3747 ! *** Set the fractionnal area sigd of precipitating downdraughts … … 3828 3797 enddo 3829 3798 #endif 3830 3831 3799 END DO 3832 3800 END DO … … 4015 3983 CALL abort_gcm('cv3_routines 4037','isos pas prevus ici',1) 4016 3984 #endif 4017 4018 3985 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 4019 3986 IF (adiab_ascent_mass_flux_depends_on_ejectliq) THEN … … 4162 4129 CALL abort_physic('cv3_routines 3644', 'isotopes pas prevus ici, coder la glace', 1) 4163 4130 #endif 4164 4165 4131 ! b6=bfac*50.*sigd(il)*(ph(il,i)-ph(il,i+1))*sigt*afac 4166 4132 ! c6=prec(il,i+1)+bfac*wdtrain(il) & … … 4459 4425 IF (mplus(il)) THEN 4460 4426 4461 ! IF (mp(il,i).gt.1.0E-16) THEN ! C Risi: ajout de la condition? 4462 4427 ! IF (mp(il,i).gt.1.0E-16) THEN ! C Risi: ajout de la condition? 4463 4428 IF (cvflag_grav) THEN 4464 4429 rp(il, i) = rp(il, i+1)*mp(il, i+1) + rr(il, i)*(mp(il,i)-mp(il,i+1)) + & … … 4521 4486 !AC! enddo 4522 4487 !AC! end do 4523 4524 4488 4525 4489 #ifdef ISO … … 4661 4625 #endif 4662 4626 400 END DO 4663 4664 4665 4627 #ifdef ISO 4666 4628 ! write(*,*) 'nl=',nl,'nd=',nd,'; ncum=',ncum … … 4698 4660 #endif 4699 4661 #endif 4700 4701 4662 ! ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4702 4663 … … 4738 4699 USE print_control_mod, ONLY: lunout, prt_level 4739 4700 USE add_phys_tend_mod, only : fl_cor_ebil 4740 4741 4701 4742 4702 #ifdef ISO … … 4853 4813 REAL, DIMENSION (nloc) :: esum, fsum, gsum, hsum 4854 4814 REAL, DIMENSION (nloc, nd) :: th_wake 4855 REAL, DIMENSION (nloc, nd, nd) :: qdet4856 4815 REAL, DIMENSION (nloc) :: alpha_qpos, alpha_qpos1 4857 4816 REAL, DIMENSION (nloc, nd) :: qcond, nqcond, wa ! cld … … 4859 4818 REAL, DIMENSION (nloc) :: sument 4860 4819 REAL, DIMENSION (nloc, nd) :: sigment, qtment ! cld 4820 REAL, DIMENSION (nloc, nd, nd) :: qdet 4861 4821 REAL sumdq !jyg 4862 4863 4822 #ifdef ISO 4864 4823 integer ixt … … 4904 4863 #endif 4905 4864 #endif 4906 4907 4865 ! 4908 4866 ! ------------------------------------------------------------- … … 5011 4969 precip(il) = wt(il, 1)*sigd(il)*(water(il,1)+ice(il,1)) & 5012 4970 *86400.*1000./(rowl*grav) 5013 5014 4971 #ifdef ISO 5015 4972 do ixt = 1, ntraciso … … 5048 5005 ! end cam verif 5049 5006 #endif 5050 5051 5007 ELSE 5052 5008 precip(il) = wt(il, 1)*sigd(il)*water(il, 1) & … … 5364 5320 fr(il, 1) = fr(il, 1) + 0.01*grav*work(il)*ment(il, j, 1)*(qent(il,j,1)-rr(il,1)) 5365 5321 fr_comp(il,1) = fr_comp(il,1) + 0.01*grav*work(il)*ment(il, j, 1)*(qent(il,j,1)-rr(il,1)) 5366 5367 5322 #ifdef ISO 5368 5323 do ixt = 1, ntraciso … … 5585 5540 DO il = 1, ncum 5586 5541 IF (j<=inb(il)) THEN 5587 dn_to(il,i) = dn_to(il,i) + ment(il,j,i) 5542 !! dn_to(il,i) = dn_to(il,i) + ment(il,j,i) !jyg,20220202 5543 dn_to(il,i) = dn_to(il,i) - ment(il,j,i) 5588 5544 ENDIF 5589 5545 ENDDO … … 5595 5551 DO il = 1, ncum 5596 5552 IF (i<=inb(il)) THEN 5597 dn_from(il,i) = dn_from(il,i) + ment(il,i,j) 5553 !! dn_from(il,i) = dn_from(il,i) + ment(il,i,j) !jyg,20220202 5554 dn_from(il,i) = dn_from(il,i) - ment(il,i,j) 5598 5555 ENDIF 5599 5556 ENDDO … … 5607 5564 DO i = nl-1, 1, -1 5608 5565 DO il = 1, ncum 5609 dnwd(il,i) = max(0., dnwd(il,i+1) - dn_to(il,i) + dn_from(il,i)) 5566 !! dnwd(il,i) = max(0., dnwd(il,i+1) - dn_to(il,i) + dn_from(il,i)) !jyg,20220202 5567 dnwd(il,i) = min(0., dnwd(il,i+1) - dn_to(il,i) + dn_from(il,i)) 5610 5568 ENDDO 5611 5569 ENDDO … … 5633 5591 IF (i<=inb(il) .AND. iflag(il)<=1) num1 = num1 + 1 5634 5592 END DO 5635 qdet(il,i,i) = qent(il,i,i) ! cld Louis : specific humidity in detraining water5636 5593 IF (num1<=0) GO TO 500 5637 5594 … … 6084 6041 #endif 6085 6042 6086 6087 6043 fu(il, i) = 0.01*grav*(mp(il,i+1)*(up(il,i+1)-u(il,i)) - & 6088 6044 mp(il,i)*(up(il,i)-u(il,i-1)))*dpinv … … 6093 6049 fr(il, i) = fr(il, i) + 0.01*grav*dpinv*(amp1(il)*(rr(il,i+1)-rr(il,i)) - & 6094 6050 ad(il)*(rr(il,i)-rr(il,i-1))) 6095 6096 6051 #ifdef ISO 6097 6052 do ixt = 1, ntraciso … … 6158 6113 ! end cam verif 6159 6114 #endif 6160 6161 6115 fu(il, i) = fu(il, i) + 0.01*grav*dpinv*(amp1(il)*(u(il,i+1)-u(il,i)) - & 6162 6116 ad(il)*(u(il,i)-u(il,i-1))) … … 6238 6192 ! end cam verif 6239 6193 #endif 6240 6241 6194 ! 6242 6195 END IF ! i … … 6251 6204 (qent(il,k,i)-awat(il)-rr(il,i)) 6252 6205 fr_comp(il,i) = fr_comp(il,i) + 0.01*grav*dpinv*ment(il, k, i)*(qent(il,k,i)-awat(il)-rr(il,i)) 6253 6254 6206 #ifdef ISO 6255 6207 do ixt = 1, ntraciso … … 6315 6267 #endif 6316 6268 #endif 6317 6318 6269 fu(il, i) = fu(il, i) + 0.01*grav*dpinv*ment(il, k, i)*(uent(il,k,i)-u(il,i)) 6319 6270 fv(il, i) = fv(il, i) + 0.01*grav*dpinv*ment(il, k, i)*(vent(il,k,i)-v(il,i)) … … 6488 6439 ! PROBLEM: Should not qent(il,i,i) be taken into account even if nent(il,i)/=0? 6489 6440 !! qtment(il, i) = qent(il,k,i) + qtment(il,i) ! cld 6441 qdet(il,i,i) = qent(il,i,i) ! cld Louis : specific humidity in detraining water 6490 6442 qtment(il, i) = qent(il,i,i) + qtment(il,i) ! cld 6491 6443 !>jyg … … 6562 6514 (ph(il,inb(il)-1)-ph(il,inb(il))) 6563 6515 6564 6565 #ifdef ISO 6516 #ifdef ISO 6566 6517 do ixt=1,ntraciso 6567 6518 xtbx(ixt)=0.01*grav*ment(il,inb(il),inb(il)) & … … 6627 6578 #endif 6628 6579 #endif 6629 6630 6580 cx = 0.01*grav*ment(il, inb(il), inb(il))*(uent(il,inb(il),inb(il))-u(il,inb(il)))/ & 6631 6581 (ph(il,inb(il))-ph(il,inb(il)+1)) … … 6824 6774 #endif 6825 6775 #endif 6826 6827 6776 END IF 6828 6777 END DO … … 6947 6896 #endif 6948 6897 #endif 6949 6950 6898 END IF 6951 6899 END DO … … 7310 7258 END DO ! cld 7311 7259 END DO 7312 7313 7260 #ifdef ISO 7314 7261 #ifdef DIAGISO … … 7477 7424 #endif 7478 7425 #endif 7479 7480 7426 IMPLICIT NONE 7481 7427 … … 7646 7592 #endif 7647 7593 #endif 7648 7649 7594 !AC! do 2100 j=1,ntra 7650 7595 !AC!c oct3 do 2110 k=1,nl
Note: See TracChangeset
for help on using the changeset viewer.