Changeset 5283 for LMDZ6/trunk/libf/phylmdiso
- Timestamp:
- Oct 28, 2024, 1:47:34 PM (3 months ago)
- Location:
- LMDZ6/trunk/libf/phylmdiso
- Files:
-
- 1 deleted
- 4 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmdiso/concvl.F90
r5282 r5283 76 76 , RESTT, RALPW, RBETW, RGAMW, RALPS, RBETS, RGAMS & 77 77 , RALPD, RBETD, RGAMD 78 USE conema3_mod_h 78 79 IMPLICIT NONE 79 80 ! ====================================================================== … … 310 311 include "YOETHF.h" 311 312 include "FCTTRE.h" 312 !jyg<313 include "conema3.h"314 !>jyg315 313 316 314 IF (first) THEN -
LMDZ6/trunk/libf/phylmdiso/conema3_mod_h.f90
r5282 r5283 1 link ../phylmd/conema3 .h1 link ../phylmd/conema3_mod_h.f90 -
LMDZ6/trunk/libf/phylmdiso/cv30_routines_mod.F90
r5282 r5283 1 2 ! $Id$ 3 1 MODULE cv30_routines_mod 2 !------------------------------------------------------------ 3 ! Parameters for convectL, iflag_con=30: 4 ! (includes - microphysical parameters, 5 ! - parameters that control the rate of approach 6 ! to quasi-equilibrium) 7 ! - noff & minorig (previously in input of convect1) 8 !------------------------------------------------------------ 9 10 IMPLICIT NONE; PRIVATE 11 PUBLIC sigd, spfac, pbcrit, ptcrit, omtrain, dtovsh, dpbase, dttrig, dtcrit, & 12 tau, beta, alpha, delta, betad, noff, minorig, nl, nlp, nlm, & 13 cv30_param, cv30_prelim, cv30_feed, cv30_undilute1, cv30_trigger, & 14 cv30_compress, cv30_undilute2, cv30_closure, cv30_mixing, cv30_unsat, & 15 cv30_yield, cv30_tracer, cv30_uncompress, cv30_epmax_fn_cape 16 17 INTEGER noff, minorig, nl, nlp, nlm 18 REAL sigd, spfac 19 REAL pbcrit, ptcrit 20 REAL omtrain 21 REAL dtovsh, dpbase, dttrig 22 REAL dtcrit, tau, beta, alpha 23 REAL delta 24 REAL betad 25 26 !$OMP THREADPRIVATE(sigd, spfac, pbcrit, ptcrit, omtrain, dtovsh, dpbase, dttrig, dtcrit, & 27 !$OMP tau, beta, alpha, delta, betad, noff, minorig, nl, nlp, nlm) 28 CONTAINS 4 29 5 30 6 31 SUBROUTINE cv30_param(nd, delt) 7 USE c vthermo_mod_h, ONLY: cpd, cpv, cl, ci, rrv, rrd, lv0, lf0, g, rowl, t0, clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl &8 , clmci, eps, epsi, epsim1, ginv, hrd, grav 32 USE conema3_mod_h 33 9 34 IMPLICIT NONE 10 35 … … 32 57 ! *** IT MUST BE LESS THAN 0 *** 33 58 34 include "cv30param.h"35 include "conema3.h"36 37 59 INTEGER nd 38 60 REAL delt ! timestep (seconds) … … 82 104 betad = 10.0 ! original value (from convect 4.3) 83 105 84 RETURN 106 85 107 END SUBROUTINE cv30_param 86 108 87 109 SUBROUTINE cv30_prelim(len, nd, ndp1, t, q, p, ph, lv, cpn, tv, gz, h, hm, & 88 110 th) 89 USE cvthermo_mod_h, ONLY: cpd, cpv, cl, ci, rrv, rrd, lv0, lf0, g, rowl, t0, clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl & 90 , clmci, eps, epsi, epsim1, ginv, hrd, grav111 112 USE cvthermo_mod_h 91 113 IMPLICIT NONE 92 114 … … 111 133 REAL tvx, tvy ! convect3 112 134 REAL cpx(len, nd) 113 114 include "cv30param.h"115 135 116 136 … … 158 178 END DO 159 179 160 RETURN 180 161 181 END SUBROUTINE cv30_prelim 162 182 … … 164 184 iflag, tnk, qnk, gznk, plcl & 165 185 #ifdef ISO 166 ,xt,xtnk & 186 ,xt,xtnk & 167 187 #endif 168 188 ) … … 186 206 ! ================================================================ 187 207 188 include "cv30param.h" 208 189 209 190 210 ! inputs: … … 194 214 REAL ph(len, nd+1) 195 215 #ifdef ISO 196 real xt(ntraciso,len,nd)216 REAL xt(ntraciso,len,nd) 197 217 #endif 198 218 … … 201 221 REAL tnk(len), qnk(len), gznk(len), plcl(len) 202 222 #ifdef ISO 203 real xtnk(ntraciso,len)223 REAL xtnk(ntraciso,len) 204 224 #endif 205 225 … … 207 227 INTEGER i, k 208 228 #ifdef ISO 209 integerixt229 INTEGER ixt 210 230 #endif 211 231 INTEGER ihmin(len) … … 228 248 ! @ do 200 k=2,nlp 229 249 ! @ do 190 i=1,len 230 ! @ if((hm(i,k).lt.work(i)). and.231 ! @ & (hm(i,k).lt.hm(i,k-1))) then250 ! @ if((hm(i,k).lt.work(i)).AND. 251 ! @ & (hm(i,k).lt.hm(i,k-1)))THEN 232 252 ! @ work(i)=hm(i,k) 233 253 ! @ ihmin(i)=k … … 237 257 ! @ do 210 i=1,len 238 258 ! @ ihmin(i)=min(ihmin(i),nlm) 239 ! @ if(ihmin(i).le.minorig)then259 ! @ IF(ihmin(i).le.minorig)THEN 240 260 ! @ iflag(i)=6 241 261 ! @ endif … … 253 273 ! @ do 240 k=minorig+1,nl 254 274 ! @ do 230 i=1,len 255 ! @ if((hm(i,k).gt.work(i)). and.(k.le.ihmin(i)))then275 ! @ if((hm(i,k).gt.work(i)).AND.(k.le.ihmin(i)))THEN 256 276 ! @ work(i)=hm(i,k) 257 277 ! @ nk(i)=k … … 273 293 ! ------------------------------------------------------------------- 274 294 DO i = 1, len 275 IF (((t(i,nk(i))<250.0) .OR. (q(i,nk(i))<=0.0)) & ! @ & . or.(295 IF (((t(i,nk(i))<250.0) .OR. (q(i,nk(i))<=0.0)) & ! @ & .OR.( 276 296 ! p(i,ihmin(i)).lt.400.0 277 297 ! ) ) … … 296 316 qsnk(i) = qs(i, nk(i)) 297 317 #ifdef ISO 298 doixt=1,ntraciso318 DO ixt=1,ntraciso 299 319 xtnk(ixt,i) = xt(ixt,i, nk(i)) 300 320 enddo … … 323 343 ! @ do 290 k=minorig,nl 324 344 ! @ do 280 i=1,len 325 ! @ if((k.ge.(nk(i)+1)). and.(p(i,k).lt.plcl(i)))345 ! @ if((k.ge.(nk(i)+1)).AND.(p(i,k).lt.plcl(i))) 326 346 ! @ & icb(i)=min(icb(i),k) 327 347 ! @ 280 continue … … 329 349 ! @c 330 350 ! @ do 300 i=1,len 331 ! @ if((icb(i).ge.nlm). and.(iflag(i).eq.0))iflag(i)=9351 ! @ if((icb(i).ge.nlm).AND.(iflag(i).EQ.0))iflag(i)=9 332 352 ! @ 300 continue 333 353 … … 346 366 347 367 DO i = 1, len 348 ! @ if((icb(i).ge.nlm). and.(iflag(i).eq.0))iflag(i)=9368 ! @ if((icb(i).ge.nlm).AND.(iflag(i).EQ.0))iflag(i)=9 349 369 IF ((icb(i)==nlm) .AND. (iflag(i)==0)) iflag(i) = 9 350 370 END DO … … 358 378 icbmax = 2 359 379 DO i = 1, len 360 ! !icbmax=max(icbmax,icb(i))380 ! icbmax=max(icbmax,icb(i)) 361 381 IF (iflag(i)<7) icbmax = max(icbmax, icb(i)) ! sb Jun7th02 362 382 END DO 363 383 364 RETURN 384 365 385 END SUBROUTINE cv30_feed 366 386 … … 368 388 clw, icbs & 369 389 #ifdef ISO 370 &,xt,xtclw &371 #endif 372 &)390 ,xt,xtclw & 391 #endif 392 ) 373 393 374 394 #ifdef ISO … … 380 400 USE isotopes_routines_mod, ONLY: condiso_liq_ice_vectall_trac 381 401 #ifdef ISOVERIF 382 useisotopes_verif_mod, ONLY: iso_verif_traceur383 #endif 384 #endif 385 #ifdef ISOVERIF 386 useisotopes_verif_mod, ONLY: errmax,errmaxrel,Tmin_verif, &402 USE isotopes_verif_mod, ONLY: iso_verif_traceur 403 #endif 404 #endif 405 #ifdef ISOVERIF 406 USE isotopes_verif_mod, ONLY: errmax,errmaxrel,Tmin_verif, & 387 407 iso_verif_egalite_choix, iso_verif_noNaN,iso_verif_aberrant, & 388 408 iso_verif_egalite,iso_verif_egalite_choix_nostop,iso_verif_positif_nostop, & … … 391 411 #endif 392 412 #endif 393 394 USE cvthermo_mod_h, ONLY: cpd, cpv, cl, ci, rrv, rrd, lv0, lf0, g, rowl, t0, clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl & 395 , clmci, eps, epsi, epsim1, ginv, hrd, grav 413 USE cvthermo_mod_h 414 396 415 IMPLICIT NONE 397 416 … … 409 428 ! ---------------------------------------------------------------- 410 429 411 include "cv30param.h"412 430 413 431 ! inputs: … … 418 436 REAL plcl(len) ! convect3 419 437 #ifdef ISO 420 realxt(ntraciso,len,nd)438 REAL xt(ntraciso,len,nd) 421 439 #endif 422 440 … … 424 442 REAL tp(len, nd), tvp(len, nd), clw(len, nd) 425 443 #ifdef ISO 426 real xtclw(ntraciso,len,nd)427 real tg_save(len,nd)444 REAL xtclw(ntraciso,len,nd) 445 REAL tg_save(len,nd) 428 446 #endif 429 447 … … 437 455 REAL cpinv(len) ! convect3 438 456 #ifdef ISO 439 integerixt440 realzfice(len),zxtliq(ntraciso,len),zxtice(ntraciso,len)441 realq_k(len),clw_k(len),tg_k(len),xt_k(ntraciso,len)442 !#ifdef ISOVERIF 457 INTEGER ixt 458 REAL zfice(len),zxtliq(ntraciso,len),zxtice(ntraciso,len) 459 REAL q_k(len),clw_k(len),tg_k(len),xt_k(ntraciso,len) 460 !#ifdef ISOVERIF 443 461 ! integer iso_verif_positif_nostop 444 462 !#endif … … 453 471 454 472 #ifdef ISOVERIF 455 write(*,*) 'cv30_routine undilute 1 413: entree'473 WRITE(*,*) 'cv30_routine undilute 1 413: entree' 456 474 #endif 457 475 … … 493 511 494 512 ! Re-compute icbsmax (icbsmax2): !convect3 495 ! !convect3513 !convect3 496 514 icbsmax2 = 2 !convect3 497 515 DO i = 1, len !convect3 … … 507 525 clw(i, k) = 0.0 ! convect3 508 526 #ifdef ISO 509 doixt=1,ntraciso527 DO ixt=1,ntraciso 510 528 xtclw(ixt,i,k) = 0.0 511 529 enddo 512 530 513 531 #endif 514 532 END DO ! convect3 … … 548 566 denom = 243.5 + tc 549 567 denom = max(denom, 1.0) ! convect3 550 ! ori if(tc.ge.0.0)then568 ! ori IF(tc.ge.0.0)THEN 551 569 es = 6.112*exp(17.67*tc/denom) 552 570 ! ori else … … 570 588 denom = 243.5 + tc 571 589 denom = max(denom, 1.0) ! convect3 572 ! ori if(tc.ge.0.0)then590 ! ori IF(tc.ge.0.0)THEN 573 591 es = 6.112*exp(17.67*tc/denom) 574 592 ! ori else … … 602 620 #ifdef ISO 603 621 ! calcul de zfice 604 doi=1,len622 DO i=1,len 605 623 zfice(i) = 1.0-(t(i,icbs(i))-pxtice)/(pxtmelt-pxtice) 606 zfice(i) = MIN(MAX(zfice(i),0.0),1.0) 624 zfice(i) = MIN(MAX(zfice(i),0.0),1.0) 607 625 enddo 608 626 ! calcul de la composition du condensat glace et liquide 609 627 610 doi=1,len628 DO i=1,len 611 629 clw_k(i)=clw(i,icbs(i)) 612 tg_k(i)=t(i,icbs(i)) 613 doixt=1,ntraciso614 xt_k(ixt,i)=xt(ixt,i,nk(i)) 615 enddo 630 tg_k(i)=t(i,icbs(i)) 631 DO ixt=1,ntraciso 632 xt_k(ixt,i)=xt(ixt,i,nk(i)) 633 enddo 616 634 enddo 617 635 #ifdef ISOVERIF 618 write(*,*) 'cv30_routine undilute1 573: avant condiso'619 write(*,*) 't(1,1)=',t(1,1)620 doi=1,len621 calliso_verif_positif(t(i,icbs(i))-Tmin_verif, &622 &'cv30_routines 654')636 WRITE(*,*) 'cv30_routine undilute1 573: avant condiso' 637 WRITE(*,*) 't(1,1)=',t(1,1) 638 DO i=1,len 639 CALL iso_verif_positif(t(i,icbs(i))-Tmin_verif, & 640 'cv30_routines 654') 623 641 enddo 624 if (iso_HDO.gt.0) then625 doi=1,len626 if (qnk(i).gt.ridicule) then627 calliso_verif_aberrant(xt_k(iso_hdo,i)/qnk(i), &628 &'cv30_routines 576')629 endif !if (qnk(i).gt.ridicule) then630 enddo 631 endif !if (iso_HDO.gt.0) then632 ! write(*,*) 'i=1, clw_k,qnk=',clw_k(1),qnk(1)633 #endif 634 callcondiso_liq_ice_vectall(xt_k(1,1),qnk(1), &635 &clw_k(1),tg_k(1), &636 & zfice(1),zxtice(1,1),zxtliq(1,1),len)642 IF (iso_HDO.gt.0) THEN 643 DO i=1,len 644 IF (qnk(i).gt.ridicule) THEN 645 CALL iso_verif_aberrant(xt_k(iso_hdo,i)/qnk(i), & 646 'cv30_routines 576') 647 endif !if (qnk(i).gt.ridicule) THEN 648 enddo 649 endif !if (iso_HDO.gt.0) THEN 650 ! WRITE(*,*) 'i=1, clw_k,qnk=',clw_k(1),qnk(1) 651 #endif 652 CALL condiso_liq_ice_vectall(xt_k(1,1),qnk(1), & 653 clw_k(1),tg_k(1), & 654 zfice(1),zxtice(1,1),zxtliq(1,1),len) 637 655 #ifdef ISOTRAC 638 656 #ifdef ISOVERIF 639 write(*,*) 'cv30_routines 658: callcondiso_liq_ice_vectall_trac'640 #endif 641 callcondiso_liq_ice_vectall_trac(xt_k(1,1),qnk(1), &642 &clw_k(1),tg_k(1), &643 &zfice(1),zxtice(1,1),zxtliq(1,1),len)644 #endif 645 doi=1,len646 do ixt = 1, ntraciso647 xtclw(ixt,i,icbs(i))= zxtice(ixt,i)+zxtliq(ixt,i) 657 WRITE(*,*) 'cv30_routines 658: CALL condiso_liq_ice_vectall_trac' 658 #endif 659 CALL condiso_liq_ice_vectall_trac(xt_k(1,1),qnk(1), & 660 clw_k(1),tg_k(1), & 661 zfice(1),zxtice(1,1),zxtliq(1,1),len) 662 #endif 663 DO i=1,len 664 DO ixt = 1, ntraciso 665 xtclw(ixt,i,icbs(i))= zxtice(ixt,i)+zxtliq(ixt,i) 648 666 xtclw(ixt,i,icbs(i))=max(0.0,xtclw(ixt,i,icbs(i))) 649 enddo !do ixt=1,niso 650 enddo !do i=1,len 651 652 #ifdef ISOVERIF 653 write(*,*) 'cv30_routine undilute 1 598: apres condiso'654 655 if (iso_eau.gt.0) then656 doi=1,len657 calliso_verif_egalite_choix(xtclw(iso_eau,i,icbs(i)), &658 &clw(i,icbs(i)),'cv30_routines 577',errmax,errmaxrel)667 enddo !do ixt=1,niso 668 enddo !do i=1,len 669 670 #ifdef ISOVERIF 671 WRITE(*,*) 'cv30_routine undilute 1 598: apres condiso' 672 673 IF (iso_eau.gt.0) THEN 674 DO i=1,len 675 CALL iso_verif_egalite_choix(xtclw(iso_eau,i,icbs(i)), & 676 clw(i,icbs(i)),'cv30_routines 577',errmax,errmaxrel) 659 677 enddo !do i=1,len 660 endif !if (iso_eau.gt.0) then661 #ifdef ISOTRAC 662 doi=1,len663 calliso_verif_traceur(xtclw(1,i,k),'cv30_routines 603')678 endif !if (iso_eau.gt.0) THEN 679 #ifdef ISOTRAC 680 DO i=1,len 681 CALL iso_verif_traceur(xtclw(1,i,k),'cv30_routines 603') 664 682 enddo 665 683 #endif 666 684 667 685 #endif 668 686 #endif … … 716 734 denom = 243.5 + tc 717 735 denom = max(denom, 1.0) ! convect3 718 ! ori if(tc.ge.0.0)then736 ! ori IF(tc.ge.0.0)THEN 719 737 es = 6.112*exp(17.67*tc/denom) 720 738 ! ori else … … 738 756 denom = 243.5 + tc 739 757 denom = max(denom, 1.0) ! convect3 740 ! ori if(tc.ge.0.0)then758 ! ori IF(tc.ge.0.0)THEN 741 759 es = 6.112*exp(17.67*tc/denom) 742 760 ! ori else … … 772 790 773 791 #ifdef ISO 774 doi=1,len792 DO i=1,len 775 793 zfice(i) = 1.0-(t(i,icb(i)+1)-pxtice)/(pxtmelt-pxtice) 776 794 zfice(i) = MIN(MAX(zfice(i),0.0),1.0) 777 ! callcalcul_zfice(tp(i,icb(i)+1),zfice)795 ! CALL calcul_zfice(tp(i,icb(i)+1),zfice) 778 796 enddo !do i=1,len 779 doi=1,len797 DO i=1,len 780 798 clw_k(i)=clw(i,icb(i)+1) 781 799 tg_k(i)=t(i,icb(i)+1) 782 800 #ifdef ISOVERIF 783 call iso_verif_positif(tg_k(i)-Tmin_verif,'cv30_routines 750')784 #endif 785 doixt=1,ntraciso786 xt_k(ixt,i)=xt(ixt,i,nk(i)) 787 enddo 801 CALL iso_verif_positif(tg_k(i)-Tmin_verif,'cv30_routines 750') 802 #endif 803 DO ixt=1,ntraciso 804 xt_k(ixt,i)=xt(ixt,i,nk(i)) 805 enddo 788 806 enddo !do i=1,len 789 #ifdef ISOVERIF 790 write(*,*) 'cv30_routines 739: avant condiso'791 if (iso_HDO.gt.0) then792 doi=1,len793 calliso_verif_aberrant(xt_k(iso_hdo,i)/qnk(i), &794 &'cv30_routines 725')795 enddo 796 endif !if (iso_HDO.gt.0) then797 #ifdef ISOTRAC 798 doi=1,len799 calliso_verif_traceur(xtclw(1,i,k),'cv30_routines 738')807 #ifdef ISOVERIF 808 WRITE(*,*) 'cv30_routines 739: avant condiso' 809 IF (iso_HDO.gt.0) THEN 810 DO i=1,len 811 CALL iso_verif_aberrant(xt_k(iso_hdo,i)/qnk(i), & 812 'cv30_routines 725') 813 enddo 814 endif !if (iso_HDO.gt.0) THEN 815 #ifdef ISOTRAC 816 DO i=1,len 817 CALL iso_verif_traceur(xtclw(1,i,k),'cv30_routines 738') 800 818 enddo 801 #endif 802 #endif 803 callcondiso_liq_ice_vectall(xt_k(1,1),qnk(1), &804 &clw_k(1),tg_k(1), &805 & zfice(1),zxtice(1,1),zxtliq(1,1),len)819 #endif 820 #endif 821 CALL condiso_liq_ice_vectall(xt_k(1,1),qnk(1), & 822 clw_k(1),tg_k(1), & 823 zfice(1),zxtice(1,1),zxtliq(1,1),len) 806 824 #ifdef ISOTRAC 807 callcondiso_liq_ice_vectall_trac(xt_k(1,1),qnk(1), &808 &clw_k(1),tg_k(1), &809 & zfice(1),zxtice(1,1),zxtliq(1,1),len)810 #endif 811 doi=1,len812 doixt = 1, ntraciso813 xtclw(ixt,i,icb(i)+1)=zxtice(ixt,i)+zxtliq(ixt,i) 825 CALL condiso_liq_ice_vectall_trac(xt_k(1,1),qnk(1), & 826 clw_k(1),tg_k(1), & 827 zfice(1),zxtice(1,1),zxtliq(1,1),len) 828 #endif 829 DO i=1,len 830 DO ixt = 1, ntraciso 831 xtclw(ixt,i,icb(i)+1)=zxtice(ixt,i)+zxtliq(ixt,i) 814 832 xtclw(ixt,i,icb(i)+1)=max(0.0,xtclw(ixt,i,icb(i)+1)) 815 833 enddo !do ixt = 1, niso 816 834 enddo !do i=1,len 817 835 818 #ifdef ISOVERIF 819 ! write(*,*) 'DEBUG ISO B'820 doi=1,len821 if (iso_eau.gt.0) then822 calliso_verif_egalite_choix(xtclw(iso_eau,i,icb(i)+1), &823 & clw(i,icb(i)+1),'cv30_routines 708',errmax,errmaxrel)824 endif ! if (iso_eau.gt.0) then825 #ifdef ISOTRAC 826 calliso_verif_traceur(xtclw(1,i,icb(i)+1), &827 &'cv30_routines 760')828 #endif 836 #ifdef ISOVERIF 837 !WRITE(*,*) 'DEBUG ISO B' 838 DO i=1,len 839 IF (iso_eau.gt.0) THEN 840 CALL iso_verif_egalite_choix(xtclw(iso_eau,i,icb(i)+1), & 841 clw(i,icb(i)+1),'cv30_routines 708',errmax,errmaxrel) 842 endif ! if (iso_eau.gt.0) THEN 843 #ifdef ISOTRAC 844 CALL iso_verif_traceur(xtclw(1,i,icb(i)+1), & 845 'cv30_routines 760') 846 #endif 829 847 enddo !do i=1,len 830 ! write(*,*) 'FIN DEBUG ISO B'831 #endif 832 #endif 833 834 RETURN 848 !WRITE(*,*) 'FIN DEBUG ISO B' 849 #endif 850 #endif 851 852 835 853 END SUBROUTINE cv30_undilute1 836 854 … … 854 872 ! ------------------------------------------------------------------- 855 873 856 include "cv30param.h" 874 857 875 858 876 ! input: … … 901 919 ! oct3 ath = th(i,icb(i)-1) - dttrig 902 920 ! oct3 903 ! oct3 if (tdif.lt.dtcrit . or. ath.gt.ath1) then921 ! oct3 if (tdif.lt.dtcrit .OR. ath.gt.ath1) THEN 904 922 ! oct3 do 60 k=1,nl 905 923 ! oct3 sig(i,k) = beta*sig(i,k) - 2.*alpha*tdif*tdif … … 909 927 ! oct3 iflag(i)=4 ! pour version vectorisee 910 928 ! oct3c convect3 iflag(i)=0 911 ! oct3cccc return929 ! oct3cccc RETURN 912 930 ! oct3 endif 913 931 ! oct3 … … 936 954 ! fin oct3 -- 937 955 938 RETURN 956 939 957 END SUBROUTINE cv30_trigger 940 958 … … 943 961 th1, tra1, h1, lv1, cpn1, p1, ph1, tv1, tp1, tvp1, clw1, sig1, w01, & 944 962 iflag, nk, icb, icbs, plcl, tnk, qnk, gznk, pbase, buoybase, t, q, qs, u, & 945 v, gz, th, tra, h, lv, cpn, p, ph, tv, tp, tvp, clw, sig, w0 & 946 #ifdef ISO 947 &,xtnk1,xt1,xtclw1 &948 &,xtnk,xt,xtclw &949 #endif 950 &)963 v, gz, th, tra, h, lv, cpn, p, ph, tv, tp, tvp, clw, sig, w0 & 964 #ifdef ISO 965 ,xtnk1,xt1,xtclw1 & 966 ,xtnk,xt,xtclw & 967 #endif 968 ) 951 969 USE print_control_mod, ONLY: lunout 952 970 #ifdef ISO 953 useinfotrac_phy, ONLY: ntraciso=>ntiso954 useisotopes_mod, ONLY: essai_convergence, iso_eau,iso_HDO955 #ifdef ISOVERIF 956 useisotopes_verif_mod, ONLY: errmax,errmaxrel,Tmin_verif, &971 USE infotrac_phy, ONLY: ntraciso=>ntiso 972 USE isotopes_mod, ONLY: essai_convergence, iso_eau,iso_HDO 973 #ifdef ISOVERIF 974 USE isotopes_verif_mod, ONLY: errmax,errmaxrel,Tmin_verif, & 957 975 iso_verif_egalite_choix, iso_verif_noNaN,iso_verif_aberrant, & 958 976 iso_verif_egalite,iso_verif_egalite_choix_nostop,iso_verif_positif_nostop, & … … 963 981 IMPLICIT NONE 964 982 965 include "cv30param.h" 983 966 984 967 985 ! inputs: … … 979 997 #ifdef ISO 980 998 !integer niso 981 realxt1(ntraciso,len,nd), xtclw1(ntraciso,len,nd)982 realxtnk1(ntraciso,len)999 REAL xt1(ntraciso,len,nd), xtclw1(ntraciso,len,nd) 1000 REAL xtnk1(ntraciso,len) 983 1001 #endif 984 1002 … … 996 1014 REAL tra(nloc, nd, ntra) 997 1015 #ifdef ISO 998 realxt(ntraciso,nloc,nd), xtclw(ntraciso,nloc,nd)999 realxtnk(ntraciso,nloc)1016 REAL xt(ntraciso,nloc,nd), xtclw(ntraciso,nloc,nd) 1017 REAL xtnk(ntraciso,nloc) 1000 1018 #endif 1001 1019 … … 1003 1021 INTEGER i, k, nn, j 1004 1022 #ifdef ISO 1005 integerixt1023 INTEGER ixt 1006 1024 #endif 1007 1025 … … 1011 1029 #ifdef ISO 1012 1030 ! initialisation des champs compresses: 1013 dok=1,nd1014 doi=1,nloc1015 if (essai_convergence) then1031 DO k=1,nd 1032 DO i=1,nloc 1033 IF (essai_convergence) THEN 1016 1034 else 1017 1035 q(i,k)=0.0 1018 1036 clw(i,k)=0.0 ! mise en commentaire le 5 avril pour verif 1019 1037 ! convergence 1020 endif !f (negation(essai_convergence)) then1021 doixt=1,ntraciso1038 endif !f (negation(essai_convergence)) THEN 1039 DO ixt=1,ntraciso 1022 1040 xt(ixt,i,k)=0.0 1023 1041 xtclw(ixt,i,k)=0.0 1024 enddo !do ixt=1,niso 1042 enddo !do ixt=1,niso 1025 1043 enddo !do i=1,len 1026 1044 enddo !do k=1,nd 1027 ! write(*,*) 'q(1,1),xt(iso_eau,1,1)=',q(1,1),xt(iso_eau,1,1)1045 ! WRITE(*,*) 'q(1,1),xt(iso_eau,1,1)=',q(1,1),xt(iso_eau,1,1) 1028 1046 #endif 1029 1047 … … 1052 1070 th(nn, k) = th1(i, k) 1053 1071 #ifdef ISO 1054 doixt = 1, ntraciso1072 DO ixt = 1, ntraciso 1055 1073 xt(ixt,nn,k)=xt1(ixt,i,k) 1056 1074 xtclw(ixt,nn,k)=xtclw1(ixt,i,k) 1057 1075 enddo 1058 ! write(*,*) 'nn,i,k,q(nn,k),xt(iso_eau,nn,k)=', &1076 ! WRITE(*,*) 'nn,i,k,q(nn,k),xt(iso_eau,nn,k)=', & 1059 1077 ! & nn,i,k,q(nn, k),xt(ixt,nn,k) 1060 1078 #endif … … 1067 1085 ! nn=0 1068 1086 ! do 101 i=1,len 1069 ! if(iflag1(i).eq.0)then1087 ! IF(iflag1(i).EQ.0)THEN 1070 1088 ! nn=nn+1 1071 1089 ! tra(nn,k,j)=tra1(i,k,j) 1072 ! endif1090 ! END IF 1073 1091 ! 101 continue 1074 1092 ! 111 continue … … 1096 1114 iflag(nn) = iflag1(i) 1097 1115 #ifdef ISO 1098 doixt=1,ntraciso1116 DO ixt=1,ntraciso 1099 1117 xtnk(ixt,nn) = xtnk1(ixt,i) 1100 1118 enddo … … 1105 1123 #ifdef ISO 1106 1124 #ifdef ISOVERIF 1107 if (iso_eau.gt.0) then1108 dok = 1, nd1109 do i = 1, nloc1110 ! write(*,*) 'i,k=',i,k1111 calliso_verif_egalite_choix(xtclw(iso_eau,i,k),clw(i,k), &1112 &'compress 973',errmax,errmaxrel)1113 calliso_verif_egalite_choix(xt(iso_eau,i,k),q(i,k), &1114 &'compress 975',errmax,errmaxrel)1125 IF (iso_eau.gt.0) THEN 1126 DO k = 1, nd 1127 DO i = 1, nloc 1128 !WRITE(*,*) 'i,k=',i,k 1129 CALL iso_verif_egalite_choix(xtclw(iso_eau,i,k),clw(i,k), & 1130 'compress 973',errmax,errmaxrel) 1131 CALL iso_verif_egalite_choix(xt(iso_eau,i,k),q(i,k), & 1132 'compress 975',errmax,errmaxrel) 1115 1133 enddo 1116 1134 enddo 1117 endif !if (iso_eau.gt.0) then1118 dok = 1, nd1119 doi = 1, nn1120 call iso_verif_positif(q(i,k),'compress 1004')1135 endif !if (iso_eau.gt.0) THEN 1136 DO k = 1, nd 1137 DO i = 1, nn 1138 CALL iso_verif_positif(q(i,k),'compress 1004') 1121 1139 enddo 1122 enddo 1123 #endif 1124 #endif 1125 1126 1127 RETURN 1140 enddo 1141 #endif 1142 #endif 1143 1144 1145 1128 1146 END SUBROUTINE cv30_compress 1129 1147 … … 1132 1150 ep, sigp, buoy & 1133 1151 #ifdef ISO 1134 &,xtnk,xt,xtclw &1135 #endif 1136 &)1152 ,xtnk,xt,xtclw & 1153 #endif 1154 ) 1137 1155 ! epmax_cape: ajout arguments 1138 #ifdef ISO 1139 use infotrac_phy, ONLY: ntraciso=>ntiso 1156 USE conema3_mod_h 1157 #ifdef ISO 1158 USE infotrac_phy, ONLY: ntraciso=>ntiso 1140 1159 USE isotopes_mod, ONLY: pxtmelt,pxtice,pxtmin,pxtmax,cond_temp_env, iso_eau,iso_HDO 1141 1160 USE isotopes_routines_mod, ONLY: condiso_liq_ice_vectall … … 1147 1166 #endif 1148 1167 #ifdef ISOVERIF 1149 useisotopes_verif_mod, ONLY: errmax,errmaxrel,Tmin_verif,Tmax_verif, &1168 USE isotopes_verif_mod, ONLY: errmax,errmaxrel,Tmin_verif,Tmax_verif, & 1150 1169 iso_verif_egalite_choix, iso_verif_noNaN,iso_verif_aberrant, & 1151 1170 iso_verif_egalite,iso_verif_egalite_choix_nostop,iso_verif_positif_nostop, & … … 1154 1173 #endif 1155 1174 #endif 1156 USE cvthermo_mod_h, ONLY: cpd, cpv, cl, ci, rrv, rrd, lv0, lf0, g, rowl, t0, clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl & 1157 , clmci, eps, epsi, epsim1, ginv, hrd, grav 1175 USE cvthermo_mod_h 1158 1176 IMPLICIT NONE 1159 1177 … … 1173 1191 ! - vertical profile of buoyancy computed here (use of buoybase) 1174 1192 ! - the determination of inb is different 1175 ! - no inb1, onlyinb in output1193 ! - no inb1, ONLY inb in output 1176 1194 ! --------------------------------------------------------------------- 1177 1178 include "cv30param.h"1179 include "conema3.h"1180 1195 1181 1196 ! inputs: … … 1202 1217 1203 1218 #ifdef ISO 1204 realxt(ntraciso,nloc,nd), xtclw(ntraciso,nloc,nd)1205 realxtnk(ntraciso,nloc)1219 REAL xt(ntraciso,nloc,nd), xtclw(ntraciso,nloc,nd) 1220 REAL xtnk(ntraciso,nloc) 1206 1221 ! real xtep(ntraciso,nloc,nd) ! le 7 mai: on supprime xtep, car pas besoin 1207 1222 ! la chute de precip ne fractionne pas. 1208 integerixt1209 realzfice(nloc),zxtliq(ntraciso,nloc),zxtice(ntraciso,nloc)1210 realclw_k(nloc),tg_k(nloc)1211 #ifdef ISOVERIF 1212 realqg_save(nloc,nd) ! inout1223 INTEGER ixt 1224 REAL zfice(nloc),zxtliq(ntraciso,nloc),zxtice(ntraciso,nloc) 1225 REAL clw_k(nloc),tg_k(nloc) 1226 #ifdef ISOVERIF 1227 REAL qg_save(nloc,nd) ! inout 1213 1228 !integer iso_verif_positif_nostop 1214 #endif 1229 #endif 1215 1230 #endif 1216 1231 … … 1249 1264 DO k = minorig + 1, nl 1250 1265 DO i = 1, ncum 1251 ! ori if(k.ge.(icb(i)+1))then1266 ! ori IF(k.ge.(icb(i)+1))THEN 1252 1267 IF (k>=(icbs(i)+1)) THEN ! convect3 1253 1268 tg = t(i, k) 1254 1269 qg = qs(i, k) 1255 ! debug 1270 ! debug alv=lv0-clmcpv*(t(i,k)-t0) 1256 1271 alv = lv0 - clmcpv*(t(i,k)-273.15) 1257 1272 1258 1273 ! First iteration. 1259 1274 1260 ! ori 1275 ! ori s=cpd+alv*alv*qg/(rrv*t(i,k)*t(i,k)) 1261 1276 s = cpd*(1.-qnk(i)) + cl*qnk(i) & ! convect3 1262 1277 +alv*alv*qg/(rrv*t(i,k)*t(i,k)) ! convect3 1263 1278 s = 1./s 1264 ! ori 1279 ! ori ahg=cpd*tg+(cl-cpd)*qnk(i)*t(i,k)+alv*qg+gz(i,k) 1265 1280 ahg = cpd*tg + (cl-cpd)*qnk(i)*tg + alv*qg + gz(i, k) ! convect3 1266 1281 tg = tg + s*(ah0(i)-ahg) 1267 ! ori 1268 ! debug 1282 ! ori tg=max(tg,35.0) 1283 ! debug tc=tg-t0 1269 1284 tc = tg - 273.15 1270 1285 denom = 243.5 + tc 1271 1286 denom = max(denom, 1.0) ! convect3 1272 ! ori if(tc.ge.0.0)then1287 ! ori IF(tc.ge.0.0)THEN 1273 1288 es = 6.112*exp(17.67*tc/denom) 1274 ! ori 1275 ! ori 1276 ! ori 1289 ! ori else 1290 ! ori es=exp(23.33086-6111.72784/tg+0.15215*log(tg)) 1291 ! ori endif 1277 1292 qg = eps*es/(p(i,k)-es*(1.-eps)) 1278 1293 ! qg=max(0.0,qg) ! C Risi … … 1280 1295 ! Second iteration. 1281 1296 1282 ! ori 1283 ! ori 1284 ! ori 1297 ! ori s=cpd+alv*alv*qg/(rrv*t(i,k)*t(i,k)) 1298 ! ori s=1./s 1299 ! ori ahg=cpd*tg+(cl-cpd)*qnk(i)*t(i,k)+alv*qg+gz(i,k) 1285 1300 ahg = cpd*tg + (cl-cpd)*qnk(i)*tg + alv*qg + gz(i, k) ! convect3 1286 1301 tg = tg + s*(ah0(i)-ahg) 1287 ! ori 1288 ! debug 1302 ! ori tg=max(tg,35.0) 1303 ! debug tc=tg-t0 1289 1304 tc = tg - 273.15 1290 1305 denom = 243.5 + tc 1291 1306 denom = max(denom, 1.0) ! convect3 1292 ! ori if(tc.ge.0.0)then1307 ! ori IF(tc.ge.0.0)THEN 1293 1308 es = 6.112*exp(17.67*tc/denom) 1294 ! ori 1295 ! ori 1296 ! ori 1309 ! ori else 1310 ! ori es=exp(23.33086-6111.72784/tg+0.15215*log(tg)) 1311 ! ori endif 1297 1312 qg = eps*es/(p(i,k)-es*(1.-eps)) 1298 1313 ! qg=max(0.0,qg) ! C Risi 1299 1314 1300 ! debug 1315 ! debug alv=lv0-clmcpv*(t(i,k)-t0) 1301 1316 alv = lv0 - clmcpv*(t(i,k)-273.15) 1302 ! print*,'cpd dans convect2 ',cpd1303 ! print*,'tp(i,k),ah0(i),cl,cpd,qnk(i),t(i,k),gz(i,k),alv,qg,cpd'1304 ! print*,tp(i,k),ah0(i),cl,cpd,qnk(i),t(i,k),gz(i,k),alv,qg,cpd1317 ! PRINT*,'cpd dans convect2 ',cpd 1318 ! PRINT*,'tp(i,k),ah0(i),cl,cpd,qnk(i),t(i,k),gz(i,k),alv,qg,cpd' 1319 ! PRINT*,tp(i,k),ah0(i),cl,cpd,qnk(i),t(i,k),gz(i,k),alv,qg,cpd 1305 1320 1306 1321 ! ori c approximation here: … … 1322 1337 #ifdef ISO 1323 1338 ! calcul de zfice 1324 doi=1,ncum1339 DO i=1,ncum 1325 1340 zfice(i) = 1.0-(t(i,k)-pxtice)/(pxtmelt-pxtice) 1326 zfice(i) = MIN(MAX(zfice(i),0.0),1.0) 1341 zfice(i) = MIN(MAX(zfice(i),0.0),1.0) 1327 1342 enddo 1328 doi=1,ncum1343 DO i=1,ncum 1329 1344 clw_k(i)=clw(i,k) 1330 1345 tg_k(i)=t(i,k) 1331 1346 enddo !do i=1,ncum 1332 1347 #ifdef ISOVERIF 1333 ! write(*,*) 'cv30_routine 1259: avant condiso'1334 if (iso_HDO.gt.0) then1335 doi=1,ncum1336 calliso_verif_aberrant(xtnk(iso_hdo,i)/qnk(i), &1337 &'cv30_routines 1231')1338 enddo 1339 endif !if (iso_HDO.gt.0) then1340 if (iso_eau.gt.0) then1341 doi=1,ncum1342 calliso_verif_egalite(xtnk(iso_eau,i),qnk(i), &1343 &'cv30_routines 1373')1344 enddo 1345 endif !if (iso_HDO.gt.0) then1346 doi=1,ncum1347 if((iso_verif_positif_nostop(qnk(i)-clw_k(i), &1348 & 'cv30_routines 1275').eq.1).or. &1349 &(iso_verif_positif_nostop(tg_k(i)-Tmin_verif, &1350 & 'cv30_routines 1297a').eq.1).or. &1351 &(iso_verif_positif_nostop(Tmax_verif-tg_k(i), &1352 & 'cv30_routines 1297b').eq.1)) then1353 write(*,*) 'i,k,qnk,clw_k=',i,k,qnk(i),clw_k(i)1354 write(*,*) 'tg,t,qg=',tg_k(i),t(i,k),qg_save(i,k)1355 write(*,*) 'icbs(i)=',icbs(i)1348 !WRITE(*,*) 'cv30_routine 1259: avant condiso' 1349 IF (iso_HDO.gt.0) THEN 1350 DO i=1,ncum 1351 CALL iso_verif_aberrant(xtnk(iso_hdo,i)/qnk(i), & 1352 'cv30_routines 1231') 1353 enddo 1354 endif !if (iso_HDO.gt.0) THEN 1355 IF (iso_eau.gt.0) THEN 1356 DO i=1,ncum 1357 CALL iso_verif_egalite(xtnk(iso_eau,i),qnk(i), & 1358 'cv30_routines 1373') 1359 enddo 1360 endif !if (iso_HDO.gt.0) THEN 1361 DO i=1,ncum 1362 IF ((iso_verif_positif_nostop(qnk(i)-clw_k(i), & 1363 'cv30_routines 1275').EQ.1).OR. & 1364 (iso_verif_positif_nostop(tg_k(i)-Tmin_verif, & 1365 'cv30_routines 1297a').EQ.1).OR. & 1366 (iso_verif_positif_nostop(Tmax_verif-tg_k(i), & 1367 'cv30_routines 1297b').EQ.1)) THEN 1368 WRITE(*,*) 'i,k,qnk,clw_k=',i,k,qnk(i),clw_k(i) 1369 WRITE(*,*) 'tg,t,qg=',tg_k(i),t(i,k),qg_save(i,k) 1370 WRITE(*,*) 'icbs(i)=',icbs(i) 1356 1371 stop 1357 1372 endif ! if ((iso_verif_positif_nostop 1358 enddo !do i=1,ncum1359 #ifdef ISOTRAC1360 do i=1,ncum1361 call iso_verif_traceur(xtnk(1,i),'cv30_routines 1251')1362 1373 enddo !do i=1,ncum 1363 #endif1364 #endif1365 call condiso_liq_ice_vectall(xtnk(1,1),qnk(1), &1366 & clw_k(1),tg_k(1), &1367 & zfice(1),zxtice(1,1),zxtliq(1,1),ncum)1368 1374 #ifdef ISOTRAC 1369 #ifdef ISOVERIF 1370 write(*,*) 'cv30_routines 1283: condiso pour traceurs' 1371 #endif 1372 call condiso_liq_ice_vectall_trac(xtnk(1,1),qnk(1), & 1373 & clw_k(1),tg_k(1), & 1374 & zfice(1),zxtice(1,1),zxtliq(1,1),ncum) 1375 #endif 1376 do i=1,ncum 1377 do ixt=1,ntraciso 1375 DO i=1,ncum 1376 CALL iso_verif_traceur(xtnk(1,i),'cv30_routines 1251') 1377 enddo !do i=1,ncum 1378 #endif 1379 #endif 1380 CALL condiso_liq_ice_vectall(xtnk(1,1),qnk(1), & 1381 clw_k(1),tg_k(1), & 1382 zfice(1),zxtice(1,1),zxtliq(1,1),ncum) 1383 #ifdef ISOTRAC 1384 #ifdef ISOVERIF 1385 WRITE(*,*) 'cv30_routines 1283: condiso pour traceurs' 1386 #endif 1387 CALL condiso_liq_ice_vectall_trac(xtnk(1,1),qnk(1), & 1388 clw_k(1),tg_k(1), & 1389 zfice(1),zxtice(1,1),zxtliq(1,1),ncum) 1390 #endif 1391 DO i=1,ncum 1392 DO ixt=1,ntraciso 1378 1393 xtclw(ixt,i,k)=zxtice(ixt,i)+zxtliq(ixt,i) 1379 1394 xtclw(ixt,i,k)=max(0.0,xtclw(ixt,i,k)) … … 1381 1396 enddo !do i=1,ncum 1382 1397 #ifdef ISOVERIF 1383 if (iso_eau.gt.0) then1384 do i=1,ncum1385 calliso_verif_egalite_choix(xtclw(iso_eau,i,k), &1386 &clw(i,k),'cv30_routines 1223',errmax,errmaxrel)1398 IF (iso_eau.gt.0) THEN 1399 DO i=1,ncum 1400 CALL iso_verif_egalite_choix(xtclw(iso_eau,i,k), & 1401 clw(i,k),'cv30_routines 1223',errmax,errmaxrel) 1387 1402 enddo 1388 endif !if (iso_eau.gt.0) then1389 #ifdef ISOTRAC 1390 doi=1,ncum1391 calliso_verif_traceur(xtclw(1,i,k),'cv30_routines 1275')1403 endif !if (iso_eau.gt.0) THEN 1404 #ifdef ISOTRAC 1405 DO i=1,ncum 1406 CALL iso_verif_traceur(xtclw(1,i,k),'cv30_routines 1275') 1392 1407 enddo 1393 #endif 1394 #endif 1408 #endif 1409 #endif 1395 1410 #endif 1396 1411 END DO … … 1410 1425 ep(i, k) = amin1(ep(i,k), epmax) 1411 1426 sigp(i, k) = spfac 1412 ! ori if(k.ge.(nk(i)+1))then1427 ! ori IF(k.ge.(nk(i)+1))THEN 1413 1428 ! ori tca=tp(i,k)-t0 1414 ! ori if(tca.ge.0.0)then1429 ! ori IF(tca.ge.0.0)THEN 1415 1430 ! ori elacrit=elcrit 1416 1431 ! ori else … … 1436 1451 ! ori do 340 k=minorig+1,nl 1437 1452 ! ori do 330 i=1,ncum 1438 ! ori if(k.ge.(icb(i)+1))then1453 ! ori IF(k.ge.(icb(i)+1))THEN 1439 1454 ! ori tvp(i,k)=tvp(i,k)*(1.0-qnk(i)+ep(i,k)*clw(i,k)) 1440 ! oric print*,'i,k,tvp(i,k),qnk(i),ep(i,k),clw(i,k)'1441 ! oric print*, i,k,tvp(i,k),qnk(i),ep(i,k),clw(i,k)1455 ! oric PRINT*,'i,k,tvp(i,k),qnk(i),ep(i,k),clw(i,k)' 1456 ! oric PRINT*, i,k,tvp(i,k),qnk(i),ep(i,k),clw(i,k) 1442 1457 ! ori endif 1443 1458 ! ori 330 continue … … 1513 1528 ! do 530 k=minorig+1,nl-1 1514 1529 ! do 520 i=1,ncum 1515 ! if(k.ge.(icb(i)+1))then1530 ! IF(k.ge.(icb(i)+1))THEN 1516 1531 ! by=(tvp(i,k)-tv(i,k))*dph(i,k)/p(i,k) 1517 1532 ! byp=(tvp(i,k+1)-tv(i,k+1))*dph(i,k+1)/p(i,k+1) 1518 1533 ! cape(i)=cape(i)+by 1519 ! if(by.ge.0.0)inb1(i)=k+11520 ! if(cape(i).gt.0.0)then1534 ! IF(by.ge.0.0)inb1(i)=k+1 1535 ! IF(cape(i).gt.0.0)THEN 1521 1536 ! inb(i)=k+1 1522 1537 ! capem(i)=cape(i) 1523 ! endif1524 ! endif1538 ! END IF 1539 ! END IF 1525 1540 ! 520 continue 1526 1541 ! 530 continue … … 1537 1552 ! K Emanuel fix 1538 1553 1539 ! callzilch(byp,ncum)1554 ! CALL zilch(byp,ncum) 1540 1555 ! do 530 k=minorig+1,nl-1 1541 1556 ! do 520 i=1,ncum 1542 ! if(k.ge.(icb(i)+1))then1557 ! IF(k.ge.(icb(i)+1))THEN 1543 1558 ! by=(tvp(i,k)-tv(i,k))*dph(i,k)/p(i,k) 1544 1559 ! cape(i)=cape(i)+by 1545 ! if(by.ge.0.0)inb1(i)=k+11546 ! if(cape(i).gt.0.0)then1560 ! IF(by.ge.0.0)inb1(i)=k+1 1561 ! IF(cape(i).gt.0.0)THEN 1547 1562 ! inb(i)=k+1 1548 1563 ! capem(i)=cape(i) 1549 1564 ! byp(i)=(tvp(i,k+1)-tv(i,k+1))*dph(i,k+1)/p(i,k+1) 1550 ! endif1551 ! endif1565 ! END IF 1566 ! END IF 1552 1567 ! 520 continue 1553 1568 ! 530 continue … … 1564 1579 ! J Teixeira fix 1565 1580 1566 ! ori callzilch(byp,ncum)1581 ! ori CALL zilch(byp,ncum) 1567 1582 ! ori do 515 i=1,ncum 1568 ! ori lcape(i)=. true.1583 ! ori lcape(i)=.TRUE. 1569 1584 ! ori 515 continue 1570 1585 ! ori do 530 k=minorig+1,nl-1 1571 1586 ! ori do 520 i=1,ncum 1572 ! ori if(cape(i).lt.0.0)lcape(i)=.false.1573 ! ori if((k.ge.(icb(i)+1)). and.lcape(i))then1587 ! ori IF(cape(i).lt.0.0)lcape(i)=.FALSE. 1588 ! ori if((k.ge.(icb(i)+1)).AND.lcape(i))THEN 1574 1589 ! ori by=(tvp(i,k)-tv(i,k))*dph(i,k)/p(i,k) 1575 1590 ! ori byp(i)=(tvp(i,k+1)-tv(i,k+1))*dph(i,k+1)/p(i,k+1) 1576 1591 ! ori cape(i)=cape(i)+by 1577 ! ori if(by.ge.0.0)inb1(i)=k+11578 ! ori if(cape(i).gt.0.0)then1592 ! ori IF(by.ge.0.0)inb1(i)=k+1 1593 ! ori IF(cape(i).gt.0.0)THEN 1579 1594 ! ori inb(i)=k+1 1580 1595 ! ori capem(i)=cape(i) … … 1615 1630 END DO 1616 1631 1617 RETURN 1632 1618 1633 END SUBROUTINE cv30_undilute2 1619 1634 1620 1635 SUBROUTINE cv30_closure(nloc, ncum, nd, icb, inb, pbase, p, ph, tv, buoy, & 1621 1636 sig, w0, cape, m) 1622 USE cvthermo_mod_h , ONLY: cpd, cpv, cl, ci, rrv, rrd, lv0, lf0, g, rowl, t0, clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl &1623 , clmci, eps, epsi, epsim1, ginv, hrd, grav 1637 USE cvthermo_mod_h 1638 1624 1639 IMPLICIT NONE 1625 1640 … … 1629 1644 ! vectorization: S. Bony 1630 1645 ! =================================================================== 1631 1632 include "cv30param.h"1633 1646 1634 1647 ! input: … … 1697 1710 END DO 1698 1711 1699 ! ! if(inb.lt.(nl-1))then1700 ! !do 85 i=inb+1,nl-11701 ! !sig(i)=beta*sig(i)+2.*alpha*buoy(inb)*1702 ! !1 abs(buoy(inb))1703 ! !sig(i)=amax1(sig(i),0.0)1704 ! !w0(i)=beta*w0(i)1705 ! !85 continue1706 ! !end if1707 1708 ! !do 87 i=1,icb1709 ! !sig(i)=beta*sig(i)-2.*alpha*buoy(icb)*buoy(icb)1710 ! !sig(i)=amax1(sig(i),0.0)1711 ! !w0(i)=beta*w0(i)1712 ! !87 continue1712 ! IF(inb.lt.(nl-1))THEN 1713 ! do 85 i=inb+1,nl-1 1714 ! sig(i)=beta*sig(i)+2.*alpha*buoy(inb)* 1715 ! 1 abs(buoy(inb)) 1716 ! sig(i)=amax1(sig(i),0.0) 1717 ! w0(i)=beta*w0(i) 1718 ! 85 continue 1719 ! end if 1720 1721 ! do 87 i=1,icb 1722 ! sig(i)=beta*sig(i)-2.*alpha*buoy(icb)*buoy(icb) 1723 ! sig(i)=amax1(sig(i),0.0) 1724 ! w0(i)=beta*w0(i) 1725 ! 87 continue 1713 1726 1714 1727 ! ------------------------------------------------------------- … … 1793 1806 1794 1807 1795 ! !cape=0.01796 ! !do 98 i=icb+1,inb1797 ! !deltap = min(pbase,ph(i-1))-min(pbase,ph(i))1798 ! !cape=cape+rrd*buoy(i-1)*deltap/p(i-1)1799 ! !dcape=rrd*buoy(i-1)*deltap/p(i-1)1800 ! !dlnp=deltap/p(i-1)1801 ! !cape=amax1(0.0,cape)1802 ! !sigold=sig(i)1803 1804 ! !dtmin=100.01805 ! !do 97 j=icb,i-11806 ! !dtmin=amin1(dtmin,buoy(j))1807 ! !97 continue1808 1809 ! !sig(i)=beta*sig(i)+alpha*dtmin*abs(dtmin)1810 ! !sig(i)=amax1(sig(i),0.0)1811 ! !sig(i)=amin1(sig(i),0.01)1812 ! !fac=amin1(((dtcrit-dtmin)/dtcrit),1.0)1813 ! !w=(1.-beta)*fac*sqrt(cape)+beta*w0(i)1814 ! !amu=0.5*(sig(i)+sigold)*w1815 ! !m(i)=amu*0.007*p(i)*(ph(i)-ph(i+1))/tv(i)1816 ! !w0(i)=w1817 ! !98 continue1818 ! !w0(icb)=0.5*w0(icb+1)1819 ! !m(icb)=0.5*m(icb+1)*(ph(icb)-ph(icb+1))/(ph(icb+1)-ph(icb+2))1820 ! !sig(icb)=sig(icb+1)1821 ! !sig(icb-1)=sig(icb)1822 1823 RETURN 1808 ! cape=0.0 1809 ! do 98 i=icb+1,inb 1810 ! deltap = min(pbase,ph(i-1))-min(pbase,ph(i)) 1811 ! cape=cape+rrd*buoy(i-1)*deltap/p(i-1) 1812 ! dcape=rrd*buoy(i-1)*deltap/p(i-1) 1813 ! dlnp=deltap/p(i-1) 1814 ! cape=amax1(0.0,cape) 1815 ! sigold=sig(i) 1816 1817 ! dtmin=100.0 1818 ! do 97 j=icb,i-1 1819 ! dtmin=amin1(dtmin,buoy(j)) 1820 ! 97 continue 1821 1822 ! sig(i)=beta*sig(i)+alpha*dtmin*abs(dtmin) 1823 ! sig(i)=amax1(sig(i),0.0) 1824 ! sig(i)=amin1(sig(i),0.01) 1825 ! fac=amin1(((dtcrit-dtmin)/dtcrit),1.0) 1826 ! w=(1.-beta)*fac*sqrt(cape)+beta*w0(i) 1827 ! amu=0.5*(sig(i)+sigold)*w 1828 ! m(i)=amu*0.007*p(i)*(ph(i)-ph(i+1))/tv(i) 1829 ! w0(i)=w 1830 ! 98 continue 1831 ! w0(icb)=0.5*w0(icb+1) 1832 ! m(icb)=0.5*m(icb+1)*(ph(icb)-ph(icb+1))/(ph(icb+1)-ph(icb+2)) 1833 ! sig(icb)=sig(icb+1) 1834 ! sig(icb-1)=sig(icb) 1835 1836 1824 1837 END SUBROUTINE cv30_closure 1825 1838 … … 1828 1841 vent, sij, elij, ments, qents, traent & 1829 1842 #ifdef ISO 1830 &,xt,xtnk,xtclw &1831 &,xtent,xtelij &1832 #endif 1833 &)1834 1835 #ifdef ISO 1836 useinfotrac_phy, ONLY: ntraciso=>ntiso,niso,itZonIso1843 ,xt,xtnk,xtclw & 1844 ,xtent,xtelij & 1845 #endif 1846 ) 1847 1848 #ifdef ISO 1849 USE infotrac_phy, ONLY: ntraciso=>ntiso,niso,itZonIso 1837 1850 USE isotopes_mod, ONLY: pxtmelt,pxtice,pxtmin,pxtmax, iso_eau,iso_HDO, & 1838 1851 ridicule 1839 1852 USE isotopes_routines_mod, ONLY: condiso_liq_ice_vectall 1840 1853 #ifdef ISOVERIF 1841 useisotopes_verif_mod, ONLY: errmax,errmaxrel,Tmin_verif,deltalim, &1854 USE isotopes_verif_mod, ONLY: errmax,errmaxrel,Tmin_verif,deltalim, & 1842 1855 iso_verif_egalite_choix,iso_verif_aberrant_choix, iso_verif_noNaN, & 1843 1856 iso_verif_aberrant, & … … 1847 1860 #endif 1848 1861 #ifdef ISOTRAC 1849 use isotrac_mod, only: option_tmin,option_traceurs,seuil_tag_tmin, &1862 USE isotrac_mod, ONLY: option_tmin,option_traceurs,seuil_tag_tmin, & 1850 1863 & option_cond,index_zone,izone_cond,index_iso 1851 use isotrac_routines_mod, only: iso_recolorise_condensation1852 use isotopes_routines_mod, only: condiso_liq_ice_vectall_trac1853 #ifdef ISOVERIF 1854 useisotopes_verif_mod, ONLY: iso_verif_trac17_q_deltad,iso_verif_traceur, &1864 USE isotrac_routines_mod, ONLY: iso_recolorise_condensation 1865 USE isotopes_routines_mod, ONLY: condiso_liq_ice_vectall_trac 1866 #ifdef ISOVERIF 1867 USE isotopes_verif_mod, ONLY: iso_verif_trac17_q_deltad,iso_verif_traceur, & 1855 1868 & iso_verif_traceur_justmass 1856 1869 #endif 1857 1870 #endif 1858 1871 #endif 1859 USE cvthermo_mod_h, ONLY: cpd, cpv, cl, ci, rrv, rrd, lv0, lf0, g, rowl, t0, clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl & 1860 , clmci, eps, epsi, epsim1, ginv, hrd, grav 1872 USE cvthermo_mod_h 1873 1861 1874 IMPLICIT NONE 1862 1875 … … 1866 1879 ! - vectorisation de la partie normalisation des flux (do 789...) 1867 1880 ! --------------------------------------------------------------------- 1868 1869 include "cv30param.h"1870 1881 1871 1882 ! inputs: … … 1882 1893 REAL m(nloc, na) ! input of convect3 1883 1894 #ifdef ISO 1884 realxt(ntraciso,nloc,na), xtclw(ntraciso,nloc,na)1885 realtg_save(nloc,nd)1886 realxtnk(ntraciso,nloc)1895 REAL xt(ntraciso,nloc,na), xtclw(ntraciso,nloc,na) 1896 REAL tg_save(nloc,nd) 1897 REAL xtnk(ntraciso,nloc) 1887 1898 ! real xtep(ntraciso,nloc,na) 1888 1899 #endif … … 1896 1907 REAL sigij(nloc, nd, nd) 1897 1908 #ifdef ISO 1898 realxtent(ntraciso,nloc,nd,nd)1899 real xtelij(ntraciso,nloc,nd,nd)1909 REAL xtent(ntraciso,nloc,nd,nd) 1910 REAL xtelij(ntraciso,nloc,nd,nd) 1900 1911 #endif 1901 1912 … … 1912 1923 LOGICAL lwork(nloc) 1913 1924 #ifdef ISO 1914 integerixt1915 realxtrti(ntraciso,nloc)1916 realxtres(ntraciso)1925 INTEGER ixt 1926 REAL xtrti(ntraciso,nloc) 1927 REAL xtres(ntraciso) 1917 1928 ! on ajoute la dimension nloc a xtrti pour verifs dans les tags: 5 fev 1918 1929 ! 2010 1919 realzfice(nloc),zxtliq(ntraciso,nloc),zxtice(ntraciso,nloc)1930 REAL zfice(nloc),zxtliq(ntraciso,nloc),zxtice(ntraciso,nloc) 1920 1931 ! real xt_reduit(ntraciso) 1921 ! logicalnegation1932 ! LOGICAL negation 1922 1933 !#ifdef ISOVERIF 1923 1934 ! integer iso_verif_positif_nostop … … 1930 1941 #ifdef ISO 1931 1942 #ifdef ISOVERIF 1932 write(*,*) 'cv30_routines 1820: entree dans cv3_mixing'1933 if (iso_eau.gt.0) then1934 calliso_verif_egalite_vect2D( &1935 &xtclw,clw, &1936 &'cv30_mixing 1841',ntraciso,nloc,na)1943 WRITE(*,*) 'cv30_routines 1820: entree dans cv3_mixing' 1944 IF (iso_eau.gt.0) THEN 1945 CALL iso_verif_egalite_vect2D( & 1946 xtclw,clw, & 1947 'cv30_mixing 1841',ntraciso,nloc,na) 1937 1948 endif 1938 1949 #endif … … 1965 1976 1966 1977 #ifdef ISO 1967 doj=1,nd1968 dok=1,nd1969 doi=1,ncum1970 doixt =1,ntraciso1978 DO j=1,nd 1979 DO k=1,nd 1980 DO i=1,ncum 1981 DO ixt =1,ntraciso 1971 1982 xtent(ixt,i,k,j)=xt(ixt,i,j) 1972 1983 xtelij(ixt,i,k,j)=0.0 … … 1975 1986 ! valeurs en nd=nl+1 ne sont pas utilisees 1976 1987 qent(i,k,j)=rr(i,j) 1977 elij(i,k,j)=0.0 1988 elij(i,k,j)=0.0 1978 1989 enddo !do i=1,ncum 1979 1990 enddo !do k=1,nl 1980 enddo !do j=1,nl 1991 enddo !do j=1,nl 1981 1992 #endif 1982 1993 … … 2039 2050 ! !!! traent(il,i,j,k)=sij(il,i,j)*tra(il,i,k) 2040 2051 ! !!! : +(1.-sij(il,i,j))*tra(il,nk(il),k) 2041 ! !!! end do2052 ! !!! END DO 2042 2053 elij(il, i, j) = altem 2043 2054 elij(il, i, j) = amax1(0.0, elij(il,i,j)) … … 2053 2064 #ifdef ISO 2054 2065 #ifdef ISOVERIF 2055 ! write(*,*) 'cv30_routines tmp 2078'2056 #endif 2057 doil=1,ncum2066 !WRITE(*,*) 'cv30_routines tmp 2078' 2067 #endif 2068 DO il=1,ncum 2058 2069 zfice(il) = 1.0-(t(il,j)-pxtice)/(pxtmelt-pxtice) 2059 zfice(il) = MIN(MAX(zfice(il),0.0),1.0) 2060 if( (i.ge.icb(il)).and.(i.le.inb(il)).and. &2061 & (j.ge.(icb(il)-1)).and.(j.le.inb(il)))then2062 doixt=1,ntraciso2070 zfice(il) = MIN(MAX(zfice(il),0.0),1.0) 2071 IF( (i.ge.icb(il)).AND.(i.le.inb(il)).AND. & 2072 (j.ge.(icb(il)-1)).AND.(j.le.inb(il)))THEN 2073 DO ixt=1,ntraciso 2063 2074 ! xtrti(ixt)=xt(ixt,il,1)-xtep(ixt,il,i)*xtclw(ixt,il,i) ! le 7 mai: on supprime xtep 2064 xtrti(ixt,il)=xt(ixt,il,1)-ep(il,i)*xtclw(ixt,il,i) 2075 xtrti(ixt,il)=xt(ixt,il,1)-ep(il,i)*xtclw(ixt,il,i) 2065 2076 enddo 2066 if(sij(il,i,j).gt.0.0.and.sij(il,i,j).lt.0.95)then2077 IF(sij(il,i,j).gt.0.0.AND.sij(il,i,j).lt.0.95)THEN 2067 2078 ! temperature of condensation (within mixtures): 2068 ! tcond(il)=t(il,j) 2069 ! : + ( sij(il,i,j)*rr(il,i)+(1.-sij(il,i,j))*rti 2079 ! tcond(il)=t(il,j) 2080 ! : + ( sij(il,i,j)*rr(il,i)+(1.-sij(il,i,j))*rti 2070 2081 ! : - elij(il,i,j) - rs(il,j) ) 2071 2082 ! : / ( cpd*(bf2-1.0)/lv(il,j) ) 2072 2073 doixt = 1, ntraciso2083 2084 DO ixt = 1, ntraciso 2074 2085 ! total mixing ratio in the mixtures before precipitation: 2075 2086 xtent(ixt,il,i,j)=sij(il,i,j)*xt(ixt,il,i) & 2076 &+(1.-sij(il,i,j))*xtrti(ixt,il)2087 +(1.-sij(il,i,j))*xtrti(ixt,il) 2077 2088 enddo !do ixt = 1, ntraciso 2078 endif ! if(sij(il,i,j).gt.0.0.and.sij(il,i,j).lt.0.95)then2079 endif ! if( (i.ge.icb(il)).and.(i.le.inb(il)).and.2080 enddo !do il=1,ncum 2081 2082 callcondiso_liq_ice_vectall(xtent(1,1,i,j),qent(1,i,j), &2083 &elij(1,i,j), &2084 &t(1,j),zfice(1),zxtice(1,1),zxtliq(1,1),ncum)2089 endif !IF(sij(il,i,j).gt.0.0.AND.sij(il,i,j).lt.0.95)THEN 2090 endif !IF( (i.ge.icb(il)).AND.(i.le.inb(il)).AND. 2091 enddo !do il=1,ncum 2092 2093 CALL condiso_liq_ice_vectall(xtent(1,1,i,j),qent(1,i,j), & 2094 elij(1,i,j), & 2095 t(1,j),zfice(1),zxtice(1,1),zxtliq(1,1),ncum) 2085 2096 #ifdef ISOTRAC 2086 callcondiso_liq_ice_vectall_trac(xtent(1,1,i,j),qent(1,i,j), &2087 &elij(1,i,j), &2088 & t(1,j),zfice(1),zxtice(1,1),zxtliq(1,1),ncum)2089 #ifdef ISOVERIF 2090 doil=1,ncum2091 calliso_verif_traceur(xt(1,il,i),'cv30_routines 1967')2092 if( (i.ge.icb(il)).and.(i.le.inb(il)).and. &2093 & (j.ge.(icb(il)-1)).and.(j.le.inb(il)))then2094 calliso_verif_traceur(xtrti(1,il),'cv30_routines 1968')2095 endif ! if( (i.ge.icb(il)).and.(i.le.inb(il)).and.2096 calliso_verif_traceur(xtent(1,il,i,j),'cv30_routines 1969')2097 2097 CALL condiso_liq_ice_vectall_trac(xtent(1,1,i,j),qent(1,i,j), & 2098 elij(1,i,j), & 2099 t(1,j),zfice(1),zxtice(1,1),zxtliq(1,1),ncum) 2100 #ifdef ISOVERIF 2101 DO il=1,ncum 2102 CALL iso_verif_traceur(xt(1,il,i),'cv30_routines 1967') 2103 IF( (i.ge.icb(il)).AND.(i.le.inb(il)).AND. & 2104 (j.ge.(icb(il)-1)).AND.(j.le.inb(il)))THEN 2105 CALL iso_verif_traceur(xtrti(1,il),'cv30_routines 1968') 2106 endif !IF( (i.ge.icb(il)).AND.(i.le.inb(il)).AND. 2107 CALL iso_verif_traceur(xtent(1,il,i,j),'cv30_routines 1969') 2108 2098 2109 enddo !do il=1,ncum 2099 #endif 2100 #endif 2101 doil=1,ncum2102 doixt = 1, ntraciso2110 #endif 2111 #endif 2112 DO il=1,ncum 2113 DO ixt = 1, ntraciso 2103 2114 xtelij(ixt,il,i,j)=zxtice(ixt,il)+zxtliq(ixt,il) 2104 2115 enddo !do ixt = 1, ntraciso … … 2106 2117 2107 2118 #ifdef ISOVERIF 2108 if ((j.eq.15).and.(i.eq.15)) then2119 IF ((j.EQ.15).AND.(i.EQ.15)) THEN 2109 2120 il=2722 2110 if (il.le.ncum) then2111 write(*,*) 'cv30_routines tmp 2194, il,i,j=',il,i,j2112 write(*,*) 'qent,elij=',qent(il,i,j),elij(il,i,j)2113 write(*,*) 'tgsave,zfice=',t(il,j),zfice(il)2114 write(*,*) 'deltaDqent=',deltaD(xtent(iso_HDO,il,i,j)/qent(il,i,j))2115 write(*,*) 'deltaDelij=',deltaD(xtelij(iso_HDO,il,i,j)/elij(il,i,j))2116 write(*,*) 'deltaDice=',deltaD(zxtice(iso_HDO,il)/(zfice(il)*elij(il,i,j)))2117 write(*,*) 'deltaDliq=',deltaD(zxtliq(iso_HDO,il)/(1.0-zfice(il)*elij(il,i,j)))2121 IF (il.le.ncum) THEN 2122 WRITE(*,*) 'cv30_routines tmp 2194, il,i,j=',il,i,j 2123 WRITE(*,*) 'qent,elij=',qent(il,i,j),elij(il,i,j) 2124 WRITE(*,*) 'tgsave,zfice=',t(il,j),zfice(il) 2125 WRITE(*,*) 'deltaDqent=',deltaD(xtent(iso_HDO,il,i,j)/qent(il,i,j)) 2126 WRITE(*,*) 'deltaDelij=',deltaD(xtelij(iso_HDO,il,i,j)/elij(il,i,j)) 2127 WRITE(*,*) 'deltaDice=',deltaD(zxtice(iso_HDO,il)/(zfice(il)*elij(il,i,j))) 2128 WRITE(*,*) 'deltaDliq=',deltaD(zxtliq(iso_HDO,il)/(1.0-zfice(il)*elij(il,i,j))) 2118 2129 endif 2119 2130 endif 2120 2131 #endif 2121 2132 2122 #ifdef ISOTRAC 2123 ! write(*,*) 'cv30_routines tmp 1987,option_traceurs=',2133 #ifdef ISOTRAC 2134 ! WRITE(*,*) 'cv30_routines tmp 1987,option_traceurs=', 2124 2135 ! : option_traceurs 2125 if (option_tmin.ge.1) then2126 do il=1,ncum2127 ! write(*,*) 'cv3 tmp 1991 il,i,j,xtent(:,il,i,j),',2136 IF (option_tmin.ge.1) THEN 2137 DO il=1,ncum 2138 ! WRITE(*,*) 'cv3 tmp 1991 il,i,j,xtent(:,il,i,j),', 2128 2139 ! : 'tcond(il),rs(il,j)=', 2129 2140 ! : il,i,j,xtent(:,il,i,j),tcond(il),rs(il,j) 2130 2141 ! colorier la vapeur residuelle selon temperature de 2131 2142 ! condensation, et le condensat en un tag spEcifique 2132 if ((elij(il,i,j).gt.0.0).and.(qent(il,i,j).gt.0.0)) then2133 if (option_traceurs.eq.17) then2134 calliso_recolorise_condensation(qent(il,i,j),elij(il,i,j), &2135 &xtent(1,il,i,j),xtelij(1,il,i,j),t(1,j), &2136 &0.0,xtres, &2137 &seuil_tag_tmin)2138 else !if (option_traceurs. eq.17) then2139 ! write(*,*) 'cv3 2002: il,i,j =',il,i,j2140 calliso_recolorise_condensation(qent(il,i,j),elij(il,i,j), &2141 &xtent(1,il,i,j),xtelij(1,il,i,j),rs(il,j),0.0,xtres, &2142 &seuil_tag_tmin)2143 endif !if (option_traceurs. eq.17) then2144 doixt=1+niso,ntraciso2143 IF ((elij(il,i,j).gt.0.0).AND.(qent(il,i,j).gt.0.0)) THEN 2144 IF (option_traceurs.EQ.17) THEN 2145 CALL iso_recolorise_condensation(qent(il,i,j),elij(il,i,j), & 2146 xtent(1,il,i,j),xtelij(1,il,i,j),t(1,j), & 2147 0.0,xtres, & 2148 seuil_tag_tmin) 2149 else !if (option_traceurs.EQ.17) THEN 2150 ! WRITE(*,*) 'cv3 2002: il,i,j =',il,i,j 2151 CALL iso_recolorise_condensation(qent(il,i,j),elij(il,i,j), & 2152 xtent(1,il,i,j),xtelij(1,il,i,j),rs(il,j),0.0,xtres, & 2153 seuil_tag_tmin) 2154 endif !if (option_traceurs.EQ.17) THEN 2155 DO ixt=1+niso,ntraciso 2145 2156 xtent(ixt,il,i,j)=xtres(ixt) 2146 enddo 2147 endif !if (cond.gt.0.0) then2157 enddo 2158 endif !if (cond.gt.0.0) THEN 2148 2159 enddo !do il=1,ncum 2149 2160 #ifdef ISOVERIF 2150 do il=1,ncum2151 calliso_verif_traceur(xtent(1,il,i,j),'cv30_routines 1996')2152 calliso_verif_traceur(xtelij(1,il,i,j),'cv30_routines 1997')2153 calliso_verif_trac17_q_deltaD(xtent(1,il,i,j), &2154 &'cv30_routines 2042')2155 enddo !do il=1,ncum 2156 #endif 2157 endif !if (option_tmin.ge.1) then2161 DO il=1,ncum 2162 CALL iso_verif_traceur(xtent(1,il,i,j),'cv30_routines 1996') 2163 CALL iso_verif_traceur(xtelij(1,il,i,j),'cv30_routines 1997') 2164 CALL iso_verif_trac17_q_deltaD(xtent(1,il,i,j), & 2165 'cv30_routines 2042') 2166 enddo !do il=1,ncum 2167 #endif 2168 endif !if (option_tmin.ge.1) THEN 2158 2169 #endif 2159 2170 2160 2171 ! fractionation: 2161 #ifdef ISOVERIF 2162 ! write(*,*) 'cv30_routines 2050: avant condiso'2163 doil=1,ncum2164 if ((i.ge.icb(il)).and.(i.le.inb(il)).and. &2165 & (j.ge.(icb(il)-1)).and.(j.le.inb(il))) then2166 if (sij(il,i,j).gt.0.0.and.sij(il,i,j).lt.0.95) then2167 if (iso_eau.gt.0) then2168 calliso_verif_egalite_choix(xtent(iso_eau,il,i,j), &2169 & qent(il,i,j),'cv30_routines 1889',errmax,errmaxrel)2170 calliso_verif_egalite_choix(xtelij(iso_eau,il,i,j), &2171 & elij(il,i,j),'cv30_routines 1890',errmax,errmaxrel)2172 #ifdef ISOVERIF 2173 ! WRITE(*,*) 'cv30_routines 2050: avant condiso' 2174 DO il=1,ncum 2175 IF ((i.ge.icb(il)).AND.(i.le.inb(il)).AND. & 2176 (j.ge.(icb(il)-1)).AND.(j.le.inb(il))) THEN 2177 IF (sij(il,i,j).gt.0.0.AND.sij(il,i,j).lt.0.95) THEN 2178 IF (iso_eau.gt.0) THEN 2179 CALL iso_verif_egalite_choix(xtent(iso_eau,il,i,j), & 2180 qent(il,i,j),'cv30_routines 1889',errmax,errmaxrel) 2181 CALL iso_verif_egalite_choix(xtelij(iso_eau,il,i,j), & 2182 elij(il,i,j),'cv30_routines 1890',errmax,errmaxrel) 2172 2183 endif 2173 if (iso_HDO.gt.0) then2174 calliso_verif_aberrant_choix(xt(iso_HDO,il,i),rr(il,i), &2175 & ridicule,deltalim,'cv30_routines 1997')2176 calliso_verif_aberrant_choix( &2177 &xtent(iso_HDO,il,i,j),qent(il,i,j), &2178 &ridicule,deltalim,'cv30_routines 1931')2179 calliso_verif_aberrant_choix( &2180 &xtelij(iso_HDO,il,i,j),elij(il,i,j), &2181 &ridicule,deltalim,'cv30_routines 1993')2182 endif !if (iso_HDO.gt.0) then2183 #ifdef ISOTRAC 2184 ! write(*,*) 'cv30_routines tmp 2039 il=',il2185 calliso_verif_traceur(xtent(1,il,i,j), &2186 &'cv30_routines 2031')2187 calliso_verif_traceur(xtelij(1,il,i,j), &2188 &'cv30_routines 2033')2189 #endif 2190 2191 endif ! if(sij(il,i,j).gt.0.0.and.sij(il,i,j).lt.0.95)then2192 endif ! if( (i.ge.icb(il)).and.(i.le.inb(il)).and.2184 IF (iso_HDO.gt.0) THEN 2185 CALL iso_verif_aberrant_choix(xt(iso_HDO,il,i),rr(il,i), & 2186 ridicule,deltalim,'cv30_routines 1997') 2187 CALL iso_verif_aberrant_choix( & 2188 xtent(iso_HDO,il,i,j),qent(il,i,j), & 2189 ridicule,deltalim,'cv30_routines 1931') 2190 CALL iso_verif_aberrant_choix( & 2191 xtelij(iso_HDO,il,i,j),elij(il,i,j), & 2192 ridicule,deltalim,'cv30_routines 1993') 2193 endif !if (iso_HDO.gt.0) THEN 2194 #ifdef ISOTRAC 2195 ! WRITE(*,*) 'cv30_routines tmp 2039 il=',il 2196 CALL iso_verif_traceur(xtent(1,il,i,j), & 2197 'cv30_routines 2031') 2198 CALL iso_verif_traceur(xtelij(1,il,i,j), & 2199 'cv30_routines 2033') 2200 #endif 2201 2202 endif !IF(sij(il,i,j).gt.0.0.AND.sij(il,i,j).lt.0.95)THEN 2203 endif !IF( (i.ge.icb(il)).AND.(i.le.inb(il)).AND. 2193 2204 enddo !do il=1,ncum 2194 2205 #endif 2195 ! write(*,*) 'cv30_routine tmp 1984: cond=',elij(il,i,j)2196 2197 2206 ! WRITE(*,*) 'cv30_routine tmp 1984: cond=',elij(il,i,j) 2207 2208 2198 2209 #endif 2199 2210 … … 2203 2214 ! do j=minorig,nl 2204 2215 ! do il=1,ncum 2205 ! if( (i.ge.icb(il)).and.(i.le.inb(il)).and.2206 ! : (j.ge.(icb(il)-1)). and.(j.le.inb(il)))then2216 ! IF( (i.ge.icb(il)).AND.(i.le.inb(il)).AND. 2217 ! : (j.ge.(icb(il)-1)).AND.(j.le.inb(il)))THEN 2207 2218 ! traent(il,i,j,k)=sij(il,i,j)*tra(il,i,k) 2208 2219 ! : +(1.-sij(il,i,j))*tra(il,nk(il),k) 2209 ! endif2220 ! END IF 2210 2221 ! enddo 2211 2222 ! enddo … … 2223 2234 DO il = 1, ncum 2224 2235 IF ((i>=icb(il)) .AND. (i<=inb(il)) .AND. (nent(il,i)==0)) THEN 2225 ! @ if(nent(il,i).eq.0)then2236 ! @ IF(nent(il,i).EQ.0)THEN 2226 2237 ment(il, i, i) = m(il, i) 2227 2238 qent(il, i, i) = rr(il, nk(il)) - ep(il, i)*clw(il, i) … … 2232 2243 sij(il, i, i) = 0.0 2233 2244 #ifdef ISO 2234 doixt = 1, ntraciso2245 DO ixt = 1, ntraciso 2235 2246 xtent(ixt,il,i,i)=xt(ixt,il,nk(il))-ep(il,i)*xtclw(ixt,il,i) 2236 ! xtent(ixt,il,i,i)=xt(ixt,il,nk(il))-xtep(ixt,il,i)*xtclw(ixt,il,i) 2247 ! xtent(ixt,il,i,i)=xt(ixt,il,nk(il))-xtep(ixt,il,i)*xtclw(ixt,il,i) 2237 2248 ! le 7 mai: on supprime xtep 2238 2249 xtelij(ixt,il,i,i)=xtclw(ixt,il,i) ! rq: ne sera pas utilise ensuite … … 2240 2251 2241 2252 #ifdef ISOVERIF 2242 if (iso_eau.gt.0) then2243 calliso_verif_egalite_choix(xtelij(iso_eau,il,i,i), &2244 & elij(il,i,i),'cv30_mixing 2117',errmax,errmaxrel)2245 endif !if (iso_eau.gt.0) then2246 #endif 2247 2248 #ifdef ISOTRAC 2249 if (option_tmin.ge.1) then2253 IF (iso_eau.gt.0) THEN 2254 CALL iso_verif_egalite_choix(xtelij(iso_eau,il,i,i), & 2255 elij(il,i,i),'cv30_mixing 2117',errmax,errmaxrel) 2256 endif !if (iso_eau.gt.0) THEN 2257 #endif 2258 2259 #ifdef ISOTRAC 2260 IF (option_tmin.ge.1) THEN 2250 2261 ! colorier la vapeur residuelle selon temperature de 2251 2262 ! condensation, et le condensat en un tag specifique 2252 ! write(*,*) 'cv3 tmp 2095 il,i,j,xtent(:,il,i,j)=',2263 ! WRITE(*,*) 'cv3 tmp 2095 il,i,j,xtent(:,il,i,j)=', 2253 2264 ! : il,i,j,xtent(:,il,i,j) 2254 if ((elij(il,i,i).gt.0.0).and.(qent(il,i,i).gt.0.0)) then2255 if (option_traceurs.eq.17) then2256 calliso_recolorise_condensation(qent(il,i,i), &2257 &elij(il,i,i), &2258 &xt(1,il,nk(il)),xtclw(1,il,i),t(il,i),ep(il,i), &2259 &xtres, &2260 &seuil_tag_tmin)2261 else !if (option_traceurs. eq.17) then2262 calliso_recolorise_condensation(qent(il,i,i), &2263 &elij(il,i,i), &2264 &xt(1,il,nk(il)),xtclw(1,il,i),rs(il,i),ep(il,i), &2265 &xtres, &2266 &seuil_tag_tmin)2267 endif !if (option_traceurs. eq.17) then2268 doixt=1+niso,ntraciso2265 IF ((elij(il,i,i).gt.0.0).AND.(qent(il,i,i).gt.0.0)) THEN 2266 IF (option_traceurs.EQ.17) THEN 2267 CALL iso_recolorise_condensation(qent(il,i,i), & 2268 elij(il,i,i), & 2269 xt(1,il,nk(il)),xtclw(1,il,i),t(il,i),ep(il,i), & 2270 xtres, & 2271 seuil_tag_tmin) 2272 else !if (option_traceurs.EQ.17) THEN 2273 CALL iso_recolorise_condensation(qent(il,i,i), & 2274 elij(il,i,i), & 2275 xt(1,il,nk(il)),xtclw(1,il,i),rs(il,i),ep(il,i), & 2276 xtres, & 2277 seuil_tag_tmin) 2278 endif !if (option_traceurs.EQ.17) THEN 2279 DO ixt=1+niso,ntraciso 2269 2280 xtent(ixt,il,i,i)=xtres(ixt) 2270 2281 enddo 2271 #ifdef ISOVERIF 2272 doixt=1,niso2273 calliso_verif_egalite_choix(xtres(ixt),xtent(ixt,il,i,i), &2274 &'cv30_routines 2102',errmax,errmaxrel)2275 calliso_verif_trac17_q_deltaD(xtent(1,il,i,j), &2276 &'cv30_routines 2154')2282 #ifdef ISOVERIF 2283 DO ixt=1,niso 2284 CALL iso_verif_egalite_choix(xtres(ixt),xtent(ixt,il,i,i), & 2285 'cv30_routines 2102',errmax,errmaxrel) 2286 CALL iso_verif_trac17_q_deltaD(xtent(1,il,i,j), & 2287 'cv30_routines 2154') 2277 2288 enddo 2278 #endif 2279 endif !if (cond.gt.0.0) then 2280 2281 #ifdef ISOVERIF 2282 call iso_verif_egalite_choix(xtent(iso_eau,il,i,i), & 2283 & qent(il,i,i),'cv30_routines 2103',errmax,errmaxrel) 2284 call iso_verif_traceur(xtent(1,il,i,i),'cv30_routines 2095') 2285 call iso_verif_traceur(xtelij(1,il,i,i),'cv30_routines 2096') 2286 #endif 2287 endif !if (option_tmin.ge.1) then 2289 #endif 2290 endif !if (cond.gt.0.0) THEN 2291 #ifdef ISOVERIF 2292 CALL iso_verif_egalite_choix(xtent(iso_eau,il,i,i), & 2293 qent(il,i,i),'cv30_routines 2103',errmax,errmaxrel) 2294 CALL iso_verif_traceur(xtent(1,il,i,i),'cv30_routines 2095') 2295 CALL iso_verif_traceur(xtelij(1,il,i,i),'cv30_routines 2096') 2296 #endif 2297 endif !if (option_tmin.ge.1) THEN 2288 2298 #endif 2289 2299 … … 2296 2306 ! do i=minorig+1,nl 2297 2307 ! do il=1,ncum 2298 ! if (i.ge.icb(il) . and. i.le.inb(il) .and. nent(il,i).eq.0) then2308 ! if (i.ge.icb(il) .AND. i.le.inb(il) .AND. nent(il,i).EQ.0) THEN 2299 2309 ! traent(il,i,i,j)=tra(il,nk(il),j) 2300 ! endif2310 ! END IF 2301 2311 ! enddo 2302 2312 ! enddo … … 2322 2332 ! ===================================================================== 2323 2333 2324 ! ym callzilch(asum,ncum*nd)2325 ! ym callzilch(bsum,ncum*nd)2326 ! ym callzilch(csum,ncum*nd)2334 ! ym CALL zilch(asum,ncum*nd) 2335 ! ym CALL zilch(bsum,ncum*nd) 2336 ! ym CALL zilch(csum,ncum*nd) 2327 2337 CALL zilch(asum, nloc*nd) 2328 2338 CALL zilch(csum, nloc*nd) … … 2466 2476 sij(il, i, i) = 0.0 2467 2477 #ifdef ISO 2468 doixt = 1, ntraciso2478 DO ixt = 1, ntraciso 2469 2479 ! xtent(ixt,il,i,i)=xt(ixt,il,1)-xtep(ixt,il,i)*xtclw(ixt,il,i) 2470 2480 xtent(ixt,il,i,i)=xt(ixt,il,1)-ep(il,i)*xtclw(ixt,il,i) … … 2474 2484 2475 2485 #ifdef ISOVERIF 2476 if (iso_eau.gt.0) then2477 calliso_verif_egalite_choix(xtelij(iso_eau,il,i,i), &2478 & elij(il,i,i),'cv30_mixing 2354',errmax,errmaxrel)2479 endif !if (iso_eau.gt.0) then2480 #endif 2481 2482 #ifdef ISOTRAC 2483 if (option_tmin.ge.1) then2486 IF (iso_eau.gt.0) THEN 2487 CALL iso_verif_egalite_choix(xtelij(iso_eau,il,i,i), & 2488 elij(il,i,i),'cv30_mixing 2354',errmax,errmaxrel) 2489 endif !if (iso_eau.gt.0) THEN 2490 #endif 2491 2492 #ifdef ISOTRAC 2493 IF (option_tmin.ge.1) THEN 2484 2494 ! colorier la vapeur residuelle selon temperature de 2485 2495 ! condensation, et le condensat en un tag specifique 2486 ! write(*,*) 'cv3 tmp 2314 il,i,j,xtent(:,il,i,j)=',2496 ! WRITE(*,*) 'cv3 tmp 2314 il,i,j,xtent(:,il,i,j)=', 2487 2497 ! : il,i,j,xtent(:,il,i,j) 2488 if ((elij(il,i,i).gt.0.0).and.(qent(il,i,i).gt.0.0)) then2489 if (option_traceurs.eq.17) then2490 calliso_recolorise_condensation(qent(il,i,i), &2491 &elij(il,i,i), &2492 &xt(1,il,1),xtclw(1,il,i),t(il,i),ep(il,i), &2493 &xtres, &2494 &seuil_tag_tmin)2495 else !if (option_traceurs. eq.17) then2496 calliso_recolorise_condensation(qent(il,i,i), &2497 &elij(il,i,i), &2498 &xt(1,il,1),xtclw(1,il,i),rs(il,i),ep(il,i), &2499 &xtres, &2500 &seuil_tag_tmin)2501 endif ! if (option_traceurs. eq.17) then2502 doixt=1+niso,ntraciso2498 IF ((elij(il,i,i).gt.0.0).AND.(qent(il,i,i).gt.0.0)) THEN 2499 IF (option_traceurs.EQ.17) THEN 2500 CALL iso_recolorise_condensation(qent(il,i,i), & 2501 elij(il,i,i), & 2502 xt(1,il,1),xtclw(1,il,i),t(il,i),ep(il,i), & 2503 xtres, & 2504 seuil_tag_tmin) 2505 else !if (option_traceurs.EQ.17) THEN 2506 CALL iso_recolorise_condensation(qent(il,i,i), & 2507 elij(il,i,i), & 2508 xt(1,il,1),xtclw(1,il,i),rs(il,i),ep(il,i), & 2509 xtres, & 2510 seuil_tag_tmin) 2511 endif ! if (option_traceurs.EQ.17) THEN 2512 DO ixt=1+niso,ntraciso 2503 2513 xtent(ixt,il,i,i)=xtres(ixt) 2504 enddo2505 #ifdef ISOVERIF2506 do ixt=1,niso2507 call iso_verif_egalite_choix(xtres(ixt),xtent(ixt,il,i,i), &2508 & 'cv30_routines 2318',errmax,errmaxrel)2509 call iso_verif_trac17_q_deltaD(xtent(1,il,i,j), &2510 & 'cv30_routines 2383')2511 2514 enddo 2512 #endif 2513 endif !if (cond.gt.0.0) then 2514 #ifdef ISOVERIF 2515 call iso_verif_egalite_choix(xtent(iso_eau,il,i,i), & 2516 & qent(il,i,i),'cv30_routines 2321',errmax,errmaxrel) 2517 call iso_verif_traceur(xtent(1,il,i,i),'cv30_routines 2322') 2518 call iso_verif_traceur(xtelij(1,il,i,i),'cv30_routines 2323') 2519 #endif 2520 endif !if (option_tmin.ge.1) then 2515 #ifdef ISOVERIF 2516 DO ixt=1,niso 2517 CALL iso_verif_egalite_choix(xtres(ixt),xtent(ixt,il,i,i), & 2518 'cv30_routines 2318',errmax,errmaxrel) 2519 CALL iso_verif_trac17_q_deltaD(xtent(1,il,i,j), & 2520 'cv30_routines 2383') 2521 enddo 2522 #endif 2523 endif !if (cond.gt.0.0) THEN 2524 #ifdef ISOVERIF 2525 CALL iso_verif_egalite_choix(xtent(iso_eau,il,i,i), & 2526 qent(il,i,i),'cv30_routines 2321',errmax,errmaxrel) 2527 CALL iso_verif_traceur(xtent(1,il,i,i),'cv30_routines 2322') 2528 CALL iso_verif_traceur(xtelij(1,il,i,i),'cv30_routines 2323') 2529 #endif 2530 endif !if (option_tmin.ge.1) THEN 2521 2531 #endif 2522 2532 END IF … … 2525 2535 ! do j=1,ntra 2526 2536 ! do il=1,ncum 2527 ! if ( i.ge.icb(il) . and. i.le.inb(il) .and. lwork(il)2528 ! : . and. csum(il,i).lt.m(il,i) ) then2537 ! if ( i.ge.icb(il) .AND. i.le.inb(il) .AND. lwork(il) 2538 ! : .AND. csum(il,i).lt.m(il,i) ) THEN 2529 2539 ! traent(il,i,i,j)=tra(il,nk(il),j) 2530 ! endif2540 ! END IF 2531 2541 ! enddo 2532 2542 ! enddo … … 2565 2575 !c--debug 2566 2576 #ifdef ISOVERIF 2567 doim = 1, nd2568 dojm = 1, nd2569 doil = 1, ncum2570 if (iso_eau.gt.0) then2571 calliso_verif_egalite_choix(xtelij(iso_eau,il,im,jm), &2572 &elij(il,im,jm),'cv30_mixing 2110',errmax,errmaxrel)2573 call iso_verif_egalite_choix(xtent(iso_eau,il,im,jm), &2574 &qent(il,im,jm),'cv30_mixing 2112',errmax,errmaxrel)2575 endif !if (iso_eau.gt.0) then2577 DO im = 1, nd 2578 DO jm = 1, nd 2579 DO il = 1, ncum 2580 IF (iso_eau.gt.0) THEN 2581 CALL iso_verif_egalite_choix(xtelij(iso_eau,il,im,jm), & 2582 elij(il,im,jm),'cv30_mixing 2110',errmax,errmaxrel) 2583 CALL iso_verif_egalite_choix(xtent(iso_eau,il,im,jm), & 2584 qent(il,im,jm),'cv30_mixing 2112',errmax,errmaxrel) 2585 endif !if (iso_eau.gt.0) THEN 2576 2586 #ifdef ISOTRAC 2577 call iso_verif_traceur_justmass(xtelij(1,il,im,jm), &2578 &'cv30_routine 2250')2579 #endif 2587 CALL iso_verif_traceur_justmass(xtelij(1,il,im,jm), & 2588 'cv30_routine 2250') 2589 #endif 2580 2590 enddo !do il = 1, nloc 2581 2591 enddo !do jm = 1, klev 2582 2592 enddo !do im = 1, klev 2583 2593 #endif 2584 #endif 2594 #endif 2585 2595 2586 2596 #ifdef ISO 2587 2597 #ifdef ISOTRAC 2588 2598 ! seulement a la fin on taggue le condensat 2589 if (option_cond.ge.1) then2590 doim = 1, nd2591 dojm = 1, nd2592 do il = 1, ncum2599 IF (option_cond.ge.1) THEN 2600 DO im = 1, nd 2601 DO jm = 1, nd 2602 DO il = 1, ncum 2593 2603 ! colorier le condensat en un tag specifique 2594 doixt=niso+1,ntraciso2595 if (index_zone(ixt).eq.izone_cond) then2604 DO ixt=niso+1,ntraciso 2605 IF (index_zone(ixt).EQ.izone_cond) THEN 2596 2606 xtelij(ixt,il,im,jm)=xtelij(index_iso(ixt),il,im,jm) 2597 else !if (index_zone(ixt). eq.izone_cond) then2607 else !if (index_zone(ixt).EQ.izone_cond) THEN 2598 2608 xtelij(ixt,il,im,jm)=0.0 2599 endif !if (index_zone(ixt). eq.izone_cond) then2600 enddo !do ixt=1,ntraciso 2601 #ifdef ISOVERIF 2602 calliso_verif_egalite_choix(xtelij(iso_eau,il,im,jm), &2603 &elij(il,im,jm),'cv30_routines 2408',errmax,errmaxrel)2604 calliso_verif_traceur(xtelij(1,il,im,jm), &2605 &'condiso_liq_ice_vectiso_trac 358')2606 #endif 2607 enddo !do il = 1, ncum 2609 endif !if (index_zone(ixt).EQ.izone_cond) THEN 2610 enddo !do ixt=1,ntraciso 2611 #ifdef ISOVERIF 2612 CALL iso_verif_egalite_choix(xtelij(iso_eau,il,im,jm), & 2613 elij(il,im,jm),'cv30_routines 2408',errmax,errmaxrel) 2614 CALL iso_verif_traceur(xtelij(1,il,im,jm), & 2615 'condiso_liq_ice_vectiso_trac 358') 2616 #endif 2617 enddo !do il = 1, ncum 2608 2618 enddo !do jm = 1, nd 2609 2619 enddo !do im = 1, nd 2610 doim = 1, nd2611 do il = 1, ncum2620 DO im = 1, nd 2621 DO il = 1, ncum 2612 2622 ! colorier le condensat en un tag specifique 2613 doixt=niso+1,ntraciso2614 if (index_zone(ixt).eq.izone_cond) then2623 DO ixt=niso+1,ntraciso 2624 IF (index_zone(ixt).EQ.izone_cond) THEN 2615 2625 xtclw(ixt,il,im)=xtclw(index_iso(ixt),il,im) 2616 else !if (index_zone(ixt). eq.izone_cond) then2626 else !if (index_zone(ixt).EQ.izone_cond) THEN 2617 2627 xtclw(ixt,il,im)=0.0 2618 endif !if (index_zone(ixt). eq.izone_cond) then2619 enddo !do ixt=1,ntraciso 2620 #ifdef ISOVERIF 2621 calliso_verif_egalite_choix(xtclw(iso_eau,il,im), &2622 &clw(il,im),'cv30_routines 2427',errmax,errmaxrel)2623 calliso_verif_traceur(xtclw(1,il,im), &2624 &'condiso_liq_ice_vectiso_trac 358')2625 if(iso_verif_positif_nostop(xtclw(itZonIso( &2626 &izone_cond,iso_eau),i,k)-xtclw(iso_eau,i,k) &2627 & ,'cv30_routines 909').eq.1) then2628 write(*,*) 'i,k=',i,k2629 write(*,*) 'xtclw=',xtclw(:,i,k)2630 write(*,*) 'niso,ntraciso,index_zone,izone_cond=', &2631 & niso,ntraciso,index_zone,izone_cond2628 endif !if (index_zone(ixt).EQ.izone_cond) THEN 2629 enddo !do ixt=1,ntraciso 2630 #ifdef ISOVERIF 2631 CALL iso_verif_egalite_choix(xtclw(iso_eau,il,im), & 2632 clw(il,im),'cv30_routines 2427',errmax,errmaxrel) 2633 CALL iso_verif_traceur(xtclw(1,il,im), & 2634 'condiso_liq_ice_vectiso_trac 358') 2635 IF (iso_verif_positif_nostop(xtclw(itZonIso( & 2636 izone_cond,iso_eau),i,k)-xtclw(iso_eau,i,k) & 2637 ,'cv30_routines 909').EQ.1) THEN 2638 WRITE(*,*) 'i,k=',i,k 2639 WRITE(*,*) 'xtclw=',xtclw(:,i,k) 2640 WRITE(*,*) 'niso,ntraciso,index_zone,izone_cond=', & 2641 niso,ntraciso,index_zone,izone_cond 2632 2642 stop 2633 2643 endif !if (iso_verif_positif_nostop(xtclw(itZonIso( 2634 #endif 2635 enddo !do il = 1, ncum 2644 #endif 2645 enddo !do il = 1, ncum 2636 2646 enddo !do im = 1, nd 2637 ! write(*,*) 'xtclw(:,1,2)=',xtclw(:,1,2)2638 endif !if (option_tmin. eq.1) then2639 #endif 2640 #endif 2641 2642 RETURN 2647 ! WRITE(*,*) 'xtclw(:,1,2)=',xtclw(:,1,2) 2648 endif !if (option_tmin.EQ.1) THEN 2649 #endif 2650 #endif 2651 2652 2643 2653 END SUBROUTINE cv30_mixing 2644 2654 … … 2649 2659 , wdtraina, wdtrainm & ! 26/08/10 RomP-jyg 2650 2660 #ifdef ISO 2651 &,xt,xtclw,xtelij &2652 &,xtp,xtwater,xtevap,xtwdtraina &2653 #endif 2654 &)2655 #ifdef ISO 2656 useinfotrac_phy, ONLY: ntraciso=>ntiso, niso2657 useisotopes_mod, ONLY: essai_convergence, iso_eau,iso_HDO,ridicule2658 useisotopes_routines_mod, ONLY: appel_stewart_vectall,appel_stewart_debug2659 #ifdef ISOVERIF 2660 useisotopes_verif_mod, ONLY: errmax,errmaxrel, &2661 ,xt,xtclw,xtelij & 2662 ,xtp,xtwater,xtevap,xtwdtraina & 2663 #endif 2664 ) 2665 #ifdef ISO 2666 USE infotrac_phy, ONLY: ntraciso=>ntiso, niso 2667 USE isotopes_mod, ONLY: essai_convergence, iso_eau,iso_HDO,ridicule 2668 USE isotopes_routines_mod, ONLY: appel_stewart_vectall,appel_stewart_debug 2669 #ifdef ISOVERIF 2670 USE isotopes_verif_mod, ONLY: errmax,errmaxrel, & 2661 2671 iso_verif_egalite_choix, iso_verif_noNaN,iso_verif_aberrant, & 2662 2672 iso_verif_egalite,iso_verif_egalite_choix_nostop,iso_verif_positif_nostop, & … … 2665 2675 #endif 2666 2676 #ifdef ISOTRAC 2667 use isotrac_mod, only: option_cond,izone_cond2668 useinfotrac_phy, ONLY: itZonIso2669 #ifdef ISOVERIF 2670 useisotopes_verif_mod, ONLY: iso_verif_traceur_justmass, &2677 USE isotrac_mod, ONLY: option_cond,izone_cond 2678 USE infotrac_phy, ONLY: itZonIso 2679 #ifdef ISOVERIF 2680 USE isotopes_verif_mod, ONLY: iso_verif_traceur_justmass, & 2671 2681 & iso_verif_traceur 2672 use isotrac_routines_mod, ONLY: iso_verif_traceur_pbidouille 2673 #endif 2674 #endif 2675 #endif 2676 2677 USE cvthermo_mod_h, ONLY: cpd, cpv, cl, ci, rrv, rrd, lv0, lf0, g, rowl, t0, clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl & 2678 , clmci, eps, epsi, epsim1, ginv, hrd, grav 2679 USE cvflag_mod_h, ONLY: icvflag_Tpa, cvflag_grav, cvflag_ice, ok_optim_yield, ok_entrain, ok_homo_tend, & 2680 ok_convstop, ok_intermittent, cvflag_prec_eject, qsat_depends_on_qt, adiab_ascent_mass_flux_depends_on_ejectliq, keepbug_ice_frac 2682 USE isotrac_routines_mod, ONLY: iso_verif_traceur_pbidouille 2683 #endif 2684 #endif 2685 #endif 2686 USE cvflag_mod_h 2687 USE cvthermo_mod_h 2688 2681 2689 IMPLICIT NONE 2682 2683 2684 include "cv30param.h"2685 2690 2686 2691 ! inputs: … … 2697 2702 REAL m(nloc, na), ment(nloc, na, na), elij(nloc, na, na) 2698 2703 #ifdef ISO 2699 realxt(ntraciso,nloc,nd), xtclw(ntraciso,nloc,na)2700 realxtelij(ntraciso,nloc,na,na)2704 REAL xt(ntraciso,nloc,nd), xtclw(ntraciso,nloc,na) 2705 REAL xtelij(ntraciso,nloc,na,na) 2701 2706 ! real xtep(ntraciso,nloc,na) ! le 7 mai: on supprime xtep 2702 2707 #endif … … 2714 2719 2715 2720 #ifdef ISO 2716 realxtp(ntraciso,nloc,na)2717 realxtwater(ntraciso,nloc,na), xtevap(ntraciso,nloc,na)2718 realxtwdtraina(ntraciso,nloc,na)2721 REAL xtp(ntraciso,nloc,na) 2722 REAL xtwater(ntraciso,nloc,na), xtevap(ntraciso,nloc,na) 2723 REAL xtwdtraina(ntraciso,nloc,na) 2719 2724 #endif 2720 2725 … … 2731 2736 2732 2737 #ifdef ISO 2733 integerixt2734 realxtawat(ntraciso)2738 INTEGER ixt 2739 REAL xtawat(ntraciso) 2735 2740 REAL xtwdtrain(ntraciso,nloc) 2736 ! logicalnegation2737 realrpprec(nloc,na)2741 ! LOGICAL negation 2742 REAL rpprec(nloc,na) 2738 2743 !#ifdef ISOVERIF 2739 2744 ! integer iso_verif_aberrant_nostop 2740 !#ifdef ISOTRAC 2745 !#ifdef ISOTRAC 2741 2746 ! integer iso_verif_traceur_choix_nostop 2742 2747 ! integer iso_verif_positif_nostop 2743 !#endif 2744 !#endif 2748 !#endif 2749 !#endif 2745 2750 #endif 2746 2751 … … 2748 2753 ! ------------------------------------------------------ 2749 2754 !#ifdef ISOVERIF 2750 ! write(*,*) 'cv30_routines 2382: entree dans cv3_unsat'2755 ! WRITE(*,*) 'cv30_routines 2382: entree dans cv3_unsat' 2751 2756 !#endif 2752 2757 … … 2777 2782 #ifdef ISO 2778 2783 rpprec(il,i)=rp(il,i) 2779 doixt=1,ntraciso2784 DO ixt=1,ntraciso 2780 2785 xtp(ixt,il,i)=xt(ixt,il,i) 2781 2786 xtwater(ixt,il,i)=0.0 … … 2784 2789 !-- debug 2785 2790 #ifdef ISOVERIF 2786 if(iso_eau.gt.0) then2787 calliso_verif_egalite_choix(xt(iso_eau,il,i),rr(il,i), &2788 &'cv30_unsat 2245 ',errmax,errmaxrel)2789 calliso_verif_egalite_choix(xtp(iso_eau,il,i),rp(il,i), &2790 &'cv30_unsat 2247 ',errmax,errmaxrel)2791 endif ! if(iso_eau.gt.0) then2791 IF(iso_eau.gt.0) THEN 2792 CALL iso_verif_egalite_choix(xt(iso_eau,il,i),rr(il,i), & 2793 'cv30_unsat 2245 ',errmax,errmaxrel) 2794 CALL iso_verif_egalite_choix(xtp(iso_eau,il,i),rp(il,i), & 2795 'cv30_unsat 2247 ',errmax,errmaxrel) 2796 endif !IF(iso_eau.gt.0) THEN 2792 2797 #ifdef ISOTRAC 2793 calliso_verif_traceur(xt(1,il,i),'cv30_routine 2410')2794 calliso_verif_traceur(xtp(1,il,i),'cv30_routine 2411')2795 #endif 2798 CALL iso_verif_traceur(xt(1,il,i),'cv30_routine 2410') 2799 CALL iso_verif_traceur(xtp(1,il,i),'cv30_routine 2411') 2800 #endif 2796 2801 #endif 2797 2802 #endif … … 2807 2812 ! enddo 2808 2813 ! enddo 2809 ! !RomP >>>2814 ! RomP >>> 2810 2815 DO i = 1, nd 2811 2816 DO il = 1, ncum … … 2814 2819 END DO 2815 2820 END DO 2816 ! !RomP <<<2821 ! RomP <<< 2817 2822 2818 2823 ! *** check whether ep(inb)=0, if so, skip precipitating *** … … 2827 2832 CALL zilch(wdtrain, ncum) 2828 2833 #ifdef ISO 2829 callzilch(xtwdtrain,ncum*ntraciso)2834 CALL zilch(xtwdtrain,ncum*ntraciso) 2830 2835 #endif 2831 2836 … … 2856 2861 wdtraina(il, i) = wdtrain(il)/grav ! Pa 26/08/10 RomP 2857 2862 #ifdef ISO 2858 doixt=1,ntraciso2863 DO ixt=1,ntraciso 2859 2864 ! xtwdtrain(ixt,il)=grav*xtep(ixt,il,i)*m(il,i)*xtclw(ixt,il,i) 2860 2865 xtwdtrain(ixt,il)=grav*ep(il,i)*m(il,i)*xtclw(ixt,il,i) … … 2862 2867 !--debug: 2863 2868 #ifdef ISOVERIF 2864 if (iso_eau.gt.0) then2865 calliso_verif_egalite_choix(xtwdtrain(iso_eau,il), &2866 &wdtrain(il),'cv30_routines 2313',errmax,errmaxrel)2867 endif !if (iso_eau.gt.0) then2869 IF (iso_eau.gt.0) THEN 2870 CALL iso_verif_egalite_choix(xtwdtrain(iso_eau,il), & 2871 wdtrain(il),'cv30_routines 2313',errmax,errmaxrel) 2872 endif !if (iso_eau.gt.0) THEN 2868 2873 #ifdef ISOTRAC 2869 call iso_verif_traceur(xtwdtrain(1,il),'cv30_routine 2480')2870 #endif 2874 CALL iso_verif_traceur(xtwdtrain(1,il),'cv30_routine 2480') 2875 #endif 2871 2876 #endif 2872 2877 !--end debug … … 2877 2882 wdtraina(il, i) = wdtrain(il)/10. ! Pa 26/08/10 RomP 2878 2883 #ifdef ISO 2879 doixt=1,ntraciso2884 DO ixt=1,ntraciso 2880 2885 ! xtwdtrain(ixt,il)=10.0*xtep(ixt,il,i)*m(il,i)*xtclw(ixt,il,i) 2881 2886 xtwdtrain(ixt,il)=10.0*ep(il,i)*m(il,i)*xtclw(ixt,il,i) 2882 xtwdtraina(ixt,il, i) = xtwdtrain(ixt,il)/10. 2887 xtwdtraina(ixt,il, i) = xtwdtrain(ixt,il)/10. 2883 2888 enddo 2884 2889 #endif … … 2895 2900 awat = amax1(awat, 0.0) 2896 2901 #ifdef ISO 2897 ! precip mixed drafts computed from: xtawat/xtelij = awat/elij 2898 if (elij(il,j,i).ne.0.0) then2899 doixt=1,ntraciso2902 ! precip mixed drafts computed from: xtawat/xtelij = awat/elij 2903 IF (elij(il,j,i).NE.0.0) THEN 2904 DO ixt=1,ntraciso 2900 2905 xtawat(ixt)=xtelij(ixt,il,j,i)*(awat/elij(il,j,i)) 2901 2906 xtawat(ixt)=amax1(xtawat(ixt),0.0) … … 2903 2908 !! xtawat(ixt)=amin1(xtawat(ixt),xtelij(ixt,il,j,i)) !security.. 2904 2909 else 2905 doixt=1,ntraciso2910 DO ixt=1,ntraciso 2906 2911 xtawat(ixt)=0.0 2907 2912 enddo !do ixt=1,niso 2908 endif 2909 2910 #ifdef ISOVERIF 2911 if (iso_eau.gt.0) then2912 calliso_verif_egalite_choix(xtawat(iso_eau), &2913 &awat,'cv30_routines 2391',errmax,errmaxrel)2914 endif !if (iso_eau.gt.0) then2913 endif 2914 2915 #ifdef ISOVERIF 2916 IF (iso_eau.gt.0) THEN 2917 CALL iso_verif_egalite_choix(xtawat(iso_eau), & 2918 awat,'cv30_routines 2391',errmax,errmaxrel) 2919 endif !if (iso_eau.gt.0) THEN 2915 2920 #ifdef ISOTRAC 2916 calliso_verif_traceur(xtawat(1),'cv30_routine 2522')2917 #endif 2921 CALL iso_verif_traceur(xtawat(1),'cv30_routine 2522') 2922 #endif 2918 2923 #endif 2919 2924 #endif … … 2921 2926 wdtrain(il) = wdtrain(il) + grav*awat*ment(il, j, i) 2922 2927 #ifdef ISO 2923 doixt=1,ntraciso2928 DO ixt=1,ntraciso 2924 2929 xtwdtrain(ixt,il)=xtwdtrain(ixt,il) & 2925 &+grav*xtawat(ixt)*ment(il,j,i)2930 +grav*xtawat(ixt)*ment(il,j,i) 2926 2931 enddo !do ixt=1,ntraciso 2927 2932 #endif 2928 2933 ELSE 2929 2934 wdtrain(il) = wdtrain(il) + 10.0*awat*ment(il, j, i) 2930 #ifdef ISO 2931 doixt=1,ntraciso2935 #ifdef ISO 2936 DO ixt=1,ntraciso 2932 2937 xtwdtrain(ixt,il)=xtwdtrain(ixt,il) & 2933 &+10.0*xtawat(ixt)*ment(il,j,i)2938 +10.0*xtawat(ixt)*ment(il,j,i) 2934 2939 enddo !!do ixt=1,ntraciso 2935 2940 #endif 2936 END IF !if (cvflag_grav) then2941 END IF !if (cvflag_grav) THEN 2937 2942 #ifdef ISO 2938 2943 !--debug: 2939 2944 #ifdef ISOVERIF 2940 if (iso_eau.gt.0) then2941 calliso_verif_egalite_choix(xtwdtrain(iso_eau,il), &2942 &wdtrain(il),'cv30_routines 2366',errmax,errmaxrel)2943 endif !if (iso_eau.gt.0) then2945 IF (iso_eau.gt.0) THEN 2946 CALL iso_verif_egalite_choix(xtwdtrain(iso_eau,il), & 2947 wdtrain(il),'cv30_routines 2366',errmax,errmaxrel) 2948 endif !if (iso_eau.gt.0) THEN 2944 2949 #ifdef ISOTRAC 2945 calliso_verif_traceur(xtwdtrain(1,il),'cv30_routine 2540')2946 if (option_cond.ge.1) then2950 CALL iso_verif_traceur(xtwdtrain(1,il),'cv30_routine 2540') 2951 IF (option_cond.ge.1) THEN 2947 2952 ! on verifie que tout le detrainement est tagge condensat 2948 if(iso_verif_positif_nostop( &2949 &xtwdtrain(itZonIso(izone_cond,iso_eau),il) &2950 &-xtwdtrain(iso_eau,il), &2951 & 'cv30_routines 2795').eq.1) then2952 write(*,*) 'xtwdtrain(:,il)=',xtwdtrain(:,il)2953 write(*,*) 'xtelij(:,il,j,i)=',xtelij(:,il,j,i)2954 write(*,*) 'xtclw(:,il,i)=',xtclw(:,il,i)2953 IF (iso_verif_positif_nostop( & 2954 xtwdtrain(itZonIso(izone_cond,iso_eau),il) & 2955 -xtwdtrain(iso_eau,il), & 2956 'cv30_routines 2795').EQ.1) THEN 2957 WRITE(*,*) 'xtwdtrain(:,il)=',xtwdtrain(:,il) 2958 WRITE(*,*) 'xtelij(:,il,j,i)=',xtelij(:,il,j,i) 2959 WRITE(*,*) 'xtclw(:,il,i)=',xtclw(:,il,i) 2955 2960 stop 2956 2961 endif !if (iso_verif_positif_nostop(Pxtisup(iso_eau,il)- 2957 endif !if (option_cond.ge.1) then2958 #endif 2962 endif !if (option_cond.ge.1) THEN 2963 #endif 2959 2964 #endif 2960 2965 #endif … … 3013 3018 ! jyg1 3014 3019 ! cc sigt=1.0 3015 ! cc if(i.ge.icb)sigt=sigp(i)3020 ! cc IF(i.ge.icb)sigt=sigp(i) 3016 3021 ! prise en compte de la variation progressive de sigt dans 3017 3022 ! les couches icb et icb-1: … … 3044 3049 ! water(il,i)=max(0.0,water(il,i)) ! ceci est toujours verifie 3045 3050 #ifdef ISOVERIF 3046 calliso_verif_positif(water(il,i),'cv30_unsat 2376')3051 CALL iso_verif_positif(water(il,i),'cv30_unsat 2376') 3047 3052 #endif 3048 3053 ! evap(il,i)=max(0.0,evap(il,i)) ! evap<0 permet la conservation de … … 3131 3136 END IF 3132 3137 3133 END IF ! i. eq.13138 END IF ! i.EQ.1 3134 3139 3135 3140 ! *** find mixing ratio of precipitating downdraft *** … … 3164 3169 ! : +tra(il,i,j)*(mp(il,i)-mp(il,i+1)) 3165 3170 ! trap(il,i,j)=trap(il,i,j)/mp(il,i) 3166 ! end do3171 ! END DO 3167 3172 3168 3173 ELSE … … 3181 3186 ! do j=1,ntra 3182 3187 ! trap(il,i,j)=trap(il,i+1,j) 3183 ! end do3188 ! END DO 3184 3189 3185 3190 END IF 3186 3191 END IF 3187 #ifdef ISO 3188 rpprec(il,i)=max(rp(il,i),0.0) 3192 #ifdef ISO 3193 rpprec(il,i)=max(rp(il,i),0.0) 3189 3194 #endif 3190 3195 rp(il, i) = amin1(rp(il,i), rs(il,i)) … … 3199 3204 #ifdef ISOVERIF 3200 3205 ! verif des inputs a appel stewart 3201 ! write(*,*) 'cv30_routines 2842 tmp: appel de appel_stewart'3202 do il=1,ncum3203 if (i.le.inb(il) .and. lwork(il)) then3204 if (iso_eau.gt.0) then3205 calliso_verif_egalite_choix(xt(iso_eau,il,i), &3206 &rr(il,i),'appel_stewart 262, cas 1.1',errmax,errmaxrel)3207 endif !if (iso_eau.gt.0) then3206 ! WRITE(*,*) 'cv30_routines 2842 tmp: appel de appel_stewart' 3207 DO il=1,ncum 3208 IF (i.le.inb(il) .AND. lwork(il)) THEN 3209 IF (iso_eau.gt.0) THEN 3210 CALL iso_verif_egalite_choix(xt(iso_eau,il,i), & 3211 rr(il,i),'appel_stewart 262, cas 1.1',errmax,errmaxrel) 3212 endif !if (iso_eau.gt.0) THEN 3208 3213 !#ifdef ISOTRAC 3209 ! if (option_tmin.ge.1) then3210 ! calliso_verif_positif(xtwater(3214 ! if (option_tmin.ge.1) THEN 3215 ! CALL iso_verif_positif(xtwater( 3211 3216 ! : itZonIso(izone_cond,iso_eau),il,i+1) 3212 3217 ! : -xtwater(iso_eau,il,i+1), 3213 3218 ! : 'cv30_routines 3083') 3214 ! endif !if (option_tmin.ge.1) then3219 ! endif !if (option_tmin.ge.1) THEN 3215 3220 !#endif 3216 3221 endif … … 3218 3223 #endif 3219 3224 3220 if (1.eq.0) then3225 IF (1.EQ.0) THEN 3221 3226 ! appel de appel_stewart_vectorise 3222 callappel_stewart_vectall(lwork,ncum, &3223 &ph,t,evap,xtwdtrain, &3224 &wdtrain, &3225 &water,rr,xt,rs,rpprec,mp,wt, & ! inputs physiques3226 &xtwater,xtp, & ! outputs indispensables3227 &xtevap, & ! diagnostiques3228 &sigd, & ! inputs tunables3229 & i,inb, & ! altitude: car cas particulier en INB3230 &na,nd,nloc,cvflag_grav,ginv,1e-16)3231 3232 else !if (1. eq.0) then3227 CALL appel_stewart_vectall(lwork,ncum, & 3228 ph,t,evap,xtwdtrain, & 3229 wdtrain, & 3230 water,rr,xt,rs,rpprec,mp,wt, & ! inputs physiques 3231 xtwater,xtp, & ! outputs indispensables 3232 xtevap, & ! diagnostiques 3233 sigd, & ! inputs tunables 3234 i,inb, & ! altitude: car cas particulier en INB 3235 na,nd,nloc,cvflag_grav,ginv,1e-16) 3236 3237 else !if (1.EQ.0) THEN 3233 3238 ! truc simple sans fractionnement 3234 3239 ! juste pour debuggage 3235 callappel_stewart_debug(lwork,nloc,inb,na,i, &3240 CALL appel_stewart_debug(lwork,nloc,inb,na,i, & 3236 3241 evap,water,rpprec,rr,wdtrain, & 3237 3242 xtevap,xtwater,xtp,xt,xtwdtrain) 3238 endif ! if (1.eq.0) then 3239 3240 3241 #ifdef ISOVERIF 3242 ! write(*,*) 'cv30_routines 2864 tmp: sortie de appel_stewart' 3243 endif ! if (1.EQ.0) THEN 3244 #ifdef ISOVERIF 3245 ! WRITE(*,*) 'cv30_routines 2864 tmp: sortie de appel_stewart' 3243 3246 ! verif des outputs de appel stewart 3244 doil=1,ncum3245 if (i.le.inb(il) .and. lwork(il)) then3246 do ixt=1,ntraciso3247 calliso_verif_noNAN(xtp(ixt,il,i),'cv30_unsat 3382')3248 calliso_verif_noNAN(xtwater(ixt,il,i),'cv30_unsat 3381')3249 calliso_verif_noNAN(xtevap(ixt,il,i),'cv30_unsat 2661')3250 enddo 3251 if (iso_eau.gt.0) then3252 calliso_verif_egalite_choix(xtp(iso_eau,il,i), &3253 & rpprec(il,i),'cv30_unsat 2736',errmax,errmaxrel)3254 calliso_verif_egalite_choix(xtwater(iso_eau,il,i), &3255 & water(il,i),'cv30_unsat 2747',errmax,errmaxrel)3256 ! write(*,*) 'xtwater(4,il,i)=',xtwater(4,il,i)3257 ! write(*,*) 'water(il,i)=',water(il,i)3258 calliso_verif_egalite_choix(xtevap(iso_eau,il,i), &3259 &evap(il,i),'cv30_unsat 2751',errmax,errmaxrel)3260 endif !if (iso_eau.gt.0) then3261 if ((iso_HDO.gt.0).and. &3262 & (rp(il,i).gt.ridicule)) then3263 calliso_verif_aberrant(xtp(iso_HDO,il,i)/rpprec(il,i), &3264 &'cv3unsat 2756')3265 endif !if ((iso_HDO.gt.0). and.3247 DO il=1,ncum 3248 IF (i.le.inb(il) .AND. lwork(il)) THEN 3249 DO ixt=1,ntraciso 3250 CALL iso_verif_noNAN(xtp(ixt,il,i),'cv30_unsat 3382') 3251 CALL iso_verif_noNAN(xtwater(ixt,il,i),'cv30_unsat 3381') 3252 CALL iso_verif_noNAN(xtevap(ixt,il,i),'cv30_unsat 2661') 3253 enddo 3254 IF (iso_eau.gt.0) THEN 3255 CALL iso_verif_egalite_choix(xtp(iso_eau,il,i), & 3256 rpprec(il,i),'cv30_unsat 2736',errmax,errmaxrel) 3257 CALL iso_verif_egalite_choix(xtwater(iso_eau,il,i), & 3258 water(il,i),'cv30_unsat 2747',errmax,errmaxrel) 3259 ! WRITE(*,*) 'xtwater(4,il,i)=',xtwater(4,il,i) 3260 ! WRITE(*,*) 'water(il,i)=',water(il,i) 3261 CALL iso_verif_egalite_choix(xtevap(iso_eau,il,i), & 3262 evap(il,i),'cv30_unsat 2751',errmax,errmaxrel) 3263 endif !if (iso_eau.gt.0) THEN 3264 IF ((iso_HDO.gt.0).AND. & 3265 (rp(il,i).gt.ridicule)) THEN 3266 CALL iso_verif_aberrant(xtp(iso_HDO,il,i)/rpprec(il,i), & 3267 'cv3unsat 2756') 3268 endif !if ((iso_HDO.gt.0).AND. 3266 3269 #ifdef ISOTRAC 3267 ! if (il. eq.602) then3268 ! write(*,*) 'cv30_routine tmp: il,i=',il,i3269 ! write(*,*) 'xtp(iso_eau:ntraciso:3,il,i)=',3270 ! if (il.EQ.602) THEN 3271 ! WRITE(*,*) 'cv30_routine tmp: il,i=',il,i 3272 ! WRITE(*,*) 'xtp(iso_eau:ntraciso:3,il,i)=', 3270 3273 ! : xtp(iso_eau:ntraciso:3,il,i) 3271 3274 ! endif 3272 calliso_verif_traceur(xtp(1,il,i),'cv30_routine 2852')3273 calliso_verif_traceur(xtwater(1,il,1), &3274 &'cv30_routine 2853 unsat apres appel')3275 calliso_verif_traceur_pbidouille(xtwater(1,il,i), &3276 &'cv30_routine 2853b')3277 calliso_verif_traceur_justmass(xtevap(1,il,i), &3278 &'cv30_routine 2854')3279 ! if (option_tmin.ge.1) then3280 ! calliso_verif_positif(xtwater(3275 CALL iso_verif_traceur(xtp(1,il,i),'cv30_routine 2852') 3276 CALL iso_verif_traceur(xtwater(1,il,1), & 3277 'cv30_routine 2853 unsat apres appel') 3278 CALL iso_verif_traceur_pbidouille(xtwater(1,il,i), & 3279 'cv30_routine 2853b') 3280 CALL iso_verif_traceur_justmass(xtevap(1,il,i), & 3281 'cv30_routine 2854') 3282 ! if (option_tmin.ge.1) THEN 3283 ! CALL iso_verif_positif(xtwater( 3281 3284 ! : itZonIso(izone_cond,iso_eau),il,i) 3282 3285 ! : -xtwater(iso_eau,il,i), 3283 3286 ! : 'cv30_routines 3143') 3284 ! endif !if (option_tmin.ge.1) then3285 #endif 3286 endif !if (i.le.inb(il) . and. lwork(il)) then3287 ! endif !if (option_tmin.ge.1) THEN 3288 #endif 3289 endif !if (i.le.inb(il) .AND. lwork(il)) THEN 3287 3290 enddo !do il=1,ncum 3288 3291 #endif 3289 3292 3290 3293 ! equivalent isotopique de rp(il,i)=amin1(rp(il,i),rs(il,i)) 3291 do il=1,ncum 3292 if (i.lt.inb(il) .and. lwork(il)) then 3293 3294 if (rpprec(il,i).gt.rs(il,i)) then 3295 if (rs(il,i).le.0) then 3296 write(*,*) 'cv3unsat 2640' 3294 DO il=1,ncum 3295 IF (i.lt.inb(il) .AND. lwork(il)) THEN 3296 IF (rpprec(il,i).gt.rs(il,i)) THEN 3297 IF (rs(il,i).le.0) THEN 3298 WRITE(*,*) 'cv3unsat 2640' 3297 3299 stop 3298 3300 endif 3299 doixt=1,ntraciso3301 DO ixt=1,ntraciso 3300 3302 xtp(ixt,il,i)=xtp(ixt,il,i)/rpprec(il,i)*rs(il,i) 3301 3303 xtp(ixt,il,i)=max(0.0,xtp(ixt,il,i)) 3302 enddo !do ixt=1,niso 3303 #ifdef ISOVERIF 3304 do ixt=1,ntraciso3305 call iso_verif_noNaN(xtp(ixt,il,i),'cv3unsat 2641')3304 enddo !do ixt=1,niso 3305 #ifdef ISOVERIF 3306 DO ixt=1,ntraciso 3307 CALL iso_verif_noNaN(xtp(ixt,il,i),'cv3unsat 2641') 3306 3308 enddo !do ixt=1,niso 3307 if (iso_eau.gt.0) then3308 ! write(*,*) 'xtp(iso_eau,il,i)=',xtp(iso_eau,il,i)3309 calliso_verif_egalite_choix(xtp(iso_eau,il,i),rp(il,i), &3310 &'cv3unsat 2653',errmax,errmaxrel)3311 calliso_verif_egalite_choix(xtp(iso_eau,il,i), &3312 & rs(il,i),'cv3unsat 2654',errmax,errmaxrel)3313 endif 3314 if ((iso_HDO.gt.0).and. &3315 & (rp(il,i).gt.ridicule)) then3316 if(iso_verif_aberrant_nostop(xtp(iso_HDO,il,i)/rp(il,i), &3317 & 'cv3unsat 2658').eq.1) then3318 write(*,*) 'rpprec(il,i),rs(il,i),rp(il,i)=', &3319 &rpprec(il,i),rs(il,i),rp(il,i)3309 IF (iso_eau.gt.0) THEN 3310 ! WRITE(*,*) 'xtp(iso_eau,il,i)=',xtp(iso_eau,il,i) 3311 CALL iso_verif_egalite_choix(xtp(iso_eau,il,i),rp(il,i), & 3312 'cv3unsat 2653',errmax,errmaxrel) 3313 CALL iso_verif_egalite_choix(xtp(iso_eau,il,i), & 3314 rs(il,i),'cv3unsat 2654',errmax,errmaxrel) 3315 endif 3316 IF ((iso_HDO.gt.0).AND. & 3317 (rp(il,i).gt.ridicule)) THEN 3318 IF (iso_verif_aberrant_nostop(xtp(iso_HDO,il,i)/rp(il,i), & 3319 'cv3unsat 2658').EQ.1) THEN 3320 WRITE(*,*) 'rpprec(il,i),rs(il,i),rp(il,i)=', & 3321 rpprec(il,i),rs(il,i),rp(il,i) 3320 3322 stop 3321 3323 endif 3322 3324 endif 3323 3325 #ifdef ISOTRAC 3324 calliso_verif_traceur(xtp(1,il,i),'cv30_routine 2893')3325 #endif 3326 #endif 3327 rpprec(il,i)=rs(il,i) 3328 endif !if (rp(il,i).gt.rs(il,i)) then3326 CALL iso_verif_traceur(xtp(1,il,i),'cv30_routine 2893') 3327 #endif 3328 #endif 3329 rpprec(il,i)=rs(il,i) 3330 endif !if (rp(il,i).gt.rs(il,i)) THEN 3329 3331 endif !if (i.lt.INB et lwork) 3330 3332 enddo ! il=1,ncum … … 3335 3337 3336 3338 ! fin de la boucle en i (altitude) 3337 #ifdef ISO 3338 write(*,*) 'nl=',nl,'nd=',nd,'; ncum=',ncum3339 #ifdef ISOVERIF 3340 doi=1,nl !nl3341 doil=1,ncum3342 if (iso_eau.gt.0) then3343 ! write(*,*) 'cv30_routines 2767:i,il,lwork(il),inb(il)=',3339 #ifdef ISO 3340 WRITE(*,*) 'nl=',nl,'nd=',nd,'; ncum=',ncum 3341 #ifdef ISOVERIF 3342 DO i=1,nl !nl 3343 DO il=1,ncum 3344 IF (iso_eau.gt.0) THEN 3345 ! WRITE(*,*) 'cv30_routines 2767:i,il,lwork(il),inb(il)=', 3344 3346 ! : i,il,lwork(il),inb(il) 3345 ! write(*,*) 'rp(il,i),xtp(iso_eau,il,i)=',3346 ! : rp(il,i),xtp(iso_eau,il,i) 3347 calliso_verif_egalite_choix(xt(iso_eau,il,i), &3348 &rr(il,i),'cv30_unsat 2668',errmax,errmaxrel)3349 calliso_verif_egalite_choix(xtp(iso_eau,il,i), &3350 &rp(il,i),'cv30_unsat 2670',errmax,errmaxrel)3351 calliso_verif_egalite_choix(xtwater(iso_eau,il,i), &3352 &water(il,i),'cv30_unsat 2672',errmax,errmaxrel)3353 endif !if (iso_eau.gt.0) then3347 ! WRITE(*,*) 'rp(il,i),xtp(iso_eau,il,i)=', 3348 ! : rp(il,i),xtp(iso_eau,il,i) 3349 CALL iso_verif_egalite_choix(xt(iso_eau,il,i), & 3350 rr(il,i),'cv30_unsat 2668',errmax,errmaxrel) 3351 CALL iso_verif_egalite_choix(xtp(iso_eau,il,i), & 3352 rp(il,i),'cv30_unsat 2670',errmax,errmaxrel) 3353 CALL iso_verif_egalite_choix(xtwater(iso_eau,il,i), & 3354 water(il,i),'cv30_unsat 2672',errmax,errmaxrel) 3355 endif !if (iso_eau.gt.0) THEN 3354 3356 !#ifdef ISOTRAC 3355 3357 ! if (iso_verif_traceur_choix_nostop(xtwater(1,il,i), 3356 3358 ! : 'cv30_routine 2982 unsat',errmax, 3357 ! : errmaxrel,ridicule_trac,deltalimtrac). eq.1) then3358 ! write(*,*) 'il,i,inb(il),lwork(il)=',3359 ! : errmaxrel,ridicule_trac,deltalimtrac).EQ.1) THEN 3360 ! WRITE(*,*) 'il,i,inb(il),lwork(il)=', 3359 3361 ! : il,i,inb(il),lwork(il) 3360 ! write(*,*) 'xtwater(:,il,i)=',xtwater(:,il,i)3362 ! WRITE(*,*) 'xtwater(:,il,i)=',xtwater(:,il,i) 3361 3363 ! stop 3362 3364 ! endif 3363 !#endif 3365 !#endif 3364 3366 enddo !do il=1,nloc!ncum 3365 3367 enddo !do i=1,nl!nl 3366 3368 il=5 3367 i=39 3368 write(*,*) 'cv30_unsat 2780: il,water(il,i),xtwater(iso_eau,il,i)=' &3369 i=39 3370 WRITE(*,*) 'cv30_unsat 2780: il,water(il,i),xtwater(iso_eau,il,i)=' & 3369 3371 ,il,water(il,i),xtwater(iso_eau,il,i) 3370 3372 #endif 3371 3373 #endif 3372 RETURN 3374 3373 3375 END SUBROUTINE cv30_unsat 3374 3376 … … 3379 3381 mike, tls, tps, qcondc, wd & 3380 3382 #ifdef ISO 3381 &,xt,xtclw,xtp,xtwater,xtevap &3382 &,xtent,xtelij,xtprecip,fxt,xtVprecip &3383 ,xt,xtclw,xtp,xtwater,xtevap & 3384 ,xtent,xtelij,xtprecip,fxt,xtVprecip & 3383 3385 #ifdef DIAGISO 3384 & ,fq_detrainement,fq_ddft,fq_fluxmasse,fq_evapprecip & 3385 & ,fxt_detrainement,fxt_ddft,fxt_fluxmasse,fxt_evapprecip & 3386 & ,f_detrainement,q_detrainement,xt_detrainement & 3387 #endif 3388 #endif 3389 & ) 3390 #ifdef ISO 3391 use infotrac_phy, ONLY: ntraciso=>ntiso, niso, nzone, itZonIso 3392 use isotopes_mod, ONLY: essai_convergence,ridicule,iso_eau,iso_HDO,iso_O18 3393 #ifdef ISOVERIF 3394 use isotopes_verif_mod, ONLY: errmax,errmaxrel, & 3386 ,fq_detrainement,fq_ddft,fq_fluxmasse,fq_evapprecip & 3387 ,fxt_detrainement,fxt_ddft,fxt_fluxmasse,fxt_evapprecip & 3388 ,f_detrainement,q_detrainement,xt_detrainement & 3389 #endif 3390 #endif 3391 ) 3392 USE conema3_mod_h 3393 #ifdef ISO 3394 USE infotrac_phy, ONLY: ntraciso=>ntiso, niso, nzone, itZonIso 3395 USE isotopes_mod, ONLY: essai_convergence,ridicule,iso_eau,iso_HDO,iso_O18 3396 #ifdef ISOVERIF 3397 USE isotopes_verif_mod, ONLY: errmax,errmaxrel, & 3395 3398 iso_verif_egalite_choix, iso_verif_noNaN,iso_verif_aberrant, & 3396 3399 iso_verif_egalite,iso_verif_egalite_choix_nostop,iso_verif_positif_nostop, & … … 3401 3404 #endif 3402 3405 #ifdef ISOTRAC 3403 use isotrac_mod, only: option_traceurs, &3406 USE isotrac_mod, ONLY: option_traceurs, & 3404 3407 izone_revap,izone_poubelle,izone_ddft 3405 3408 #ifdef ISOVERIF 3406 useisotopes_verif_mod, ONLY: iso_verif_traceur_choix_nostop,deltalimtrac, &3409 USE isotopes_verif_mod, ONLY: iso_verif_traceur_choix_nostop,deltalimtrac, & 3407 3410 & iso_verif_tracpos_choix_nostop,iso_verif_traceur,iso_verif_traceur_justmass 3408 use isotrac_mod, only: ridicule_trac 3409 #endif 3410 #endif 3411 #endif 3412 3413 USE cvthermo_mod_h, ONLY: cpd, cpv, cl, ci, rrv, rrd, lv0, lf0, g, rowl, t0, clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl & 3414 , clmci, eps, epsi, epsim1, ginv, hrd, grav 3415 USE cvflag_mod_h, ONLY: icvflag_Tpa, cvflag_grav, cvflag_ice, ok_optim_yield, ok_entrain, ok_homo_tend, & 3416 ok_convstop, ok_intermittent, cvflag_prec_eject, qsat_depends_on_qt, adiab_ascent_mass_flux_depends_on_ejectliq, keepbug_ice_frac 3411 USE isotrac_mod, ONLY: ridicule_trac 3412 #endif 3413 #endif 3414 #endif 3415 USE cvflag_mod_h 3416 USE cvthermo_mod_h 3417 3417 3418 IMPLICIT NONE 3418 3419 include "cv30param.h"3420 include "conema3.h"3421 3422 3419 ! inputs: 3423 3420 INTEGER ncum, nd, na, ntra, nloc … … 3439 3436 REAL tv(nloc, nd), tvp(nloc, nd) 3440 3437 #ifdef ISO 3441 realxt(ntraciso,nloc,nd)3438 REAL xt(ntraciso,nloc,nd) 3442 3439 ! real xtep(ntraciso,nloc,na) ! le 7 mai: on supprime xtep 3443 realxtclw(ntraciso,nloc,na), xtp(ntraciso,nloc,na)3444 realxtwater(ntraciso,nloc,na), xtevap(ntraciso,nloc,na)3445 realxtent(ntraciso,nloc,na,na), xtelij(ntraciso,nloc,na,na)3446 #ifdef ISOVERIF 3440 REAL xtclw(ntraciso,nloc,na), xtp(ntraciso,nloc,na) 3441 REAL xtwater(ntraciso,nloc,na), xtevap(ntraciso,nloc,na) 3442 REAL xtent(ntraciso,nloc,na,na), xtelij(ntraciso,nloc,na,na) 3443 #ifdef ISOVERIF 3447 3444 CHARACTER (LEN=20) :: modname='cv30_compress' 3448 3445 CHARACTER (LEN=80) :: abort_message … … 3464 3461 REAL wd(nloc) ! gust 3465 3462 #ifdef ISO 3466 realxtprecip(ntraciso,nloc), fxt(ntraciso,nloc,nd)3467 realxtVprecip(ntraciso,nloc,nd+1)3463 REAL xtprecip(ntraciso,nloc), fxt(ntraciso,nloc,nd) 3464 REAL xtVprecip(ntraciso,nloc,nd+1) 3468 3465 #endif 3469 3466 … … 3481 3478 REAL siga(nloc, nd), sax(nloc, nd), mac(nloc, nd) ! cld 3482 3479 #ifdef ISO 3483 integerixt3484 realxtbx(ntraciso), xtawat(ntraciso)3480 INTEGER ixt 3481 REAL xtbx(ntraciso), xtawat(ntraciso) 3485 3482 ! cam debug 3486 3483 ! pour l'homogeneisation sous le nuage: 3487 realfrsum(nloc), bxtsum(ntraciso,nloc), fxtsum(ntraciso,nloc)3484 REAL frsum(nloc), bxtsum(ntraciso,nloc), fxtsum(ntraciso,nloc) 3488 3485 ! correction dans calcul tendance liee a Am: 3489 realdq_tmp,k_tmp,dx_tmp,R_tmp,dqreste_tmp,dxreste_tmp,kad_tmp3490 logicalcorrection_excess_aberrant3491 parameter (correction_excess_aberrant=. false.)3486 REAL dq_tmp,k_tmp,dx_tmp,R_tmp,dqreste_tmp,dxreste_tmp,kad_tmp 3487 LOGICAL correction_excess_aberrant 3488 parameter (correction_excess_aberrant=.FALSE.) 3492 3489 ! correction qui permettait d'eviter deltas et dexcess aberrants. Mais 3493 3490 ! pb: ne conserve pas la masse d'isotopes! 3494 3491 #ifdef DIAGISO 3495 3492 ! diagnostiques juste: tendance des differents processus 3496 realfxt_detrainement(ntraciso,nloc,nd)3497 realfxt_fluxmasse(ntraciso,nloc,nd)3498 realfxt_evapprecip(ntraciso,nloc,nd)3499 realfxt_ddft(ntraciso,nloc,nd)3500 realfq_detrainement(nloc,nd)3501 realq_detrainement(nloc,nd)3502 realxt_detrainement(ntraciso,nloc,nd)3503 realf_detrainement(nloc,nd)3504 realfq_fluxmasse(nloc,nd)3505 realfq_evapprecip(nloc,nd)3506 realfq_ddft(nloc,nd)3507 #endif 3493 REAL fxt_detrainement(ntraciso,nloc,nd) 3494 REAL fxt_fluxmasse(ntraciso,nloc,nd) 3495 REAL fxt_evapprecip(ntraciso,nloc,nd) 3496 REAL fxt_ddft(ntraciso,nloc,nd) 3497 REAL fq_detrainement(nloc,nd) 3498 REAL q_detrainement(nloc,nd) 3499 REAL xt_detrainement(ntraciso,nloc,nd) 3500 REAL f_detrainement(nloc,nd) 3501 REAL fq_fluxmasse(nloc,nd) 3502 REAL fq_evapprecip(nloc,nd) 3503 REAL fq_ddft(nloc,nd) 3504 #endif 3508 3505 !#ifdef ISOVERIF 3509 3506 ! integer iso_verif_aberrant_nostop 3510 3507 ! real deltaD 3511 !#endif 3512 #ifdef ISOTRAC 3508 !#endif 3509 #ifdef ISOTRAC 3513 3510 ! integer iso_verif_traceur_choix_nostop 3514 3511 ! integer iso_verif_tracpos_choix_nostop 3515 realxtnew(ntraciso)3512 REAL xtnew(ntraciso) 3516 3513 ! real conversion(niso) 3517 realfxtYe(niso)3518 realfxtqe(niso)3519 realfxtXe(niso)3520 realfxt_revap(niso)3521 realXe(niso)3522 integerixt_revap,izone3523 integer ixt_poubelle, ixt_ddft,iiso3514 REAL fxtYe(niso) 3515 REAL fxtqe(niso) 3516 REAL fxtXe(niso) 3517 REAL fxt_revap(niso) 3518 REAL Xe(niso) 3519 INTEGER ixt_revap,izone 3520 INTEGER ixt_poubelle, ixt_ddft,iiso 3524 3521 #endif 3525 3522 #endif … … 3538 3535 #ifdef ISO 3539 3536 ! cam debug 3540 ! write(*,*) 'cv30_routines 3082: entree dans cv3_yield'3537 ! WRITE(*,*) 'cv30_routines 3082: entree dans cv3_yield' 3541 3538 ! en cam debug 3542 doixt = 1, ntraciso3539 DO ixt = 1, ntraciso 3543 3540 xtprecip(ixt,il)=0.0 3544 3541 xtVprecip(ixt,il,nd+1)=0.0 … … 3558 3555 nqcond(il, i) = 0.0 ! cld 3559 3556 #ifdef ISO 3560 doixt = 1, ntraciso3557 DO ixt = 1, ntraciso 3561 3558 fxt(ixt,il,i)=0.0 3562 3559 xtVprecip(ixt,il,i)=0.0 … … 3569 3566 fq_evapprecip(il,i)=0.0 3570 3567 fq_ddft(il,i)=0.0 3571 doixt = 1, niso3568 DO ixt = 1, niso 3572 3569 fxt_fluxmasse(ixt,il,i)=0.0 3573 3570 fxt_detrainement(ixt,il,i)=0.0 … … 3575 3572 fxt_evapprecip(ixt,il,i)=0.0 3576 3573 fxt_ddft(ixt,il,i)=0.0 3577 enddo 3578 #endif 3574 enddo 3575 #endif 3579 3576 #endif 3580 3577 END DO … … 3605 3602 3606 3603 #ifdef ISO 3607 doixt = 1, ntraciso3604 DO ixt = 1, ntraciso 3608 3605 xtprecip(ixt,il)=wt(il,1)*sigd*xtwater(ixt,il,1) & 3609 &*86400.*1000./(rowl*grav) ! en mm/jour3606 *86400.*1000./(rowl*grav) ! en mm/jour 3610 3607 enddo 3611 3608 ! cam verif 3612 3609 #ifdef ISOVERIF 3613 if (iso_eau.gt.0) then3614 ! write(*,*) 'cv30_yield 2952: '//3610 IF (iso_eau.gt.0) THEN 3611 ! WRITE(*,*) 'cv30_yield 2952: '// 3615 3612 ! : 'il,water(il,1),xtwater(iso_eau,il,1)=' 3616 3613 ! : ,il,water(il,1),xtwater(iso_eau,il,1) 3617 calliso_verif_egalite_choix(xtwater(iso_eau,il,1), &3618 &water(il,1),'cv30_routines 2959', &3619 &errmax,errmaxrel)3614 CALL iso_verif_egalite_choix(xtwater(iso_eau,il,1), & 3615 water(il,1),'cv30_routines 2959', & 3616 errmax,errmaxrel) 3620 3617 !Rq: wt(il,1)*sigd*86400.*1000./(rowl*grav)=3964.6565 3621 3618 ! -> on auatorise 3e3 fois plus d'erreur dans precip 3622 calliso_verif_egalite_choix(xtprecip(iso_eau,il), &3623 &precip(il),'cv30_routines 3138', &3624 &errmax*4e3,errmaxrel)3625 endif !if (iso_eau.gt.0) then3619 CALL iso_verif_egalite_choix(xtprecip(iso_eau,il), & 3620 precip(il),'cv30_routines 3138', & 3621 errmax*4e3,errmaxrel) 3622 endif !if (iso_eau.gt.0) THEN 3626 3623 #ifdef ISOTRAC 3627 calliso_verif_traceur(xtwater(1,il,1), &3628 &'cv30_routine 3146')3629 if(iso_verif_traceur_choix_nostop(xtprecip(1,il), &3630 &'cv30_routine 3147',errmax*1e2, &3631 & errmaxrel,ridicule_trac,deltalimtrac).eq.1) then3632 write(*,*) 'il,inb(il)=',il,inb(il)3633 write(*,*) 'xtwater(:,il,1)=',xtwater(:,il,1)3634 write(*,*) 'xtprecip(:,il)=',xtprecip(:,il)3635 write(*,*) 'fac=',wt(il,1)*sigd*86400.*1000./(rowl*grav)3624 CALL iso_verif_traceur(xtwater(1,il,1), & 3625 'cv30_routine 3146') 3626 IF (iso_verif_traceur_choix_nostop(xtprecip(1,il), & 3627 'cv30_routine 3147',errmax*1e2, & 3628 errmaxrel,ridicule_trac,deltalimtrac).EQ.1) THEN 3629 WRITE(*,*) 'il,inb(il)=',il,inb(il) 3630 WRITE(*,*) 'xtwater(:,il,1)=',xtwater(:,il,1) 3631 WRITE(*,*) 'xtprecip(:,il)=',xtprecip(:,il) 3632 WRITE(*,*) 'fac=',wt(il,1)*sigd*86400.*1000./(rowl*grav) 3636 3633 stop 3637 3634 endif 3638 #endif 3635 #endif 3639 3636 #endif 3640 3637 ! end cam verif … … 3643 3640 precip(il) = wt(il, 1)*sigd*water(il, 1)*8640. 3644 3641 #ifdef ISO 3645 doixt = 1, ntraciso3642 DO ixt = 1, ntraciso 3646 3643 xtprecip(ixt,il)=wt(il,1)*sigd*xtwater(ixt,il,1)*8640. 3647 3644 enddo 3648 3645 ! cam verif 3649 #ifdef ISOVERIF 3650 if (iso_eau.gt.0) then3651 calliso_verif_egalite_choix(xtprecip(iso_eau,il), &3652 &precip(il),'cv30_routines 3139', &3653 &errmax,errmaxrel)3654 endif !if (iso_eau.gt.0) then3646 #ifdef ISOVERIF 3647 IF (iso_eau.gt.0) THEN 3648 CALL iso_verif_egalite_choix(xtprecip(iso_eau,il), & 3649 precip(il),'cv30_routines 3139', & 3650 errmax,errmaxrel) 3651 endif !if (iso_eau.gt.0) THEN 3655 3652 #ifdef ISOTRAC 3656 calliso_verif_traceur(xtprecip(1,il),'cv30_routine 3166')3657 #endif 3653 CALL iso_verif_traceur(xtprecip(1,il),'cv30_routine 3166') 3654 #endif 3658 3655 #endif 3659 3656 ! end cam verif … … 3672 3669 vprecip(il, k) = wt(il, k)*sigd*water(il, k)/grav 3673 3670 #ifdef ISO 3674 doixt=1,ntraciso3671 DO ixt=1,ntraciso 3675 3672 xtVPrecip(ixt,il,k) = wt(il,k)*sigd & 3676 &*xtwater(ixt,il,k)/grav3673 *xtwater(ixt,il,k)/grav 3677 3674 enddo 3678 3675 #endif … … 3680 3677 vprecip(il, k) = wt(il, k)*sigd*water(il, k)/10. 3681 3678 #ifdef ISO 3682 doixt=1,ntraciso3679 DO ixt=1,ntraciso 3683 3680 xtVPrecip(ixt,il,k) = wt(il,k)*sigd & 3684 &*xtwater(ixt,il,k)/10.03681 *xtwater(ixt,il,k)/10.0 3685 3682 enddo 3686 3683 #endif … … 3694 3691 ! *** NE PAS UTILISER POUR L'INSTANT *** 3695 3692 3696 ! !do il=1,ncum3697 ! !wd(il)=betad*abs(mp(il,icb(il)))*0.01*rrd*t(il,icb(il))3698 ! !: /(sigd*p(il,icb(il)))3699 ! !enddo3693 ! do il=1,ncum 3694 ! wd(il)=betad*abs(mp(il,icb(il)))*0.01*rrd*t(il,icb(il)) 3695 ! : /(sigd*p(il,icb(il))) 3696 ! enddo 3700 3697 3701 3698 … … 3752 3749 fr(il, 1) = fr(il, 1) + 0.01*grav*am(il)*(rr(il,2)-rr(il,1))*work(il) 3753 3750 3754 #ifdef ISO 3751 #ifdef ISO 3755 3752 ! juste Mp et evap pour l'instant, voir plus bas pour am 3756 doixt = 1, ntraciso3753 DO ixt = 1, ntraciso 3757 3754 fxt(ixt,il,1)= & 3758 &0.01*grav*mp(il,2)*(xtp(ixt,il,2)-xt(ixt,il,1))*work(il) &3759 &+sigd*0.5*(xtevap(ixt,il,1)+xtevap(ixt,il,2))3760 !c+tard : +sigd*xtevap(ixt,il,1) 3755 0.01*grav*mp(il,2)*(xtp(ixt,il,2)-xt(ixt,il,1))*work(il) & 3756 +sigd*0.5*(xtevap(ixt,il,1)+xtevap(ixt,il,2)) 3757 !c+tard : +sigd*xtevap(ixt,il,1) 3761 3758 enddo !do ixt = 1, ntraciso ! pour water tagging option 6: pas besoin ici de faire de conversion. 3762 3759 3763 3760 #ifdef DIAGISO 3764 3761 fq_ddft(il,1)=fq_ddft(il,1) & 3765 &+0.01*grav*mp(il,2)*(rp(il,2)-rr(il,1))*work(il)3762 +0.01*grav*mp(il,2)*(rp(il,2)-rr(il,1))*work(il) 3766 3763 fq_evapprecip(il,1)=fq_evapprecip(il,1) & 3767 &+sigd*0.5*(evap(il,1)+evap(il,2))3764 +sigd*0.5*(evap(il,1)+evap(il,2)) 3768 3765 fq_fluxmasse(il,1)=fq_fluxmasse(il,1) & 3769 &+0.01*grav*am(il)*(rr(il,2)-rr(il,1))*work(il)3770 doixt = 1, ntraciso3766 +0.01*grav*am(il)*(rr(il,2)-rr(il,1))*work(il) 3767 DO ixt = 1, ntraciso 3771 3768 ! fxt_fluxmasse(ixt,il,1)=fxt_fluxmasse(ixt,il,1) & 3772 3769 ! & +0.01*grav*am(il)*(xt(ixt,il,2)-xt(ixt,il,1))*work(il) ! deplace 3773 3770 ! plus haut car il existe differents cas 3774 3771 fxt_ddft(ixt,il,1)=fxt_ddft(ixt,il,1) & 3775 &+0.01*grav*mp(il,2)*(xtp(ixt,il,2)-xt(ixt,il,1))*work(il)3772 +0.01*grav*mp(il,2)*(xtp(ixt,il,2)-xt(ixt,il,1))*work(il) 3776 3773 fxt_evapprecip(ixt,il,1)=fxt_evapprecip(ixt,il,1) & 3777 &+sigd*0.5*(xtevap(ixt,il,1)+xtevap(ixt,il,2))3774 +sigd*0.5*(xtevap(ixt,il,1)+xtevap(ixt,il,2)) 3778 3775 enddo 3779 #endif 3776 #endif 3780 3777 3781 3778 … … 3787 3784 ! Mais on plante dans un cas pathologique en decembre 2017 lors du test 3788 3785 ! d'un cas d'Anne Cozic: les isotopes deviennent negatifs. 3789 ! C'est un cas pas physique: on perd 99% de la masse de vapeur d'eau! 3786 ! C'est un cas pas physique: on perd 99% de la masse de vapeur d'eau! 3790 3787 ! q2=1.01e-3 et q1=1.25e-3 kg/kg 3791 3788 ! et dq=-1.24e-3: comment est-ce possible qu'un flux venant d'un air a … … 3797 3794 ! sortant. 3798 3795 ! Ainsi, le flux de masse sortant ne modifie pas la composition 3799 ! isotopique de la vapeur d'eau q1. 3796 ! isotopique de la vapeur d'eau q1. 3800 3797 ! A la fin, on a R=(x1+dx)/(q1+dq)=(x1+k*x2)/(q1+k*q2) 3801 3798 ! On verifie que quand k est petit, on tend vers la formulation … … 3810 3807 ! calcule R_tmp. 3811 3808 dq_tmp=0.01*grav*am(il)*(rr(il,2)-rr(il,1))*work(il)*delt ! utile ci-dessous 3812 if ((dq_tmp/rr(il,1).lt.-0.9).and.correction_excess_aberrant) then3809 IF ((dq_tmp/rr(il,1).lt.-0.9).AND.correction_excess_aberrant) THEN 3813 3810 ! nouvelle formulation ou on fait d'abord entrer k*q2 et ensuite 3814 3811 ! seulement on fait sortir k*q1 sans changement de composition … … 3816 3813 k_tmp=0.01*grav*am(il)*work(il)*delt 3817 3814 dqreste_tmp= 0.01*grav*mp(il, 2)*(rp(il,2)-rr(il,1))*work(il)*delt + & 3818 &sigd*0.5*(evap(il,1)+evap(il,2))*delt3819 doixt = 1, ntraciso3815 sigd*0.5*(evap(il,1)+evap(il,2))*delt 3816 DO ixt = 1, ntraciso 3820 3817 dxreste_tmp= 0.01*grav*mp(il,2)*(xtp(ixt,il,2)-xt(ixt,il,1))*work(il)*delt & 3821 &+sigd*0.5*(xtevap(ixt,il,1)+xtevap(ixt,il,2))*delt3818 +sigd*0.5*(xtevap(ixt,il,1)+xtevap(ixt,il,2))*delt 3822 3819 R_tmp=(xt(ixt,il,1)+dxreste_tmp+k_tmp*xt(ixt,il,2))/(rr(il,1)+dqreste_tmp+k_tmp*rr(il,2)) 3823 3820 dx_tmp=R_tmp*(rr(il,1)+dqreste_tmp+dq_tmp)-(xt(ixt,il,1)+dxreste_tmp) 3824 3821 fxt(ixt,il,1)=fxt(ixt,il,1) & 3825 & + dx_tmp/delt3826 #ifdef ISOVERIF 3827 if (ixt.eq.iso_HDO) then3828 write(*,*) 'cv30_routines 3888: il=',il3829 write(*,*) 'dq_tmp,rr(il,1)=',dq_tmp,rr(il,1)3830 write(*,*) 'R_tmp,dx_tmp,delt=',R_tmp,dx_tmp,delt3831 write(*,*) 'xt(ixt,il,1:2)=',xt(ixt,il,1:2)3832 write(*,*) 'rr(il,1:2)=',rr(il,1:2)3833 write(*,*) 'fxt=',dx_tmp/delt3834 write(*,*) 'rr(il,1)+dq_tmp=',rr(il,1)+dq_tmp3835 write(*,*) 'xt(ixt,il,1)+dx_tmp=',xt(ixt,il,1)+dx_tmp3836 write(*,*) 'xt(ixt,il,1)+fxt(ixt,il,1)*delt=', &3837 &xt(ixt,il,1)+fxt(ixt,il,1)*delt3838 write(*,*) 'dqreste_tmp,dxreste_tmp=',dqreste_tmp,dxreste_tmp3839 write(*,*) 'formule classique: fxt_Am=',0.01*grav*am(il)*(xt(ixt,il,2)-xt(ixt,il,1))*work(il)3840 write(*,*) 'donnerait dxt=',0.01*grav*am(il)*(xt(ixt,il,2)-xt(ixt,il,1))*work(il)*delt3841 endif !if (ixt. eq.iso_HDO) then3822 + dx_tmp/delt 3823 #ifdef ISOVERIF 3824 IF (ixt.EQ.iso_HDO) THEN 3825 WRITE(*,*) 'cv30_routines 3888: il=',il 3826 WRITE(*,*) 'dq_tmp,rr(il,1)=',dq_tmp,rr(il,1) 3827 WRITE(*,*) 'R_tmp,dx_tmp,delt=',R_tmp,dx_tmp,delt 3828 WRITE(*,*) 'xt(ixt,il,1:2)=',xt(ixt,il,1:2) 3829 WRITE(*,*) 'rr(il,1:2)=',rr(il,1:2) 3830 WRITE(*,*) 'fxt=',dx_tmp/delt 3831 WRITE(*,*) 'rr(il,1)+dq_tmp=',rr(il,1)+dq_tmp 3832 WRITE(*,*) 'xt(ixt,il,1)+dx_tmp=',xt(ixt,il,1)+dx_tmp 3833 WRITE(*,*) 'xt(ixt,il,1)+fxt(ixt,il,1)*delt=', & 3834 xt(ixt,il,1)+fxt(ixt,il,1)*delt 3835 WRITE(*,*) 'dqreste_tmp,dxreste_tmp=',dqreste_tmp,dxreste_tmp 3836 WRITE(*,*) 'formule classique: fxt_Am=',0.01*grav*am(il)*(xt(ixt,il,2)-xt(ixt,il,1))*work(il) 3837 WRITE(*,*) 'donnerait dxt=',0.01*grav*am(il)*(xt(ixt,il,2)-xt(ixt,il,1))*work(il)*delt 3838 endif !if (ixt.EQ.iso_HDO) THEN 3842 3839 #endif 3843 3840 #ifdef DIAGISO 3844 if (ixt.le.niso) then3841 IF (ixt.le.niso) THEN 3845 3842 fxt_fluxmasse(ixt,il,1)=fxt_fluxmasse(ixt,il,1) & 3846 & + dx_tmp/delt3843 + dx_tmp/delt 3847 3844 endif 3848 3845 #endif 3849 3846 enddo ! do ixt = 1, ntraciso 3850 else !if (dq_tmp/rr(il,1).lt.-0.9) then3847 else !if (dq_tmp/rr(il,1).lt.-0.9) THEN 3851 3848 ! formulation habituelle qui avait toujours marche de 2006 a 3852 3849 ! decembre 2017. 3853 do ixt = 1, ntraciso3850 DO ixt = 1, ntraciso 3854 3851 fxt(ixt,il,1)=fxt(ixt,il,1) & 3855 &+0.01*grav*am(il)*(xt(ixt,il,2)-xt(ixt,il,1))*work(il)3852 +0.01*grav*am(il)*(xt(ixt,il,2)-xt(ixt,il,1))*work(il) 3856 3853 #ifdef DIAGISO 3857 if (ixt.le.niso) then3854 IF (ixt.le.niso) THEN 3858 3855 fxt_fluxmasse(ixt,il,1)=fxt_fluxmasse(ixt,il,1) & 3859 &+0.01*grav*am(il)*(xt(ixt,il,2)-xt(ixt,il,1))*work(il)3856 +0.01*grav*am(il)*(xt(ixt,il,2)-xt(ixt,il,1))*work(il) 3860 3857 endif 3861 3858 #endif 3862 3859 enddo !do ixt = 1, ntraciso 3863 endif !if (dq_tmp/rr(il,1).lt.-0.9) then 3864 3860 endif !if (dq_tmp/rr(il,1).lt.-0.9) THEN 3865 3861 ! cam verif 3866 3862 #ifdef ISOVERIF 3867 if (iso_eau.gt.0) then3868 calliso_verif_egalite_choix(fxt(iso_eau,il,1), &3869 &fr(il,1),'cv30_routines 3251', &3870 &errmax,errmaxrel)3871 endif !if (iso_eau.gt.0) then3872 ! write(*,*) 'il,am(il)=',il,am(il)3873 if ((iso_HDO.gt.0).and. &3874 & (rr(il,1)+delt*fr(il,1).gt.ridicule)) then3875 if(iso_verif_aberrant_enc_nostop((xt(iso_HDO,il,1) &3876 &+delt*fxt(iso_HDO,il,1))/(rr(il,1)+delt*fr(il,1)), &3877 & 'cv30_yield 3125, ddft en 1').eq.1) then3878 write(*,*) 'il,rr(il,1),delt=',il,rr(il,1),delt3879 write(*,*) 'deltaDxt=',deltaD(xt(iso_HDO,il,1)/rr(il,1))3880 write(*,*) 'delt*fr(il,1),fr(il,1)=',delt*fr(il,1),fr(il,1)3881 write(*,*) 'fxt=',fxt(iso_HDO,il,1)3882 write(*,*) 'fq_ddft(il,1)=',0.01*grav*mp(il,2)*(rp(il,2)-rr(il,1))*work(il)3883 write(*,*) 'fq_evapprecip(il,1)=',sigd*0.5*(evap(il,1)+evap(il,2))3884 write(*,*) 'fq_fluxmasse(il,1)=', 0.01*grav*am(il)*(rr(il,2)-rr(il,1))*work(il)3885 write(*,*) 'deltaDfq_ddft=',deltaD((xtp(iso_HDO,il,2)-xt(iso_HDO,il,1))/(rp(il,2)-rr(il,1)))3886 write(*,*) 'deltaDfq_evapprecip=',deltaD((xtevap(iso_HDO,il,1)+xtevap(iso_HDO,il,2))/(evap(il,1)+evap(il,2)))3887 write(*,*) 'deltaDfq_fluxmasse=',deltaD((xt(iso_HDO,il,2)-xt(iso_HDO,il,1))/(rr(il,2)-rr(il,1)))3888 write(*,*) 'rr(il,2),rr(il,1)=',rr(il,2),rr(il,1)3889 write(*,*) 'xt(iso_HDO,il,2),xt(iso_HDO,il,1)',xt(iso_HDO,il,2),xt(iso_HDO,il,1)3890 write(*,*) 'dq_tmp=',dq_tmp3891 callabort_physic('cv30_routines','cv30_yield',1)3863 IF (iso_eau.gt.0) THEN 3864 CALL iso_verif_egalite_choix(fxt(iso_eau,il,1), & 3865 fr(il,1),'cv30_routines 3251', & 3866 errmax,errmaxrel) 3867 endif !if (iso_eau.gt.0) THEN 3868 !WRITE(*,*) 'il,am(il)=',il,am(il) 3869 IF ((iso_HDO.gt.0).AND. & 3870 (rr(il,1)+delt*fr(il,1).gt.ridicule)) THEN 3871 IF (iso_verif_aberrant_enc_nostop((xt(iso_HDO,il,1) & 3872 +delt*fxt(iso_HDO,il,1))/(rr(il,1)+delt*fr(il,1)), & 3873 'cv30_yield 3125, ddft en 1').EQ.1) THEN 3874 WRITE(*,*) 'il,rr(il,1),delt=',il,rr(il,1),delt 3875 WRITE(*,*) 'deltaDxt=',deltaD(xt(iso_HDO,il,1)/rr(il,1)) 3876 WRITE(*,*) 'delt*fr(il,1),fr(il,1)=',delt*fr(il,1),fr(il,1) 3877 WRITE(*,*) 'fxt=',fxt(iso_HDO,il,1) 3878 WRITE(*,*) 'fq_ddft(il,1)=',0.01*grav*mp(il,2)*(rp(il,2)-rr(il,1))*work(il) 3879 WRITE(*,*) 'fq_evapprecip(il,1)=',sigd*0.5*(evap(il,1)+evap(il,2)) 3880 WRITE(*,*) 'fq_fluxmasse(il,1)=', 0.01*grav*am(il)*(rr(il,2)-rr(il,1))*work(il) 3881 WRITE(*,*) 'deltaDfq_ddft=',deltaD((xtp(iso_HDO,il,2)-xt(iso_HDO,il,1))/(rp(il,2)-rr(il,1))) 3882 WRITE(*,*) 'deltaDfq_evapprecip=',deltaD((xtevap(iso_HDO,il,1)+xtevap(iso_HDO,il,2))/(evap(il,1)+evap(il,2))) 3883 WRITE(*,*) 'deltaDfq_fluxmasse=',deltaD((xt(iso_HDO,il,2)-xt(iso_HDO,il,1))/(rr(il,2)-rr(il,1))) 3884 WRITE(*,*) 'rr(il,2),rr(il,1)=',rr(il,2),rr(il,1) 3885 WRITE(*,*) 'xt(iso_HDO,il,2),xt(iso_HDO,il,1)',xt(iso_HDO,il,2),xt(iso_HDO,il,1) 3886 WRITE(*,*) 'dq_tmp=',dq_tmp 3887 CALL abort_physic('cv30_routines','cv30_yield',1) 3892 3888 endif ! iso_verif_aberrant_enc_nostop 3893 endif !if (iso_HDO.gt.0) then3889 endif !if (iso_HDO.gt.0) THEN 3894 3890 #ifdef ISOTRAC 3895 calliso_verif_traceur_justmass(fxt(1,il,1),'cv30_routine 3417')3896 doixt=1,ntraciso3891 CALL iso_verif_traceur_justmass(fxt(1,il,1),'cv30_routine 3417') 3892 DO ixt=1,ntraciso 3897 3893 xtnew(ixt)=xt(ixt,il,1)+delt*fxt(ixt,il,1) 3898 3894 enddo 3899 if(iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3395',1e-5) &3900 & .eq.1) then3901 write(*,*) 'il=',il3902 write(*,*) 'delt,fxt(:,il,1)=',delt,fxt(:,il,1)3903 write(*,*) 'xt(:,il,1)=' ,xt(:,il,1)3895 IF (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3395',1e-5) & 3896 .EQ.1) THEN 3897 WRITE(*,*) 'il=',il 3898 WRITE(*,*) 'delt,fxt(:,il,1)=',delt,fxt(:,il,1) 3899 WRITE(*,*) 'xt(:,il,1)=' ,xt(:,il,1) 3904 3900 #ifdef DIAGISO 3905 write(*,*) 'fxt_fluxmasse(:,il,1)=',fxt_fluxmasse(:,il,1)3906 write(*,*) 'fxt_ddft(:,il,1)=',fxt_ddft(:,il,1)3907 write(*,*) 'fxt_evapprecip(:,il,1)=', &3908 &fxt_evapprecip(:,il,1)3909 write(*,*) 'xt(:,il,2)=',xt(:,il,2)3910 write(*,*) 'xtp(:,il,2)=',xtp(:,il,2)3911 write(*,*) 'xtevap(:,il,1)=',xtevap(:,il,1)3912 write(*,*) 'xtevap(:,il,2)=',xtevap(:,il,2)3913 write(*,*) 'facam,facmp,facev=',0.01*grav*am(il)*work(il), &3914 &0.01*grav*mp(il,2)*work(il),sigd*0.53915 #endif 3901 WRITE(*,*) 'fxt_fluxmasse(:,il,1)=',fxt_fluxmasse(:,il,1) 3902 WRITE(*,*) 'fxt_ddft(:,il,1)=',fxt_ddft(:,il,1) 3903 WRITE(*,*) 'fxt_evapprecip(:,il,1)=', & 3904 fxt_evapprecip(:,il,1) 3905 WRITE(*,*) 'xt(:,il,2)=',xt(:,il,2) 3906 WRITE(*,*) 'xtp(:,il,2)=',xtp(:,il,2) 3907 WRITE(*,*) 'xtevap(:,il,1)=',xtevap(:,il,1) 3908 WRITE(*,*) 'xtevap(:,il,2)=',xtevap(:,il,2) 3909 WRITE(*,*) 'facam,facmp,facev=',0.01*grav*am(il)*work(il), & 3910 0.01*grav*mp(il,2)*work(il),sigd*0.5 3911 #endif 3916 3912 ! stop 3917 3913 endif 3918 #endif 3914 #endif 3919 3915 #endif 3920 3916 ! end cam verif … … 3932 3928 3933 3929 #ifdef ISO 3934 doixt = 1, ntraciso3930 DO ixt = 1, ntraciso 3935 3931 fxt(ixt,il,1)=0.1*mp(il,2)*(xtp(ixt,il,2)-xt(ixt,il,1))*work(il) & 3936 &+sigd*0.5*(xtevap(ixt,il,1)+xtevap(ixt,il,2))3932 +sigd*0.5*(xtevap(ixt,il,1)+xtevap(ixt,il,2)) 3937 3933 fxt(ixt,il,1)=fxt(ixt,il,1) & 3938 &+0.1*am(il)*(xt(ixt,il,2)-xt(ixt,il,1))*work(il)3934 +0.1*am(il)*(xt(ixt,il,2)-xt(ixt,il,1))*work(il) 3939 3935 enddo 3940 3936 3941 3937 #ifdef DIAGISO 3942 3938 fq_ddft(il,1)=fq_ddft(il,1) & 3943 &+0.1*mp(il,2)*(rp(il,2)-rr(il,1))*work(il)3939 +0.1*mp(il,2)*(rp(il,2)-rr(il,1))*work(il) 3944 3940 fq_evapprecip(il,1)=fq_evapprecip(il,1) & 3945 &+sigd*0.5*(evap(il,1)+evap(il,2))3941 +sigd*0.5*(evap(il,1)+evap(il,2)) 3946 3942 fq_fluxmasse(il,1)=fq_fluxmasse(il,1) & 3947 &+0.1*am(il)*(rr(il,2)-rr(il,1))*work(il)3948 doixt = 1, niso3943 +0.1*am(il)*(rr(il,2)-rr(il,1))*work(il) 3944 DO ixt = 1, niso 3949 3945 fxt_fluxmasse(ixt,il,1)=fxt(ixt,il,1) & 3950 &+0.1*am(il)*(xt(ixt,il,2)-xt(ixt,il,1))*work(il)3946 +0.1*am(il)*(xt(ixt,il,2)-xt(ixt,il,1))*work(il) 3951 3947 fxt_ddft(ixt,il,1)=fxt(ixt,il,1) & 3952 &+0.1*mp(il,2)*(xtp(ixt,il,2)-xt(ixt,il,1))*work(il)3948 +0.1*mp(il,2)*(xtp(ixt,il,2)-xt(ixt,il,1))*work(il) 3953 3949 fxt_evapprecip(ixt,il,1)=fxt(ixt,il,1) & 3954 &+sigd*0.5*(xtevap(ixt,il,1)+xtevap(ixt,il,2))3950 +sigd*0.5*(xtevap(ixt,il,1)+xtevap(ixt,il,2)) 3955 3951 enddo 3956 3952 #endif 3957 3958 3953 3954 3959 3955 ! cam verif 3960 #ifdef ISOVERIF 3961 if (iso_eau.gt.0) then3962 calliso_verif_egalite_choix(fxt(iso_eau,il,1), &3963 &fr(il,1),'cv30_routines 3023', &3964 &errmax,errmaxrel)3965 endif !if (iso_eau.gt.0) then3966 if ((iso_HDO.gt.0).and. &3967 & (rr(il,1)+delt*fr(il,1).gt.ridicule)) then3968 calliso_verif_aberrant_encadre((xt(iso_HDO,il,1) &3969 &+delt*fxt(iso_HDO,il,1)) &3970 &/(rr(il,1)+delt*fr(il,1)), &3971 &'cv30_yield 3125b, ddft en 1')3972 endif !if (iso_HDO.gt.0) then3956 #ifdef ISOVERIF 3957 IF (iso_eau.gt.0) THEN 3958 CALL iso_verif_egalite_choix(fxt(iso_eau,il,1), & 3959 fr(il,1),'cv30_routines 3023', & 3960 errmax,errmaxrel) 3961 endif !if (iso_eau.gt.0) THEN 3962 IF ((iso_HDO.gt.0).AND. & 3963 (rr(il,1)+delt*fr(il,1).gt.ridicule)) THEN 3964 CALL iso_verif_aberrant_encadre((xt(iso_HDO,il,1) & 3965 +delt*fxt(iso_HDO,il,1)) & 3966 /(rr(il,1)+delt*fr(il,1)), & 3967 'cv30_yield 3125b, ddft en 1') 3968 endif !if (iso_HDO.gt.0) THEN 3973 3969 #ifdef ISOTRAC 3974 calliso_verif_traceur_justmass(fxt(1,il,1), &3975 &'cv30_routine 3417')3976 doixt=1,ntraciso3970 CALL iso_verif_traceur_justmass(fxt(1,il,1), & 3971 'cv30_routine 3417') 3972 DO ixt=1,ntraciso 3977 3973 xtnew(ixt)=xt(ixt,il,1)+delt*fxt(ixt,il,1) 3978 3974 enddo 3979 if(iso_verif_tracpos_choix_nostop(xtnew, &3980 &'cv30_yield 3449',1e-5) &3981 & .eq.1) then3982 write(*,*) 'il=',il3983 write(*,*) 'delt,fxt(:,il,1)=',delt,fxt(:,il,1)3984 write(*,*) 'xt(:,il,1)=' ,xt(:,il,1)3975 IF (iso_verif_tracpos_choix_nostop(xtnew, & 3976 'cv30_yield 3449',1e-5) & 3977 .EQ.1) THEN 3978 WRITE(*,*) 'il=',il 3979 WRITE(*,*) 'delt,fxt(:,il,1)=',delt,fxt(:,il,1) 3980 WRITE(*,*) 'xt(:,il,1)=' ,xt(:,il,1) 3985 3981 ! stop 3986 3982 endif 3987 #endif 3983 #endif 3988 3984 #endif 3989 3985 ! end cam verif … … 3999 3995 ! do j=1,ntra 4000 3996 ! do il=1,ncum 4001 ! if (cvflag_grav) then3997 ! if (cvflag_grav) THEN 4002 3998 ! ftra(il,1,j)=ftra(il,1,j)+0.01*grav*work(il) 4003 3999 ! : *(mp(il,2)*(trap(il,2,j)-tra(il,1,j)) … … 4007 4003 ! : *(mp(il,2)*(trap(il,2,j)-tra(il,1,j)) 4008 4004 ! : +am(il)*(tra(il,2,j)-tra(il,1,j))) 4009 ! endif4005 ! END IF 4010 4006 ! enddo 4011 4007 ! enddo … … 4023 4019 4024 4020 #ifdef ISO 4025 doixt = 1, ntraciso4021 DO ixt = 1, ntraciso 4026 4022 fxt(ixt,il,1)=fxt(ixt,il,1) & 4027 &+0.01*grav*work(il)*ment(il,j,1)*(xtent(ixt,il,j,1)-xt(ixt,il,1))4023 +0.01*grav*work(il)*ment(il,j,1)*(xtent(ixt,il,j,1)-xt(ixt,il,1)) 4028 4024 enddo 4029 4025 4030 4026 #ifdef DIAGISO 4031 4027 fq_detrainement(il,1)=fq_detrainement(il,1) & 4032 &+0.01*grav*work(il)*ment(il,j,1)*(qent(il,j,1)-rr(il,1))4028 +0.01*grav*work(il)*ment(il,j,1)*(qent(il,j,1)-rr(il,1)) 4033 4029 f_detrainement(il,1)=f_detrainement(il,1) & 4034 &+0.01*grav*work(il)*ment(il,j,1)4030 +0.01*grav*work(il)*ment(il,j,1) 4035 4031 q_detrainement(il,1)=q_detrainement(il,1) & 4036 &+0.01*grav*work(il)*ment(il,j,1)*qent(il,j,1)4037 doixt = 1, niso4032 +0.01*grav*work(il)*ment(il,j,1)*qent(il,j,1) 4033 DO ixt = 1, niso 4038 4034 fxt_detrainement(ixt,il,1)=fxt_detrainement(ixt,il,1) & 4039 &+0.01*grav*work(il)*ment(il,j,1)*(xtent(ixt,il,j,1)-xt(ixt,il,1))4035 +0.01*grav*work(il)*ment(il,j,1)*(xtent(ixt,il,j,1)-xt(ixt,il,1)) 4040 4036 xt_detrainement(ixt,il,1)=xt_detrainement(ixt,il,1) & 4041 &+0.01*grav*work(il)*ment(il,j,1)*xtent(ixt,il,j,1)4037 +0.01*grav*work(il)*ment(il,j,1)*xtent(ixt,il,j,1) 4042 4038 enddo 4043 4039 #endif … … 4045 4041 ! cam verif 4046 4042 #ifdef ISOVERIF 4047 if (iso_eau.gt.0) then4048 calliso_verif_egalite_choix(fxt(iso_eau,il,1), &4049 &fr(il,1),'cv30_routines 3251',errmax,errmaxrel)4050 endif !if (iso_eau.gt.0) then4051 if ((iso_HDO.gt.0).and. &4052 & (rr(il,1)+delt*fr(il,1).gt.ridicule)) then4053 calliso_verif_aberrant_encadre((xt(iso_HDO,il,1) &4054 &+delt*fxt(iso_HDO,il,1))/(rr(il,1)+delt*fr(il,1)), &4055 &'cv30_yield 3127, dtr melanges')4056 endif !if (iso_HDO.gt.0) then4043 IF (iso_eau.gt.0) THEN 4044 CALL iso_verif_egalite_choix(fxt(iso_eau,il,1), & 4045 fr(il,1),'cv30_routines 3251',errmax,errmaxrel) 4046 endif !if (iso_eau.gt.0) THEN 4047 IF ((iso_HDO.gt.0).AND. & 4048 (rr(il,1)+delt*fr(il,1).gt.ridicule)) THEN 4049 CALL iso_verif_aberrant_encadre((xt(iso_HDO,il,1) & 4050 +delt*fxt(iso_HDO,il,1))/(rr(il,1)+delt*fr(il,1)), & 4051 'cv30_yield 3127, dtr melanges') 4052 endif !if (iso_HDO.gt.0) THEN 4057 4053 #ifdef ISOTRAC 4058 calliso_verif_traceur_justmass(fxt(1,il,1),'cv30_routine 3417')4059 doixt=1,ntraciso4054 CALL iso_verif_traceur_justmass(fxt(1,il,1),'cv30_routine 3417') 4055 DO ixt=1,ntraciso 4060 4056 xtnew(ixt)=xt(ixt,il,1)+delt*fxt(ixt,il,1) 4061 4057 enddo 4062 if(iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3525',1e-5) &4063 & .eq.1) then4064 write(*,*) 'il=',il4065 write(*,*) 'delt,fxt(:,il,1)=',delt,fxt(:,il,1)4066 write(*,*) 'fac=', 0.01*grav*work(il)*ment(il,j,1)4067 write(*,*) 'xt(:,il,1)=' ,xt(:,il,1)4068 write(*,*) 'xtent(:,il,j,1)=' ,xtent(:,il,j,1)4058 IF (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3525',1e-5) & 4059 .EQ.1) THEN 4060 WRITE(*,*) 'il=',il 4061 WRITE(*,*) 'delt,fxt(:,il,1)=',delt,fxt(:,il,1) 4062 WRITE(*,*) 'fac=', 0.01*grav*work(il)*ment(il,j,1) 4063 WRITE(*,*) 'xt(:,il,1)=' ,xt(:,il,1) 4064 WRITE(*,*) 'xtent(:,il,j,1)=' ,xtent(:,il,j,1) 4069 4065 ! stop 4070 4066 endif 4071 #endif 4067 #endif 4072 4068 #endif 4073 4069 ! end cam verif … … 4083 4079 4084 4080 #ifdef ISO 4085 doixt = 1, ntraciso4081 DO ixt = 1, ntraciso 4086 4082 fxt(ixt,il,1)=fxt(ixt,il,1) & 4087 &+0.1*work(il)*ment(il,j,1)*(xtent(ixt,il,j,1)-xt(ixt,il,1))4083 +0.1*work(il)*ment(il,j,1)*(xtent(ixt,il,j,1)-xt(ixt,il,1)) 4088 4084 enddo 4089 4085 4090 4086 #ifdef DIAGISO 4091 4087 fq_detrainement(il,1)=fq_detrainement(il,1) & 4092 &+0.1*work(il)*ment(il,j,1)*(qent(il,j,1)-rr(il,1))4088 +0.1*work(il)*ment(il,j,1)*(qent(il,j,1)-rr(il,1)) 4093 4089 f_detrainement(il,1)=f_detrainement(il,1) & 4094 &+0.1*work(il)*ment(il,j,1)4090 +0.1*work(il)*ment(il,j,1) 4095 4091 q_detrainement(il,1)=q_detrainement(il,1) & 4096 &+0.1*work(il)*ment(il,j,1)*qent(il,j,1)4097 doixt = 1, niso4092 +0.1*work(il)*ment(il,j,1)*qent(il,j,1) 4093 DO ixt = 1, niso 4098 4094 fxt_detrainement(ixt,il,1)=fxt_detrainement(ixt,il,1) & 4099 &+0.1*work(il)*ment(il,j,1)*(xtent(ixt,il,j,1)-xt(ixt,il,1))4095 +0.1*work(il)*ment(il,j,1)*(xtent(ixt,il,j,1)-xt(ixt,il,1)) 4100 4096 xt_detrainement(ixt,il,1)=xt_detrainement(ixt,il,1) & 4101 &+0.1*work(il)*ment(il,j,1)*xtent(ixt,il,j,1)4097 +0.1*work(il)*ment(il,j,1)*xtent(ixt,il,j,1) 4102 4098 enddo 4103 4099 #endif … … 4105 4101 ! cam verif 4106 4102 #ifdef ISOVERIF 4107 if (iso_eau.gt.0) then4108 calliso_verif_egalite_choix(fxt(iso_eau,il,1), &4109 &fr(il,1),'cv30_routines 3092',errmax,errmaxrel)4110 endif !if (iso_eau.gt.0) then4111 if ((iso_HDO.gt.0).and. &4112 & (rr(il,1)+delt*fr(il,1).gt.ridicule)) then4113 calliso_verif_aberrant_encadre((xt(iso_HDO,il,1) &4114 &+delt*fxt(iso_HDO,il,1))/(rr(il,1)+delt*fr(il,1)), &4115 &'cv30_yield 3127b, dtr melanges')4116 endif !if (iso_HDO.gt.0) then4103 IF (iso_eau.gt.0) THEN 4104 CALL iso_verif_egalite_choix(fxt(iso_eau,il,1), & 4105 fr(il,1),'cv30_routines 3092',errmax,errmaxrel) 4106 endif !if (iso_eau.gt.0) THEN 4107 IF ((iso_HDO.gt.0).AND. & 4108 (rr(il,1)+delt*fr(il,1).gt.ridicule)) THEN 4109 CALL iso_verif_aberrant_encadre((xt(iso_HDO,il,1) & 4110 +delt*fxt(iso_HDO,il,1))/(rr(il,1)+delt*fr(il,1)), & 4111 'cv30_yield 3127b, dtr melanges') 4112 endif !if (iso_HDO.gt.0) THEN 4117 4113 #ifdef ISOTRAC 4118 calliso_verif_traceur_justmass(fxt(1,il,1),'cv30_routine 3462')4119 doixt=1,ntraciso4114 CALL iso_verif_traceur_justmass(fxt(1,il,1),'cv30_routine 3462') 4115 DO ixt=1,ntraciso 4120 4116 xtnew(ixt)=xt(ixt,il,1)+delt*fxt(ixt,il,1) 4121 4117 enddo 4122 if(iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3753',1e-5) &4123 & .eq.1) then4124 write(*,*) 'il=',il4118 IF (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3753',1e-5) & 4119 .EQ.1) THEN 4120 WRITE(*,*) 'il=',il 4125 4121 endif 4126 #endif 4122 #endif 4127 4123 #endif 4128 4124 ! end cam verif … … 4137 4133 ! do j=2,nl 4138 4134 ! do il=1,ncum 4139 ! if (j.le.inb(il)) then 4140 4141 ! if (cvflag_grav) then 4135 ! if (j.le.inb(il)) THEN 4136 ! if (cvflag_grav) THEN 4142 4137 ! ftra(il,1,k)=ftra(il,1,k)+0.01*grav*work(il)*ment(il,j,1) 4143 4138 ! : *(traent(il,j,1,k)-tra(il,1,k)) … … 4145 4140 ! ftra(il,1,k)=ftra(il,1,k)+0.1*work(il)*ment(il,j,1) 4146 4141 ! : *(traent(il,j,1,k)-tra(il,1,k)) 4147 ! endif4148 4149 ! endif4142 ! END IF 4143 4144 ! END IF 4150 4145 ! enddo 4151 4146 ! enddo … … 4248 4243 #ifdef DIAGISO 4249 4244 fq_fluxmasse(il,i)=fq_fluxmasse(il,i) & 4250 &+0.01*grav*dpinv*(amp1(il)*(rr(il,i+1)-rr(il,i)) &4251 &-ad(il)*(rr(il,i)-rr(il,i-1)))4245 +0.01*grav*dpinv*(amp1(il)*(rr(il,i+1)-rr(il,i)) & 4246 -ad(il)*(rr(il,i)-rr(il,i-1))) 4252 4247 ! modif 2 fev: pour avoir subsidence compensatoire totale, on retranche 4253 4248 ! ad. … … 4260 4255 ! meme temps. 4261 4256 dq_tmp= 0.01*grav*dpinv*(amp1(il)*(rr(il,i+1)-rr(il,i)) & 4262 &-ad(il)*(rr(il,i)-rr(il,i-1)))*delt4257 -ad(il)*(rr(il,i)-rr(il,i-1)))*delt 4263 4258 ! c'est equivalent a dqi= kamp1*qip1+kad*qim1-(kamp1+kad)*qi 4264 if ((dq_tmp/rr(il,i).lt.-0.9).and.correction_excess_aberrant) then4259 IF ((dq_tmp/rr(il,i).lt.-0.9).AND.correction_excess_aberrant) THEN 4265 4260 ! nouvelle formulation 4266 4261 k_tmp=0.01*grav*dpinv*amp1(il)*delt 4267 4262 kad_tmp=0.01*grav*dpinv*ad(il)*delt 4268 doixt = 1, ntraciso4263 DO ixt = 1, ntraciso 4269 4264 R_tmp=(xt(ixt,il,i)+k_tmp*xt(ixt,il,i+1)+kad_tmp*xt(ixt,il,i-1)) & 4270 &/(rr(il,i)+k_tmp*rr(il,i+1)+kad_tmp*rr(il,i-1))4265 /(rr(il,i)+k_tmp*rr(il,i+1)+kad_tmp*rr(il,i-1)) 4271 4266 dx_tmp= R_tmp*( rr(il,i)+ dq_tmp)-xt(ixt,il,i) 4272 4267 fxt(ixt,il,i)= dx_tmp/delt 4273 4268 #ifdef ISOVERIF 4274 if ((ixt.eq.iso_HDO).or.(ixt.eq.iso_eau)) then4275 write(*,*) 'cv30_routines 4367: il,i,ixt=',il,i,ixt4276 write(*,*) 'dq_tmp,rr(il,i)=',dq_tmp,rr(il,i)4277 write(*,*) 'R_tmp,dx_tmp,delt=',R_tmp,dx_tmp,delt4278 write(*,*) 'amp1(il),ad(il)=',amp1(il),ad(il)4279 write(*,*) 'xt(ixt,il,i-1:i+1)=',xt(ixt,il,i-1:i+1)4280 write(*,*) 'rr(il,i-1:i+1)=',rr(il,i-1:i+1)4281 write(*,*) 'fxt=',dx_tmp/delt4282 write(*,*) 'rr(il,i)+dq_tmp=',rr(il,1)+dq_tmp4283 write(*,*) 'xt(ixt,il,i)+dx_tmp=',xt(ixt,il,i)+dx_tmp4284 write(*,*) 'xt(ixt,il,i)+fxt(ixt,il,i)*delt=', &4285 &xt(ixt,il,i)+fxt(ixt,il,i)*delt4286 write(*,*) 'fxt(:,il,i)=',fxt(:,il,i)4287 endif !if (ixt. eq.iso_HDO) then4288 #endif 4289 enddo ! do ixt = 1, ntraciso 4269 IF ((ixt.EQ.iso_HDO).OR.(ixt.EQ.iso_eau)) THEN 4270 WRITE(*,*) 'cv30_routines 4367: il,i,ixt=',il,i,ixt 4271 WRITE(*,*) 'dq_tmp,rr(il,i)=',dq_tmp,rr(il,i) 4272 WRITE(*,*) 'R_tmp,dx_tmp,delt=',R_tmp,dx_tmp,delt 4273 WRITE(*,*) 'amp1(il),ad(il)=',amp1(il),ad(il) 4274 WRITE(*,*) 'xt(ixt,il,i-1:i+1)=',xt(ixt,il,i-1:i+1) 4275 WRITE(*,*) 'rr(il,i-1:i+1)=',rr(il,i-1:i+1) 4276 WRITE(*,*) 'fxt=',dx_tmp/delt 4277 WRITE(*,*) 'rr(il,i)+dq_tmp=',rr(il,1)+dq_tmp 4278 WRITE(*,*) 'xt(ixt,il,i)+dx_tmp=',xt(ixt,il,i)+dx_tmp 4279 WRITE(*,*) 'xt(ixt,il,i)+fxt(ixt,il,i)*delt=', & 4280 xt(ixt,il,i)+fxt(ixt,il,i)*delt 4281 WRITE(*,*) 'fxt(:,il,i)=',fxt(:,il,i) 4282 endif !if (ixt.EQ.iso_HDO) THEN 4283 #endif 4284 enddo ! do ixt = 1, ntraciso 4290 4285 #ifdef DIAGISO 4291 doixt = 1, niso4286 DO ixt = 1, niso 4292 4287 fxt_fluxmasse(ixt,il,i)=fxt(ixt,il,i) 4293 4288 enddo 4294 #endif 4295 else !if (dq_tmp/rr(il,i).lt.-0.9) then4289 #endif 4290 else !if (dq_tmp/rr(il,i).lt.-0.9) THEN 4296 4291 ! ancienne formulation 4297 doixt = 1, ntraciso4292 DO ixt = 1, ntraciso 4298 4293 fxt(ixt,il,i)= & 4299 &0.01*grav*dpinv*(amp1(il)*(xt(ixt,il,i+1)-xt(ixt,il,i)) &4300 &-ad(il)*(xt(ixt,il,i)-xt(ixt,il,i-1)))4294 0.01*grav*dpinv*(amp1(il)*(xt(ixt,il,i+1)-xt(ixt,il,i)) & 4295 -ad(il)*(xt(ixt,il,i)-xt(ixt,il,i-1))) 4301 4296 enddo 4302 4297 #ifdef DIAGISO 4303 doixt = 1, niso4298 DO ixt = 1, niso 4304 4299 fxt_fluxmasse(ixt,il,i)=fxt_fluxmasse(ixt,il,i)+ & 4305 &0.01*grav*dpinv*(amp1(il)*(xt(ixt,il,i+1)-xt(ixt,il,i)) &4306 &-ad(il)*(xt(ixt,il,i)-xt(ixt,il,i-1)))4300 0.01*grav*dpinv*(amp1(il)*(xt(ixt,il,i+1)-xt(ixt,il,i)) & 4301 -ad(il)*(xt(ixt,il,i)-xt(ixt,il,i-1))) 4307 4302 enddo 4308 #endif 4309 endif !if (dq_tmp/rr(il,i).lt.-0.9) then 4310 4311 4303 #endif 4304 endif !if (dq_tmp/rr(il,i).lt.-0.9) THEN 4312 4305 ! cam verif 4313 4306 #ifdef ISOVERIF 4314 if (iso_eau.gt.0) then4315 calliso_verif_egalite_choix(fxt(iso_eau,il,i), &4316 &fr(il,i),'cv30_routines 3226',errmax,errmaxrel)4317 endif !if (iso_eau.gt.0) then4318 doixt=1,niso4319 calliso_verif_noNAN(fxt(ixt,il,i),'cv30_routines 3229')4307 IF (iso_eau.gt.0) THEN 4308 CALL iso_verif_egalite_choix(fxt(iso_eau,il,i), & 4309 fr(il,i),'cv30_routines 3226',errmax,errmaxrel) 4310 endif !if (iso_eau.gt.0) THEN 4311 DO ixt=1,niso 4312 CALL iso_verif_noNAN(fxt(ixt,il,i),'cv30_routines 3229') 4320 4313 enddo 4321 if ((iso_HDO.gt.0).and. &4322 & (rr(il,i)+delt*fr(il,i).gt.ridicule)) then4323 calliso_verif_aberrant_encadre((xt(iso_HDO,il,i) &4324 &+delt*fxt(iso_HDO,il,i)) &4325 &/(rr(il,i)+delt*fr(il,i)), &4326 &'cv30_yield 3384, flux masse')4327 endif !if (iso_HDO.gt.0) then4328 if ((iso_HDO.gt.0).and.(iso_O18.gt.0).and. &4329 & (rr(il,i)+delt*fr(il,i).gt.ridicule)) then4330 calliso_verif_O18_aberrant( &4331 &(xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i))/(rr(il,i)+delt*fr(il,i)), &4332 &(xt(iso_O18,il,i)+delt*fxt(iso_O18,il,i))/(rr(il,i)+delt*fr(il,i)), &4333 &'cv30_yield 3384,O18, flux masse')4334 endif !if (iso_HDO.gt.0) then4314 IF ((iso_HDO.gt.0).AND. & 4315 (rr(il,i)+delt*fr(il,i).gt.ridicule)) THEN 4316 CALL iso_verif_aberrant_encadre((xt(iso_HDO,il,i) & 4317 +delt*fxt(iso_HDO,il,i)) & 4318 /(rr(il,i)+delt*fr(il,i)), & 4319 'cv30_yield 3384, flux masse') 4320 endif !if (iso_HDO.gt.0) THEN 4321 IF ((iso_HDO.gt.0).AND.(iso_O18.gt.0).AND. & 4322 (rr(il,i)+delt*fr(il,i).gt.ridicule)) THEN 4323 CALL iso_verif_O18_aberrant( & 4324 (xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i))/(rr(il,i)+delt*fr(il,i)), & 4325 (xt(iso_O18,il,i)+delt*fxt(iso_O18,il,i))/(rr(il,i)+delt*fr(il,i)), & 4326 'cv30_yield 3384,O18, flux masse') 4327 endif !if (iso_HDO.gt.0) THEN 4335 4328 #ifdef ISOTRAC 4336 calliso_verif_traceur_justmass(fxt(1,il,1),'cv30_routine 3626')4337 doixt=1,ntraciso4329 CALL iso_verif_traceur_justmass(fxt(1,il,1),'cv30_routine 3626') 4330 DO ixt=1,ntraciso 4338 4331 xtnew(ixt)=xt(ixt,il,i)+delt*fxt(ixt,il,i) 4339 4332 enddo 4340 if(iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3727',1e-5) &4341 & .eq.1) then4342 write(*,*) 'il,i=',il,i4343 write(*,*) 'fxt(:,il,i)=',fxt(:,il,i)4344 write(*,*) 'amp1(il),ad(il),fac=', &4345 &1(il),ad(il),0.01*grav*dpinv4346 write(*,*) 'xt(:,il,i+1)=' ,xt(:,il,i+1)4347 write(*,*) 'xt(:,il,i)=' ,xt(:,il,i)4348 write(*,*) 'xt(:,il,i-1)=' ,xt(:,il,i-1)4333 IF (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3727',1e-5) & 4334 .EQ.1) THEN 4335 WRITE(*,*) 'il,i=',il,i 4336 WRITE(*,*) 'fxt(:,il,i)=',fxt(:,il,i) 4337 WRITE(*,*) 'amp1(il),ad(il),fac=', & 4338 amp1(il),ad(il),0.01*grav*dpinv 4339 WRITE(*,*) 'xt(:,il,i+1)=' ,xt(:,il,i+1) 4340 WRITE(*,*) 'xt(:,il,i)=' ,xt(:,il,i) 4341 WRITE(*,*) 'xt(:,il,i-1)=' ,xt(:,il,i-1) 4349 4342 ! stop 4350 4343 endif 4351 #endif 4352 #endif 4353 ! end cam verif 4344 #endif 4345 #endif 4346 ! end cam verif 4354 4347 #endif 4355 4348 ELSE ! cvflag_grav … … 4362 4355 4363 4356 #ifdef ISO 4364 doixt = 1, ntraciso4357 DO ixt = 1, ntraciso 4365 4358 fxt(ixt,il,i)= & 4366 &0.1*dpinv*(amp1(il)*(xt(ixt,il,i+1)-xt(ixt,il,i)) &4367 &-ad(il)*(xt(ixt,il,i)-xt(ixt,il,i-1)))4359 0.1*dpinv*(amp1(il)*(xt(ixt,il,i+1)-xt(ixt,il,i)) & 4360 -ad(il)*(xt(ixt,il,i)-xt(ixt,il,i-1))) 4368 4361 enddo 4369 4362 4370 4363 #ifdef DIAGISO 4371 4364 fq_fluxmasse(il,i)=fq_fluxmasse(il,i) & 4372 &+0.1*dpinv*(amp1(il)*(rr(il,i+1)-rr(il,i)) &4373 &-ad(il)*(rr(il,i)-rr(il,i-1)))4374 doixt = 1, niso4365 +0.1*dpinv*(amp1(il)*(rr(il,i+1)-rr(il,i)) & 4366 -ad(il)*(rr(il,i)-rr(il,i-1))) 4367 DO ixt = 1, niso 4375 4368 fxt_fluxmasse(ixt,il,i)=fxt_fluxmasse(ixt,il,i)+ & 4376 &0.1*dpinv*(amp1(il)*(xt(ixt,il,i+1)-xt(ixt,il,i)) &4377 &-ad(il)*(xt(ixt,il,i)-xt(ixt,il,i-1)))4369 0.1*dpinv*(amp1(il)*(xt(ixt,il,i+1)-xt(ixt,il,i)) & 4370 -ad(il)*(xt(ixt,il,i)-xt(ixt,il,i-1))) 4378 4371 enddo 4379 #endif 4372 #endif 4380 4373 4381 4374 ! cam verif 4382 4375 #ifdef ISOVERIF 4383 if (iso_eau.gt.0) then4384 calliso_verif_egalite_choix(fxt(iso_eau,il,i), &4385 &fr(il,i),'cv30_routines 3252',errmax,errmaxrel)4386 endif !if (iso_eau.gt.0) then4387 doixt=1,niso4388 calliso_verif_noNAN(fxt(ixt,il,i),'cv30_routines 3229')4376 IF (iso_eau.gt.0) THEN 4377 CALL iso_verif_egalite_choix(fxt(iso_eau,il,i), & 4378 fr(il,i),'cv30_routines 3252',errmax,errmaxrel) 4379 endif !if (iso_eau.gt.0) THEN 4380 DO ixt=1,niso 4381 CALL iso_verif_noNAN(fxt(ixt,il,i),'cv30_routines 3229') 4389 4382 enddo 4390 4383 ! correction 21 oct 2008 4391 if ((iso_HDO.gt.0).and. &4392 & (rr(il,i)+delt*fr(il,i).gt.ridicule)) then4393 calliso_verif_aberrant_encadre((xt(iso_HDO,il,i) &4394 &+delt*fxt(iso_HDO,il,i))/(rr(il,i)+delt*fr(il,i)), &4395 &'cv30_yield 3384b flux masse')4396 if (iso_O18.gt.0) then4397 calliso_verif_O18_aberrant( &4398 &(xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i)) &4399 &/(rr(il,i)+delt*fr(il,i)), &4400 &(xt(iso_O18,il,i)+delt*fxt(iso_O18,il,i)) &4401 &/(rr(il,i)+delt*fr(il,i)), &4402 &'cv30_yield 3384bO18 flux masse')4403 endif !if (iso_O18.gt.0) then4404 endif !if (iso_HDO.gt.0) then4384 IF ((iso_HDO.gt.0).AND. & 4385 (rr(il,i)+delt*fr(il,i).gt.ridicule)) THEN 4386 CALL iso_verif_aberrant_encadre((xt(iso_HDO,il,i) & 4387 +delt*fxt(iso_HDO,il,i))/(rr(il,i)+delt*fr(il,i)), & 4388 'cv30_yield 3384b flux masse') 4389 IF (iso_O18.gt.0) THEN 4390 CALL iso_verif_O18_aberrant( & 4391 (xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i)) & 4392 /(rr(il,i)+delt*fr(il,i)), & 4393 (xt(iso_O18,il,i)+delt*fxt(iso_O18,il,i)) & 4394 /(rr(il,i)+delt*fr(il,i)), & 4395 'cv30_yield 3384bO18 flux masse') 4396 endif !if (iso_O18.gt.0) THEN 4397 endif !if (iso_HDO.gt.0) THEN 4405 4398 #ifdef ISOTRAC 4406 calliso_verif_traceur_justmass(fxt(1,il,1),'cv30_routine 3674')4407 doixt=1,ntraciso4399 CALL iso_verif_traceur_justmass(fxt(1,il,1),'cv30_routine 3674') 4400 DO ixt=1,ntraciso 4408 4401 xtnew(ixt)=xt(ixt,il,i)+delt*fxt(ixt,il,i) 4409 4402 enddo 4410 if(iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3775',1e-5) &4411 & .eq.1) then4412 write(*,*) 'il,i=',il,i4403 IF (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3775',1e-5) & 4404 .EQ.1) THEN 4405 WRITE(*,*) 'il,i=',il,i 4413 4406 endif 4414 #endif 4415 #endif 4416 ! end cam verif 4407 #endif 4408 #endif 4409 ! end cam verif 4417 4410 #endif 4418 4411 END IF ! cvflag_grav … … 4423 4416 ! do k=1,ntra 4424 4417 ! do il=1,ncum 4425 ! if (i.le.inb(il)) then4418 ! if (i.le.inb(il)) THEN 4426 4419 ! dpinv=1.0/(ph(il,i)-ph(il,i+1)) 4427 4420 ! cpinv=1.0/cpn(il,i) 4428 ! if (cvflag_grav) then4421 ! if (cvflag_grav) THEN 4429 4422 ! ftra(il,i,k)=ftra(il,i,k)+0.01*grav*dpinv 4430 4423 ! : *(amp1(il)*(tra(il,i+1,k)-tra(il,i,k)) … … 4434 4427 ! : *(amp1(il)*(tra(il,i+1,k)-tra(il,i,k)) 4435 4428 ! : -ad(il)*(tra(il,i,k)-tra(il,i-1,k))) 4436 ! endif4437 ! endif4429 ! END IF 4430 ! END IF 4438 4431 ! enddo 4439 4432 ! enddo … … 4458 4451 ! ce surplus a la meme compo que le elij, sans fractionnement. 4459 4452 ! d'ou le nouveau traitement ci-dessous. 4460 if (elij(il,k,i).gt.0.0) then4461 doixt = 1, ntraciso4453 IF (elij(il,k,i).gt.0.0) THEN 4454 DO ixt = 1, ntraciso 4462 4455 xtawat(ixt)=awat*(xtelij(ixt,il,k,i)/elij(il,k,i)) 4463 4456 ! xtawat(ixt)=amax1(xtawat(ixt),0.0) ! pas necessaire 4464 4457 enddo 4465 else !if (elij(il,k,i).gt.0.0) then4458 else !if (elij(il,k,i).gt.0.0) THEN 4466 4459 ! normalement, si elij(il,k,i)<=0, alors awat=0 4467 4460 ! on le verifie. Si c'est vrai -> xtawat=0 aussi 4468 4461 #ifdef ISOVERIF 4469 calliso_verif_egalite(awat,0.0,'cv30_yield 3779')4470 #endif 4471 doixt = 1, ntraciso4462 CALL iso_verif_egalite(awat,0.0,'cv30_yield 3779') 4463 #endif 4464 DO ixt = 1, ntraciso 4472 4465 xtawat(ixt)=0.0 4473 enddo 4466 enddo 4474 4467 endif 4475 4468 4476 4469 ! cam verif 4477 4470 #ifdef ISOVERIF 4478 if (iso_eau.gt.0) then4479 calliso_verif_egalite_choix(xtawat(iso_eau), &4480 &awat,'cv30_routines 3301',errmax,errmaxrel)4481 endif !if (iso_eau.gt.0) then4471 IF (iso_eau.gt.0) THEN 4472 CALL iso_verif_egalite_choix(xtawat(iso_eau), & 4473 awat,'cv30_routines 3301',errmax,errmaxrel) 4474 endif !if (iso_eau.gt.0) THEN 4482 4475 #ifdef ISOTRAC 4483 calliso_verif_traceur_justmass(xtawat(1),'cv30_routine 3729')4484 #endif 4485 #endif 4486 ! end cam verif 4476 CALL iso_verif_traceur_justmass(xtawat(1),'cv30_routine 3729') 4477 #endif 4478 #endif 4479 ! end cam verif 4487 4480 #endif 4488 4481 … … 4496 4489 4497 4490 #ifdef ISO 4498 doixt = 1, ntraciso4491 DO ixt = 1, ntraciso 4499 4492 fxt(ixt,il,i)=fxt(ixt,il,i) & 4500 &+0.01*grav*dpinv*ment(il,k,i) &4501 & *(xtent(ixt,il,k,i)-xtawat(ixt)-xt(ixt,il,i))4493 +0.01*grav*dpinv*ment(il,k,i) & 4494 *(xtent(ixt,il,k,i)-xtawat(ixt)-xt(ixt,il,i)) 4502 4495 enddo 4503 4496 4504 4497 #ifdef DIAGISO 4505 4498 fq_detrainement(il,i)=fq_detrainement(il,i) & 4506 &+0.01*grav*dpinv*ment(il,k,i) &4507 &*(qent(il,k,i)-awat-rr(il,i))4508 f_detrainement(il,i)=f_detrainement(il,i)& 4509 &+0.01*grav*dpinv*ment(il,k,i)4499 +0.01*grav*dpinv*ment(il,k,i) & 4500 *(qent(il,k,i)-awat-rr(il,i)) 4501 f_detrainement(il,i)=f_detrainement(il,i)& 4502 +0.01*grav*dpinv*ment(il,k,i) 4510 4503 q_detrainement(il,i)=q_detrainement(il,i) & 4511 &+0.01*grav*dpinv*ment(il,k,i)*qent(il,k,i)4512 doixt = 1, niso4504 +0.01*grav*dpinv*ment(il,k,i)*qent(il,k,i) 4505 DO ixt = 1, niso 4513 4506 fxt_detrainement(ixt,il,i)=fxt_detrainement(ixt,il,i) & 4514 &+0.01*grav*dpinv*ment(il,k,i) &4515 &*(xtent(ixt,il,k,i)-xtawat(ixt)-xt(ixt,il,i))4507 +0.01*grav*dpinv*ment(il,k,i) & 4508 *(xtent(ixt,il,k,i)-xtawat(ixt)-xt(ixt,il,i)) 4516 4509 xt_detrainement(ixt,il,i)=xt_detrainement(ixt,il,i) & 4517 &+0.01*grav*dpinv*ment(il,k,i)*xtent(ixt,il,k,i)4510 +0.01*grav*dpinv*ment(il,k,i)*xtent(ixt,il,k,i) 4518 4511 enddo 4519 #endif 4512 #endif 4520 4513 ! cam verif 4521 4514 #ifdef ISOVERIF 4522 if (iso_eau.gt.0) then4523 calliso_verif_egalite_choix(fxt(iso_eau,il,i), &4524 &fr(il,i),'cv30_routines 3325',errmax,errmaxrel)4525 endif !if (iso_eau.gt.0) then4526 doixt=1,niso4527 calliso_verif_noNAN(fxt(ixt,il,i),'cv30_routines 3328')4515 IF (iso_eau.gt.0) THEN 4516 CALL iso_verif_egalite_choix(fxt(iso_eau,il,i), & 4517 fr(il,i),'cv30_routines 3325',errmax,errmaxrel) 4518 endif !if (iso_eau.gt.0) THEN 4519 DO ixt=1,niso 4520 CALL iso_verif_noNAN(fxt(ixt,il,i),'cv30_routines 3328') 4528 4521 enddo 4529 if ((iso_HDO.gt.0).and. &4530 & (rr(il,i)+delt*fr(il,i).gt.ridicule)) then4531 if(iso_verif_aberrant_enc_nostop((xt(iso_HDO,il,i) &4532 &+delt*fxt(iso_HDO,il,i)) &4533 &/(rr(il,i)+delt*fr(il,i)),'cv30_yield 3396a, dtr mels') &4534 & .eq.1) then4535 write(*,*) 'il,k,i=',il,k,i4536 write(*,*) 'rr,delt,fr=',rr(il,i),delt,fr(il,i)4537 write(*,*) 'frnew=',0.01*grav*dpinv*ment(il, k, i)*(qent(il,k,i)-awat-rr(il,i))4538 write(*,*) 'frold=',fr(il,i)-0.01*grav*dpinv*ment(il, k, i)*(qent(il,k,i)-awat-rr(il,i))4539 write(*,*) 'deltaDfrnew=',deltaD((xtent(iso_HDO,il,k,i)-xtawat(iso_HDO)-xt(iso_HDO,il,i)) &4522 IF ((iso_HDO.gt.0).AND. & 4523 (rr(il,i)+delt*fr(il,i).gt.ridicule)) THEN 4524 IF (iso_verif_aberrant_enc_nostop((xt(iso_HDO,il,i) & 4525 +delt*fxt(iso_HDO,il,i)) & 4526 /(rr(il,i)+delt*fr(il,i)),'cv30_yield 3396a, dtr mels') & 4527 .EQ.1) THEN 4528 WRITE(*,*) 'il,k,i=',il,k,i 4529 WRITE(*,*) 'rr,delt,fr=',rr(il,i),delt,fr(il,i) 4530 WRITE(*,*) 'frnew=',0.01*grav*dpinv*ment(il, k, i)*(qent(il,k,i)-awat-rr(il,i)) 4531 WRITE(*,*) 'frold=',fr(il,i)-0.01*grav*dpinv*ment(il, k, i)*(qent(il,k,i)-awat-rr(il,i)) 4532 WRITE(*,*) 'deltaDfrnew=',deltaD((xtent(iso_HDO,il,k,i)-xtawat(iso_HDO)-xt(iso_HDO,il,i)) & 4540 4533 /(qent(il,k,i)-awat-rr(il,i))) 4541 write(*,*) 'deltaDfrold=',deltaD((fxt(iso_HDO,il,i) &4534 WRITE(*,*) 'deltaDfrold=',deltaD((fxt(iso_HDO,il,i) & 4542 4535 -0.01*grav*dpinv*ment(il, k, i)*(xtent(iso_HDO,il,k,i)-xtawat(iso_HDO)-xt(iso_HDO,il,i))) & 4543 4536 /(fr(il,i)-0.01*grav*dpinv*ment(il, k, i)*(qent(il,k,i)-awat-rr(il,i)))) 4544 write(*,*) 'q+=',rr(il,i)+delt*fr(il,i)4545 write(*,*) 'qent,awat=',qent(il,k,i),awat4546 write(*,*) 'elij,clw,ep=',elij(il,k,i),clw(il,i),ep(il,i)4547 write(*,*) 'deltaDfr=',deltaD(fxt(iso_hdo,il,i)/fr(il,i))4548 write(*,*) 'deltaDrr=',deltaD(xt(iso_hdo,il,i)/rr(il,i))4549 write(*,*) 'deltaDqent=',deltaD(xtent(iso_hdo,il,k,i) &4550 &/qent(il,k,i))4551 write(*,*) 'deltaDqent-awat=',deltaD((xtent(iso_hdo,il,k,i)-xtawat(iso_HDO)) &4552 &/(qent(il,k,i)-awat))4553 write(*,*) 'deltaDawat=',deltaD(xtawat(iso_hdo)/awat)4554 write(*,*) 'deltaDclw=',deltaD(xtclw(iso_hdo,il,i)/clw(il,i))4537 WRITE(*,*) 'q+=',rr(il,i)+delt*fr(il,i) 4538 WRITE(*,*) 'qent,awat=',qent(il,k,i),awat 4539 WRITE(*,*) 'elij,clw,ep=',elij(il,k,i),clw(il,i),ep(il,i) 4540 WRITE(*,*) 'deltaDfr=',deltaD(fxt(iso_hdo,il,i)/fr(il,i)) 4541 WRITE(*,*) 'deltaDrr=',deltaD(xt(iso_hdo,il,i)/rr(il,i)) 4542 WRITE(*,*) 'deltaDqent=',deltaD(xtent(iso_hdo,il,k,i) & 4543 /qent(il,k,i)) 4544 WRITE(*,*) 'deltaDqent-awat=',deltaD((xtent(iso_hdo,il,k,i)-xtawat(iso_HDO)) & 4545 /(qent(il,k,i)-awat)) 4546 WRITE(*,*) 'deltaDawat=',deltaD(xtawat(iso_hdo)/awat) 4547 WRITE(*,*) 'deltaDclw=',deltaD(xtclw(iso_hdo,il,i)/clw(il,i)) 4555 4548 ! stop 4556 4549 endif 4557 if (iso_O18.gt.0) then4558 calliso_verif_O18_aberrant( &4559 &(xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i)) &4560 &/(rr(il,i)+delt*fr(il,i)), &4561 &(xt(iso_O18,il,i)+delt*fxt(iso_O18,il,i)) &4562 &/(rr(il,i)+delt*fr(il,i)), &4563 &'cv30_yield 3396aO18, dtr mels')4564 endif !if (iso_O18.gt.0) then4565 endif !if (iso_HDO.gt.0) then4550 IF (iso_O18.gt.0) THEN 4551 CALL iso_verif_O18_aberrant( & 4552 (xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i)) & 4553 /(rr(il,i)+delt*fr(il,i)), & 4554 (xt(iso_O18,il,i)+delt*fxt(iso_O18,il,i)) & 4555 /(rr(il,i)+delt*fr(il,i)), & 4556 'cv30_yield 3396aO18, dtr mels') 4557 endif !if (iso_O18.gt.0) THEN 4558 endif !if (iso_HDO.gt.0) THEN 4566 4559 #ifdef ISOTRAC 4567 calliso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 3784')4568 doixt=1,ntraciso4560 CALL iso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 3784') 4561 DO ixt=1,ntraciso 4569 4562 xtnew(ixt)=xt(ixt,il,i)+delt*fxt(ixt,il,i) 4570 4563 enddo 4571 if(iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3905',1e-5) &4572 & .eq.1) then4573 write(*,*) 'il,i=',il,i4564 IF (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3905',1e-5) & 4565 .EQ.1) THEN 4566 WRITE(*,*) 'il,i=',il,i 4574 4567 endif 4575 ! calliso_verif_tracpos_choix(xtnew,'cv30_yield 3905',1e-5)4576 #endif 4568 ! CALL iso_verif_tracpos_choix(xtnew,'cv30_yield 3905',1e-5) 4569 #endif 4577 4570 #endif 4578 4571 #endif … … 4586 4579 4587 4580 #ifdef ISO 4588 doixt = 1, ntraciso4581 DO ixt = 1, ntraciso 4589 4582 fxt(ixt,il,i)=fxt(ixt,il,i) & 4590 &+0.1*dpinv*ment(il,k,i) &4591 &*(xtent(ixt,il,k,i)-xtawat(ixt)-xt(ixt,il,i))4583 +0.1*dpinv*ment(il,k,i) & 4584 *(xtent(ixt,il,k,i)-xtawat(ixt)-xt(ixt,il,i)) 4592 4585 enddo 4593 4586 4594 4587 #ifdef DIAGISO 4595 4588 fq_detrainement(il,i)=fq_detrainement(il,i) & 4596 &+0.1*dpinv*ment(il,k,i)*(qent(il,k,i)-awat-rr(il,i))4589 +0.1*dpinv*ment(il,k,i)*(qent(il,k,i)-awat-rr(il,i)) 4597 4590 f_detrainement(il,i)=f_detrainement(il,i) & 4598 &+0.1*dpinv*ment(il,k,i)4591 +0.1*dpinv*ment(il,k,i) 4599 4592 q_detrainement(il,i)=q_detrainement(il,i) & 4600 &+0.1*dpinv*ment(il,k,i)*qent(il,k,i)4601 doixt = 1, niso4593 +0.1*dpinv*ment(il,k,i)*qent(il,k,i) 4594 DO ixt = 1, niso 4602 4595 fxt_detrainement(ixt,il,i)=fxt_detrainement(ixt,il,i) & 4603 &+0.1*dpinv*ment(il,k,i) &4604 &*(xtent(ixt,il,k,i)-xtawat(ixt)-xt(ixt,il,i))4596 +0.1*dpinv*ment(il,k,i) & 4597 *(xtent(ixt,il,k,i)-xtawat(ixt)-xt(ixt,il,i)) 4605 4598 xt_detrainement(ixt,il,i)=xt_detrainement(ixt,il,i) & 4606 &+0.1*dpinv*ment(il,k,i)*xtent(ixt,il,k,i)4599 +0.1*dpinv*ment(il,k,i)*xtent(ixt,il,k,i) 4607 4600 enddo 4608 #endif 4601 #endif 4609 4602 4610 4603 ! cam verif 4611 4604 #ifdef ISOVERIF 4612 if (iso_eau.gt.0) then4613 calliso_verif_egalite_choix(fxt(iso_eau,il,i), &4614 &fr(il,i),'cv30_routines 3350',errmax,errmaxrel)4615 endif !if (iso_eau.gt.0) then4616 doixt=1,niso4617 calliso_verif_noNAN(fxt(ixt,il,i),'cv30_routines 3353')4605 IF (iso_eau.gt.0) THEN 4606 CALL iso_verif_egalite_choix(fxt(iso_eau,il,i), & 4607 fr(il,i),'cv30_routines 3350',errmax,errmaxrel) 4608 endif !if (iso_eau.gt.0) THEN 4609 DO ixt=1,niso 4610 CALL iso_verif_noNAN(fxt(ixt,il,i),'cv30_routines 3353') 4618 4611 enddo 4619 if ((iso_HDO.gt.0).and. &4620 & (rr(il,i)+delt*fr(il,i).gt.ridicule)) then4621 calliso_verif_aberrant_encadre((xt(iso_HDO,il,i) &4622 &+delt*fxt(iso_HDO,il,i)) &4623 &/(rr(il,i)+delt*fr(il,i)),'cv30_yield 3396b, dtr mels')4624 endif !if (iso_HDO.gt.0) then4625 if ((iso_HDO.gt.0).and.(iso_O18.gt.0).and. &4626 & (rr(il,i)+delt*fr(il,i).gt.ridicule)) then4627 calliso_verif_O18_aberrant( &4628 &(xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i))/(rr(il,i)+delt*fr(il,i)), &4629 &(xt(iso_O18,il,i)+delt*fxt(iso_O18,il,i))/(rr(il,i)+delt*fr(il,i)), &4630 &'cv30_yield 3396b,O18, dtr mels')4631 endif !if (iso_HDO.gt.0) then4612 IF ((iso_HDO.gt.0).AND. & 4613 (rr(il,i)+delt*fr(il,i).gt.ridicule)) THEN 4614 CALL iso_verif_aberrant_encadre((xt(iso_HDO,il,i) & 4615 +delt*fxt(iso_HDO,il,i)) & 4616 /(rr(il,i)+delt*fr(il,i)),'cv30_yield 3396b, dtr mels') 4617 endif !if (iso_HDO.gt.0) THEN 4618 IF ((iso_HDO.gt.0).AND.(iso_O18.gt.0).AND. & 4619 (rr(il,i)+delt*fr(il,i).gt.ridicule)) THEN 4620 CALL iso_verif_O18_aberrant( & 4621 (xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i))/(rr(il,i)+delt*fr(il,i)), & 4622 (xt(iso_O18,il,i)+delt*fxt(iso_O18,il,i))/(rr(il,i)+delt*fr(il,i)), & 4623 'cv30_yield 3396b,O18, dtr mels') 4624 endif !if (iso_HDO.gt.0) THEN 4632 4625 #ifdef ISOTRAC 4633 calliso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 3828')4634 doixt=1,ntraciso4626 CALL iso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 3828') 4627 DO ixt=1,ntraciso 4635 4628 xtnew(ixt)=xt(ixt,il,i)+delt*fxt(ixt,il,i) 4636 4629 enddo 4637 if(iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3949',1e-5) &4638 & .eq.1) then4639 write(*,*) 'il,i=',il,i4630 IF (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3949',1e-5) & 4631 .EQ.1) THEN 4632 WRITE(*,*) 'il,i=',il,i 4640 4633 endif 4641 ! calliso_verif_tracpos_choix(xtnew,'cv30_yield 3949',1e-5)4642 #endif 4643 #endif 4644 ! end cam verif 4634 ! CALL iso_verif_tracpos_choix(xtnew,'cv30_yield 3949',1e-5) 4635 #endif 4636 #endif 4637 ! end cam verif 4645 4638 #endif 4646 4639 … … 4657 4650 ! do k=1,i-1 4658 4651 ! do il=1,ncum 4659 ! if (i.le.inb(il)) then4652 ! if (i.le.inb(il)) THEN 4660 4653 ! dpinv=1.0/(ph(il,i)-ph(il,i+1)) 4661 4654 ! cpinv=1.0/cpn(il,i) 4662 ! if (cvflag_grav) then4655 ! if (cvflag_grav) THEN 4663 4656 ! ftra(il,i,j)=ftra(il,i,j)+0.01*grav*dpinv*ment(il,k,i) 4664 4657 ! : *(traent(il,k,i,j)-tra(il,i,j)) … … 4666 4659 ! ftra(il,i,j)=ftra(il,i,j)+0.1*dpinv*ment(il,k,i) 4667 4660 ! : *(traent(il,k,i,j)-tra(il,i,j)) 4668 ! endif4669 ! endif4661 ! END IF 4662 ! END IF 4670 4663 ! enddo 4671 4664 ! enddo … … 4686 4679 ,i)-v(il,i)) 4687 4680 #ifdef ISO 4688 doixt = 1, ntraciso4681 DO ixt = 1, ntraciso 4689 4682 fxt(ixt,il,i)=fxt(ixt,il,i) & 4690 &+0.01*grav*dpinv*ment(il,k,i)*(xtent(ixt,il,k,i)-xt(ixt,il,i))4683 +0.01*grav*dpinv*ment(il,k,i)*(xtent(ixt,il,k,i)-xt(ixt,il,i)) 4691 4684 enddo 4692 4685 4693 4686 #ifdef DIAGISO 4694 4687 fq_detrainement(il,i)=fq_detrainement(il,i) & 4695 & +0.01*grav*dpinv*ment(il,k,i)*(qent(il,k,i)-rr(il,i))4688 +0.01*grav*dpinv*ment(il,k,i)*(qent(il,k,i)-rr(il,i)) 4696 4689 f_detrainement(il,i)=f_detrainement(il,i) & 4697 &+0.01*grav*dpinv*ment(il,k,i)4690 +0.01*grav*dpinv*ment(il,k,i) 4698 4691 q_detrainement(il,i)=q_detrainement(il,i) & 4699 &+0.01*grav*dpinv*ment(il,k,i)*qent(il,k,i)4700 doixt = 1, niso4692 +0.01*grav*dpinv*ment(il,k,i)*qent(il,k,i) 4693 DO ixt = 1, niso 4701 4694 fxt_detrainement(ixt,il,i)=fxt_detrainement(ixt,il,i) & 4702 &+0.01*grav*dpinv*ment(il,k,i)*(xtent(ixt,il,k,i)-xt(ixt,il,i))4695 +0.01*grav*dpinv*ment(il,k,i)*(xtent(ixt,il,k,i)-xt(ixt,il,i)) 4703 4696 xt_detrainement(ixt,il,i)=xt_detrainement(ixt,il,i) & 4704 &+0.01*grav*dpinv*ment(il,k,i)*xtent(ixt,il,k,i)4697 +0.01*grav*dpinv*ment(il,k,i)*xtent(ixt,il,k,i) 4705 4698 enddo 4706 #endif 4707 4699 #endif 4700 4708 4701 ! cam verif 4709 4702 #ifdef ISOVERIF 4710 if ((il.eq.1636).and.(i.eq.9)) then4711 write(*,*) 'cv30 4785: on ajoute le dtr ici:'4712 write(*,*) 'M=',0.01*grav*dpinv*ment(il, k, i)4713 write(*,*) 'q,qe=',rr(il,i),qent(il,k,i)4703 IF ((il.EQ.1636).AND.(i.EQ.9)) THEN 4704 WRITE(*,*) 'cv30 4785: on ajoute le dtr ici:' 4705 WRITE(*,*) 'M=',0.01*grav*dpinv*ment(il, k, i) 4706 WRITE(*,*) 'q,qe=',rr(il,i),qent(il,k,i) 4714 4707 bx=0.01*grav*dpinv*ment(il,k,i)*(qent(il,k,i)-rr(il,i)) 4715 doixt=1,niso4708 DO ixt=1,niso 4716 4709 xtbx(ixt)=0.01*grav*dpinv*ment(il,k,i)*(xtent(ixt,il,k,i)-xt(ixt,il,i)) 4717 4710 enddo 4718 4711 endif 4719 do ixt=1,niso 4720 call iso_verif_noNaN(fxt(ixt,il,i),'cv30_yield 4351') 4721 enddo 4722 #endif 4723 #ifdef ISOVERIF 4724 if (iso_eau.gt.0) then 4725 call iso_verif_egalite_choix(fxt(iso_eau,il,i), & 4726 & fr(il,i),'cv30_routines 3408',errmax,errmaxrel) 4727 endif !if (iso_eau.gt.0) then 4728 do ixt=1,niso 4729 call iso_verif_noNAN(fxt(ixt,il,i),'cv30_routines 3411') 4712 DO ixt=1,niso 4713 CALL iso_verif_noNaN(fxt(ixt,il,i),'cv30_yield 4351') 4730 4714 enddo 4731 if (1.eq.0) then 4732 if ((iso_HDO.gt.0).and.(delt*fr(il,i).gt.ridicule)) then 4733 if (iso_verif_aberrant_enc_nostop( & 4734 & fxt(iso_HDO,il,i)/fr(il,i), & 4735 & 'cv30_yield 3572, dtr mels').eq.1) then 4736 write(*,*) 'i,icb(il),inb(il)=',i,icb(il),inb(il) 4737 write(*,*) 'fr(il,i)=',fr(il,i) 4738 ! if (fr(il,i).gt.ridicule*1e5) then 4715 #endif 4716 #ifdef ISOVERIF 4717 IF (iso_eau.gt.0) THEN 4718 CALL iso_verif_egalite_choix(fxt(iso_eau,il,i), & 4719 fr(il,i),'cv30_routines 3408',errmax,errmaxrel) 4720 endif !if (iso_eau.gt.0) THEN 4721 DO ixt=1,niso 4722 CALL iso_verif_noNAN(fxt(ixt,il,i),'cv30_routines 3411') 4723 enddo 4724 IF (1.EQ.0) THEN 4725 IF ((iso_HDO.gt.0).AND.(delt*fr(il,i).gt.ridicule)) THEN 4726 IF (iso_verif_aberrant_enc_nostop( & 4727 fxt(iso_HDO,il,i)/fr(il,i), & 4728 'cv30_yield 3572, dtr mels').EQ.1) THEN 4729 WRITE(*,*) 'i,icb(il),inb(il)=',i,icb(il),inb(il) 4730 WRITE(*,*) 'fr(il,i)=',fr(il,i) 4731 ! if (fr(il,i).gt.ridicule*1e5) THEN 4739 4732 ! stop 4740 4733 ! endif 4741 4734 endif 4742 endif !if (iso_HDO.gt.0) then4743 endif !if (1. eq.0) then4744 if ((iso_HDO.gt.0).and. &4745 & (rr(il,i)+delt*fr(il,i).gt.ridicule)) then4746 calliso_verif_aberrant_encadre((xt(iso_HDO,il,i) &4747 &+delt*fxt(iso_HDO,il,i)) &4748 & /(rr(il,i)+delt*fr(il,i)),'cv30_yield 3605, dtr mels')4749 if (iso_O18.gt.0) then4750 calliso_verif_O18_aberrant( &4751 &(xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i)) &4752 &/(rr(il,i)+delt*fr(il,i)), &4753 &(xt(iso_O18,il,i)+delt*fxt(iso_O18,il,i)) &4754 &/(rr(il,i)+delt*fr(il,i)), &4755 &'cv30_yield 3605O18, dtr mels')4756 if ((il.eq.1636).and.(i.eq.9)) then4757 calliso_verif_O18_aberrant( &4758 &(xt(iso_HDO,il,i)+delt*(fxt(iso_HDO,il,i)-xtbx(iso_HDO))) &4759 &/(rr(il,i)+delt*(fr(il,i)-bx)), &4760 &(xt(iso_O18,il,i)+delt*(fxt(iso_O18,il,i)-xtbx(iso_O18))) &4761 &/(rr(il,i)+delt*(fr(il,i)-bx)), &4762 &'cv30_yield 3605O18_nobx, dtr mels')4763 endif !if ((il. eq.1636).and.(i.eq.9)) then4764 endif !if (iso_O18.gt.0) then4765 endif !if (iso_HDO.gt.0) then4735 endif !if (iso_HDO.gt.0) THEN 4736 endif !if (1.EQ.0) THEN 4737 IF ((iso_HDO.gt.0).AND. & 4738 (rr(il,i)+delt*fr(il,i).gt.ridicule)) THEN 4739 CALL iso_verif_aberrant_encadre((xt(iso_HDO,il,i) & 4740 +delt*fxt(iso_HDO,il,i)) & 4741 /(rr(il,i)+delt*fr(il,i)),'cv30_yield 3605, dtr mels') 4742 IF (iso_O18.gt.0) THEN 4743 CALL iso_verif_O18_aberrant( & 4744 (xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i)) & 4745 /(rr(il,i)+delt*fr(il,i)), & 4746 (xt(iso_O18,il,i)+delt*fxt(iso_O18,il,i)) & 4747 /(rr(il,i)+delt*fr(il,i)), & 4748 'cv30_yield 3605O18, dtr mels') 4749 IF ((il.EQ.1636).AND.(i.EQ.9)) THEN 4750 CALL iso_verif_O18_aberrant( & 4751 (xt(iso_HDO,il,i)+delt*(fxt(iso_HDO,il,i)-xtbx(iso_HDO))) & 4752 /(rr(il,i)+delt*(fr(il,i)-bx)), & 4753 (xt(iso_O18,il,i)+delt*(fxt(iso_O18,il,i)-xtbx(iso_O18))) & 4754 /(rr(il,i)+delt*(fr(il,i)-bx)), & 4755 'cv30_yield 3605O18_nobx, dtr mels') 4756 endif !if ((il.EQ.1636).AND.(i.EQ.9)) THEN 4757 endif !if (iso_O18.gt.0) THEN 4758 endif !if (iso_HDO.gt.0) THEN 4766 4759 #ifdef ISOTRAC 4767 calliso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 3921')4768 doixt=1,ntraciso4760 CALL iso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 3921') 4761 DO ixt=1,ntraciso 4769 4762 xtnew(ixt)=xt(ixt,il,i)+delt*fxt(ixt,il,i) 4770 4763 enddo 4771 if(iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 4036',1e-5) &4772 & .eq.1) then4773 write(*,*) 'il,i=',il,i4764 IF (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 4036',1e-5) & 4765 .EQ.1) THEN 4766 WRITE(*,*) 'il,i=',il,i 4774 4767 endif 4775 ! calliso_verif_tracpos_choix(xtnew,'cv30_yield 4036',1e-5)4776 #endif 4777 #endif 4778 ! end cam verif 4768 ! CALL iso_verif_tracpos_choix(xtnew,'cv30_yield 4036',1e-5) 4769 #endif 4770 #endif 4771 ! end cam verif 4779 4772 #endif 4780 4773 ELSE ! cvflag_grav … … 4787 4780 4788 4781 #ifdef ISO 4789 doixt = 1, ntraciso4782 DO ixt = 1, ntraciso 4790 4783 fxt(ixt,il,i)=fxt(ixt,il,i) & 4791 &+0.1*dpinv*ment(il,k,i)*(xtent(ixt,il,k,i)-xt(ixt,il,i))4784 +0.1*dpinv*ment(il,k,i)*(xtent(ixt,il,k,i)-xt(ixt,il,i)) 4792 4785 enddo 4793 4786 4794 4787 #ifdef DIAGISO 4795 4788 fq_detrainement(il,i)=fq_detrainement(il,i) & 4796 & +0.1*dpinv*ment(il,k,i)*(qent(il,k,i)-rr(il,i))4789 +0.1*dpinv*ment(il,k,i)*(qent(il,k,i)-rr(il,i)) 4797 4790 f_detrainement(il,i)=f_detrainement(il,i) & 4798 &+0.1*dpinv*ment(il,k,i)4791 +0.1*dpinv*ment(il,k,i) 4799 4792 q_detrainement(il,i)=q_detrainement(il,i) & 4800 &+0.1*dpinv*ment(il,k,i)*qent(il,k,i)4801 doixt = 1, niso4793 +0.1*dpinv*ment(il,k,i)*qent(il,k,i) 4794 DO ixt = 1, niso 4802 4795 fxt_detrainement(ixt,il,i)=fxt_detrainement(ixt,il,i) & 4803 &+0.1*dpinv*ment(il,k,i)*(xtent(ixt,il,k,i)-xt(ixt,il,i))4796 +0.1*dpinv*ment(il,k,i)*(xtent(ixt,il,k,i)-xt(ixt,il,i)) 4804 4797 xt_detrainement(ixt,il,i)=xt_detrainement(ixt,il,i) & 4805 &+0.1*dpinv*ment(il,k,i)*xtent(ixt,il,k,i)4798 +0.1*dpinv*ment(il,k,i)*xtent(ixt,il,k,i) 4806 4799 enddo 4807 #endif 4808 4800 #endif 4801 4809 4802 ! cam verif 4810 4803 #ifdef ISOVERIF 4811 if ((il.eq.1636).and.(i.eq.9)) then4812 write(*,*) 'cv30 4785b: on ajoute le dtr ici:'4813 write(*,*) 'M=',0.1*dpinv*ment(il, k, i)4814 write(*,*) 'q,qe=',rr(il,i),qent(il,k,i)4804 IF ((il.EQ.1636).AND.(i.EQ.9)) THEN 4805 WRITE(*,*) 'cv30 4785b: on ajoute le dtr ici:' 4806 WRITE(*,*) 'M=',0.1*dpinv*ment(il, k, i) 4807 WRITE(*,*) 'q,qe=',rr(il,i),qent(il,k,i) 4815 4808 endif 4816 if (iso_eau.gt.0) then4817 calliso_verif_egalite_choix(fxt(iso_eau,il,i), &4818 &fr(il,i),'cv30_routines 3433',errmax,errmaxrel)4819 endif !if (iso_eau.gt.0) then4820 doixt=1,niso4821 calliso_verif_noNAN(fxt(ixt,il,i),'cv30_routines 3436')4809 IF (iso_eau.gt.0) THEN 4810 CALL iso_verif_egalite_choix(fxt(iso_eau,il,i), & 4811 fr(il,i),'cv30_routines 3433',errmax,errmaxrel) 4812 endif !if (iso_eau.gt.0) THEN 4813 DO ixt=1,niso 4814 CALL iso_verif_noNAN(fxt(ixt,il,i),'cv30_routines 3436') 4822 4815 enddo 4823 if ((iso_HDO.gt.0).and.(delt*fr(il,i).gt.ridicule)) then4824 if(iso_verif_aberrant_enc_nostop( &4825 &fxt(iso_HDO,il,i)/fr(il,i), &4826 & 'cv30_yield 3597').eq.1) then4827 write(*,*) 'i,icb(il),inb(il)=',i,icb(il),inb(il)4816 IF ((iso_HDO.gt.0).AND.(delt*fr(il,i).gt.ridicule)) THEN 4817 IF (iso_verif_aberrant_enc_nostop( & 4818 fxt(iso_HDO,il,i)/fr(il,i), & 4819 'cv30_yield 3597').EQ.1) THEN 4820 WRITE(*,*) 'i,icb(il),inb(il)=',i,icb(il),inb(il) 4828 4821 stop 4829 4822 endif 4830 endif !if (iso_HDO.gt.0) then4831 if ((iso_HDO.gt.0).and. &4832 & (rr(il,i)+delt*fr(il,i).gt.ridicule)) then4833 calliso_verif_aberrant_encadre((xt(iso_HDO,il,i) &4834 &+delt*fxt(iso_HDO,il,i)) &4835 &/(rr(il,i)+delt*fr(il,i)),'cv30_yield 3605b, dtr mels')4836 endif !if (iso_HDO.gt.0) then4823 endif !if (iso_HDO.gt.0) THEN 4824 IF ((iso_HDO.gt.0).AND. & 4825 (rr(il,i)+delt*fr(il,i).gt.ridicule)) THEN 4826 CALL iso_verif_aberrant_encadre((xt(iso_HDO,il,i) & 4827 +delt*fxt(iso_HDO,il,i)) & 4828 /(rr(il,i)+delt*fr(il,i)),'cv30_yield 3605b, dtr mels') 4829 endif !if (iso_HDO.gt.0) THEN 4837 4830 #ifdef ISOTRAC 4838 calliso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 3972')4839 doixt=1,ntraciso4831 CALL iso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 3972') 4832 DO ixt=1,ntraciso 4840 4833 xtnew(ixt)=xt(ixt,il,i)+delt*fxt(ixt,il,i) 4841 4834 enddo 4842 if(iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 4091',1e-5) &4843 & .eq.1) then4844 write(*,*) 'il,i=',il,i4835 IF (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 4091',1e-5) & 4836 .EQ.1) THEN 4837 WRITE(*,*) 'il,i=',il,i 4845 4838 endif 4846 ! calliso_verif_tracpos_choix(xtnew,'cv30_yield 4091',1e-5)4847 #endif 4848 #endif 4849 ! end cam verif 4839 ! CALL iso_verif_tracpos_choix(xtnew,'cv30_yield 4091',1e-5) 4840 #endif 4841 #endif 4842 ! end cam verif 4850 4843 #endif 4851 4844 END IF ! cvflag_grav … … 4857 4850 ! do k=i,nl+1 4858 4851 ! do il=1,ncum 4859 ! if (i.le.inb(il) . and. k.le.inb(il)) then4852 ! if (i.le.inb(il) .AND. k.le.inb(il)) THEN 4860 4853 ! dpinv=1.0/(ph(il,i)-ph(il,i+1)) 4861 4854 ! cpinv=1.0/cpn(il,i) 4862 ! if (cvflag_grav) then4855 ! if (cvflag_grav) THEN 4863 4856 ! ftra(il,i,j)=ftra(il,i,j)+0.01*grav*dpinv*ment(il,k,i) 4864 4857 ! : *(traent(il,k,i,j)-tra(il,i,j)) … … 4866 4859 ! ftra(il,i,j)=ftra(il,i,j)+0.1*dpinv*ment(il,k,i) 4867 4860 ! : *(traent(il,k,i,j)-tra(il,i,j)) 4868 ! endif4869 ! endif! i and k4861 ! END IF 4862 ! END IF ! i and k 4870 4863 ! enddo 4871 4864 ! enddo … … 4889 4882 i))-mp(il,i)*(vp(il,i)-v(il,i-1)))*dpinv 4890 4883 #ifdef ISO 4891 doixt = 1, niso4884 DO ixt = 1, niso 4892 4885 fxt(ixt,il,i)=fxt(ixt,il,i) & 4893 &+0.5*sigd*(xtevap(ixt,il,i)+xtevap(ixt,il,i+1)) &4894 &+0.01*grav*(mp(il,i+1)*(xtp(ixt,il,i+1)-xt(ixt,il,i)) &4895 &-mp(il,i) &4896 &*(xtp(ixt,il,i)-xt(ixt,il,i-1)))*dpinv4886 +0.5*sigd*(xtevap(ixt,il,i)+xtevap(ixt,il,i+1)) & 4887 +0.01*grav*(mp(il,i+1)*(xtp(ixt,il,i+1)-xt(ixt,il,i)) & 4888 -mp(il,i) & 4889 *(xtp(ixt,il,i)-xt(ixt,il,i-1)))*dpinv 4897 4890 enddo 4898 4891 4899 4892 #ifdef DIAGISO 4900 4893 fq_evapprecip(il,i)=fq_evapprecip(il,i) & 4901 &+0.5*sigd*(evap(il,i)+evap(il,i+1))4894 +0.5*sigd*(evap(il,i)+evap(il,i+1)) 4902 4895 fq_ddft(il,i)=fq_ddft(il,i) & 4903 &+0.01*grav*(mp(il,i+1)*(rp(il,i+1)-rr(il,i))-mp(il,i) &4904 & *(rp(il,i)-rr(il,i-1)))*dpinv4905 doixt = 1, niso4896 +0.01*grav*(mp(il,i+1)*(rp(il,i+1)-rr(il,i))-mp(il,i) & 4897 *(rp(il,i)-rr(il,i-1)))*dpinv 4898 DO ixt = 1, niso 4906 4899 fxt_evapprecip(ixt,il,i)=fxt_evapprecip(ixt,il,i) & 4907 &+0.5*sigd*(xtevap(ixt,il,i)+xtevap(ixt,il,i+1))4900 +0.5*sigd*(xtevap(ixt,il,i)+xtevap(ixt,il,i+1)) 4908 4901 fxt_ddft(ixt,il,i)=fxt_ddft(ixt,il,i) & 4909 &+0.01*grav*(mp(il,i+1)*(xtp(ixt,il,i+1)-xt(ixt,il,i)) &4910 &-mp(il,i)*(xtp(ixt,il,i)-xt(ixt,il,i-1)))*dpinv4911 enddo 4912 #endif 4913 4914 #ifdef ISOVERIF 4915 doixt=1,niso4916 calliso_verif_noNaN(xt(ixt,il,i),'cv30_yield 4514')4917 calliso_verif_noNaN(fxt(ixt,il,i),'cv30_yield 4515')4902 +0.01*grav*(mp(il,i+1)*(xtp(ixt,il,i+1)-xt(ixt,il,i)) & 4903 -mp(il,i)*(xtp(ixt,il,i)-xt(ixt,il,i-1)))*dpinv 4904 enddo 4905 #endif 4906 4907 #ifdef ISOVERIF 4908 DO ixt=1,niso 4909 CALL iso_verif_noNaN(xt(ixt,il,i),'cv30_yield 4514') 4910 CALL iso_verif_noNaN(fxt(ixt,il,i),'cv30_yield 4515') 4918 4911 enddo 4919 if ((iso_HDO.gt.0).and. &4920 & (rr(il,i)+delt*fr(il,i).gt.ridicule)) then4921 if(iso_verif_aberrant_enc_nostop((xt(iso_HDO,il,i) &4922 &+delt*fxt(iso_HDO,il,i)) &4923 &/(rr(il,i)+delt*fr(il,i)),'cv30_yield 4175') &4924 & .eq.1) then4925 write(*,*) 'il,i=',il,i4926 if (rr(il,i).ne.0.0) then4927 write(*,*) 'il,i,rr,deltaD=',il,i,rr(il,i),deltaD &4928 &(xt(iso_HDO,il,i)/rr(il,i))4912 IF ((iso_HDO.gt.0).AND. & 4913 (rr(il,i)+delt*fr(il,i).gt.ridicule)) THEN 4914 IF (iso_verif_aberrant_enc_nostop((xt(iso_HDO,il,i) & 4915 +delt*fxt(iso_HDO,il,i)) & 4916 /(rr(il,i)+delt*fr(il,i)),'cv30_yield 4175') & 4917 .EQ.1) THEN 4918 WRITE(*,*) 'il,i=',il,i 4919 IF (rr(il,i).NE.0.0) THEN 4920 WRITE(*,*) 'il,i,rr,deltaD=',il,i,rr(il,i),deltaD & 4921 (xt(iso_HDO,il,i)/rr(il,i)) 4929 4922 endif 4930 if (fr(il,i).ne.0.0) then4931 write(*,*) 'fr,fxt,deltaD=',fr(il,i),fxt(iso_HDO,il,i), &4932 &deltaD(fxt(iso_HDO,il,i)/fr(il,i))4923 IF (fr(il,i).NE.0.0) THEN 4924 WRITE(*,*) 'fr,fxt,deltaD=',fr(il,i),fxt(iso_HDO,il,i), & 4925 deltaD(fxt(iso_HDO,il,i)/fr(il,i)) 4933 4926 endif 4934 #ifdef DIAGISO 4935 if (fq_ddft(il,i).ne.0.0) then4936 write(*,*) 'fq_ddft,deltaD=',fq_ddft(il,i),deltaD( &4937 &fxt_ddft(iso_HDO,il,i)/fq_ddft(il,i))4927 #ifdef DIAGISO 4928 IF (fq_ddft(il,i).NE.0.0) THEN 4929 WRITE(*,*) 'fq_ddft,deltaD=',fq_ddft(il,i),deltaD( & 4930 fxt_ddft(iso_HDO,il,i)/fq_ddft(il,i)) 4938 4931 endif 4939 if (fq_evapprecip(il,i).ne.0.0) then4940 write(*,*) 'fq_evapprecip,deltaD=',fq_evapprecip(il,i),deltaD( &4941 &fxt_evapprecip(iso_HDO,il,i)/fq_evapprecip(il,i))4932 IF (fq_evapprecip(il,i).NE.0.0) THEN 4933 WRITE(*,*) 'fq_evapprecip,deltaD=',fq_evapprecip(il,i),deltaD( & 4934 fxt_evapprecip(iso_HDO,il,i)/fq_evapprecip(il,i)) 4942 4935 endif 4943 #endif 4944 write(*,*) 'sigd,evap(il,i),evap(il,i+1)=', &4945 &sigd,evap(il,i),evap(il,i+1)4946 write(*,*) 'xtevap(iso_HDO,il,i),xtevap(iso_HDO,il,i+1)=', &4947 &xtevap(iso_HDO,il,i),xtevap(iso_HDO,il,i+1)4948 write(*,*) 'grav,mp(il,i+1),mp(il,i),dpinv=', &4949 &grav,mp(il,i+1),mp(il,i),dpinv4950 write(*,*) 'rp(il,i+1),rr(il,i),rp(il,i),rr(il,i-1)=', &4951 &rp(il,i+1),rr(il,i),rp(il,i),rr(il,i-1)4952 write(*,*) 'xtp(il,i+1),xt(il,i),xtp(il,i),xt(il,i-1)=', &4953 &xtp(iso_HDO,il,i+1),xt(iso_HDO,il,i), &4954 &xtp(iso_HDO,il,i),xt(iso_HDO,il,i-1)4936 #endif 4937 WRITE(*,*) 'sigd,evap(il,i),evap(il,i+1)=', & 4938 sigd,evap(il,i),evap(il,i+1) 4939 WRITE(*,*) 'xtevap(iso_HDO,il,i),xtevap(iso_HDO,il,i+1)=', & 4940 xtevap(iso_HDO,il,i),xtevap(iso_HDO,il,i+1) 4941 WRITE(*,*) 'grav,mp(il,i+1),mp(il,i),dpinv=', & 4942 grav,mp(il,i+1),mp(il,i),dpinv 4943 WRITE(*,*) 'rp(il,i+1),rr(il,i),rp(il,i),rr(il,i-1)=', & 4944 rp(il,i+1),rr(il,i),rp(il,i),rr(il,i-1) 4945 WRITE(*,*) 'xtp(il,i+1),xt(il,i),xtp(il,i),xt(il,i-1)=', & 4946 xtp(iso_HDO,il,i+1),xt(iso_HDO,il,i), & 4947 xtp(iso_HDO,il,i),xt(iso_HDO,il,i-1) 4955 4948 stop 4956 4949 endif 4957 endif !if (iso_HDO.gt.0) then4958 if ((iso_HDO.gt.0).and.(iso_O18.gt.0).and. &4959 & (rr(il,i)+delt*fr(il,i).gt.ridicule)) then4960 calliso_verif_O18_aberrant( &4961 &(xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i))/(rr(il,i)+delt*fr(il,i)), &4962 &(xt(iso_O18,il,i)+delt*fxt(iso_O18,il,i))/(rr(il,i)+delt*fr(il,i)), &4963 &'cv30_yield 5029,O18, evap')4964 if ((il.eq.1636).and.(i.eq.9)) then4965 write(*,*) 'cv30_yield 5057: ici, on verifie deltaD_nobx'4966 write(*,*) 'il,i=',il,i4967 write(*,*) 'fr(il,i),bx,fr(il,i)-bx=',fr(il,i),bx,fr(il,i)-bx4968 write(*,*) 'q,q+=',rr(il,i),rr(il,i)+delt*(fr(il,i)-bx)4969 write(*,*) 'deltaD,deltaD+=',deltaD(xt(iso_HDO,il,inb(il))/rr(il,inb(il))), &4970 &deltaD( (xt(iso_HDO,il,i)+delt*(fxt(iso_HDO,il,i)-xtbx(iso_HDO)))/(rr(il,i)+delt*(fr(il,i)-bx)))4971 write(*,*) 'deltaO18,deltaO18+=',deltaO(xt(iso_O18,il,inb(il))/rr(il,inb(il))), &4972 &deltaO( (xt(iso_O18,il,i)+delt*(fxt(iso_O18,il,i)-xtbx(iso_O18)))/(rr(il,i)+delt*(fr(il,i)-bx)))4973 calliso_verif_O18_aberrant( &4974 &(xt(iso_HDO,il,i)+delt*(fxt(iso_HDO,il,i)-xtbx(iso_HDO))) &4975 &/(rr(il,i)+delt*(fr(il,i)-bx)), &4976 &(xt(iso_O18,il,i)+delt*(fxt(iso_O18,il,i)-xtbx(iso_O18))) &4977 &/(rr(il,i)+delt*(fr(il,i)-bx)), &4978 &'cv30_yield 5029_nobx,O18, evap, no bx')4979 endif !if ((il. eq.1636).and.(i.eq.9)) then4980 endif !if (iso_HDO.gt.0) then4950 endif !if (iso_HDO.gt.0) THEN 4951 IF ((iso_HDO.gt.0).AND.(iso_O18.gt.0).AND. & 4952 (rr(il,i)+delt*fr(il,i).gt.ridicule)) THEN 4953 CALL iso_verif_O18_aberrant( & 4954 (xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i))/(rr(il,i)+delt*fr(il,i)), & 4955 (xt(iso_O18,il,i)+delt*fxt(iso_O18,il,i))/(rr(il,i)+delt*fr(il,i)), & 4956 'cv30_yield 5029,O18, evap') 4957 IF ((il.EQ.1636).AND.(i.EQ.9)) THEN 4958 WRITE(*,*) 'cv30_yield 5057: ici, on verifie deltaD_nobx' 4959 WRITE(*,*) 'il,i=',il,i 4960 WRITE(*,*) 'fr(il,i),bx,fr(il,i)-bx=',fr(il,i),bx,fr(il,i)-bx 4961 WRITE(*,*) 'q,q+=',rr(il,i),rr(il,i)+delt*(fr(il,i)-bx) 4962 WRITE(*,*) 'deltaD,deltaD+=',deltaD(xt(iso_HDO,il,inb(il))/rr(il,inb(il))), & 4963 deltaD( (xt(iso_HDO,il,i)+delt*(fxt(iso_HDO,il,i)-xtbx(iso_HDO)))/(rr(il,i)+delt*(fr(il,i)-bx))) 4964 WRITE(*,*) 'deltaO18,deltaO18+=',deltaO(xt(iso_O18,il,inb(il))/rr(il,inb(il))), & 4965 deltaO( (xt(iso_O18,il,i)+delt*(fxt(iso_O18,il,i)-xtbx(iso_O18)))/(rr(il,i)+delt*(fr(il,i)-bx))) 4966 CALL iso_verif_O18_aberrant( & 4967 (xt(iso_HDO,il,i)+delt*(fxt(iso_HDO,il,i)-xtbx(iso_HDO))) & 4968 /(rr(il,i)+delt*(fr(il,i)-bx)), & 4969 (xt(iso_O18,il,i)+delt*(fxt(iso_O18,il,i)-xtbx(iso_O18))) & 4970 /(rr(il,i)+delt*(fr(il,i)-bx)), & 4971 'cv30_yield 5029_nobx,O18, evap, no bx') 4972 endif !if ((il.EQ.1636).AND.(i.EQ.9)) THEN 4973 endif !if (iso_HDO.gt.0) THEN 4981 4974 #endif 4982 4975 4983 4976 #ifdef ISOTRAC 4984 if ((option_traceurs.ne.6).and.(option_traceurs.ne.19)) then 4985 4977 IF ((option_traceurs.NE.6).AND.(option_traceurs.NE.19)) THEN 4986 4978 ! facile: on fait comme l'eau 4987 doixt = 1+niso,ntraciso4979 DO ixt = 1+niso,ntraciso 4988 4980 fxt(ixt,il,i)=fxt(ixt,il,i) & 4989 &+0.5*sigd*(xtevap(ixt,il,i)+xtevap(ixt,il,i+1)) &4990 &+0.01*grav*(mp(il,i+1)*(xtp(ixt,il,i+1)-xt(ixt,il,i)) &4991 &-mp(il,i)*(xtp(ixt,il,i)-xt(ixt,il,i-1)))*dpinv4992 enddo !do ixt = 1+niso,ntraciso 4981 +0.5*sigd*(xtevap(ixt,il,i)+xtevap(ixt,il,i+1)) & 4982 +0.01*grav*(mp(il,i+1)*(xtp(ixt,il,i+1)-xt(ixt,il,i)) & 4983 -mp(il,i)*(xtp(ixt,il,i)-xt(ixt,il,i-1)))*dpinv 4984 enddo !do ixt = 1+niso,ntraciso 4993 4985 4994 4986 else ! taggage des ddfts: … … 5002 4994 ! fxt(ixt_ddft,il,i)=fxt(ixt_ddft,il,i)+conversion(iiso) 5003 4995 ! fxt(ixt_poubelle,il,i)=fxt(ixt_poubelle,il,i) 5004 ! : -conversion(iiso) 4996 ! : -conversion(iiso) 5005 4997 5006 4998 ! Pb: quand on discretise, dqp/dt n'est pas verifee numeriquement. … … 5010 5002 ! Solution alternative: Dans le cas entrainant, Ye ne varie que par 5011 5003 ! ascendance compensatoire des ddfts et par perte de Ye vers le ddft. On 5012 ! calcule donc ce terme directement avec schema amont: 5004 ! calcule donc ce terme directement avec schema amont: 5013 5005 5014 5006 ! ajout deja de l'evap 5015 doixt = 1+niso,ntraciso5007 DO ixt = 1+niso,ntraciso 5016 5008 fxt(ixt,il,i)=fxt(ixt,il,i) & 5017 &+0.5*sigd*(xtevap(ixt,il,i)+xtevap(ixt,il,i+1))5009 +0.5*sigd*(xtevap(ixt,il,i)+xtevap(ixt,il,i+1)) 5018 5010 enddo !do ixt = 1+niso,ntraciso 5019 5011 5020 5012 ! ajout du terme des ddfts sensi stricto 5021 ! write(*,*) 'tmp cv3_yield 4165: i,il=',i,il5022 ! 5023 if (option_traceurs.eq.6) then5024 doiiso = 1, niso5025 5026 ixt_ddft=itZonIso(izone_ddft,iiso) 5027 if (mp(il,i).gt.mp(il,i+1)) then5013 ! WRITE(*,*) 'tmp cv3_yield 4165: i,il=',i,il 5014 5015 IF (option_traceurs.EQ.6) THEN 5016 DO iiso = 1, niso 5017 5018 ixt_ddft=itZonIso(izone_ddft,iiso) 5019 IF (mp(il,i).gt.mp(il,i+1)) THEN 5028 5020 fxtYe(iiso)=0.01*grav*dpinv*mp(il,i) & 5029 &*(xt(ixt_ddft,il,i-1)-xt(ixt_ddft,il,i))5030 else !if (mp(il,i).gt.mp(il,i+1)) then5021 *(xt(ixt_ddft,il,i-1)-xt(ixt_ddft,il,i)) 5022 else !if (mp(il,i).gt.mp(il,i+1)) THEN 5031 5023 fxtYe(iiso)=0.01*grav*dpinv*(mp(il,i) & 5032 &*xt(ixt_ddft,il,i-1)-mp(il,i+1)*xt(ixt_ddft,il,i) &5033 & +(mp(il,i+1)-mp(il,i))*xtp(ixt_ddft,il,i))5034 endif !if (mp(il,i).gt.mp(il,i+1)) then5024 *xt(ixt_ddft,il,i-1)-mp(il,i+1)*xt(ixt_ddft,il,i) & 5025 +(mp(il,i+1)-mp(il,i))*xtp(ixt_ddft,il,i)) 5026 endif !if (mp(il,i).gt.mp(il,i+1)) THEN 5035 5027 fxtqe(iiso)=0.01*grav*dpinv* & 5036 &(mp(il,i+1)*(xtp(iiso,il,i+1)-xt(iiso,il,i)) &5037 & -mp(il,i)*(xtp(iiso,il,i)-xt(iiso,il,i-1)))5038 5028 (mp(il,i+1)*(xtp(iiso,il,i+1)-xt(iiso,il,i)) & 5029 -mp(il,i)*(xtp(iiso,il,i)-xt(iiso,il,i-1))) 5030 5039 5031 ixt_poubelle=itZonIso(izone_poubelle,iiso) 5040 5032 fxt(ixt_ddft,il,i)=fxt(ixt_ddft,il,i)+fxtYe(iiso) 5041 5033 fxt(ixt_poubelle,il,i)=fxt(ixt_poubelle,il,i) & 5042 &+fxtqe(iiso)-fxtYe(iiso)5034 +fxtqe(iiso)-fxtYe(iiso) 5043 5035 enddo !do iiso = 1, niso 5044 5036 5045 else !if (option_traceurs.eq.6) then 5046 5047 5048 if (mp(il,i).gt.mp(il,i+1)) then 5037 else !if (option_traceurs.EQ.6) THEN 5038 IF (mp(il,i).gt.mp(il,i+1)) THEN 5049 5039 ! cas entrainant: faire attention 5050 5051 doiiso = 1, niso5040 5041 DO iiso = 1, niso 5052 5042 fxtqe(iiso)=0.01*grav*dpinv* & 5053 &(mp(il,i+1)*(xtp(iiso,il,i+1)-xt(iiso,il,i)) &5054 &-mp(il,i)*(xtp(iiso,il,i)-xt(iiso,il,i-1)))5055 5056 ixt_ddft=itZonIso(izone_ddft,iiso) 5043 (mp(il,i+1)*(xtp(iiso,il,i+1)-xt(iiso,il,i)) & 5044 -mp(il,i)*(xtp(iiso,il,i)-xt(iiso,il,i-1))) 5045 5046 ixt_ddft=itZonIso(izone_ddft,iiso) 5057 5047 fxtYe(iiso)=0.01*grav*dpinv*mp(il,i) & 5058 &*(xt(ixt_ddft,il,i-1)-xt(ixt_ddft,il,i))5059 fxt(ixt_ddft,il,i)=fxt(ixt_ddft,il,i)+fxtYe(iiso) 5060 5061 ixt_revap=itZonIso(izone_revap,iiso) 5048 *(xt(ixt_ddft,il,i-1)-xt(ixt_ddft,il,i)) 5049 fxt(ixt_ddft,il,i)=fxt(ixt_ddft,il,i)+fxtYe(iiso) 5050 5051 ixt_revap=itZonIso(izone_revap,iiso) 5062 5052 fxt_revap(iiso)=0.01*grav*dpinv*(mp(il,i+1)* & 5063 &(xtp(ixt_revap,il,i+1)-xt(ixt_revap,il,i)) &5064 & -mp(il,i)*(xtp(ixt_revap,il,i)-xt(ixt_revap,il,i-1)))5053 (xtp(ixt_revap,il,i+1)-xt(ixt_revap,il,i)) & 5054 -mp(il,i)*(xtp(ixt_revap,il,i)-xt(ixt_revap,il,i-1))) 5065 5055 fxt(ixt_revap,il,i)=fxt(ixt_revap,il,i) & 5066 &+fxt_revap(iiso)5056 +fxt_revap(iiso) 5067 5057 5068 5058 fxtXe(iiso)=fxtqe(iiso)-fxtYe(iiso)-fxt_revap(iiso) 5069 5059 Xe(iiso)=xt(iiso,il,i) & 5070 &-xt(ixt_ddft,il,i)-xt(ixt_revap,il,i)5071 if (Xe(iiso).gt.ridicule) then5072 doizone=1,nzone5073 if ((izone.ne.izone_revap).and. &5074 & (izone.ne.izone_ddft)) then5075 ixt=itZonIso(izone,iiso) 5060 -xt(ixt_ddft,il,i)-xt(ixt_revap,il,i) 5061 IF (Xe(iiso).gt.ridicule) THEN 5062 DO izone=1,nzone 5063 IF ((izone.NE.izone_revap).AND. & 5064 (izone.NE.izone_ddft)) THEN 5065 ixt=itZonIso(izone,iiso) 5076 5066 fxt(ixt,il,i)=fxt(ixt,il,i) & 5077 &+xt(ixt,il,i)/Xe(iiso)*fxtXe(iiso)5078 endif !if ((izone. ne.izone_revap).and.5079 enddo !do izone=1,nzone 5080 #ifdef ISOVERIF 5081 ! write(*,*) 'iiso=',iiso5082 ! write(*,*) 'fxtqe=',fxtqe(iiso)5083 ! write(*,*) 'fxtYe=',fxtYe(iiso)5084 ! write(*,*) 'fxt_revap=',fxt_revap(iiso)5085 ! write(*,*) 'fxtXe=',fxtXe(iiso)5086 ! write(*,*) 'Xe=',Xe(iiso)5087 ! write(*,*) 'xt=',xt(:,il,i)5088 calliso_verif_traceur_justmass(fxt(1,il,i), &5089 & 'cv30_routine 4646')5090 #endif 5091 else !if (abs(dXe).gt.ridicule) then5067 +xt(ixt,il,i)/Xe(iiso)*fxtXe(iiso) 5068 endif !if ((izone.NE.izone_revap).AND. 5069 enddo !do izone=1,nzone 5070 #ifdef ISOVERIF 5071 ! WRITE(*,*) 'iiso=',iiso 5072 ! WRITE(*,*) 'fxtqe=',fxtqe(iiso) 5073 ! WRITE(*,*) 'fxtYe=',fxtYe(iiso) 5074 ! WRITE(*,*) 'fxt_revap=',fxt_revap(iiso) 5075 ! WRITE(*,*) 'fxtXe=',fxtXe(iiso) 5076 ! WRITE(*,*) 'Xe=',Xe(iiso) 5077 ! WRITE(*,*) 'xt=',xt(:,il,i) 5078 CALL iso_verif_traceur_justmass(fxt(1,il,i), & 5079 'cv30_routine 4646') 5080 #endif 5081 else !if (abs(dXe).gt.ridicule) THEN 5092 5082 ! dans ce cas, fxtXe doit etre faible 5093 5094 #ifdef ISOVERIF 5095 if (delt*fxtXe(iiso).gt.ridicule) then5096 write(*,*) 'cv30_routines 6563: delt*fxtXe(iiso)=', &5097 &delt*fxtXe(iiso)5083 5084 #ifdef ISOVERIF 5085 IF (delt*fxtXe(iiso).gt.ridicule) THEN 5086 WRITE(*,*) 'cv30_routines 6563: delt*fxtXe(iiso)=', & 5087 delt*fxtXe(iiso) 5098 5088 stop 5099 5089 endif 5100 #endif 5101 doizone=1,nzone5102 if ((izone.ne.izone_revap).and. &5103 & (izone.ne.izone_ddft)) then5104 ixt=itZonIso(izone,iiso) 5105 if (izone.eq.izone_poubelle) then5090 #endif 5091 DO izone=1,nzone 5092 IF ((izone.NE.izone_revap).AND. & 5093 (izone.NE.izone_ddft)) THEN 5094 ixt=itZonIso(izone,iiso) 5095 IF (izone.EQ.izone_poubelle) THEN 5106 5096 fxt(ixt,il,i)=fxt(ixt,il,i)+fxtXe(iiso) 5107 else !if (izone. eq.izone_poubelle) then5097 else !if (izone.EQ.izone_poubelle) THEN 5108 5098 ! pas de tendance pour ce tag la 5109 endif !if (izone. eq.izone_poubelle) then5110 endif !if ((izone. ne.izone_revap).and.5099 endif !if (izone.EQ.izone_poubelle) THEN 5100 endif !if ((izone.NE.izone_revap).AND. 5111 5101 enddo !do izone=1,nzone 5112 5102 #ifdef ISOVERIF 5113 call iso_verif_traceur_justmass(fxt(1,il,i), & 5114 & 'cv30_routine 4671') 5115 #endif 5116 5117 endif !if (abs(dXe).gt.ridicule) then 5118 5103 CALL iso_verif_traceur_justmass(fxt(1,il,i), & 5104 'cv30_routine 4671') 5105 #endif 5106 5107 endif !if (abs(dXe).gt.ridicule) THEN 5119 5108 enddo !do iiso = 1, niso 5120 5121 else !if (mp(il,i).gt.mp(il,i+1)) then5109 5110 else !if (mp(il,i).gt.mp(il,i+1)) THEN 5122 5111 ! cas detrainant: pas de problemes 5123 doixt=1+niso,ntraciso5112 DO ixt=1+niso,ntraciso 5124 5113 fxt(ixt,il,i)=fxt(ixt,il,i) & 5125 &+0.01*grav*(mp(il,i+1)*(xtp(ixt,il,i+1)-xt(ixt,il,i)) &5126 &-mp(il,i)*(xtp(ixt,il,i)-xt(ixt,il,i-1)))*dpinv5114 +0.01*grav*(mp(il,i+1)*(xtp(ixt,il,i+1)-xt(ixt,il,i)) & 5115 -mp(il,i)*(xtp(ixt,il,i)-xt(ixt,il,i-1)))*dpinv 5127 5116 enddo !do ixt=1+niso,ntraciso 5128 5117 #ifdef ISOVERIF 5129 call iso_verif_traceur_justmass(fxt(1,il,i), & 5130 & 'cv30_routine 4685') 5131 #endif 5132 endif !if (mp(il,i).gt.mp(il,i+1)) then 5133 5134 endif !if (option_traceurs.eq.6) then 5135 5136 ! write(*,*) 'delt*conversion=',delt*conversion(iso_eau) 5137 ! write(*,*) 'delt*fxtYe=',delt*fxtYe(iso_eau) 5138 ! write(*,*) 'delt*fxtqe=',delt*fxtqe(iso_eau) 5139 5140 endif ! if ((option_traceurs.ne.6).and.(option_traceurs.ne.19)) then 5141 #endif 5142 5118 CALL iso_verif_traceur_justmass(fxt(1,il,i), & 5119 'cv30_routine 4685') 5120 #endif 5121 endif !if (mp(il,i).gt.mp(il,i+1)) THEN 5122 endif !if (option_traceurs.EQ.6) THEN 5123 ! WRITE(*,*) 'delt*conversion=',delt*conversion(iso_eau) 5124 ! WRITE(*,*) 'delt*fxtYe=',delt*fxtYe(iso_eau) 5125 ! WRITE(*,*) 'delt*fxtqe=',delt*fxtqe(iso_eau) 5126 5127 endif ! if ((option_traceurs.NE.6).AND.(option_traceurs.NE.19)) THEN 5128 #endif 5129 5143 5130 ! cam verif 5144 5131 #ifdef ISOVERIF 5145 doixt=1,niso5146 calliso_verif_noNAN(fxt(ixt,il,i),'cv30_routines 3496')5132 DO ixt=1,niso 5133 CALL iso_verif_noNAN(fxt(ixt,il,i),'cv30_routines 3496') 5147 5134 enddo 5148 5135 #endif 5149 5136 #ifdef ISOVERIF 5150 if (iso_eau.gt.0) then5151 calliso_verif_egalite_choix(fxt(iso_eau,il,i), &5152 &fr(il,i),'cv30_routines 3493',errmax,errmaxrel)5153 endif !if (iso_eau.gt.0) then5154 if (1.eq.0) then5155 if ((iso_HDO.gt.0).and.(delt*fr(il,i).gt.ridicule)) then5156 if(iso_verif_aberrant_enc_nostop( &5157 &fxt(iso_HDO,il,i)/fr(il,i), &5158 & 'cv30_yield 3662').eq.1) then5159 write(*,*) 'il,i,icb(il),inb(il)=',il,i,icb(il),inb(il)5160 write(*,*) 'fr(il,i),delt=',fr(il,i),delt5161 #ifdef DIAGISO 5162 if (fq_ddft(il,i).ne.0.0) then5163 write(*,*) 'fq_ddft,deltaD=',fq_ddft(il,i),deltaD( &5164 &fxt_ddft(iso_HDO,il,i)/fq_ddft(il,i))5165 endif !if (fq_ddft(il,i). ne.0.0) then5166 if (fq_evapprecip(il,i).ne.0.0) then5167 write(*,*) 'fq_evapprecip,deltaD=',fq_evapprecip(il,i), &5168 &deltaD(fxt_evapprecip(iso_HDO,il,i) &5169 &/fq_evapprecip(il,i))5170 endif !if (fq_evapprecip(il,i). ne.0.0) then5171 #endif 5137 IF (iso_eau.gt.0) THEN 5138 CALL iso_verif_egalite_choix(fxt(iso_eau,il,i), & 5139 fr(il,i),'cv30_routines 3493',errmax,errmaxrel) 5140 endif !if (iso_eau.gt.0) THEN 5141 IF (1.EQ.0) THEN 5142 IF ((iso_HDO.gt.0).AND.(delt*fr(il,i).gt.ridicule)) THEN 5143 IF (iso_verif_aberrant_enc_nostop( & 5144 fxt(iso_HDO,il,i)/fr(il,i), & 5145 'cv30_yield 3662').EQ.1) THEN 5146 WRITE(*,*) 'il,i,icb(il),inb(il)=',il,i,icb(il),inb(il) 5147 WRITE(*,*) 'fr(il,i),delt=',fr(il,i),delt 5148 #ifdef DIAGISO 5149 IF (fq_ddft(il,i).NE.0.0) THEN 5150 WRITE(*,*) 'fq_ddft,deltaD=',fq_ddft(il,i),deltaD( & 5151 fxt_ddft(iso_HDO,il,i)/fq_ddft(il,i)) 5152 endif !if (fq_ddft(il,i).NE.0.0) THEN 5153 IF (fq_evapprecip(il,i).NE.0.0) THEN 5154 WRITE(*,*) 'fq_evapprecip,deltaD=',fq_evapprecip(il,i), & 5155 deltaD(fxt_evapprecip(iso_HDO,il,i) & 5156 /fq_evapprecip(il,i)) 5157 endif !if (fq_evapprecip(il,i).NE.0.0) THEN 5158 #endif 5172 5159 endif !if (iso_verif_aberrant_enc_nostop( 5173 endif !if (iso_HDO.gt.0) then5174 endif !if (1. eq.0) then5175 if ((iso_HDO.gt.0).and. &5176 & (rr(il,i)+delt*fr(il,i).gt.ridicule)) then5177 if(iso_verif_aberrant_enc_nostop((xt(iso_HDO,il,i) &5178 &+delt*fxt(iso_HDO,il,i)) &5179 &/(rr(il,i)+delt*fr(il,i)),'cv30_yield 3757, ddfts') &5180 & .eq.1) then5181 write(*,*) 'i,il,q,deltaD=',i,il,rr(il,i),deltaD( &5182 &xt(iso_HDO,il,i)/rr(il,i))5183 write(*,*) 'i,il,fr,deltaD=',i,il,fr(il,i),deltaD( &5184 &fxt(iso_HDO,il,i)/fr(il,i))5160 endif !if (iso_HDO.gt.0) THEN 5161 endif !if (1.EQ.0) THEN 5162 IF ((iso_HDO.gt.0).AND. & 5163 (rr(il,i)+delt*fr(il,i).gt.ridicule)) THEN 5164 IF (iso_verif_aberrant_enc_nostop((xt(iso_HDO,il,i) & 5165 +delt*fxt(iso_HDO,il,i)) & 5166 /(rr(il,i)+delt*fr(il,i)),'cv30_yield 3757, ddfts') & 5167 .EQ.1) THEN 5168 WRITE(*,*) 'i,il,q,deltaD=',i,il,rr(il,i),deltaD( & 5169 xt(iso_HDO,il,i)/rr(il,i)) 5170 WRITE(*,*) 'i,il,fr,deltaD=',i,il,fr(il,i),deltaD( & 5171 fxt(iso_HDO,il,i)/fr(il,i)) 5185 5172 stop 5186 5173 endif ! if (iso_verif_aberrant_enc_nostop 5187 endif !if (iso_HDO.gt.0) then 5188 5189 if ((iso_HDO.gt.0).and.(iso_O18.gt.0).and. & 5190 & (rr(il,i)+delt*fr(il,i).gt.ridicule)) then 5191 call iso_verif_O18_aberrant( & 5192 & (xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i))/(rr(il,i)+delt*fr(il,i)), & 5193 & (xt(iso_O18,il,i)+delt*fxt(iso_O18,il,i))/(rr(il,i)+delt*fr(il,i)), & 5194 & 'cv30_yield 5250,O18, ddfts') 5195 endif !if (iso_HDO.gt.0) then 5196 5174 endif !if (iso_HDO.gt.0) THEN 5175 IF ((iso_HDO.gt.0).AND.(iso_O18.gt.0).AND. & 5176 (rr(il,i)+delt*fr(il,i).gt.ridicule)) THEN 5177 CALL iso_verif_O18_aberrant( & 5178 (xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i))/(rr(il,i)+delt*fr(il,i)), & 5179 (xt(iso_O18,il,i)+delt*fxt(iso_O18,il,i))/(rr(il,i)+delt*fr(il,i)), & 5180 'cv30_yield 5250,O18, ddfts') 5181 endif !if (iso_HDO.gt.0) THEN 5197 5182 #ifdef ISOTRAC 5198 ! write(*,*) 'tmp cv3_yield 4224: i,il=',i,il5199 calliso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 4107')5200 doixt=1,ntraciso5183 ! WRITE(*,*) 'tmp cv3_yield 4224: i,il=',i,il 5184 CALL iso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 4107') 5185 DO ixt=1,ntraciso 5201 5186 xtnew(ixt)=xt(ixt,il,i)+delt*fxt(ixt,il,i) 5202 5187 enddo 5203 if(iso_verif_tracpos_choix_nostop(xtnew, &5204 & 'cv30_yield 4221',1e-5).eq.1) then5205 write(*,*) 'delt*fxt(,il,i)=',delt*fxt(1:ntraciso:2,il,i)5206 write(*,*) 'delt*fxt(,il,i)=',delt*fxt(:,il,i)5207 write(*,*) 'xt(,il,i)=',xt(:,il,i)5208 write(*,*) 'delt,sigd,grav,dpinv=',delt,sigd,grav,dpinv5209 write(*,*) 'xtevap(,il,i)=',xtevap(:,il,i)5210 write(*,*) 'xtevap(,il,i+1)=',xtevap(:,il,i+1)5211 write(*,*) 'mp(il,i+1),mp(il,i)=',mp(il,i+1),mp(il,i)5212 write(*,*) 'xtp(,il,i)=',xtp(:,il,i)5213 write(*,*) 'xtp(,il,i+1)=',xtp(:,il,i+1)5214 write(*,*) 'xt(,il,i)=',xt(:,il,i)5215 write(*,*) 'xt(,il,i-1)=',xt(:,il,i-1)5188 IF (iso_verif_tracpos_choix_nostop(xtnew, & 5189 'cv30_yield 4221',1e-5).EQ.1) THEN 5190 WRITE(*,*) 'delt*fxt(,il,i)=',delt*fxt(1:ntraciso:2,il,i) 5191 WRITE(*,*) 'delt*fxt(,il,i)=',delt*fxt(:,il,i) 5192 WRITE(*,*) 'xt(,il,i)=',xt(:,il,i) 5193 WRITE(*,*) 'delt,sigd,grav,dpinv=',delt,sigd,grav,dpinv 5194 WRITE(*,*) 'xtevap(,il,i)=',xtevap(:,il,i) 5195 WRITE(*,*) 'xtevap(,il,i+1)=',xtevap(:,il,i+1) 5196 WRITE(*,*) 'mp(il,i+1),mp(il,i)=',mp(il,i+1),mp(il,i) 5197 WRITE(*,*) 'xtp(,il,i)=',xtp(:,il,i) 5198 WRITE(*,*) 'xtp(,il,i+1)=',xtp(:,il,i+1) 5199 WRITE(*,*) 'xt(,il,i)=',xt(:,il,i) 5200 WRITE(*,*) 'xt(,il,i-1)=',xt(:,il,i-1) 5216 5201 ! rappel: fxt(ixt,il,i)=fxt(ixt,il,i) 5217 5202 ! 0.5*sigd*(xtevap(ixt,il,i)+xtevap(ixt,il,i+1)) … … 5220 5205 ! stop 5221 5206 endif 5222 #endif 5207 #endif 5223 5208 #endif 5224 5209 #endif … … 5232 5217 i))-mp(il,i)*(vp(il,i)-v(il,i-1)))*dpinv 5233 5218 #ifdef ISO 5234 doixt = 1, ntraciso5219 DO ixt = 1, ntraciso 5235 5220 fxt(ixt,il,i)=fxt(ixt,il,i) & 5236 &+0.5*sigd*(xtevap(ixt,il,i)+xtevap(ixt,il,i+1)) &5237 &+0.1*(mp(il,i+1)*(xtp(ixt,il,i+1)-xt(ixt,il,i)) &5238 &-mp(il,i)*(xtp(ixt,il,i)-xt(ixt,il,i-1)))*dpinv5221 +0.5*sigd*(xtevap(ixt,il,i)+xtevap(ixt,il,i+1)) & 5222 +0.1*(mp(il,i+1)*(xtp(ixt,il,i+1)-xt(ixt,il,i)) & 5223 -mp(il,i)*(xtp(ixt,il,i)-xt(ixt,il,i-1)))*dpinv 5239 5224 enddo ! ixt=1,niso 5240 5225 5241 #ifdef ISOTRAC 5242 if (option_traceurs.ne.6) then 5243 5226 #ifdef ISOTRAC 5227 IF (option_traceurs.NE.6) THEN 5244 5228 ! facile: on fait comme l'eau 5245 doixt = 1+niso,ntraciso5229 DO ixt = 1+niso,ntraciso 5246 5230 fxt(ixt,il,i)=fxt(ixt,il,i) & 5247 &+0.5*sigd*(xtevap(ixt,il,i)+xtevap(ixt,il,i+1)) &5248 &+0.01*grav*(mp(il,i+1)*(xtp(ixt,il,i+1)-xt(ixt,il,i)) &5249 &-mp(il,i)*(xtp(ixt,il,i)-xt(ixt,il,i-1)))*dpinv5231 +0.5*sigd*(xtevap(ixt,il,i)+xtevap(ixt,il,i+1)) & 5232 +0.01*grav*(mp(il,i+1)*(xtp(ixt,il,i+1)-xt(ixt,il,i)) & 5233 -mp(il,i)*(xtp(ixt,il,i)-xt(ixt,il,i-1)))*dpinv 5250 5234 enddo !do ixt = 1+niso,ntraciso 5251 5235 5252 else !if (option_traceurs.ne.6) then 5253 5236 else !if (option_traceurs.NE.6) THEN 5254 5237 ! taggage des ddfts: voir blabla + haut 5255 doixt = 1+niso,ntraciso5238 DO ixt = 1+niso,ntraciso 5256 5239 fxt(ixt,il,i)=fxt(ixt,il,i) & 5257 &+0.5*sigd*(xtevap(ixt,il,i)+xtevap(ixt,il,i+1))5240 +0.5*sigd*(xtevap(ixt,il,i)+xtevap(ixt,il,i+1)) 5258 5241 enddo !do ixt = 1+niso,ntraciso 5259 ! write(*,*) 'tmp cv3_yield 4165: i,il=',i,il5242 ! WRITE(*,*) 'tmp cv3_yield 4165: i,il=',i,il 5260 5243 ! ixt_poubelle=itZonIso(izone_poubelle,iso_eau) 5261 5244 ! ixt_ddft=itZonIso(izone_ddft,iso_eau) 5262 ! write(*,*) 'delt*fxt(ixt_poubelle,il,i)=',5245 ! WRITE(*,*) 'delt*fxt(ixt_poubelle,il,i)=', 5263 5246 ! : delt*fxt(ixt_poubelle,il,i) 5264 ! write(*,*) 'delt*fxt(ixt_ddft,il,i)=',delt*fxt(ixt_ddft,il,i)5265 ! write(*,*) 'xt(iso_eau,il,i)=',xt(iso_eau,il,i)5266 doiiso = 1, niso5247 ! WRITE(*,*) 'delt*fxt(ixt_ddft,il,i)=',delt*fxt(ixt_ddft,il,i) 5248 ! WRITE(*,*) 'xt(iso_eau,il,i)=',xt(iso_eau,il,i) 5249 DO iiso = 1, niso 5267 5250 ixt_poubelle=itZonIso(izone_poubelle,iiso) 5268 ixt_ddft=itZonIso(izone_ddft,iiso) 5269 if (mp(il,i).gt.mp(il,i+1)) then5251 ixt_ddft=itZonIso(izone_ddft,iiso) 5252 IF (mp(il,i).gt.mp(il,i+1)) THEN 5270 5253 fxtYe(iiso)=0.01*grav*dpinv*mp(il,i) & 5271 &*(xt(ixt_ddft,il,i-1)-xt(ixt_ddft,il,i))5272 else !if (mp(il,i).gt.mp(il,i+1)) then5254 *(xt(ixt_ddft,il,i-1)-xt(ixt_ddft,il,i)) 5255 else !if (mp(il,i).gt.mp(il,i+1)) THEN 5273 5256 fxtYe(iiso)=0.01*grav*dpinv*(mp(il,i) & 5274 &*xt(ixt_ddft,il,i-1)-mp(il,i+1)*xt(ixt_ddft,il,i) &5275 & +(mp(il,i+1)-mp(il,i))*xtp(ixt_ddft,il,i))5276 endif !if (mp(il,i).gt.mp(il,i+1)) then5257 *xt(ixt_ddft,il,i-1)-mp(il,i+1)*xt(ixt_ddft,il,i) & 5258 +(mp(il,i+1)-mp(il,i))*xtp(ixt_ddft,il,i)) 5259 endif !if (mp(il,i).gt.mp(il,i+1)) THEN 5277 5260 fxtqe(iiso)=0.01*grav*dpinv* & 5278 &(mp(il,i+1)*(xtp(iiso,il,i+1)-xt(iiso,il,i)) &5279 &-mp(il,i)*(xtp(iiso,il,i)-xt(iiso,il,i-1)))5261 (mp(il,i+1)*(xtp(iiso,il,i+1)-xt(iiso,il,i)) & 5262 -mp(il,i)*(xtp(iiso,il,i)-xt(iiso,il,i-1))) 5280 5263 fxt(ixt_ddft,il,i)=fxt(ixt_ddft,il,i)+fxtYe(iiso) 5281 5264 fxt(ixt_poubelle,il,i)=fxt(ixt_poubelle,il,i) & 5282 &+fxtqe(iiso)-fxtYe(iiso)5265 +fxtqe(iiso)-fxtYe(iiso) 5283 5266 enddo !do iiso = 1, niso 5284 ! write(*,*) 'delt*conversion=',delt*conversion(iso_eau)5285 ! write(*,*) 'delt*fxtYe=',delt*fxtYe(iso_eau)5286 ! write(*,*) 'delt*fxtqe=',delt*fxtqe(iso_eau)5287 endif !if (option_traceurs. eq.6) then5288 #endif 5267 ! WRITE(*,*) 'delt*conversion=',delt*conversion(iso_eau) 5268 ! WRITE(*,*) 'delt*fxtYe=',delt*fxtYe(iso_eau) 5269 ! WRITE(*,*) 'delt*fxtqe=',delt*fxtqe(iso_eau) 5270 endif !if (option_traceurs.EQ.6) THEN 5271 #endif 5289 5272 5290 5273 #ifdef DIAGISO 5291 5274 fq_evapprecip(il,i)=fq_evapprecip(il,i) & 5292 &+0.5*sigd*(evap(il,i)+evap(il,i+1))5275 +0.5*sigd*(evap(il,i)+evap(il,i+1)) 5293 5276 fq_ddft(il,i)=fq_ddft(il,i) & 5294 &+0.1*(mp(il,i+1)*(rp(il,i+1)-rr(il,i))-mp(il,i) &5295 &*(rp(il,i)-rr(il,i-1)))*dpinv5296 do ixt = 1, niso5277 +0.1*(mp(il,i+1)*(rp(il,i+1)-rr(il,i))-mp(il,i) & 5278 *(rp(il,i)-rr(il,i-1)))*dpinv 5279 DO ixt = 1, niso 5297 5280 fxt_evapprecip(ixt,il,i)=fxt_evapprecip(ixt,il,i) & 5298 &+0.5*sigd*(xtevap(ixt,il,i)+xtevap(ixt,il,i+1))5281 +0.5*sigd*(xtevap(ixt,il,i)+xtevap(ixt,il,i+1)) 5299 5282 fxt_ddft(ixt,il,i)=fxt_ddft(ixt,il,i) & 5300 &+0.1*(mp(il,i+1)*(xtp(ixt,il,i+1)-xt(ixt,il,i)) &5301 &-mp(il,i)*(xtp(ixt,il,i)-xt(ixt,il,i-1)))*dpinv5302 enddo ! ixt=1,niso 5303 #endif 5283 +0.1*(mp(il,i+1)*(xtp(ixt,il,i+1)-xt(ixt,il,i)) & 5284 -mp(il,i)*(xtp(ixt,il,i)-xt(ixt,il,i-1)))*dpinv 5285 enddo ! ixt=1,niso 5286 #endif 5304 5287 5305 5288 ! cam verif 5306 5289 5307 5290 #ifdef ISOVERIF 5308 doixt=1,niso5309 calliso_verif_noNaN(fxt(ixt,il,i),'cv30_yield 5083')5291 DO ixt=1,niso 5292 CALL iso_verif_noNaN(fxt(ixt,il,i),'cv30_yield 5083') 5310 5293 enddo 5311 #endif 5312 #ifdef ISOVERIF 5313 if (iso_eau.gt.0) then5314 calliso_verif_egalite_choix(fxt(iso_eau,il,i), &5315 &fr(il,i),'cv30_routines 3522',errmax,errmaxrel)5316 endif !if (iso_eau.gt.0) then5317 if ((iso_HDO.gt.0).and.(delt*fr(il,i).gt.ridicule)) then5318 if(iso_verif_aberrant_enc_nostop( &5319 &fxt(iso_HDO,il,i)/fr(il,i), &5320 & 'cv30_yield 3690').eq.1) then5321 write(*,*) 'i,icb(il),inb(il)=',i,icb(il),inb(il)5294 #endif 5295 #ifdef ISOVERIF 5296 IF (iso_eau.gt.0) THEN 5297 CALL iso_verif_egalite_choix(fxt(iso_eau,il,i), & 5298 fr(il,i),'cv30_routines 3522',errmax,errmaxrel) 5299 endif !if (iso_eau.gt.0) THEN 5300 IF ((iso_HDO.gt.0).AND.(delt*fr(il,i).gt.ridicule)) THEN 5301 IF (iso_verif_aberrant_enc_nostop( & 5302 fxt(iso_HDO,il,i)/fr(il,i), & 5303 'cv30_yield 3690').EQ.1) THEN 5304 WRITE(*,*) 'i,icb(il),inb(il)=',i,icb(il),inb(il) 5322 5305 stop 5323 5306 endif 5324 endif !if (iso_HDO.gt.0) then5325 if ((iso_HDO.gt.0).and. &5326 & (rr(il,i)+delt*fr(il,i).gt.ridicule)) then5327 calliso_verif_aberrant_encadre((xt(iso_HDO,il,i) &5328 &+delt*fxt(iso_HDO,il,i)) &5329 &/(rr(il,i)+delt*fr(il,i)),'cv30_yield 3757b, ddfts')5330 endif !if (iso_HDO.gt.0) then5331 if ((iso_HDO.gt.0).and.(iso_O18.gt.0).and. &5332 & (rr(il,i)+delt*fr(il,i).gt.ridicule)) then5333 calliso_verif_O18_aberrant( &5334 &(xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i))/(rr(il,i)+delt*fr(il,i)), &5335 &(xt(iso_O18,il,i)+delt*fxt(iso_O18,il,i))/(rr(il,i)+delt*fr(il,i)), &5336 &'cv30_yield 3757b,O18, ddfts')5337 endif !if (iso_HDO.gt.0) then5307 endif !if (iso_HDO.gt.0) THEN 5308 IF ((iso_HDO.gt.0).AND. & 5309 (rr(il,i)+delt*fr(il,i).gt.ridicule)) THEN 5310 CALL iso_verif_aberrant_encadre((xt(iso_HDO,il,i) & 5311 +delt*fxt(iso_HDO,il,i)) & 5312 /(rr(il,i)+delt*fr(il,i)),'cv30_yield 3757b, ddfts') 5313 endif !if (iso_HDO.gt.0) THEN 5314 IF ((iso_HDO.gt.0).AND.(iso_O18.gt.0).AND. & 5315 (rr(il,i)+delt*fr(il,i).gt.ridicule)) THEN 5316 CALL iso_verif_O18_aberrant( & 5317 (xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i))/(rr(il,i)+delt*fr(il,i)), & 5318 (xt(iso_O18,il,i)+delt*fxt(iso_O18,il,i))/(rr(il,i)+delt*fr(il,i)), & 5319 'cv30_yield 3757b,O18, ddfts') 5320 endif !if (iso_HDO.gt.0) THEN 5338 5321 #ifdef ISOTRAC 5339 calliso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 4172')5340 doixt=1,ntraciso5322 CALL iso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 4172') 5323 DO ixt=1,ntraciso 5341 5324 xtnew(ixt)=xt(ixt,il,1)+delt*fxt(ixt,il,1) 5342 5325 enddo 5343 if(iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 4295',1e-5) &5344 & .eq.1) then5345 write(*,*) 'il,i=',il,i5326 IF (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 4295',1e-5) & 5327 .EQ.1) THEN 5328 WRITE(*,*) 'il,i=',il,i 5346 5329 endif 5347 ! calliso_verif_tracpos_choix(xtnew,'cv30_yield 4295',1e-5)5348 #endif 5349 #endif 5350 ! end cam verif 5330 ! CALL iso_verif_tracpos_choix(xtnew,'cv30_yield 4295',1e-5) 5331 #endif 5332 #endif 5333 ! end cam verif 5351 5334 #endif 5352 5335 … … 5384 5367 ! do j=1,ntra 5385 5368 ! do il=1,ncum 5386 ! if (i.le.inb(il)) then5369 ! if (i.le.inb(il)) THEN 5387 5370 ! dpinv=1.0/(ph(il,i)-ph(il,i+1)) 5388 5371 ! cpinv=1.0/cpn(il,i) 5389 5372 5390 ! if (cvflag_grav) then5373 ! if (cvflag_grav) THEN 5391 5374 ! ftra(il,i,j)=ftra(il,i,j)+0.01*grav*dpinv 5392 5375 ! : *(mp(il,i+1)*(trap(il,i+1,j)-tra(il,i,j)) … … 5396 5379 ! : *(mp(il,i+1)*(trap(il,i+1,j)-tra(il,i,j)) 5397 5380 ! : -mp(il,i)*(trap(il,i,j)-tra(il,i-1,j))) 5398 ! endif5399 ! endif! i5381 ! END IF 5382 ! END IF ! i 5400 5383 ! enddo 5401 5384 ! enddo … … 5411 5394 5412 5395 ! attention, on corrige un probleme C Risi 5413 IF (cvflag_grav) then 5414 5396 IF (cvflag_grav) THEN 5415 5397 ax = 0.01*grav*ment(il, inb(il), inb(il))*(hp(il,inb(il))-h(il,inb(il))+t(il, & 5416 5398 inb(il))*(cpv-cpd)*(rr(il,inb(il))-qent(il,inb(il), & … … 5439 5421 1))/(ph(il,inb(il)-1)-ph(il,inb(il))) 5440 5422 5441 5442 #ifdef ISO 5443 doixt = 1, ntraciso5423 5424 #ifdef ISO 5425 DO ixt = 1, ntraciso 5444 5426 xtbx(ixt)=0.01*grav*ment(il,inb(il),inb(il)) & 5445 &*(xtent(ixt,il,inb(il),inb(il)) &5446 &-xt(ixt,il,inb(il)))/(ph(il,inb(il))-ph(il,inb(il)+1))5427 *(xtent(ixt,il,inb(il),inb(il)) & 5428 -xt(ixt,il,inb(il)))/(ph(il,inb(il))-ph(il,inb(il)+1)) 5447 5429 fxt(ixt,il,inb(il))=fxt(ixt,il,inb(il))-xtbx(ixt) 5448 5430 fxt(ixt,il,inb(il)-1)=fxt(ixt,il,inb(il)-1) & 5449 &+xtbx(ixt)*(ph(il,inb(il))-ph(il,inb(il)+1)) &5450 &/(ph(il,inb(il)-1)-ph(il,inb(il)))5431 +xtbx(ixt)*(ph(il,inb(il))-ph(il,inb(il)+1)) & 5432 /(ph(il,inb(il)-1)-ph(il,inb(il))) 5451 5433 enddo !do ixt = 1, niso 5452 #endif 5434 #endif 5453 5435 5454 5436 else !IF (cvflag_grav) … … 5480 5462 5481 5463 5482 5483 #ifdef ISO 5484 doixt = 1, ntraciso5464 5465 #ifdef ISO 5466 DO ixt = 1, ntraciso 5485 5467 xtbx(ixt)=0.1*ment(il,inb(il),inb(il)) & 5486 &*(xtent(ixt,il,inb(il),inb(il)) &5487 &-xt(ixt,il,inb(il)))/(ph(il,inb(il))-ph(il,inb(il)+1))5468 *(xtent(ixt,il,inb(il),inb(il)) & 5469 -xt(ixt,il,inb(il)))/(ph(il,inb(il))-ph(il,inb(il)+1)) 5488 5470 fxt(ixt,il,inb(il))=fxt(ixt,il,inb(il))-xtbx(ixt) 5489 5471 fxt(ixt,il,inb(il)-1)=fxt(ixt,il,inb(il)-1) & 5490 &+xtbx(ixt)*(ph(il,inb(il))-ph(il,inb(il)+1)) &5491 &/(ph(il,inb(il)-1)-ph(il,inb(il)))5472 +xtbx(ixt)*(ph(il,inb(il))-ph(il,inb(il)+1)) & 5473 /(ph(il,inb(il)-1)-ph(il,inb(il))) 5492 5474 enddo !do ixt = 1, niso 5493 #endif 5475 #endif 5494 5476 5495 5477 endif !IF (cvflag_grav) … … 5500 5482 fq_detrainement(il,inb(il))=fq_detrainement(il,inb(il))-bx 5501 5483 fq_detrainement(il,inb(il)-1)=fq_detrainement(il,inb(il)-1) & 5502 &+bx*(ph(il,inb(il))-ph(il,inb(il)+1)) &5503 & /(ph(il,inb(il)-1)-ph(il,inb(il)))5504 doixt = 1, niso5484 +bx*(ph(il,inb(il))-ph(il,inb(il)+1)) & 5485 /(ph(il,inb(il)-1)-ph(il,inb(il))) 5486 DO ixt = 1, niso 5505 5487 fxt_detrainement(ixt,il,inb(il))= & 5506 &fxt_detrainement(ixt,il,inb(il))-xtbx(ixt)5488 fxt_detrainement(ixt,il,inb(il))-xtbx(ixt) 5507 5489 fxt_detrainement(ixt,il,inb(il)-1)= & 5508 &fxt_detrainement(ixt,il,inb(il)-1) &5509 &+xtbx(ixt)*(ph(il,inb(il))-ph(il,inb(il)+1)) &5510 & /(ph(il,inb(il)-1)-ph(il,inb(il)))5490 fxt_detrainement(ixt,il,inb(il)-1) & 5491 +xtbx(ixt)*(ph(il,inb(il))-ph(il,inb(il)+1)) & 5492 /(ph(il,inb(il)-1)-ph(il,inb(il))) 5511 5493 enddo 5512 5494 #endif 5513 5495 ! cam verif 5514 5496 #ifdef ISOVERIF 5515 doixt=1,niso5516 calliso_verif_noNaN(fxt(ixt,il,inb(il)),'cv30_yield 5083')5497 DO ixt=1,niso 5498 CALL iso_verif_noNaN(fxt(ixt,il,inb(il)),'cv30_yield 5083') 5517 5499 enddo 5518 if (iso_eau.gt.0) then5519 calliso_verif_egalite_choix(fxt(iso_eau,il,inb(il)), &5520 &fr(il,inb(il)),'cv30_routines 3638',errmax,errmaxrel)5521 calliso_verif_egalite_choix(fxt(iso_eau,il,inb(il)-1), &5522 &fr(il,inb(il)-1),'cv30_routines 3640',errmax,errmaxrel)5523 endif !if (iso_eau.gt.0) then5524 if ((iso_HDO.gt.0).and. &5525 & (rr(il,inb(il))+delt*fr(il,inb(il)).gt.ridicule)) then5526 calliso_verif_aberrant_encadre( &5527 &(xt(iso_HDO,il,inb(il))+delt*fxt(iso_HDO,il,inb(il))) &5528 &/(rr(il,inb(il))+delt*fr(il,inb(il))), &5529 &'cv30_yield 3921, en inb')5530 if (iso_O18.gt.0) then5531 if(iso_verif_O18_aberrant_nostop( &5532 &(xt(iso_HDO,il,inb(il))+delt*fxt(iso_HDO,il,inb(il))) &5533 &/(rr(il,inb(il))+delt*fr(il,inb(il))), &5534 &(xt(iso_O18,il,inb(il))+delt*fxt(iso_O18,il,inb(il))) &5535 &/(rr(il,inb(il))+delt*fr(il,inb(il))), &5536 & 'cv30_yield 3921O18, en inb').eq.1) then5537 write(*,*) 'il,inb(il)=',il,inb(il)5500 IF (iso_eau.gt.0) THEN 5501 CALL iso_verif_egalite_choix(fxt(iso_eau,il,inb(il)), & 5502 fr(il,inb(il)),'cv30_routines 3638',errmax,errmaxrel) 5503 CALL iso_verif_egalite_choix(fxt(iso_eau,il,inb(il)-1), & 5504 fr(il,inb(il)-1),'cv30_routines 3640',errmax,errmaxrel) 5505 endif !if (iso_eau.gt.0) THEN 5506 IF ((iso_HDO.gt.0).AND. & 5507 (rr(il,inb(il))+delt*fr(il,inb(il)).gt.ridicule)) THEN 5508 CALL iso_verif_aberrant_encadre( & 5509 (xt(iso_HDO,il,inb(il))+delt*fxt(iso_HDO,il,inb(il))) & 5510 /(rr(il,inb(il))+delt*fr(il,inb(il))), & 5511 'cv30_yield 3921, en inb') 5512 IF (iso_O18.gt.0) THEN 5513 IF (iso_verif_O18_aberrant_nostop( & 5514 (xt(iso_HDO,il,inb(il))+delt*fxt(iso_HDO,il,inb(il))) & 5515 /(rr(il,inb(il))+delt*fr(il,inb(il))), & 5516 (xt(iso_O18,il,inb(il))+delt*fxt(iso_O18,il,inb(il))) & 5517 /(rr(il,inb(il))+delt*fr(il,inb(il))), & 5518 'cv30_yield 3921O18, en inb').EQ.1) THEN 5519 WRITE(*,*) 'il,inb(il)=',il,inb(il) 5538 5520 k_tmp=0.1*ment(il,inb(il),inb(il))/(ph(il,inb(il))-ph(il,inb(il)+1)) 5539 write(*,*) 'fr,frprec=',fr(il,inb(il)),fr(il,inb(il))+bx5540 write(*,*) 'M,dt,k_tmp*dt=',k_tmp,delt,k_tmp*delt5541 write(*,*) 'q,qe=',rr(il,inb(il)),qent(il,inb(il),inb(il))5542 write(*,*) 'r=',k_tmp*delt*qent(il,inb(il),inb(il))/rr(il,inb(il))5543 write(*,*) 'deltaDR,Re=',deltaD(xt(iso_HDO,il,inb(il))/rr(il,inb(il))), &5544 & deltaD(xtent(iso_HDO,il,inb(il),inb(il))/qent(il,inb(il),inb(il)))5545 write(*,*) 'deltaO18R,Re=',deltaO(xt(iso_O18,il,inb(il))/rr(il,inb(il))), &5546 & deltaO(xtent(iso_O18,il,inb(il),inb(il))/qent(il,inb(il),inb(il)))5521 WRITE(*,*) 'fr,frprec=',fr(il,inb(il)),fr(il,inb(il))+bx 5522 WRITE(*,*) 'M,dt,k_tmp*dt=',k_tmp,delt,k_tmp*delt 5523 WRITE(*,*) 'q,qe=',rr(il,inb(il)),qent(il,inb(il),inb(il)) 5524 WRITE(*,*) 'r=',k_tmp*delt*qent(il,inb(il),inb(il))/rr(il,inb(il)) 5525 WRITE(*,*) 'deltaDR,Re=',deltaD(xt(iso_HDO,il,inb(il))/rr(il,inb(il))), & 5526 deltaD(xtent(iso_HDO,il,inb(il),inb(il))/qent(il,inb(il),inb(il))) 5527 WRITE(*,*) 'deltaO18R,Re=',deltaO(xt(iso_O18,il,inb(il))/rr(il,inb(il))), & 5528 deltaO(xtent(iso_O18,il,inb(il),inb(il))/qent(il,inb(il),inb(il))) 5547 5529 stop 5548 5530 endif !if (iso_verif_O18_aberrant_nostop 5549 endif !if (iso_O18.gt.0) then5550 endif !if (iso_HDO.gt.0) then5551 if ((iso_HDO.gt.0).and. &5552 & (rr(il,inb(il)-1)+delt*fr(il,inb(il)-1).gt.ridicule)) then5553 calliso_verif_aberrant_encadre( &5554 &(xt(iso_HDO,il,inb(il)-1) &5555 &+delt*fxt(iso_HDO,il,inb(il)-1)) &5556 &/(rr(il,inb(il)-1)+delt*fr(il,inb(il)-1)), &5557 &'cv30_yield 3921b, en inb-1')5558 if (iso_O18.gt.0) then5559 calliso_verif_O18_aberrant( &5560 &(xt(iso_HDO,il,inb(il)-1)+delt*fxt(iso_HDO,il,inb(il)-1)) &5561 &/(rr(il,inb(il)-1)+delt*fr(il,inb(il)-1)), &5562 &(xt(iso_O18,il,inb(il)-1)+delt*fxt(iso_O18,il,inb(il)-1)) &5563 &/(rr(il,inb(il)-1)+delt*fr(il,inb(il)-1)), &5564 &'cv30_yield 3921cO18, en inb-1')5531 endif !if (iso_O18.gt.0) THEN 5532 endif !if (iso_HDO.gt.0) THEN 5533 IF ((iso_HDO.gt.0).AND. & 5534 (rr(il,inb(il)-1)+delt*fr(il,inb(il)-1).gt.ridicule)) THEN 5535 CALL iso_verif_aberrant_encadre( & 5536 (xt(iso_HDO,il,inb(il)-1) & 5537 +delt*fxt(iso_HDO,il,inb(il)-1)) & 5538 /(rr(il,inb(il)-1)+delt*fr(il,inb(il)-1)), & 5539 'cv30_yield 3921b, en inb-1') 5540 IF (iso_O18.gt.0) THEN 5541 CALL iso_verif_O18_aberrant( & 5542 (xt(iso_HDO,il,inb(il)-1)+delt*fxt(iso_HDO,il,inb(il)-1)) & 5543 /(rr(il,inb(il)-1)+delt*fr(il,inb(il)-1)), & 5544 (xt(iso_O18,il,inb(il)-1)+delt*fxt(iso_O18,il,inb(il)-1)) & 5545 /(rr(il,inb(il)-1)+delt*fr(il,inb(il)-1)), & 5546 'cv30_yield 3921cO18, en inb-1') 5565 5547 endif 5566 endif !if (iso_HDO.gt.0) then5548 endif !if (iso_HDO.gt.0) THEN 5567 5549 #ifdef ISOTRAC 5568 calliso_verif_traceur_justmass(fxt(1,il,inb(il)-1), &5569 &'cv30_routine 4364')5570 calliso_verif_traceur_justmass(fxt(1,il,inb(il)), &5571 &'cv30_routine 4364b')5572 doixt=1,ntraciso5550 CALL iso_verif_traceur_justmass(fxt(1,il,inb(il)-1), & 5551 'cv30_routine 4364') 5552 CALL iso_verif_traceur_justmass(fxt(1,il,inb(il)), & 5553 'cv30_routine 4364b') 5554 DO ixt=1,ntraciso 5573 5555 xtnew(ixt)=xt(ixt,il,inb(il))+delt*fxt(ixt,il,inb(il)) 5574 5556 enddo 5575 if(iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 4492',1e-5) &5576 & .eq.1) then5577 write(*,*) 'il,i=',il,i5557 IF (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 4492',1e-5) & 5558 .EQ.1) THEN 5559 WRITE(*,*) 'il,i=',il,i 5578 5560 endif 5579 ! calliso_verif_tracpos_choix(xtnew,'cv30_yield 4492',1e-5)5580 #endif 5581 #endif 5582 ! end cam verif 5561 ! CALL iso_verif_tracpos_choix(xtnew,'cv30_yield 4492',1e-5) 5562 #endif 5563 #endif 5564 ! end cam verif 5583 5565 #endif 5584 5566 … … 5608 5590 #ifdef ISO 5609 5591 frsum(il)=0.0 5610 doixt=1,ntraciso5592 DO ixt=1,ntraciso 5611 5593 fxtsum(ixt,il)=0.0 5612 5594 bxtsum(ixt,il)=0.0 … … 5625 5607 dsum(il) = dsum(il) + t(il, i)*(ph(il,i)-ph(il,i+1))/th(il, i) 5626 5608 #ifdef ISO 5627 5609 5628 5610 frsum(il)=frsum(il)+fr(il,i) 5629 doixt=1,ntraciso5611 DO ixt=1,ntraciso 5630 5612 fxtsum(ixt,il)=fxtsum(ixt,il)+fxt(ixt,il,i) 5631 5613 bxtsum(ixt,il)=bxtsum(ixt,il)+fxt(ixt,il,i) & 5632 &*(lv(il,i)+(cl-cpd)*(t(il,i)-t(il,1))) &5633 &*(ph(il,i)-ph(il,i+1))5634 enddo 5614 *(lv(il,i)+(cl-cpd)*(t(il,i)-t(il,1))) & 5615 *(ph(il,i)-ph(il,i+1)) 5616 enddo 5635 5617 #endif 5636 5618 END IF … … 5645 5627 fr(il, i) = bsum(il)/csum(il) 5646 5628 #ifdef ISO 5647 if (abs(csum(il)).gt.0.0) then5648 doixt=1,ntraciso5649 fxt(ixt,il,i)=bxtsum(ixt,il)/csum(il) 5629 IF (abs(csum(il)).gt.0.0) THEN 5630 DO ixt=1,ntraciso 5631 fxt(ixt,il,i)=bxtsum(ixt,il)/csum(il) 5650 5632 enddo 5651 else !if (frsum(il).gt.ridicule) then5652 if (abs(frsum(il)).gt.0.0) then5653 doixt=1,ntraciso5654 fxt(ixt,il,i)=fr(il,i)*fxtsum(ixt,il)/frsum(il) 5655 enddo 5656 else !if (abs(frsum(il)).gt.0.0) then5657 if (abs(fr(il,i))*delt.gt.ridicule) then5658 write(*,*) 'cv30_yield 4048: fr(il,i)=',fr(il,i)5659 stop 5660 else !if (abs(fr(il,i))*delt.gt.ridicule) then5661 doixt=1,ntraciso5633 else !if (frsum(il).gt.ridicule) THEN 5634 IF (abs(frsum(il)).gt.0.0) THEN 5635 DO ixt=1,ntraciso 5636 fxt(ixt,il,i)=fr(il,i)*fxtsum(ixt,il)/frsum(il) 5637 enddo 5638 else !if (abs(frsum(il)).gt.0.0) THEN 5639 IF (abs(fr(il,i))*delt.gt.ridicule) THEN 5640 WRITE(*,*) 'cv30_yield 4048: fr(il,i)=',fr(il,i) 5641 stop 5642 else !if (abs(fr(il,i))*delt.gt.ridicule) THEN 5643 DO ixt=1,ntraciso 5662 5644 fxt(ixt,il,i)=0.0 5663 5645 enddo 5664 if (iso_eau.gt.0) then5646 IF (iso_eau.gt.0) THEN 5665 5647 fxt(iso_eau,il,i)=1.0 5666 5648 endif 5667 endif !if (abs(fr(il,i))*delt.gt.ridicule) then5668 endif !if (abs(frsum(il)).gt.0.0) then5669 endif !if (frsum(il).gt.0) then5649 endif !if (abs(fr(il,i))*delt.gt.ridicule) THEN 5650 endif !if (abs(frsum(il)).gt.0.0) THEN 5651 endif !if (frsum(il).gt.0) THEN 5670 5652 #endif 5671 5653 END IF … … 5676 5658 #ifdef ISO 5677 5659 #ifdef ISOVERIF 5678 doi=1,nl5679 doil=1,ncum5680 doixt=1,ntraciso5681 call iso_verif_noNAN(fxt(ixt,il,i),'cv30_yield 3826')5660 DO i=1,nl 5661 DO il=1,ncum 5662 DO ixt=1,ntraciso 5663 CALL iso_verif_noNAN(fxt(ixt,il,i),'cv30_yield 3826') 5682 5664 enddo 5683 5665 enddo 5684 5666 enddo 5685 #endif 5686 #ifdef ISOVERIF 5687 doi=1,nl5688 ! write(*,*) 'cv30_routines temp 3967: i=',i5689 doil=1,ncum5690 ! write(*,*) 'cv30_routines 3969: il=',il5691 ! write(*,*) 'cv30_routines temp 3967: il,i,inb(il),ncum=',5667 #endif 5668 #ifdef ISOVERIF 5669 DO i=1,nl 5670 ! WRITE(*,*) 'cv30_routines temp 3967: i=',i 5671 DO il=1,ncum 5672 ! WRITE(*,*) 'cv30_routines 3969: il=',il 5673 ! WRITE(*,*) 'cv30_routines temp 3967: il,i,inb(il),ncum=', 5692 5674 ! : il,i,inb(il),ncum 5693 ! write(*,*) 'cv30_routines 3974'5694 if (iso_eau.gt.0) then5695 calliso_verif_egalite_choix(fxt(iso_eau,il,i), &5696 & fr(il,i),'cv30_yield 3830',errmax,errmaxrel)5697 endif !if (iso_eau.gt.0) then5698 ! write(*,*) 'cv30_routines 3979'5699 if ((iso_HDO.gt.0).and. &5700 & (delt*fr(il,i).gt.ridicule)) then5701 if(iso_verif_aberrant_enc_nostop( &5702 &fxt(iso_HDO,il,i)/fr(il,i), &5703 & 'cv30_yield 3834').eq.1) then5704 if (fr(il,i).gt.ridicule*1e5) then5705 write(*,*) 'il,i,icb(il)=',il,i,icb(il)5706 write(*,*) 'frsum(il)=',frsum(il)5707 write(*,*) 'fr(il,i)=',fr(il,i)5708 write(*,*) 'csum(il)=',csum(il)5709 write(*,*) &5710 &'deltaD(bxtsum(iso_HDO,il)/csum(il))=', &5711 & deltaD(bxtsum(iso_HDO,il)/csum(il))5675 ! WRITE(*,*) 'cv30_routines 3974' 5676 IF (iso_eau.gt.0) THEN 5677 CALL iso_verif_egalite_choix(fxt(iso_eau,il,i), & 5678 fr(il,i),'cv30_yield 3830',errmax,errmaxrel) 5679 endif !if (iso_eau.gt.0) THEN 5680 ! WRITE(*,*) 'cv30_routines 3979' 5681 IF ((iso_HDO.gt.0).AND. & 5682 (delt*fr(il,i).gt.ridicule)) THEN 5683 IF (iso_verif_aberrant_enc_nostop( & 5684 fxt(iso_HDO,il,i)/fr(il,i), & 5685 'cv30_yield 3834').EQ.1) THEN 5686 IF (fr(il,i).gt.ridicule*1e5) THEN 5687 WRITE(*,*) 'il,i,icb(il)=',il,i,icb(il) 5688 WRITE(*,*) 'frsum(il)=',frsum(il) 5689 WRITE(*,*) 'fr(il,i)=',fr(il,i) 5690 WRITE(*,*) 'csum(il)=',csum(il) 5691 WRITE(*,*) & 5692 'deltaD(bxtsum(iso_HDO,il)/csum(il))=', & 5693 deltaD(bxtsum(iso_HDO,il)/csum(il)) 5712 5694 ! stop 5713 5695 endif 5714 ! write(*,*) 'cv30_routines 3986: temporaire'5715 endif !if (iso_verif_aberrant_enc_nostop 5716 endif !if (iso_HDO.gt.0) then5717 if ((iso_HDO.gt.0).and. &5718 & (rr(il,i)+delt*fr(il,i).gt.ridicule)) then5719 if(iso_verif_aberrant_enc_nostop( &5720 &(xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i)) &5721 &/(rr(il,i)+delt*fr(il,i)),'cv30_yield 3921c, dans la CL') &5722 & .eq.1) then5723 write(*,*) 'il,i,icb(il)=',il,i,icb(il)5724 write(*,*) 'frsum(il)=',frsum(il)5725 write(*,*) 'fr(il,i)=',fr(il,i)5696 ! WRITE(*,*) 'cv30_routines 3986: temporaire' 5697 endif !if (iso_verif_aberrant_enc_nostop 5698 endif !if (iso_HDO.gt.0) THEN 5699 IF ((iso_HDO.gt.0).AND. & 5700 (rr(il,i)+delt*fr(il,i).gt.ridicule)) THEN 5701 IF (iso_verif_aberrant_enc_nostop( & 5702 (xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i)) & 5703 /(rr(il,i)+delt*fr(il,i)),'cv30_yield 3921c, dans la CL') & 5704 .EQ.1) THEN 5705 WRITE(*,*) 'il,i,icb(il)=',il,i,icb(il) 5706 WRITE(*,*) 'frsum(il)=',frsum(il) 5707 WRITE(*,*) 'fr(il,i)=',fr(il,i) 5726 5708 stop 5727 5709 endif 5728 endif !if (iso_HDO.gt.0) then 5729 5730 if ((iso_HDO.gt.0).and.(iso_O18.gt.0).and. & 5731 & (rr(il,i)+delt*fr(il,i).gt.ridicule)) then 5732 call iso_verif_O18_aberrant( & 5733 & (xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i))/(rr(il,i)+delt*fr(il,i)), & 5734 & (xt(iso_O18,il,i)+delt*fxt(iso_O18,il,i))/(rr(il,i)+delt*fr(il,i)), & 5735 & 'cv30_yield 3921d, dans la CL') 5736 endif !if (iso_HDO.gt.0) then 5710 endif !if (iso_HDO.gt.0) THEN 5711 IF ((iso_HDO.gt.0).AND.(iso_O18.gt.0).AND. & 5712 (rr(il,i)+delt*fr(il,i).gt.ridicule)) THEN 5713 CALL iso_verif_O18_aberrant( & 5714 (xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i))/(rr(il,i)+delt*fr(il,i)), & 5715 (xt(iso_O18,il,i)+delt*fxt(iso_O18,il,i))/(rr(il,i)+delt*fr(il,i)), & 5716 'cv30_yield 3921d, dans la CL') 5717 endif !if (iso_HDO.gt.0) THEN 5737 5718 #ifdef ISOTRAC 5738 calliso_verif_traceur_justmass(fxt(1,il,i), &5739 &'cv30_routine 4523')5740 #endif 5741 ! write(*,*) 'cv30_routines 3994'5719 CALL iso_verif_traceur_justmass(fxt(1,il,i), & 5720 'cv30_routine 4523') 5721 #endif 5722 ! WRITE(*,*) 'cv30_routines 3994' 5742 5723 enddo !do il=1,ncum 5743 ! write(*,*) 'cv30_routine 3990: fin des il pour i=',i5724 ! WRITE(*,*) 'cv30_routine 3990: fin des il pour i=',i 5744 5725 enddo !do i=1,nl 5745 ! write(*,*) 'cv30_routine 3990: fin des verifs sur homogen'5726 ! WRITE(*,*) 'cv30_routine 3990: fin des verifs sur homogen' 5746 5727 #endif 5747 5728 5748 5729 #ifdef ISOVERIF 5749 5730 ! verif finale des tendances: 5750 doi=1,nl5751 doil=1,ncum5752 if (iso_eau.gt.0) then5753 calliso_verif_egalite_choix(fxt(iso_eau,il,i), &5754 & fr(il,i),'cv30_yield 3830',errmax,errmaxrel)5755 endif !if (iso_eau.gt.0) then5756 if ((iso_HDO.gt.0).and. &5757 & (rr(il,i)+delt*fr(il,i).gt.ridicule)) then5758 calliso_verif_aberrant_encadre((xt(iso_HDO,il,i) &5759 &+delt*fxt(iso_HDO,il,i)) &5760 &/(rr(il,i)+delt*fr(il,i)), &5761 &'cv30_yield 5710a, final')5762 endif !if (iso_HDO.gt.0) then5763 if ((iso_HDO.gt.0).and.(iso_O18.gt.0).and. &5764 & (rr(il,i)+delt*fr(il,i).gt.ridicule)) then5765 calliso_verif_O18_aberrant( &5766 &(xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i))/(rr(il,i)+delt*fr(il,i)), &5767 &(xt(iso_O18,il,i)+delt*fxt(iso_O18,il,i))/(rr(il,i)+delt*fr(il,i)), &5768 &'cv30_yield 5710b, final')5769 endif !if (iso_HDO.gt.0) then5731 DO i=1,nl 5732 DO il=1,ncum 5733 IF (iso_eau.gt.0) THEN 5734 CALL iso_verif_egalite_choix(fxt(iso_eau,il,i), & 5735 fr(il,i),'cv30_yield 3830',errmax,errmaxrel) 5736 endif !if (iso_eau.gt.0) THEN 5737 IF ((iso_HDO.gt.0).AND. & 5738 (rr(il,i)+delt*fr(il,i).gt.ridicule)) THEN 5739 CALL iso_verif_aberrant_encadre((xt(iso_HDO,il,i) & 5740 +delt*fxt(iso_HDO,il,i)) & 5741 /(rr(il,i)+delt*fr(il,i)), & 5742 'cv30_yield 5710a, final') 5743 endif !if (iso_HDO.gt.0) THEN 5744 IF ((iso_HDO.gt.0).AND.(iso_O18.gt.0).AND. & 5745 (rr(il,i)+delt*fr(il,i).gt.ridicule)) THEN 5746 CALL iso_verif_O18_aberrant( & 5747 (xt(iso_HDO,il,i)+delt*fxt(iso_HDO,il,i))/(rr(il,i)+delt*fr(il,i)), & 5748 (xt(iso_O18,il,i)+delt*fxt(iso_O18,il,i))/(rr(il,i)+delt*fr(il,i)), & 5749 'cv30_yield 5710b, final') 5750 endif !if (iso_HDO.gt.0) THEN 5770 5751 enddo !do il=1,ncum 5771 5752 enddo !do i=1,nl … … 5835 5816 DO k = i, nl 5836 5817 DO il = 1, ncum 5837 ! test if (i.ge.icb(il). and.i.le.inb(il).and.k.le.inb(il))5838 ! then5818 ! test if (i.ge.icb(il).AND.i.le.inb(il).AND.k.le.inb(il)) 5819 ! THEN 5839 5820 IF (i<=inb(il) .AND. k<=inb(il)) THEN 5840 5821 upwd(il, i) = upwd(il, i) + m(il, k) + up1(il, k, i) … … 5933 5914 ! *** diagnose the in-cloud mixing ratio *** ! cld 5934 5915 ! *** of condensed water *** ! cld 5935 ! !cld5916 ! cld 5936 5917 5937 5918 DO i = 1, nd ! cld … … 5992 5973 END DO ! cld 5993 5974 5994 RETURN 5975 5995 5976 END SUBROUTINE cv30_yield 5996 5977 5997 ! !RomP >>>5978 !RomP >>> 5998 5979 SUBROUTINE cv30_tracer(nloc, len, ncum, nd, na, ment, sij, da, phi, phi2, & 5999 5980 d1a, dam, ep, vprecip, elij, clw, epmlmmm, eplamm, icb, inb) 6000 5981 IMPLICIT NONE 6001 5982 6002 include "cv30param.h" 5983 6003 5984 6004 5985 ! inputs: … … 6053 6034 DO i = 1, ncum 6054 6035 IF (k>=icb(i) .AND. k<=inb(i) .AND. j<=inb(i)) THEN 6055 ! !jyg epm(i,j,k)=1.-(1.-ep(i,j))*clw(i,j)/elij(i,k,j)6036 !jyg epm(i,j,k)=1.-(1.-ep(i,j))*clw(i,j)/elij(i,k,j) 6056 6037 epm(i, j, k) = 1. - (1.-ep(i,j))*clw(i, j)/max(elij(i,k,j), 1.E-16) 6057 ! ! 6038 6058 6039 epm(i, j, k) = max(epm(i,j,k), 0.0) 6059 6040 END IF … … 6104 6085 END DO 6105 6086 6106 RETURN 6087 6107 6088 END SUBROUTINE cv30_tracer 6108 6089 ! RomP <<< … … 6116 6097 elij1, clw1, epmlmmm1, eplamm1, wdtraina1, wdtrainm1,epmax_diag1 & ! epmax_cape 6117 6098 #ifdef ISO 6118 &,xtprecip,fxt,xtVPrecip,xtevap,xtclw,xtwdtraina &6119 &,xtprecip1,fxt1,xtVPrecip1,xtevap1,xtclw1,xtwdtraina1 &6099 ,xtprecip,fxt,xtVPrecip,xtevap,xtclw,xtwdtraina & 6100 ,xtprecip1,fxt1,xtVPrecip1,xtevap1,xtclw1,xtwdtraina1 & 6120 6101 #ifdef DIAGISO 6121 &, water,xtwater,qp,xtp &6122 &, fq_detrainement,fq_ddft,fq_fluxmasse,fq_evapprecip &6123 &, fxt_detrainement,fxt_ddft,fxt_fluxmasse, fxt_evapprecip &6124 &, f_detrainement,q_detrainement,xt_detrainement &6125 &, water1,xtwater1,qp1,xtp1 &6126 &, fq_detrainement1,fq_ddft1,fq_fluxmasse1,fq_evapprecip1 &6127 &, fxt_detrainement1,fxt_ddft1,fxt_fluxmasse1, fxt_evapprecip1 &6128 &, f_detrainement1,q_detrainement1,xt_detrainement1 &6129 #endif 6130 #endif 6131 &)6132 6133 #ifdef ISO 6134 useinfotrac_phy, ONLY: ntraciso=>ntiso6135 #ifdef ISOVERIF 6136 useisotopes_verif_mod, ONLY: Tmin_verif,iso_verif_aberrant, &6102 , water,xtwater,qp,xtp & 6103 , fq_detrainement,fq_ddft,fq_fluxmasse,fq_evapprecip & 6104 , fxt_detrainement,fxt_ddft,fxt_fluxmasse, fxt_evapprecip & 6105 , f_detrainement,q_detrainement,xt_detrainement & 6106 , water1,xtwater1,qp1,xtp1 & 6107 , fq_detrainement1,fq_ddft1,fq_fluxmasse1,fq_evapprecip1 & 6108 , fxt_detrainement1,fxt_ddft1,fxt_fluxmasse1, fxt_evapprecip1 & 6109 , f_detrainement1,q_detrainement1,xt_detrainement1 & 6110 #endif 6111 #endif 6112 ) 6113 6114 #ifdef ISO 6115 USE infotrac_phy, ONLY: ntraciso=>ntiso 6116 #ifdef ISOVERIF 6117 USE isotopes_verif_mod, ONLY: Tmin_verif,iso_verif_aberrant, & 6137 6118 iso_verif_egalite,iso_verif_egalite_choix_nostop,iso_verif_positif_nostop, & 6138 6119 iso_verif_egalite_nostop,iso_verif_aberrant_nostop,deltaD,iso_verif_noNaN_nostop, & … … 6142 6123 IMPLICIT NONE 6143 6124 6144 include "cv30param.h" 6125 6145 6126 6146 6127 ! inputs: … … 6172 6153 REAL xtprecip(ntraciso,nloc) 6173 6154 REAL xtvprecip(ntraciso,nloc, nd+1), xtevap(ntraciso,nloc, nd) 6174 realfxt(ntraciso,nloc,nd)6175 realxtclw(ntraciso,nloc,nd)6155 REAL fxt(ntraciso,nloc,nd) 6156 REAL xtclw(ntraciso,nloc,nd) 6176 6157 REAL xtwdtraina(ntraciso,nloc, nd) 6177 6158 #endif … … 6201 6182 ! RomP <<< 6202 6183 #ifdef ISO 6203 realxtprecip1(ntraciso,len)6204 realfxt1(ntraciso,len,nd)6205 realxtVPrecip1(ntraciso,len,nd+1),xtevap1(ntraciso,len, nd)6184 REAL xtprecip1(ntraciso,len) 6185 REAL fxt1(ntraciso,len,nd) 6186 REAL xtVPrecip1(ntraciso,len,nd+1),xtevap1(ntraciso,len, nd) 6206 6187 REAL xtwdtraina1(ntraciso,len, nd) 6207 6188 REAL xtclw1(ntraciso,len, nd) … … 6211 6192 INTEGER i, k, j 6212 6193 #ifdef ISO 6213 integerixt6194 INTEGER ixt 6214 6195 #endif 6215 6196 6216 6197 #ifdef DIAGISO 6217 realwater(nloc,nd)6218 realxtwater(ntraciso,nloc,nd)6219 realqp(nloc,nd),xtp(ntraciso,nloc,nd)6220 realfq_detrainement(nloc,nd)6221 realf_detrainement(nloc,nd)6222 realq_detrainement(nloc,nd)6223 realfq_ddft(nloc,nd)6224 realfq_fluxmasse(nloc,nd)6225 realfq_evapprecip(nloc,nd)6226 realfxt_detrainement(ntraciso,nloc,nd)6227 realxt_detrainement(ntraciso,nloc,nd)6228 realfxt_ddft(ntraciso,nloc,nd)6229 realfxt_fluxmasse(ntraciso,nloc,nd)6230 realfxt_evapprecip(ntraciso,nloc,nd)6231 6232 realwater1(len,nd)6233 realxtwater1(ntraciso,len,nd)6234 realqp1(len,nd),xtp1(ntraciso,len,nd)6235 realfq_detrainement1(len,nd)6236 realf_detrainement1(len,nd)6237 realq_detrainement1(len,nd)6238 realfq_ddft1(len,nd)6239 realfq_fluxmasse1(len,nd)6240 realfq_evapprecip1(len,nd)6241 realfxt_detrainement1(ntraciso,len,nd)6242 realxt_detrainement1(ntraciso,len,nd)6243 realfxt_ddft1(ntraciso,len,nd)6244 realfxt_fluxmasse1(ntraciso,len,nd)6245 realfxt_evapprecip1(ntraciso,len,nd)6246 #endif 6247 6248 #ifdef ISOVERIF 6249 write(*,*) 'cv30_routines 4293: entree dans cv3_uncompress'6198 REAL water(nloc,nd) 6199 REAL xtwater(ntraciso,nloc,nd) 6200 REAL qp(nloc,nd),xtp(ntraciso,nloc,nd) 6201 REAL fq_detrainement(nloc,nd) 6202 REAL f_detrainement(nloc,nd) 6203 REAL q_detrainement(nloc,nd) 6204 REAL fq_ddft(nloc,nd) 6205 REAL fq_fluxmasse(nloc,nd) 6206 REAL fq_evapprecip(nloc,nd) 6207 REAL fxt_detrainement(ntraciso,nloc,nd) 6208 REAL xt_detrainement(ntraciso,nloc,nd) 6209 REAL fxt_ddft(ntraciso,nloc,nd) 6210 REAL fxt_fluxmasse(ntraciso,nloc,nd) 6211 REAL fxt_evapprecip(ntraciso,nloc,nd) 6212 6213 REAL water1(len,nd) 6214 REAL xtwater1(ntraciso,len,nd) 6215 REAL qp1(len,nd),xtp1(ntraciso,len,nd) 6216 REAL fq_detrainement1(len,nd) 6217 REAL f_detrainement1(len,nd) 6218 REAL q_detrainement1(len,nd) 6219 REAL fq_ddft1(len,nd) 6220 REAL fq_fluxmasse1(len,nd) 6221 REAL fq_evapprecip1(len,nd) 6222 REAL fxt_detrainement1(ntraciso,len,nd) 6223 REAL xt_detrainement1(ntraciso,len,nd) 6224 REAL fxt_ddft1(ntraciso,len,nd) 6225 REAL fxt_fluxmasse1(ntraciso,len,nd) 6226 REAL fxt_evapprecip1(ntraciso,len,nd) 6227 #endif 6228 6229 #ifdef ISOVERIF 6230 WRITE(*,*) 'cv30_routines 4293: entree dans cv3_uncompress' 6250 6231 #endif 6251 6232 DO i = 1, ncum … … 6257 6238 epmax_diag1(idcum(i))=epmax_diag(i) ! epmax_cape 6258 6239 #ifdef ISO 6259 doixt = 1, ntraciso6240 DO ixt = 1, ntraciso 6260 6241 xtprecip1(ixt,idcum(i))=xtprecip(ixt,i) 6261 6242 enddo … … 6290 6271 ! RomP <<< 6291 6272 #ifdef ISO 6292 doixt = 1, ntraciso6273 DO ixt = 1, ntraciso 6293 6274 fxt1(ixt,idcum(i),k)=fxt(ixt,i,k) 6294 6275 xtVPrecip1(ixt,idcum(i),k)=xtVPrecip(ixt,i,k) … … 6309 6290 6310 6291 #ifdef ISO 6311 #ifdef DIAGISO 6312 dok=1,nl6313 do i=1,ncum6292 #ifdef DIAGISO 6293 DO k=1,nl 6294 DO i=1,ncum 6314 6295 water1(idcum(i),k)=water(i,k) 6315 6296 qp1(idcum(i),k)=qp(i,k) … … 6321 6302 fq_evapprecip1(idcum(i),k)=fq_evapprecip(i,k) 6322 6303 fq_fluxmasse1(idcum(i),k)=fq_fluxmasse(i,k) 6323 doixt = 1, ntraciso6304 DO ixt = 1, ntraciso 6324 6305 xtwater1(ixt,idcum(i),k)=xtwater(ixt,i,k) 6325 6306 xtp1(ixt,idcum(i),k)=xtp(ixt,i,k) … … 6332 6313 enddo 6333 6314 enddo 6334 do i=1,ncum6315 DO i=1,ncum 6335 6316 epmax_diag1(idcum(i))=epmax_diag(i) 6336 6317 enddo … … 6358 6339 END DO 6359 6340 6360 RETURN 6341 6361 6342 END SUBROUTINE cv30_uncompress 6362 6343 6363 subroutinecv30_epmax_fn_cape(nloc,ncum,nd &6344 SUBROUTINE cv30_epmax_fn_cape(nloc,ncum,nd & 6364 6345 ,cape,ep,hp,icb,inb,clw,nk,t,h,lv & 6365 6346 ,epmax_diag) 6366 USE cvthermo_mod_h, ONLY: cpd, cpv, cl, ci, rrv, rrd, lv0, lf0, g, rowl, t0, clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl & 6367 , clmci, eps, epsi, epsim1, ginv, hrd, grav 6368 implicit none 6347 USE conema3_mod_h 6348 USE cvthermo_mod_h 6349 6350 IMPLICIT NONE 6369 6351 6370 6352 ! On fait varier epmax en fn de la cape … … 6373 6355 ! Toutes les autres variables fn de ep sont calculees plus bas. 6374 6356 6375 INCLUDE "cv30param.h"6376 INCLUDE "conema3.h"6377 6378 6357 ! inputs: 6379 integerncum, nd, nloc6380 integericb(nloc), inb(nloc)6381 realcape(nloc)6382 realclw(nloc,nd),lv(nloc,nd),t(nloc,nd),h(nloc,nd)6383 integernk(nloc)6358 INTEGER ncum, nd, nloc 6359 INTEGER icb(nloc), inb(nloc) 6360 REAL cape(nloc) 6361 REAL clw(nloc,nd),lv(nloc,nd),t(nloc,nd),h(nloc,nd) 6362 INTEGER nk(nloc) 6384 6363 ! inouts: 6385 realep(nloc,nd)6386 realhp(nloc,nd)6364 REAL ep(nloc,nd) 6365 REAL hp(nloc,nd) 6387 6366 ! outputs ou local 6388 realepmax_diag(nloc)6367 REAL epmax_diag(nloc) 6389 6368 ! locals 6390 integer i,k6391 realhp_bak(nloc,nd)6369 INTEGER i,k 6370 REAL hp_bak(nloc,nd) 6392 6371 CHARACTER (LEN=20) :: modname='cv30_epmax_fn_cape' 6393 6372 CHARACTER (LEN=80) :: abort_message 6394 6373 6395 6374 ! on recalcule ep et hp 6396 6397 if (coef_epmax_cape.gt.1e-12) then6398 doi=1,ncum6375 6376 IF (coef_epmax_cape.gt.1e-12) THEN 6377 DO i=1,ncum 6399 6378 epmax_diag(i)=epmax-coef_epmax_cape*sqrt(cape(i)) 6400 dok=1,nl6379 DO k=1,nl 6401 6380 ep(i,k)=ep(i,k)/epmax*epmax_diag(i) 6402 6381 ep(i,k)=amax1(ep(i,k),0.0) … … 6406 6385 6407 6386 ! On recalcule hp: 6408 dok=1,nl6409 doi=1,ncum6410 6411 6387 DO k=1,nl 6388 DO i=1,ncum 6389 hp_bak(i,k)=hp(i,k) 6390 enddo 6412 6391 enddo 6413 dok=1,nlp6414 doi=1,ncum6415 6416 6392 DO k=1,nlp 6393 DO i=1,ncum 6394 hp(i,k)=h(i,k) 6395 enddo 6417 6396 enddo 6418 dok=minorig+1,nl6419 doi=1,ncum6420 if((k.ge.icb(i)).and.(k.le.inb(i)))then6397 DO k=minorig+1,nl 6398 DO i=1,ncum 6399 IF((k.ge.icb(i)).AND.(k.le.inb(i)))THEN 6421 6400 hp(i,k)=h(i,nk(i))+(lv(i,k)+(cpd-cpv)*t(i,k))*ep(i,k)*clw(i,k) 6422 6401 endif 6423 6402 enddo 6424 6403 enddo !do k=minorig+1,n 6425 ! write(*,*) 'cv30_routines 6218: hp(1,20)=',hp(1,20)6426 do i=1,ncum6427 dok=1,nl6428 if (abs(hp_bak(i,k)-hp(i,k)).gt.0.01) then6429 write(*,*) 'i,k=',i,k6430 write(*,*) 'coef_epmax_cape=',coef_epmax_cape6431 write(*,*) 'epmax_diag(i)=',epmax_diag(i)6432 write(*,*) 'ep(i,k)=',ep(i,k)6433 write(*,*) 'hp(i,k)=',hp(i,k)6434 write(*,*) 'hp_bak(i,k)=',hp_bak(i,k)6435 write(*,*) 'h(i,k)=',h(i,k)6436 write(*,*) 'nk(i)=',nk(i)6437 write(*,*) 'h(i,nk(i))=',h(i,nk(i))6438 write(*,*) 'lv(i,k)=',lv(i,k)6439 write(*,*) 't(i,k)=',t(i,k)6440 write(*,*) 'clw(i,k)=',clw(i,k)6441 write(*,*) 'cpd,cpv=',cpd,cpv6404 ! WRITE(*,*) 'cv30_routines 6218: hp(1,20)=',hp(1,20) 6405 DO i=1,ncum 6406 DO k=1,nl 6407 IF (abs(hp_bak(i,k)-hp(i,k)).gt.0.01) THEN 6408 WRITE(*,*) 'i,k=',i,k 6409 WRITE(*,*) 'coef_epmax_cape=',coef_epmax_cape 6410 WRITE(*,*) 'epmax_diag(i)=',epmax_diag(i) 6411 WRITE(*,*) 'ep(i,k)=',ep(i,k) 6412 WRITE(*,*) 'hp(i,k)=',hp(i,k) 6413 WRITE(*,*) 'hp_bak(i,k)=',hp_bak(i,k) 6414 WRITE(*,*) 'h(i,k)=',h(i,k) 6415 WRITE(*,*) 'nk(i)=',nk(i) 6416 WRITE(*,*) 'h(i,nk(i))=',h(i,nk(i)) 6417 WRITE(*,*) 'lv(i,k)=',lv(i,k) 6418 WRITE(*,*) 't(i,k)=',t(i,k) 6419 WRITE(*,*) 'clw(i,k)=',clw(i,k) 6420 WRITE(*,*) 'cpd,cpv=',cpd,cpv 6442 6421 CALL abort_physic(modname,abort_message,0) 6443 6422 endif 6444 6423 enddo !do k=1,nl 6445 enddo !do i=1,ncum 6446 endif !if (coef_epmax_cape.gt.1e-12) then 6447 6448 return 6449 end subroutine cv30_epmax_fn_cape 6450 6451 6424 enddo !do i=1,ncum 6425 endif !if (coef_epmax_cape.gt.1e-12) THEN 6426 END SUBROUTINE cv30_epmax_fn_cape 6427 6428 6429 6430 6431 6432 6433 END MODULE cv30_routines_mod 6434 6435 -
LMDZ6/trunk/libf/phylmdiso/cv3_routines.F90
r5276 r5283 11 11 USE ioipsl_getin_p_mod, ONLY : getin_p 12 12 use mod_phys_lmdz_para 13 13 USE conema3_mod_h 14 14 IMPLICIT NONE 15 15 … … 38 38 39 39 include "cv3param.h" 40 include "conema3.h"41 40 42 41 INTEGER, INTENT(IN) :: nd … … 1493 1492 USE cvflag_mod_h, ONLY: icvflag_Tpa, cvflag_grav, cvflag_ice, ok_optim_yield, ok_entrain, ok_homo_tend, & 1494 1493 ok_convstop, ok_intermittent, cvflag_prec_eject, qsat_depends_on_qt, adiab_ascent_mass_flux_depends_on_ejectliq, keepbug_ice_frac 1494 USE conema3_mod_h 1495 1495 IMPLICIT NONE 1496 1496 … … 1514 1514 1515 1515 include "cv3param.h" 1516 include "conema3.h"1517 1516 include "YOMCST2.h" 1518 1517 … … 4734 4733 #endif 4735 4734 #endif 4736 USE cvthermo_mod_h, ONLY: cpd, cpv, cl, ci, rrv, rrd, lv0, lf0, g, rowl, t0, clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl & 4735 USE conema3_mod_h 4736 USE cvthermo_mod_h, ONLY: cpd, cpv, cl, ci, rrv, rrd, lv0, lf0, g, rowl, t0, clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl & 4737 4737 , clmci, eps, epsi, epsim1, ginv, hrd, grav 4738 4738 USE cvflag_mod_h, ONLY: icvflag_Tpa, cvflag_grav, cvflag_ice, ok_optim_yield, ok_entrain, ok_homo_tend, & … … 4741 4741 4742 4742 include "cv3param.h" 4743 include "conema3.h"4744 4743 4745 4744 !inputs: … … 7625 7624 , pbase, p, ph, tv, buoy, sig, w0,iflag & 7626 7625 , epmax_diag) 7627 USE cvthermo_mod_h, ONLY: cpd, cpv, cl, ci, rrv, rrd, lv0, lf0, g, rowl, t0, clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl & 7626 USE conema3_mod_h 7627 USE cvthermo_mod_h, ONLY: cpd, cpv, cl, ci, rrv, rrd, lv0, lf0, g, rowl, t0, clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl & 7628 7628 , clmci, eps, epsi, epsim1, ginv, hrd, grav 7629 7629 USE cvflag_mod_h, ONLY: icvflag_Tpa, cvflag_grav, cvflag_ice, ok_optim_yield, ok_entrain, ok_homo_tend, & … … 7637 7637 7638 7638 include "cv3param.h" 7639 include "conema3.h"7640 7639 7641 7640 ! inputs: -
LMDZ6/trunk/libf/phylmdiso/cv_driver.F90
r5276 r5283 42 42 #endif 43 43 #endif 44 USE cv30_routines_mod, ONLY: cv30_param, cv30_prelim, cv30_feed, cv30_undilute1, cv30_trigger, cv30_compress, cv30_undilute2, & 45 cv30_closure, cv30_epmax_fn_cape, cv30_mixing, cv30_unsat, cv30_yield, cv30_tracer, cv30_uncompress 44 46 IMPLICIT NONE 45 47 -
LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90
r5282 r5283 444 444 , RALPD, RBETD, RGAMD 445 445 USE clesphys_mod_h 446 USE conema3_mod_h 446 447 447 448 IMPLICIT NONE … … 1295 1296 include "FCTTRE.h" 1296 1297 !IM 100106 BEG : pouvoir sortir les ctes de la physique 1297 include "conema3.h"1298 1298 include "nuage.h" 1299 1299 include "compbl.h"
Note: See TracChangeset
for help on using the changeset viewer.