Ignore:
Timestamp:
Oct 28, 2024, 1:47:34 PM (3 months ago)
Author:
abarral
Message:

Turn tracstoke.h conema3.h cv30_routines.f90 cv30param.h into modules

Location:
LMDZ6/trunk/libf/phylmdiso
Files:
1 deleted
4 edited
2 moved

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmdiso/concvl.F90

    r5282 r5283  
    7676          , RESTT, RALPW, RBETW, RGAMW, RALPS, RBETS, RGAMS            &
    7777          , RALPD, RBETD, RGAMD
     78  USE conema3_mod_h
    7879  IMPLICIT NONE
    7980! ======================================================================
     
    310311  include "YOETHF.h"
    311312  include "FCTTRE.h"
    312 !jyg<
    313   include "conema3.h"
    314 !>jyg
    315313
    316314  IF (first) THEN
  • LMDZ6/trunk/libf/phylmdiso/conema3_mod_h.f90

    r5282 r5283  
    1 link ../phylmd/conema3.h
     1link ../phylmd/conema3_mod_h.f90
  • LMDZ6/trunk/libf/phylmdiso/cv30_routines_mod.F90

    r5282 r5283  
    1 
    2 ! $Id$
    3 
     1MODULE 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)
     28CONTAINS
    429
    530
    631SUBROUTINE cv30_param(nd, delt)
    7   USE cvthermo_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
    934  IMPLICIT NONE
    1035
     
    3257  ! ***                     IT MUST BE LESS THAN 0              ***
    3358
    34   include "cv30param.h"
    35   include "conema3.h"
    36 
    3759  INTEGER nd
    3860  REAL delt ! timestep (seconds)
     
    82104  betad = 10.0 ! original value (from convect 4.3)
    83105
    84   RETURN
     106
    85107END SUBROUTINE cv30_param
    86108
    87109SUBROUTINE cv30_prelim(len, nd, ndp1, t, q, p, ph, lv, cpn, tv, gz, h, hm, &
    88110    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, grav
     111
     112  USE cvthermo_mod_h
    91113  IMPLICIT NONE
    92114
     
    111133  REAL tvx, tvy ! convect3
    112134  REAL cpx(len, nd)
    113 
    114   include "cv30param.h"
    115135
    116136
     
    158178  END DO
    159179
    160   RETURN
     180
    161181END SUBROUTINE cv30_prelim
    162182
     
    164184    iflag, tnk, qnk, gznk, plcl &
    165185#ifdef ISO
    166     ,xt,xtnk  & 
     186    ,xt,xtnk  &
    167187#endif
    168188    )
     
    186206  ! ================================================================
    187207
    188   include "cv30param.h"
     208
    189209
    190210  ! inputs:
     
    194214  REAL ph(len, nd+1)
    195215#ifdef ISO
    196   real xt(ntraciso,len,nd)     
     216  REAL xt(ntraciso,len,nd)
    197217#endif
    198218
     
    201221  REAL tnk(len), qnk(len), gznk(len), plcl(len)
    202222#ifdef ISO
    203   real xtnk(ntraciso,len)     
     223  REAL xtnk(ntraciso,len)
    204224#endif
    205225
     
    207227  INTEGER i, k
    208228#ifdef ISO
    209         integer ixt
     229        INTEGER ixt
    210230#endif
    211231  INTEGER ihmin(len)
     
    228248  ! @       do 200 k=2,nlp
    229249  ! @         do 190 i=1,len
    230   ! @          if((hm(i,k).lt.work(i)).and.
    231   ! @      &      (hm(i,k).lt.hm(i,k-1)))then
     250  ! @          if((hm(i,k).lt.work(i)).AND.
     251  ! @      &      (hm(i,k).lt.hm(i,k-1)))THEN
    232252  ! @            work(i)=hm(i,k)
    233253  ! @            ihmin(i)=k
     
    237257  ! @       do 210 i=1,len
    238258  ! @         ihmin(i)=min(ihmin(i),nlm)
    239   ! @         if(ihmin(i).le.minorig)then
     259  ! @         IF(ihmin(i).le.minorig)THEN
    240260  ! @           iflag(i)=6
    241261  ! @         endif
     
    253273  ! @       do 240 k=minorig+1,nl
    254274  ! @         do 230 i=1,len
    255   ! @          if((hm(i,k).gt.work(i)).and.(k.le.ihmin(i)))then
     275  ! @          if((hm(i,k).gt.work(i)).AND.(k.le.ihmin(i)))THEN
    256276  ! @            work(i)=hm(i,k)
    257277  ! @            nk(i)=k
     
    273293  ! -------------------------------------------------------------------
    274294  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.(
    276296                                                      ! p(i,ihmin(i)).lt.400.0
    277297                                                      ! )  )
     
    296316      qsnk(i) = qs(i, nk(i))
    297317#ifdef ISO
    298       do ixt=1,ntraciso
     318      DO ixt=1,ntraciso
    299319        xtnk(ixt,i) = xt(ixt,i, nk(i))
    300320      enddo
     
    323343  ! @      do 290 k=minorig,nl
    324344  ! @        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)))
    326346  ! @     &    icb(i)=min(icb(i),k)
    327347  ! @ 280    continue
     
    329349  ! @c
    330350  ! @      do 300 i=1,len
    331   ! @        if((icb(i).ge.nlm).and.(iflag(i).eq.0))iflag(i)=9
     351  ! @        if((icb(i).ge.nlm).AND.(iflag(i).EQ.0))iflag(i)=9
    332352  ! @ 300  continue
    333353
     
    346366
    347367  DO i = 1, len
    348     ! @        if((icb(i).ge.nlm).and.(iflag(i).eq.0))iflag(i)=9
     368    ! @        if((icb(i).ge.nlm).AND.(iflag(i).EQ.0))iflag(i)=9
    349369    IF ((icb(i)==nlm) .AND. (iflag(i)==0)) iflag(i) = 9
    350370  END DO
     
    358378  icbmax = 2
    359379  DO i = 1, len
    360     ! !        icbmax=max(icbmax,icb(i))
     380    !        icbmax=max(icbmax,icb(i))
    361381    IF (iflag(i)<7) icbmax = max(icbmax, icb(i)) ! sb Jun7th02
    362382  END DO
    363383
    364   RETURN
     384
    365385END SUBROUTINE cv30_feed
    366386
     
    368388    clw, icbs &
    369389#ifdef ISO
    370      &                       ,xt,xtclw &
    371 #endif
    372      &                       )
     390                             ,xt,xtclw &
     391#endif
     392                             )
    373393
    374394#ifdef ISO
     
    380400USE isotopes_routines_mod, ONLY: condiso_liq_ice_vectall_trac
    381401#ifdef ISOVERIF
    382     use isotopes_verif_mod, ONLY: iso_verif_traceur
    383 #endif
    384 #endif
    385 #ifdef ISOVERIF
    386     use isotopes_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, &
    387407        iso_verif_egalite_choix, iso_verif_noNaN,iso_verif_aberrant, &
    388408        iso_verif_egalite,iso_verif_egalite_choix_nostop,iso_verif_positif_nostop, &
     
    391411#endif
    392412#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
     413USE cvthermo_mod_h
     414
    396415  IMPLICIT NONE
    397416
     
    409428  ! ----------------------------------------------------------------
    410429
    411   include "cv30param.h"
    412430
    413431  ! inputs:
     
    418436  REAL plcl(len) ! convect3
    419437#ifdef ISO
    420       real xt(ntraciso,len,nd)
     438      REAL xt(ntraciso,len,nd)
    421439#endif
    422440
     
    424442  REAL tp(len, nd), tvp(len, nd), clw(len, nd)
    425443#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)
    428446#endif
    429447
     
    437455  REAL cpinv(len) ! convect3
    438456#ifdef ISO
    439       integer ixt
    440       real zfice(len),zxtliq(ntraciso,len),zxtice(ntraciso,len)
    441       real q_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
    443461!      integer iso_verif_positif_nostop
    444462!#endif
     
    453471
    454472#ifdef ISOVERIF
    455         write(*,*) 'cv30_routine undilute 1 413: entree'
     473        WRITE(*,*) 'cv30_routine undilute 1 413: entree'
    456474#endif
    457475
     
    493511
    494512  ! Re-compute icbsmax (icbsmax2):        !convect3
    495   ! !convect3
     513  !convect3
    496514  icbsmax2 = 2 !convect3
    497515  DO i = 1, len !convect3
     
    507525      clw(i, k) = 0.0 ! convect3
    508526#ifdef ISO
    509         do ixt=1,ntraciso
     527        DO ixt=1,ntraciso
    510528         xtclw(ixt,i,k) = 0.0
    511529        enddo
    512        
     530
    513531#endif
    514532    END DO ! convect3
     
    548566    denom = 243.5 + tc
    549567    denom = max(denom, 1.0) ! convect3
    550     ! ori          if(tc.ge.0.0)then
     568    ! ori          IF(tc.ge.0.0)THEN
    551569    es = 6.112*exp(17.67*tc/denom)
    552570    ! ori          else
     
    570588    denom = 243.5 + tc
    571589    denom = max(denom, 1.0) ! convect3
    572     ! ori          if(tc.ge.0.0)then
     590    ! ori          IF(tc.ge.0.0)THEN
    573591    es = 6.112*exp(17.67*tc/denom)
    574592    ! ori          else
     
    602620#ifdef ISO
    603621       ! calcul de zfice
    604        do i=1,len
     622       DO i=1,len
    605623          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)
    607625       enddo
    608626       ! calcul de la composition du condensat glace et liquide
    609627
    610        do i=1,len
     628       DO i=1,len
    611629         clw_k(i)=clw(i,icbs(i))
    612          tg_k(i)=t(i,icbs(i)) 
    613          do ixt=1,ntraciso
    614             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
    616634       enddo
    617635#ifdef ISOVERIF
    618         write(*,*) 'cv30_routine undilute1 573: avant condiso'
    619         write(*,*) 't(1,1)=',t(1,1)                 
    620         do i=1,len
    621            call iso_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')
    623641        enddo
    624         if (iso_HDO.gt.0) then           
    625          do i=1,len
    626           if (qnk(i).gt.ridicule) then
    627            call iso_verif_aberrant(xt_k(iso_hdo,i)/qnk(i), &
    628      &            'cv30_routines 576')
    629            endif  !if (qnk(i).gt.ridicule) then
    630          enddo       
    631         endif !if (iso_HDO.gt.0) then
    632 !        write(*,*) 'i=1, clw_k,qnk=',clw_k(1),qnk(1)
    633 #endif
    634        call condiso_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)
    637655#ifdef ISOTRAC
    638656#ifdef ISOVERIF
    639         write(*,*) 'cv30_routines 658: call condiso_liq_ice_vectall_trac'
    640 #endif
    641         call condiso_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        do i=1,len
    646          do ixt = 1, ntraciso   
    647            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)
    648666           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) then
    656             do i=1,len
    657               call iso_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)
    659677            enddo !do i=1,len
    660           endif !if (iso_eau.gt.0) then
    661 #ifdef ISOTRAC   
    662         do i=1,len
    663            call iso_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')
    664682        enddo
    665683#endif
    666          
     684
    667685#endif
    668686#endif
     
    716734    denom = 243.5 + tc
    717735    denom = max(denom, 1.0) ! convect3
    718     ! ori          if(tc.ge.0.0)then
     736    ! ori          IF(tc.ge.0.0)THEN
    719737    es = 6.112*exp(17.67*tc/denom)
    720738    ! ori          else
     
    738756    denom = 243.5 + tc
    739757    denom = max(denom, 1.0) ! convect3
    740     ! ori          if(tc.ge.0.0)then
     758    ! ori          IF(tc.ge.0.0)THEN
    741759    es = 6.112*exp(17.67*tc/denom)
    742760    ! ori          else
     
    772790
    773791#ifdef ISO
    774         do i=1,len
     792        DO i=1,len
    775793         zfice(i) = 1.0-(t(i,icb(i)+1)-pxtice)/(pxtmelt-pxtice)
    776794         zfice(i) = MIN(MAX(zfice(i),0.0),1.0)
    777 !         call calcul_zfice(tp(i,icb(i)+1),zfice)
     795!         CALL calcul_zfice(tp(i,icb(i)+1),zfice)
    778796        enddo !do i=1,len
    779         do i=1,len
     797        DO i=1,len
    780798         clw_k(i)=clw(i,icb(i)+1)
    781799         tg_k(i)=t(i,icb(i)+1)
    782800#ifdef ISOVERIF
    783         call iso_verif_positif(tg_k(i)-Tmin_verif,'cv30_routines 750')   
    784 #endif         
    785          do ixt=1,ntraciso
    786             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
    788806        enddo !do i=1,len
    789 #ifdef ISOVERIF 
    790         write(*,*) 'cv30_routines 739: avant condiso'
    791         if (iso_HDO.gt.0) then           
    792          do i=1,len
    793            call iso_verif_aberrant(xt_k(iso_hdo,i)/qnk(i), &
    794      &            'cv30_routines 725')
    795          enddo       
    796         endif !if (iso_HDO.gt.0) then
    797 #ifdef ISOTRAC   
    798         do i=1,len
    799            call iso_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')
    800818        enddo
    801 #endif       
    802 #endif       
    803         call condiso_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)
    806824#ifdef ISOTRAC
    807         call condiso_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         do i=1,len
    812          do ixt = 1, ntraciso
    813           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)
    814832          xtclw(ixt,i,icb(i)+1)=max(0.0,xtclw(ixt,i,icb(i)+1))
    815833         enddo !do ixt = 1, niso
    816834        enddo !do i=1,len
    817835
    818 #ifdef ISOVERIF           
    819 !write(*,*) 'DEBUG ISO B'
    820           do i=1,len
    821             if (iso_eau.gt.0) then
    822              call iso_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) then
    825 #ifdef ISOTRAC   
    826            call iso_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
    829847          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
    835853END SUBROUTINE cv30_undilute1
    836854
     
    854872  ! -------------------------------------------------------------------
    855873
    856   include "cv30param.h"
     874
    857875
    858876  ! input:
     
    901919  ! oct3       ath  = th(i,icb(i)-1) - dttrig
    902920  ! oct3
    903   ! oct3       if (tdif.lt.dtcrit .or. ath.gt.ath1) then
     921  ! oct3       if (tdif.lt.dtcrit .OR. ath.gt.ath1) THEN
    904922  ! oct3         do 60 k=1,nl
    905923  ! oct3            sig(i,k) = beta*sig(i,k) - 2.*alpha*tdif*tdif
     
    909927  ! oct3         iflag(i)=4 ! pour version vectorisee
    910928  ! oct3c convect3         iflag(i)=0
    911   ! oct3cccc         return
     929  ! oct3cccc         RETURN
    912930  ! oct3       endif
    913931  ! oct3
     
    936954  ! fin oct3 --
    937955
    938   RETURN
     956
    939957END SUBROUTINE cv30_trigger
    940958
     
    943961    th1, tra1, h1, lv1, cpn1, p1, ph1, tv1, tp1, tvp1, clw1, sig1, w01, &
    944962    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          )
    951969  USE print_control_mod, ONLY: lunout
    952970#ifdef ISO
    953     use infotrac_phy, ONLY: ntraciso=>ntiso
    954     use isotopes_mod, ONLY: essai_convergence, iso_eau,iso_HDO
    955 #ifdef ISOVERIF
    956     use isotopes_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, &
    957975        iso_verif_egalite_choix, iso_verif_noNaN,iso_verif_aberrant, &
    958976        iso_verif_egalite,iso_verif_egalite_choix_nostop,iso_verif_positif_nostop, &
     
    963981  IMPLICIT NONE
    964982
    965   include "cv30param.h"
     983
    966984
    967985  ! inputs:
     
    979997#ifdef ISO
    980998      !integer niso
    981       real xt1(ntraciso,len,nd), xtclw1(ntraciso,len,nd)
    982       real xtnk1(ntraciso,len)
     999      REAL xt1(ntraciso,len,nd), xtclw1(ntraciso,len,nd)
     1000      REAL xtnk1(ntraciso,len)
    9831001#endif
    9841002
     
    9961014  REAL tra(nloc, nd, ntra)
    9971015#ifdef ISO
    998       real xt(ntraciso,nloc,nd), xtclw(ntraciso,nloc,nd)
    999       real xtnk(ntraciso,nloc)
     1016      REAL xt(ntraciso,nloc,nd), xtclw(ntraciso,nloc,nd)
     1017      REAL xtnk(ntraciso,nloc)
    10001018#endif
    10011019
     
    10031021  INTEGER i, k, nn, j
    10041022#ifdef ISO
    1005       integer ixt
     1023      INTEGER ixt
    10061024#endif
    10071025
     
    10111029#ifdef ISO
    10121030        ! initialisation des champs compresses:
    1013         do k=1,nd
    1014           do i=1,nloc
    1015             if (essai_convergence) then
     1031        DO k=1,nd
     1032          DO i=1,nloc
     1033            IF (essai_convergence) THEN
    10161034            else
    10171035              q(i,k)=0.0
    10181036              clw(i,k)=0.0 ! mise en commentaire le 5 avril pour verif
    10191037!            convergence
    1020             endif  !f (negation(essai_convergence)) then
    1021             do ixt=1,ntraciso
     1038            endif  !f (negation(essai_convergence)) THEN
     1039            DO ixt=1,ntraciso
    10221040              xt(ixt,i,k)=0.0
    10231041              xtclw(ixt,i,k)=0.0
    1024             enddo !do ixt=1,niso         
     1042            enddo !do ixt=1,niso
    10251043          enddo !do i=1,len
    10261044        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)
    10281046#endif
    10291047
     
    10521070        th(nn, k) = th1(i, k)
    10531071#ifdef ISO
    1054         do ixt = 1, ntraciso
     1072        DO ixt = 1, ntraciso
    10551073           xt(ixt,nn,k)=xt1(ixt,i,k)
    10561074           xtclw(ixt,nn,k)=xtclw1(ixt,i,k)
    10571075        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)=', &
    10591077!                & nn,i,k,q(nn, k),xt(ixt,nn,k)
    10601078#endif
     
    10671085  ! nn=0
    10681086  ! do 101 i=1,len
    1069   ! if(iflag1(i).eq.0)then
     1087  ! IF(iflag1(i).EQ.0)THEN
    10701088  ! nn=nn+1
    10711089  ! tra(nn,k,j)=tra1(i,k,j)
    1072   ! endif
     1090  ! END IF
    10731091  ! 101  continue
    10741092  ! 111  continue
     
    10961114      iflag(nn) = iflag1(i)
    10971115#ifdef ISO
    1098       do ixt=1,ntraciso
     1116      DO ixt=1,ntraciso
    10991117        xtnk(ixt,nn) = xtnk1(ixt,i)
    11001118      enddo
     
    11051123#ifdef ISO
    11061124#ifdef ISOVERIF
    1107        if (iso_eau.gt.0) then
    1108         do k = 1, nd
    1109          do i = 1, nloc 
    1110         !write(*,*) 'i,k=',i,k                 
    1111         call iso_verif_egalite_choix(xtclw(iso_eau,i,k),clw(i,k), &
    1112      &            'compress 973',errmax,errmaxrel)
    1113         call iso_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)
    11151133         enddo
    11161134        enddo
    1117        endif !if (iso_eau.gt.0) then
    1118        do k = 1, nd
    1119          do i = 1, nn
    1120            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')
    11211139         enddo
    1122        enddo 
    1123 #endif
    1124 #endif
    1125 
    1126 
    1127   RETURN
     1140       enddo
     1141#endif
     1142#endif
     1143
     1144
     1145
    11281146END SUBROUTINE cv30_compress
    11291147
     
    11321150    ep, sigp, buoy &
    11331151#ifdef ISO
    1134      &   ,xtnk,xt,xtclw &
    1135 #endif
    1136      &   )
     1152         ,xtnk,xt,xtclw &
     1153#endif
     1154         )
    11371155    ! epmax_cape: ajout arguments
    1138 #ifdef ISO
    1139 use infotrac_phy, ONLY: ntraciso=>ntiso
     1156USE conema3_mod_h
     1157#ifdef ISO
     1158USE infotrac_phy, ONLY: ntraciso=>ntiso
    11401159USE isotopes_mod, ONLY: pxtmelt,pxtice,pxtmin,pxtmax,cond_temp_env, iso_eau,iso_HDO
    11411160USE isotopes_routines_mod, ONLY: condiso_liq_ice_vectall
     
    11471166#endif
    11481167#ifdef ISOVERIF
    1149     use isotopes_verif_mod, ONLY: errmax,errmaxrel,Tmin_verif,Tmax_verif, &
     1168    USE isotopes_verif_mod, ONLY: errmax,errmaxrel,Tmin_verif,Tmax_verif, &
    11501169        iso_verif_egalite_choix, iso_verif_noNaN,iso_verif_aberrant, &
    11511170        iso_verif_egalite,iso_verif_egalite_choix_nostop,iso_verif_positif_nostop, &
     
    11541173#endif
    11551174#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
     1175USE cvthermo_mod_h
    11581176  IMPLICIT NONE
    11591177
     
    11731191  ! - vertical profile of buoyancy computed here (use of buoybase)
    11741192  ! - the determination of inb is different
    1175   ! - no inb1, only inb in output
     1193  ! - no inb1, ONLY inb in output
    11761194  ! ---------------------------------------------------------------------
    1177 
    1178   include "cv30param.h"
    1179   include "conema3.h"
    11801195
    11811196  ! inputs:
     
    12021217
    12031218#ifdef ISO
    1204       real xt(ntraciso,nloc,nd), xtclw(ntraciso,nloc,nd)
    1205       real xtnk(ntraciso,nloc)
     1219      REAL xt(ntraciso,nloc,nd), xtclw(ntraciso,nloc,nd)
     1220      REAL xtnk(ntraciso,nloc)
    12061221!      real xtep(ntraciso,nloc,nd) ! le 7 mai: on supprime xtep, car pas besoin
    12071222!      la chute de precip ne fractionne pas.
    1208       integer ixt
    1209       real zfice(nloc),zxtliq(ntraciso,nloc),zxtice(ntraciso,nloc)
    1210       real clw_k(nloc),tg_k(nloc)
    1211 #ifdef ISOVERIF     
    1212       real qg_save(nloc,nd) ! inout
     1223      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
    12131228      !integer iso_verif_positif_nostop
    1214 #endif     
     1229#endif
    12151230#endif
    12161231
     
    12491264  DO k = minorig + 1, nl
    12501265    DO i = 1, ncum
    1251       ! ori         if(k.ge.(icb(i)+1))then
     1266      ! ori        IF(k.ge.(icb(i)+1))THEN
    12521267      IF (k>=(icbs(i)+1)) THEN ! convect3
    12531268        tg = t(i, k)
    12541269        qg = qs(i, k)
    1255         ! debug       alv=lv0-clmcpv*(t(i,k)-t0)
     1270        ! debug          alv=lv0-clmcpv*(t(i,k)-t0)
    12561271        alv = lv0 - clmcpv*(t(i,k)-273.15)
    12571272
    12581273        ! First iteration.
    12591274
    1260         ! ori          s=cpd+alv*alv*qg/(rrv*t(i,k)*t(i,k))
     1275        ! ori           s=cpd+alv*alv*qg/(rrv*t(i,k)*t(i,k))
    12611276        s = cpd*(1.-qnk(i)) + cl*qnk(i) & ! convect3
    12621277          +alv*alv*qg/(rrv*t(i,k)*t(i,k)) ! convect3
    12631278        s = 1./s
    1264         ! ori          ahg=cpd*tg+(cl-cpd)*qnk(i)*t(i,k)+alv*qg+gz(i,k)
     1279        ! ori           ahg=cpd*tg+(cl-cpd)*qnk(i)*t(i,k)+alv*qg+gz(i,k)
    12651280        ahg = cpd*tg + (cl-cpd)*qnk(i)*tg + alv*qg + gz(i, k) ! convect3
    12661281        tg = tg + s*(ah0(i)-ahg)
    1267         ! ori          tg=max(tg,35.0)
    1268         ! debug        tc=tg-t0
     1282        ! ori           tg=max(tg,35.0)
     1283        ! debug           tc=tg-t0
    12691284        tc = tg - 273.15
    12701285        denom = 243.5 + tc
    12711286        denom = max(denom, 1.0) ! convect3
    1272         ! ori          if(tc.ge.0.0)then
     1287        ! ori           IF(tc.ge.0.0)THEN
    12731288        es = 6.112*exp(17.67*tc/denom)
    1274         ! ori          else
    1275         ! ori                   es=exp(23.33086-6111.72784/tg+0.15215*log(tg))
    1276         ! ori          endif
     1289        ! ori           else
     1290        ! ori            es=exp(23.33086-6111.72784/tg+0.15215*log(tg))
     1291        ! ori           endif
    12771292        qg = eps*es/(p(i,k)-es*(1.-eps))
    12781293!        qg=max(0.0,qg) ! C Risi
     
    12801295        ! Second iteration.
    12811296
    1282         ! ori          s=cpd+alv*alv*qg/(rrv*t(i,k)*t(i,k))
    1283         ! ori          s=1./s
    1284         ! ori          ahg=cpd*tg+(cl-cpd)*qnk(i)*t(i,k)+alv*qg+gz(i,k)
     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)
    12851300        ahg = cpd*tg + (cl-cpd)*qnk(i)*tg + alv*qg + gz(i, k) ! convect3
    12861301        tg = tg + s*(ah0(i)-ahg)
    1287         ! ori          tg=max(tg,35.0)
    1288         ! debug        tc=tg-t0
     1302        ! ori           tg=max(tg,35.0)
     1303        ! debug           tc=tg-t0
    12891304        tc = tg - 273.15
    12901305        denom = 243.5 + tc
    12911306        denom = max(denom, 1.0) ! convect3
    1292         ! ori          if(tc.ge.0.0)then
     1307        ! ori           IF(tc.ge.0.0)THEN
    12931308        es = 6.112*exp(17.67*tc/denom)
    1294         ! ori          else
    1295         ! ori                   es=exp(23.33086-6111.72784/tg+0.15215*log(tg))
    1296         ! ori          endif
     1309        ! ori           else
     1310        ! ori            es=exp(23.33086-6111.72784/tg+0.15215*log(tg))
     1311        ! ori           endif
    12971312        qg = eps*es/(p(i,k)-es*(1.-eps))
    12981313!        qg=max(0.0,qg) ! C Risi
    12991314
    1300         ! debug        alv=lv0-clmcpv*(t(i,k)-t0)
     1315        ! debug           alv=lv0-clmcpv*(t(i,k)-t0)
    13011316        alv = lv0 - clmcpv*(t(i,k)-273.15)
    1302         ! print*,'cpd dans convect2 ',cpd
    1303         ! 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,cpd
     1317        ! 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
    13051320
    13061321        ! ori c approximation here:
     
    13221337#ifdef ISO
    13231338       ! calcul de zfice
    1324        do i=1,ncum
     1339       DO i=1,ncum
    13251340          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)
    13271342       enddo
    1328        do i=1,ncum
     1343       DO i=1,ncum
    13291344         clw_k(i)=clw(i,k)
    13301345         tg_k(i)=t(i,k)
    13311346       enddo !do i=1,ncum
    13321347#ifdef ISOVERIF
    1333         !write(*,*) 'cv30_routine 1259: avant condiso'
    1334         if (iso_HDO.gt.0) then           
    1335          do i=1,ncum
    1336            call iso_verif_aberrant(xtnk(iso_hdo,i)/qnk(i), &
    1337      &            'cv30_routines 1231')
    1338          enddo       
    1339         endif !if (iso_HDO.gt.0) then
    1340         if (iso_eau.gt.0) then           
    1341          do i=1,ncum
    1342            call iso_verif_egalite(xtnk(iso_eau,i),qnk(i), &
    1343      &            'cv30_routines 1373')
    1344          enddo       
    1345         endif !if (iso_HDO.gt.0) then
    1346         do i=1,ncum
    1347          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)) then
    1353           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)
    13561371          stop
    13571372         endif ! if ((iso_verif_positif_nostop
    1358         enddo !do i=1,ncum   
    1359 #ifdef ISOTRAC   
    1360         do i=1,ncum
    1361            call iso_verif_traceur(xtnk(1,i),'cv30_routines 1251') 
    13621373        enddo !do i=1,ncum
    1363 #endif       
    1364 #endif       
    1365         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)
    13681374#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
    13781393          xtclw(ixt,i,k)=zxtice(ixt,i)+zxtliq(ixt,i)
    13791394          xtclw(ixt,i,k)=max(0.0,xtclw(ixt,i,k))
     
    13811396        enddo !do i=1,ncum
    13821397#ifdef ISOVERIF
    1383         if (iso_eau.gt.0) then
    1384           do i=1,ncum       
    1385            call iso_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)
    13871402          enddo
    1388         endif !if (iso_eau.gt.0) then
    1389 #ifdef ISOTRAC   
    1390         do i=1,ncum
    1391            call iso_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')
    13921407        enddo
    1393 #endif       
    1394 #endif       
     1408#endif
     1409#endif
    13951410#endif
    13961411  END DO
     
    14101425      ep(i, k) = amin1(ep(i,k), epmax)
    14111426      sigp(i, k) = spfac
    1412       ! ori          if(k.ge.(nk(i)+1))then
     1427      ! ori          IF(k.ge.(nk(i)+1))THEN
    14131428      ! ori            tca=tp(i,k)-t0
    1414       ! ori            if(tca.ge.0.0)then
     1429      ! ori            IF(tca.ge.0.0)THEN
    14151430      ! ori              elacrit=elcrit
    14161431      ! ori            else
     
    14361451  ! ori      do 340 k=minorig+1,nl
    14371452  ! ori        do 330 i=1,ncum
    1438   ! ori        if(k.ge.(icb(i)+1))then
     1453  ! ori        IF(k.ge.(icb(i)+1))THEN
    14391454  ! 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)
    14421457  ! ori        endif
    14431458  ! ori 330    continue
     
    15131528  ! do 530 k=minorig+1,nl-1
    15141529  ! do 520 i=1,ncum
    1515   ! if(k.ge.(icb(i)+1))then
     1530  ! IF(k.ge.(icb(i)+1))THEN
    15161531  ! by=(tvp(i,k)-tv(i,k))*dph(i,k)/p(i,k)
    15171532  ! byp=(tvp(i,k+1)-tv(i,k+1))*dph(i,k+1)/p(i,k+1)
    15181533  ! cape(i)=cape(i)+by
    1519   ! if(by.ge.0.0)inb1(i)=k+1
    1520   ! if(cape(i).gt.0.0)then
     1534  ! IF(by.ge.0.0)inb1(i)=k+1
     1535  ! IF(cape(i).gt.0.0)THEN
    15211536  ! inb(i)=k+1
    15221537  ! capem(i)=cape(i)
    1523   ! endif
    1524   ! endif
     1538  ! END IF
     1539  ! END IF
    15251540  ! 520    continue
    15261541  ! 530  continue
     
    15371552  ! K Emanuel fix
    15381553
    1539   ! call zilch(byp,ncum)
     1554  ! CALL zilch(byp,ncum)
    15401555  ! do 530 k=minorig+1,nl-1
    15411556  ! do 520 i=1,ncum
    1542   ! if(k.ge.(icb(i)+1))then
     1557  ! IF(k.ge.(icb(i)+1))THEN
    15431558  ! by=(tvp(i,k)-tv(i,k))*dph(i,k)/p(i,k)
    15441559  ! cape(i)=cape(i)+by
    1545   ! if(by.ge.0.0)inb1(i)=k+1
    1546   ! if(cape(i).gt.0.0)then
     1560  ! IF(by.ge.0.0)inb1(i)=k+1
     1561  ! IF(cape(i).gt.0.0)THEN
    15471562  ! inb(i)=k+1
    15481563  ! capem(i)=cape(i)
    15491564  ! byp(i)=(tvp(i,k+1)-tv(i,k+1))*dph(i,k+1)/p(i,k+1)
    1550   ! endif
    1551   ! endif
     1565  ! END IF
     1566  ! END IF
    15521567  ! 520    continue
    15531568  ! 530  continue
     
    15641579  ! J Teixeira fix
    15651580
    1566   ! ori      call zilch(byp,ncum)
     1581  ! ori      CALL zilch(byp,ncum)
    15671582  ! ori      do 515 i=1,ncum
    1568   ! ori        lcape(i)=.true.
     1583  ! ori        lcape(i)=.TRUE.
    15691584  ! ori 515  continue
    15701585  ! ori      do 530 k=minorig+1,nl-1
    15711586  ! 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))then
     1587  ! ori          IF(cape(i).lt.0.0)lcape(i)=.FALSE.
     1588  ! ori          if((k.ge.(icb(i)+1)).AND.lcape(i))THEN
    15741589  ! ori            by=(tvp(i,k)-tv(i,k))*dph(i,k)/p(i,k)
    15751590  ! ori            byp(i)=(tvp(i,k+1)-tv(i,k+1))*dph(i,k+1)/p(i,k+1)
    15761591  ! ori            cape(i)=cape(i)+by
    1577   ! ori            if(by.ge.0.0)inb1(i)=k+1
    1578   ! ori            if(cape(i).gt.0.0)then
     1592  ! ori            IF(by.ge.0.0)inb1(i)=k+1
     1593  ! ori            IF(cape(i).gt.0.0)THEN
    15791594  ! ori              inb(i)=k+1
    15801595  ! ori              capem(i)=cape(i)
     
    16151630  END DO
    16161631
    1617   RETURN
     1632
    16181633END SUBROUTINE cv30_undilute2
    16191634
    16201635SUBROUTINE cv30_closure(nloc, ncum, nd, icb, inb, pbase, p, ph, tv, buoy, &
    16211636    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
    16241639  IMPLICIT NONE
    16251640
     
    16291644  ! vectorization: S. Bony
    16301645  ! ===================================================================
    1631 
    1632   include "cv30param.h"
    16331646
    16341647  ! input:
     
    16971710  END DO
    16981711
    1699   ! !      if(inb.lt.(nl-1))then
    1700   ! !         do 85 i=inb+1,nl-1
    1701   ! !            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    continue
    1706   ! !      end if
    1707 
    1708   ! !      do 87 i=1,icb
    1709   ! !         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 continue
     1712  !      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
    17131726
    17141727  ! -------------------------------------------------------------
     
    17931806
    17941807
    1795   ! !      cape=0.0
    1796   ! !      do 98 i=icb+1,inb
    1797   ! !         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.0
    1805   ! !         do 97 j=icb,i-1
    1806   ! !            dtmin=amin1(dtmin,buoy(j))
    1807   ! !   97    continue
    1808 
    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)*w
    1815   ! !         m(i)=amu*0.007*p(i)*(ph(i)-ph(i+1))/tv(i)
    1816   ! !         w0(i)=w
    1817   ! !   98 continue
    1818   ! !      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
    18241837END SUBROUTINE cv30_closure
    18251838
     
    18281841    vent, sij, elij, ments, qents, traent &
    18291842#ifdef ISO
    1830      &                     ,xt,xtnk,xtclw &
    1831      &                     ,xtent,xtelij &
    1832 #endif
    1833      &     )
    1834 
    1835 #ifdef ISO
    1836 use infotrac_phy, ONLY: ntraciso=>ntiso,niso,itZonIso
     1843                           ,xt,xtnk,xtclw &
     1844                           ,xtent,xtelij &
     1845#endif
     1846           )
     1847
     1848#ifdef ISO
     1849USE infotrac_phy, ONLY: ntraciso=>ntiso,niso,itZonIso
    18371850USE isotopes_mod, ONLY: pxtmelt,pxtice,pxtmin,pxtmax, iso_eau,iso_HDO, &
    18381851        ridicule
    18391852USE isotopes_routines_mod, ONLY: condiso_liq_ice_vectall
    18401853#ifdef ISOVERIF
    1841     use isotopes_verif_mod, ONLY: errmax,errmaxrel,Tmin_verif,deltalim, &
     1854    USE isotopes_verif_mod, ONLY: errmax,errmaxrel,Tmin_verif,deltalim, &
    18421855        iso_verif_egalite_choix,iso_verif_aberrant_choix, iso_verif_noNaN, &
    18431856        iso_verif_aberrant, &
     
    18471860#endif
    18481861#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, &
    18501863&       option_cond,index_zone,izone_cond,index_iso
    1851     use isotrac_routines_mod, only: iso_recolorise_condensation
    1852     use isotopes_routines_mod, only: condiso_liq_ice_vectall_trac
    1853 #ifdef ISOVERIF
    1854     use isotopes_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, &
    18551868&       iso_verif_traceur_justmass
    18561869#endif
    18571870#endif
    18581871#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
     1872USE cvthermo_mod_h
     1873
    18611874  IMPLICIT NONE
    18621875
     
    18661879  ! - vectorisation de la partie normalisation des flux (do 789...)
    18671880  ! ---------------------------------------------------------------------
    1868 
    1869   include "cv30param.h"
    18701881
    18711882  ! inputs:
     
    18821893  REAL m(nloc, na) ! input of convect3
    18831894#ifdef ISO
    1884       real xt(ntraciso,nloc,na), xtclw(ntraciso,nloc,na)
    1885       real tg_save(nloc,nd)
    1886       real xtnk(ntraciso,nloc)
     1895      REAL xt(ntraciso,nloc,na), xtclw(ntraciso,nloc,na)
     1896      REAL tg_save(nloc,nd)
     1897      REAL xtnk(ntraciso,nloc)
    18871898!      real xtep(ntraciso,nloc,na)
    18881899#endif
     
    18961907  REAL sigij(nloc, nd, nd)
    18971908#ifdef ISO
    1898       real xtent(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)
    19001911#endif
    19011912
     
    19121923  LOGICAL lwork(nloc)
    19131924#ifdef ISO
    1914       integer ixt
    1915       real xtrti(ntraciso,nloc)
    1916       real xtres(ntraciso)
     1925      INTEGER ixt
     1926      REAL xtrti(ntraciso,nloc)
     1927      REAL xtres(ntraciso)
    19171928      ! on ajoute la dimension nloc a xtrti pour verifs dans les tags: 5 fev
    19181929      ! 2010
    1919       real zfice(nloc),zxtliq(ntraciso,nloc),zxtice(ntraciso,nloc)
     1930      REAL zfice(nloc),zxtliq(ntraciso,nloc),zxtice(ntraciso,nloc)
    19201931!      real xt_reduit(ntraciso)
    1921 !      logical negation
     1932!      LOGICAL negation
    19221933!#ifdef ISOVERIF
    19231934!       integer iso_verif_positif_nostop
     
    19301941#ifdef ISO
    19311942#ifdef ISOVERIF
    1932       write(*,*) 'cv30_routines 1820: entree dans cv3_mixing'
    1933       if (iso_eau.gt.0) then
    1934       call iso_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)
    19371948      endif
    19381949#endif
     
    19651976
    19661977#ifdef ISO
    1967       do j=1,nd
    1968        do k=1,nd
    1969           do i=1,ncum
    1970             do ixt =1,ntraciso
     1978      DO j=1,nd
     1979       DO k=1,nd
     1980          DO i=1,ncum
     1981            DO ixt =1,ntraciso
    19711982             xtent(ixt,i,k,j)=xt(ixt,i,j)
    19721983             xtelij(ixt,i,k,j)=0.0
     
    19751986            ! valeurs en nd=nl+1 ne sont pas utilisees
    19761987            qent(i,k,j)=rr(i,j)
    1977             elij(i,k,j)=0.0   
     1988            elij(i,k,j)=0.0
    19781989         enddo !do i=1,ncum
    19791990       enddo !do k=1,nl
    1980       enddo   !do j=1,nl 
     1991      enddo   !do j=1,nl
    19811992#endif
    19821993
     
    20392050            ! !!!      traent(il,i,j,k)=sij(il,i,j)*tra(il,i,k)
    20402051            ! !!!     :      +(1.-sij(il,i,j))*tra(il,nk(il),k)
    2041             ! !!!      end do
     2052            ! !!!      END DO
    20422053            elij(il, i, j) = altem
    20432054            elij(il, i, j) = amax1(0.0, elij(il,i,j))
     
    20532064#ifdef ISO
    20542065#ifdef ISOVERIF
    2055         !write(*,*) 'cv30_routines tmp 2078'
    2056 #endif
    2057        do il=1,ncum
     2066        !WRITE(*,*) 'cv30_routines tmp 2078'
     2067#endif
     2068       DO il=1,ncum
    20582069         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)))then
    2062           do ixt=1,ntraciso
     2070         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
    20632074!           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)
    20652076          enddo
    2066           if(sij(il,i,j).gt.0.0.and.sij(il,i,j).lt.0.95)then   
     2077          IF(sij(il,i,j).gt.0.0.AND.sij(il,i,j).lt.0.95)THEN
    20672078! 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
    20702081!     :             - elij(il,i,j) - rs(il,j) )
    20712082!     :        / ( cpd*(bf2-1.0)/lv(il,j) )
    2072                    
    2073           do ixt = 1, ntraciso
     2083
     2084          DO ixt = 1, ntraciso
    20742085! total mixing ratio in the mixtures before precipitation:
    20752086           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)
    20772088          enddo !do ixt = 1, ntraciso
    2078          endif  !if(sij(il,i,j).gt.0.0.and.sij(il,i,j).lt.0.95)then 
    2079         endif !if( (i.ge.icb(il)).and.(i.le.inb(il)).and.
    2080        enddo  !do il=1,ncum 
    2081 
    2082        call condiso_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)
    20852096#ifdef ISOTRAC
    2086         call condiso_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         do il=1,ncum
    2091           call iso_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)))then
    2094           call iso_verif_traceur(xtrti(1,il),'cv30_routines 1968')
    2095           endif !if( (i.ge.icb(il)).and.(i.le.inb(il)).and.
    2096           call iso_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
    20982109        enddo !do il=1,ncum
    2099 #endif     
    2100 #endif     
    2101         do il=1,ncum
    2102          do ixt = 1, ntraciso
     2110#endif
     2111#endif
     2112        DO il=1,ncum
     2113         DO ixt = 1, ntraciso
    21032114          xtelij(ixt,il,i,j)=zxtice(ixt,il)+zxtliq(ixt,il)
    21042115         enddo !do ixt = 1, ntraciso
     
    21062117
    21072118#ifdef ISOVERIF
    2108         if ((j.eq.15).and.(i.eq.15)) then
     2119        IF ((j.EQ.15).AND.(i.EQ.15)) THEN
    21092120        il=2722
    2110         if (il.le.ncum) then
    2111                 write(*,*) 'cv30_routines tmp 2194, il,i,j=',il,i,j
    2112                 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)))
    21182129        endif
    21192130        endif
    21202131#endif
    21212132
    2122 #ifdef ISOTRAC   
    2123 !        write(*,*) 'cv30_routines tmp 1987,option_traceurs=',
     2133#ifdef ISOTRAC
     2134!        WRITE(*,*) 'cv30_routines tmp 1987,option_traceurs=',
    21242135!     :           option_traceurs
    2125         if (option_tmin.ge.1) then
    2126         do il=1,ncum   
    2127 !        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),',
    21282139!     :           'tcond(il),rs(il,j)=',
    21292140!     :            il,i,j,xtent(:,il,i,j),tcond(il),rs(il,j)
    21302141        ! colorier la vapeur residuelle selon temperature de
    21312142        ! 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)) then 
    2133             if (option_traceurs.eq.17) then       
    2134              call iso_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) then
    2139 !             write(*,*) 'cv3 2002: il,i,j  =',il,i,j   
    2140              call iso_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) then
    2144             do ixt=1+niso,ntraciso
     2143          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
    21452156               xtent(ixt,il,i,j)=xtres(ixt)
    2146             enddo     
    2147           endif !if (cond.gt.0.0) then
     2157            enddo
     2158          endif !if (cond.gt.0.0) THEN
    21482159        enddo !do il=1,ncum
    21492160#ifdef ISOVERIF
    2150         do il=1,ncum
    2151           call iso_verif_traceur(xtent(1,il,i,j),'cv30_routines 1996')
    2152           call iso_verif_traceur(xtelij(1,il,i,j),'cv30_routines 1997')
    2153           call iso_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) then       
     2161        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
    21582169#endif
    21592170
    21602171! fractionation:
    2161 #ifdef ISOVERIF 
    2162 !        write(*,*) 'cv30_routines 2050: avant condiso'
    2163         do il=1,ncum
    2164         if ((i.ge.icb(il)).and.(i.le.inb(il)).and. &
    2165      &      (j.ge.(icb(il)-1)).and.(j.le.inb(il))) then
    2166         if (sij(il,i,j).gt.0.0.and.sij(il,i,j).lt.0.95) then 
    2167         if (iso_eau.gt.0) then
    2168           call iso_verif_egalite_choix(xtent(iso_eau,il,i,j), &
    2169      &        qent(il,i,j),'cv30_routines 1889',errmax,errmaxrel)   
    2170           call iso_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)
    21722183        endif
    2173         if (iso_HDO.gt.0) then   
    2174           call iso_verif_aberrant_choix(xt(iso_HDO,il,i),rr(il,i), &
    2175      &            ridicule,deltalim,'cv30_routines 1997')         
    2176           call iso_verif_aberrant_choix( &
    2177      &            xtent(iso_HDO,il,i,j),qent(il,i,j), &
    2178      &            ridicule,deltalim,'cv30_routines 1931')
    2179           call iso_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) then
    2183 #ifdef ISOTRAC 
    2184 !        write(*,*) 'cv30_routines tmp 2039 il=',il
    2185            call iso_verif_traceur(xtent(1,il,i,j), &
    2186      &                   'cv30_routines 2031')
    2187            call iso_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)then 
    2192         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.
    21932204        enddo !do il=1,ncum
    21942205#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
    21982209#endif
    21992210
     
    22032214    ! do j=minorig,nl
    22042215    ! 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)))then
     2216    ! IF( (i.ge.icb(il)).AND.(i.le.inb(il)).AND.
     2217    ! :       (j.ge.(icb(il)-1)).AND.(j.le.inb(il)))THEN
    22072218    ! traent(il,i,j,k)=sij(il,i,j)*tra(il,i,k)
    22082219    ! :            +(1.-sij(il,i,j))*tra(il,nk(il),k)
    2209     ! endif
     2220    ! END IF
    22102221    ! enddo
    22112222    ! enddo
     
    22232234    DO il = 1, ncum
    22242235      IF ((i>=icb(il)) .AND. (i<=inb(il)) .AND. (nent(il,i)==0)) THEN
    2225         ! @      if(nent(il,i).eq.0)then
     2236        ! @      IF(nent(il,i).EQ.0)THEN
    22262237        ment(il, i, i) = m(il, i)
    22272238        qent(il, i, i) = rr(il, nk(il)) - ep(il, i)*clw(il, i)
     
    22322243        sij(il, i, i) = 0.0
    22332244#ifdef ISO
    2234       do ixt = 1, ntraciso
     2245      DO ixt = 1, ntraciso
    22352246       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)
    22372248        ! le 7 mai: on supprime xtep
    22382249        xtelij(ixt,il,i,i)=xtclw(ixt,il,i) ! rq: ne sera pas utilise ensuite
     
    22402251
    22412252#ifdef ISOVERIF
    2242        if (iso_eau.gt.0) then
    2243          call iso_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) then
    2246 #endif
    2247 
    2248 #ifdef ISOTRAC         
    2249         if (option_tmin.ge.1) then
     2253       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
    22502261        ! colorier la vapeur residuelle selon temperature de
    22512262        ! 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)=',
    22532264!     :            il,i,j,xtent(:,il,i,j)
    2254           if ((elij(il,i,i).gt.0.0).and.(qent(il,i,i).gt.0.0)) then
    2255             if (option_traceurs.eq.17) then
    2256              call iso_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) then
    2262              call iso_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) then
    2268             do ixt=1+niso,ntraciso
     2265          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
    22692280              xtent(ixt,il,i,i)=xtres(ixt)
    22702281            enddo
    2271 #ifdef ISOVERIF           
    2272             do ixt=1,niso
    2273             call iso_verif_egalite_choix(xtres(ixt),xtent(ixt,il,i,i), &
    2274      &           'cv30_routines 2102',errmax,errmaxrel)
    2275             call iso_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')
    22772288            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
    22882298#endif
    22892299
     
    22962306  ! do i=minorig+1,nl
    22972307  ! do il=1,ncum
    2298   ! if (i.ge.icb(il) .and. i.le.inb(il) .and. nent(il,i).eq.0) then
     2308  ! if (i.ge.icb(il) .AND. i.le.inb(il) .AND. nent(il,i).EQ.0) THEN
    22992309  ! traent(il,i,i,j)=tra(il,nk(il),j)
    2300   ! endif
     2310  ! END IF
    23012311  ! enddo
    23022312  ! enddo
     
    23222332  ! =====================================================================
    23232333
    2324   ! ym      call zilch(asum,ncum*nd)
    2325   ! ym      call zilch(bsum,ncum*nd)
    2326   ! ym      call zilch(csum,ncum*nd)
     2334  ! ym      CALL zilch(asum,ncum*nd)
     2335  ! ym      CALL zilch(bsum,ncum*nd)
     2336  ! ym      CALL zilch(csum,ncum*nd)
    23272337  CALL zilch(asum, nloc*nd)
    23282338  CALL zilch(csum, nloc*nd)
     
    24662476        sij(il, i, i) = 0.0
    24672477#ifdef ISO
    2468       do ixt = 1, ntraciso
     2478      DO ixt = 1, ntraciso
    24692479!      xtent(ixt,il,i,i)=xt(ixt,il,1)-xtep(ixt,il,i)*xtclw(ixt,il,i)
    24702480        xtent(ixt,il,i,i)=xt(ixt,il,1)-ep(il,i)*xtclw(ixt,il,i)
     
    24742484
    24752485#ifdef ISOVERIF
    2476       if (iso_eau.gt.0) then
    2477         call iso_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) then
    2480 #endif
    2481 
    2482 #ifdef ISOTRAC         
    2483         if (option_tmin.ge.1) then
     2486      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
    24842494        ! colorier la vapeur residuelle selon temperature de
    24852495        ! 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)=',
    24872497!     :            il,i,j,xtent(:,il,i,j)
    2488           if ((elij(il,i,i).gt.0.0).and.(qent(il,i,i).gt.0.0)) then
    2489             if (option_traceurs.eq.17) then         
    2490               call iso_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) then
    2496               call iso_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) then
    2502             do ixt=1+niso,ntraciso
     2498          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
    25032513              xtent(ixt,il,i,i)=xtres(ixt)
    2504             enddo 
    2505 #ifdef ISOVERIF               
    2506             do ixt=1,niso
    2507               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')
    25112514            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
    25212531#endif
    25222532      END IF
     
    25252535    ! do j=1,ntra
    25262536    ! 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) ) then
     2537    ! if ( i.ge.icb(il) .AND. i.le.inb(il) .AND. lwork(il)
     2538    ! :     .AND. csum(il,i).lt.m(il,i) ) THEN
    25292539    ! traent(il,i,i,j)=tra(il,nk(il),j)
    2530     ! endif
     2540    ! END IF
    25312541    ! enddo
    25322542    ! enddo
     
    25652575!c--debug
    25662576#ifdef ISOVERIF
    2567        do im = 1, nd
    2568        do jm = 1, nd
    2569         do il = 1, ncum
    2570           if (iso_eau.gt.0) then
    2571             call iso_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) then
     2577       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
    25762586#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
    25802590        enddo !do il = 1, nloc
    25812591       enddo !do jm = 1, klev
    25822592       enddo !do im = 1, klev
    25832593#endif
    2584 #endif 
     2594#endif
    25852595
    25862596#ifdef ISO
    25872597#ifdef ISOTRAC
    25882598        ! seulement a la fin on taggue le condensat
    2589         if (option_cond.ge.1) then
    2590          do im = 1, nd
    2591          do jm = 1, nd
    2592          do il = 1, ncum   
     2599        IF (option_cond.ge.1) THEN
     2600         DO im = 1, nd
     2601         DO jm = 1, nd
     2602         DO il = 1, ncum
    25932603           ! colorier le condensat en un tag specifique
    2594            do ixt=niso+1,ntraciso
    2595              if (index_zone(ixt).eq.izone_cond) then
     2604           DO ixt=niso+1,ntraciso
     2605             IF (index_zone(ixt).EQ.izone_cond) THEN
    25962606                xtelij(ixt,il,im,jm)=xtelij(index_iso(ixt),il,im,jm)
    2597              else !if (index_zone(ixt).eq.izone_cond) then
     2607             else !if (index_zone(ixt).EQ.izone_cond) THEN
    25982608                xtelij(ixt,il,im,jm)=0.0
    2599              endif !if (index_zone(ixt).eq.izone_cond) then
    2600            enddo !do ixt=1,ntraciso     
    2601 #ifdef ISOVERIF
    2602         call iso_verif_egalite_choix(xtelij(iso_eau,il,im,jm), &
    2603      &           elij(il,im,jm),'cv30_routines 2408',errmax,errmaxrel)
    2604         call iso_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
    26082618         enddo !do jm = 1, nd
    26092619         enddo !do im = 1, nd
    2610          do im = 1, nd
    2611          do il = 1, ncum   
     2620         DO im = 1, nd
     2621         DO il = 1, ncum
    26122622           ! colorier le condensat en un tag specifique
    2613            do ixt=niso+1,ntraciso
    2614              if (index_zone(ixt).eq.izone_cond) then
     2623           DO ixt=niso+1,ntraciso
     2624             IF (index_zone(ixt).EQ.izone_cond) THEN
    26152625                xtclw(ixt,il,im)=xtclw(index_iso(ixt),il,im)
    2616              else !if (index_zone(ixt).eq.izone_cond) then
     2626             else !if (index_zone(ixt).EQ.izone_cond) THEN
    26172627                xtclw(ixt,il,im)=0.0
    2618              endif !if (index_zone(ixt).eq.izone_cond) then
    2619            enddo !do ixt=1,ntraciso     
    2620 #ifdef ISOVERIF
    2621         call iso_verif_egalite_choix(xtclw(iso_eau,il,im), &
    2622      &           clw(il,im),'cv30_routines 2427',errmax,errmaxrel)
    2623         call iso_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) then
    2628                write(*,*) 'i,k=',i,k
    2629                write(*,*) 'xtclw=',xtclw(:,i,k)
    2630                write(*,*) 'niso,ntraciso,index_zone,izone_cond=', &
    2631      &             niso,ntraciso,index_zone,izone_cond       
     2628             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
    26322642               stop
    26332643         endif !if (iso_verif_positif_nostop(xtclw(itZonIso(
    2634 #endif             
    2635          enddo !do il = 1, ncum   
     2644#endif
     2645         enddo !do il = 1, ncum
    26362646         enddo !do im = 1, nd
    2637 !         write(*,*) 'xtclw(:,1,2)=',xtclw(:,1,2)
    2638         endif !if (option_tmin.eq.1) then
    2639 #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
    26432653END SUBROUTINE cv30_mixing
    26442654
     
    26492659    , wdtraina, wdtrainm & ! 26/08/10  RomP-jyg
    26502660#ifdef ISO
    2651      &              ,xt,xtclw,xtelij &
    2652      &              ,xtp,xtwater,xtevap,xtwdtraina &
    2653 #endif
    2654      &          )
    2655 #ifdef ISO
    2656     use infotrac_phy, ONLY: ntraciso=>ntiso, niso
    2657     use isotopes_mod, ONLY: essai_convergence, iso_eau,iso_HDO,ridicule
    2658     use isotopes_routines_mod, ONLY: appel_stewart_vectall,appel_stewart_debug
    2659 #ifdef ISOVERIF
    2660     use isotopes_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, &
    26612671        iso_verif_egalite_choix, iso_verif_noNaN,iso_verif_aberrant, &
    26622672        iso_verif_egalite,iso_verif_egalite_choix_nostop,iso_verif_positif_nostop, &
     
    26652675#endif
    26662676#ifdef ISOTRAC
    2667     use isotrac_mod, only: option_cond,izone_cond
    2668     use infotrac_phy, ONLY: itZonIso
    2669 #ifdef ISOVERIF
    2670     use isotopes_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, &
    26712681&       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
     2686USE cvflag_mod_h
     2687USE cvthermo_mod_h
     2688
    26812689  IMPLICIT NONE
    2682 
    2683 
    2684   include "cv30param.h"
    26852690
    26862691  ! inputs:
     
    26972702  REAL m(nloc, na), ment(nloc, na, na), elij(nloc, na, na)
    26982703#ifdef ISO
    2699       real xt(ntraciso,nloc,nd), xtclw(ntraciso,nloc,na)
    2700       real xtelij(ntraciso,nloc,na,na)
     2704      REAL xt(ntraciso,nloc,nd), xtclw(ntraciso,nloc,na)
     2705      REAL xtelij(ntraciso,nloc,na,na)
    27012706!      real xtep(ntraciso,nloc,na) ! le 7 mai: on supprime xtep
    27022707#endif
     
    27142719
    27152720#ifdef ISO
    2716       real xtp(ntraciso,nloc,na)
    2717       real xtwater(ntraciso,nloc,na), xtevap(ntraciso,nloc,na)
    2718       real xtwdtraina(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)
    27192724#endif
    27202725
     
    27312736
    27322737#ifdef ISO
    2733       integer ixt
    2734       real xtawat(ntraciso)
     2738      INTEGER ixt
     2739      REAL xtawat(ntraciso)
    27352740  REAL xtwdtrain(ntraciso,nloc)
    2736 !      logical negation
    2737       real rpprec(nloc,na)
     2741!      LOGICAL negation
     2742      REAL rpprec(nloc,na)
    27382743!#ifdef ISOVERIF
    27392744!      integer iso_verif_aberrant_nostop
    2740 !#ifdef ISOTRAC     
     2745!#ifdef ISOTRAC
    27412746!      integer iso_verif_traceur_choix_nostop
    27422747!      integer iso_verif_positif_nostop
    2743 !#endif     
    2744 !#endif 
     2748!#endif
     2749!#endif
    27452750#endif
    27462751
     
    27482753  ! ------------------------------------------------------
    27492754!#ifdef ISOVERIF
    2750 !        write(*,*) 'cv30_routines 2382: entree dans cv3_unsat'
     2755!        WRITE(*,*) 'cv30_routines 2382: entree dans cv3_unsat'
    27512756!#endif
    27522757
     
    27772782#ifdef ISO
    27782783          rpprec(il,i)=rp(il,i)
    2779           do ixt=1,ntraciso
     2784          DO ixt=1,ntraciso
    27802785           xtp(ixt,il,i)=xt(ixt,il,i)
    27812786           xtwater(ixt,il,i)=0.0
     
    27842789!-- debug
    27852790#ifdef ISOVERIF
    2786             if(iso_eau.gt.0) then
    2787               call iso_verif_egalite_choix(xt(iso_eau,il,i),rr(il,i), &
    2788      &                  'cv30_unsat 2245 ',errmax,errmaxrel)
    2789              call iso_verif_egalite_choix(xtp(iso_eau,il,i),rp(il,i), &
    2790      &                   'cv30_unsat 2247 ',errmax,errmaxrel)
    2791             endif !if(iso_eau.gt.0) then
     2791            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
    27922797#ifdef ISOTRAC
    2793         call iso_verif_traceur(xt(1,il,i),'cv30_routine 2410')
    2794         call iso_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
    27962801#endif
    27972802#endif
     
    28072812  ! enddo
    28082813  ! enddo
    2809   ! ! RomP >>>
     2814  ! RomP >>>
    28102815  DO i = 1, nd
    28112816    DO il = 1, ncum
     
    28142819    END DO
    28152820  END DO
    2816   ! ! RomP <<<
     2821  ! RomP <<<
    28172822
    28182823  ! ***  check whether ep(inb)=0, if so, skip precipitating    ***
     
    28272832  CALL zilch(wdtrain, ncum)
    28282833#ifdef ISO
    2829         call zilch(xtwdtrain,ncum*ntraciso)
     2834        CALL zilch(xtwdtrain,ncum*ntraciso)
    28302835#endif
    28312836
     
    28562861          wdtraina(il, i) = wdtrain(il)/grav !   Pa  26/08/10   RomP
    28572862#ifdef ISO
    2858           do ixt=1,ntraciso
     2863          DO ixt=1,ntraciso
    28592864!           xtwdtrain(ixt,il)=grav*xtep(ixt,il,i)*m(il,i)*xtclw(ixt,il,i)
    28602865           xtwdtrain(ixt,il)=grav*ep(il,i)*m(il,i)*xtclw(ixt,il,i)
     
    28622867!--debug:
    28632868#ifdef ISOVERIF
    2864             if (iso_eau.gt.0) then
    2865               call iso_verif_egalite_choix(xtwdtrain(iso_eau,il), &
    2866      &           wdtrain(il),'cv30_routines 2313',errmax,errmaxrel)
    2867              endif !if (iso_eau.gt.0) then
     2869            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
    28682873#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
    28712876#endif
    28722877!--end debug
     
    28772882          wdtraina(il, i) = wdtrain(il)/10. !   Pa  26/08/10   RomP
    28782883#ifdef ISO
    2879           do ixt=1,ntraciso
     2884          DO ixt=1,ntraciso
    28802885!           xtwdtrain(ixt,il)=10.0*xtep(ixt,il,i)*m(il,i)*xtclw(ixt,il,i)
    28812886            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.
    28832888          enddo
    28842889#endif
     
    28952900            awat = amax1(awat, 0.0)
    28962901#ifdef ISO
    2897 ! precip mixed drafts computed from: xtawat/xtelij = awat/elij           
    2898             if (elij(il,j,i).ne.0.0) then
    2899              do ixt=1,ntraciso
     2902! precip mixed drafts computed from: xtawat/xtelij = awat/elij
     2903            IF (elij(il,j,i).NE.0.0) THEN
     2904             DO ixt=1,ntraciso
    29002905               xtawat(ixt)=xtelij(ixt,il,j,i)*(awat/elij(il,j,i))
    29012906               xtawat(ixt)=amax1(xtawat(ixt),0.0)
     
    29032908!!             xtawat(ixt)=amin1(xtawat(ixt),xtelij(ixt,il,j,i)) !security..
    29042909            else
    2905              do ixt=1,ntraciso
     2910             DO ixt=1,ntraciso
    29062911               xtawat(ixt)=0.0
    29072912             enddo !do ixt=1,niso
    2908             endif                                   
    2909 
    2910 #ifdef ISOVERIF
    2911               if (iso_eau.gt.0) then
    2912                   call iso_verif_egalite_choix(xtawat(iso_eau), &
    2913      &           awat,'cv30_routines 2391',errmax,errmaxrel)
    2914               endif !if (iso_eau.gt.0) then
     2913            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
    29152920#ifdef ISOTRAC
    2916         call iso_verif_traceur(xtawat(1),'cv30_routine 2522')
    2917 #endif               
     2921        CALL iso_verif_traceur(xtawat(1),'cv30_routine 2522')
     2922#endif
    29182923#endif
    29192924#endif
     
    29212926              wdtrain(il) = wdtrain(il) + grav*awat*ment(il, j, i)
    29222927#ifdef ISO
    2923            do ixt=1,ntraciso
     2928           DO ixt=1,ntraciso
    29242929             xtwdtrain(ixt,il)=xtwdtrain(ixt,il) &
    2925      &                         +grav*xtawat(ixt)*ment(il,j,i)
     2930                               +grav*xtawat(ixt)*ment(il,j,i)
    29262931           enddo !do ixt=1,ntraciso
    29272932#endif
    29282933            ELSE
    29292934              wdtrain(il) = wdtrain(il) + 10.0*awat*ment(il, j, i)
    2930 #ifdef ISO           
    2931            do ixt=1,ntraciso
     2935#ifdef ISO
     2936           DO ixt=1,ntraciso
    29322937             xtwdtrain(ixt,il)=xtwdtrain(ixt,il) &
    2933      &                         +10.0*xtawat(ixt)*ment(il,j,i)
     2938                               +10.0*xtawat(ixt)*ment(il,j,i)
    29342939           enddo !!do ixt=1,ntraciso
    29352940#endif
    2936             END IF !if (cvflag_grav) then
     2941            END IF !if (cvflag_grav) THEN
    29372942#ifdef ISO
    29382943!--debug:
    29392944#ifdef ISOVERIF
    2940               if (iso_eau.gt.0) then
    2941                   call iso_verif_egalite_choix(xtwdtrain(iso_eau,il), &
    2942      &           wdtrain(il),'cv30_routines 2366',errmax,errmaxrel)
    2943               endif !if (iso_eau.gt.0) then
     2945              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
    29442949#ifdef ISOTRAC
    2945         call iso_verif_traceur(xtwdtrain(1,il),'cv30_routine 2540')
    2946         if (option_cond.ge.1) then
     2950        CALL iso_verif_traceur(xtwdtrain(1,il),'cv30_routine 2540')
     2951        IF (option_cond.ge.1) THEN
    29472952           ! 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) then
    2952           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)
    29552960          stop
    29562961          endif !if (iso_verif_positif_nostop(Pxtisup(iso_eau,il)-
    2957         endif !if (option_cond.ge.1) then
    2958 #endif             
     2962        endif !if (option_cond.ge.1) THEN
     2963#endif
    29592964#endif
    29602965#endif
     
    30133018        ! jyg1
    30143019        ! cc        sigt=1.0
    3015         ! cc        if(i.ge.icb)sigt=sigp(i)
     3020        ! cc        IF(i.ge.icb)sigt=sigp(i)
    30163021        ! prise en compte de la variation progressive de sigt dans
    30173022        ! les couches icb et icb-1:
     
    30443049!      water(il,i)=max(0.0,water(il,i)) ! ceci est toujours verifie
    30453050#ifdef ISOVERIF
    3046           call iso_verif_positif(water(il,i),'cv30_unsat 2376')
     3051          CALL iso_verif_positif(water(il,i),'cv30_unsat 2376')
    30473052#endif
    30483053!      evap(il,i)=max(0.0,evap(il,i)) ! evap<0 permet la conservation de
     
    31313136          END IF
    31323137
    3133         END IF ! i.eq.1
     3138        END IF ! i.EQ.1
    31343139
    31353140        ! ***       find mixing ratio of precipitating downdraft     ***
     
    31643169            ! :            +tra(il,i,j)*(mp(il,i)-mp(il,i+1))
    31653170            ! trap(il,i,j)=trap(il,i,j)/mp(il,i)
    3166             ! end do
     3171            ! END DO
    31673172
    31683173          ELSE
     
    31813186              ! do j=1,ntra
    31823187              ! trap(il,i,j)=trap(il,i+1,j)
    3183               ! end do
     3188              ! END DO
    31843189
    31853190            END IF
    31863191          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)
    31893194#endif
    31903195          rp(il, i) = amin1(rp(il,i), rs(il,i))
     
    31993204#ifdef ISOVERIF
    32003205! verif des inputs a appel stewart
    3201 !        write(*,*) 'cv30_routines 2842 tmp: appel de appel_stewart'
    3202       do il=1,ncum
    3203        if (i.le.inb(il) .and. lwork(il)) then
    3204          if (iso_eau.gt.0) then
    3205             call iso_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) then
     3206!        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
    32083213!#ifdef ISOTRAC
    3209 !        if (option_tmin.ge.1) then
    3210 !           call iso_verif_positif(xtwater(
     3214!        if (option_tmin.ge.1) THEN
     3215!           CALL iso_verif_positif(xtwater(
    32113216!     :           itZonIso(izone_cond,iso_eau),il,i+1)
    32123217!     :           -xtwater(iso_eau,il,i+1),
    32133218!     :          'cv30_routines 3083')
    3214 !        endif !if (option_tmin.ge.1) then
     3219!        endif !if (option_tmin.ge.1) THEN
    32153220!#endif
    32163221        endif
     
    32183223#endif
    32193224
    3220         if (1.eq.0) then
     3225        IF (1.EQ.0) THEN
    32213226        ! appel de appel_stewart_vectorise
    3222         call appel_stewart_vectall(lwork,ncum, &
    3223      &                   ph,t,evap,xtwdtrain, &
    3224      &                   wdtrain, &
    3225      &            water,rr,xt,rs,rpprec,mp,wt, & ! inputs physiques
    3226      &            xtwater,xtp, &   ! outputs indispensables
    3227      &           xtevap, &    ! diagnostiques
    3228      &          sigd, & ! inputs tunables
    3229      &          i,inb, & ! altitude: car cas particulier en INB
    3230      &          na,nd,nloc,cvflag_grav,ginv,1e-16)
    3231 
    3232         else !if (1.eq.0) then
     3227        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
    32333238          ! truc simple sans fractionnement
    32343239          ! juste pour debuggage
    3235           call appel_stewart_debug(lwork,nloc,inb,na,i, &
     3240          CALL appel_stewart_debug(lwork,nloc,inb,na,i, &
    32363241                evap,water,rpprec,rr,wdtrain, &
    32373242                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'
    32433246! verif des outputs de appel stewart
    3244        do il=1,ncum
    3245         if (i.le.inb(il) .and. lwork(il)) then
    3246          do ixt=1,ntraciso       
    3247           call iso_verif_noNAN(xtp(ixt,il,i),'cv30_unsat 3382')
    3248           call iso_verif_noNAN(xtwater(ixt,il,i),'cv30_unsat 3381')
    3249           call iso_verif_noNAN(xtevap(ixt,il,i),'cv30_unsat 2661')
    3250          enddo 
    3251          if (iso_eau.gt.0) then
    3252           call iso_verif_egalite_choix(xtp(iso_eau,il,i), &
    3253      &           rpprec(il,i),'cv30_unsat 2736',errmax,errmaxrel) 
    3254           call iso_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           call iso_verif_egalite_choix(xtevap(iso_eau,il,i), &
    3259      &           evap(il,i),'cv30_unsat 2751',errmax,errmaxrel)
    3260          endif !if (iso_eau.gt.0) then
    3261          if ((iso_HDO.gt.0).and. &
    3262      &           (rp(il,i).gt.ridicule)) then
    3263            call iso_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.
    32663269#ifdef ISOTRAC
    3267 !        if (il.eq.602) then
    3268 !        write(*,*) 'cv30_routine tmp: il,i=',il,i
    3269 !        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)=',
    32703273!     :          xtp(iso_eau:ntraciso:3,il,i)
    32713274!        endif
    3272         call iso_verif_traceur(xtp(1,il,i),'cv30_routine 2852')
    3273         call iso_verif_traceur(xtwater(1,il,1), &
    3274      &       'cv30_routine 2853 unsat apres appel')
    3275         call iso_verif_traceur_pbidouille(xtwater(1,il,i), &
    3276      &           'cv30_routine 2853b')
    3277         call iso_verif_traceur_justmass(xtevap(1,il,i), &
    3278      &                    'cv30_routine 2854')
    3279 !        if (option_tmin.ge.1) then
    3280 !         call iso_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(
    32813284!     :           itZonIso(izone_cond,iso_eau),il,i)
    32823285!     :           -xtwater(iso_eau,il,i),
    32833286!     :          'cv30_routines 3143')
    3284 !        endif !if (option_tmin.ge.1) then
    3285 #endif             
    3286         endif !if (i.le.inb(il) .and. lwork(il)) then       
     3287!        endif !if (option_tmin.ge.1) THEN
     3288#endif
     3289        endif !if (i.le.inb(il) .AND. lwork(il)) THEN
    32873290       enddo !do il=1,ncum
    32883291#endif
    3289        
     3292
    32903293! 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'
    32973299                stop
    32983300            endif
    3299             do ixt=1,ntraciso
     3301            DO ixt=1,ntraciso
    33003302              xtp(ixt,il,i)=xtp(ixt,il,i)/rpprec(il,i)*rs(il,i)
    33013303              xtp(ixt,il,i)=max(0.0,xtp(ixt,il,i))
    3302             enddo !do ixt=1,niso 
    3303 #ifdef ISOVERIF
    3304            do ixt=1,ntraciso       
    3305            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')
    33063308           enddo !do ixt=1,niso
    3307            if (iso_eau.gt.0) then
    3308 !             write(*,*) 'xtp(iso_eau,il,i)=',xtp(iso_eau,il,i) 
    3309              call iso_verif_egalite_choix(xtp(iso_eau,il,i),rp(il,i), &
    3310      &                  'cv3unsat 2653',errmax,errmaxrel)
    3311              call iso_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)) then
    3316              if (iso_verif_aberrant_nostop(xtp(iso_HDO,il,i)/rp(il,i), &
    3317      &                  'cv3unsat 2658').eq.1) then
    3318                 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)
    33203322                stop
    33213323             endif
    33223324           endif
    33233325#ifdef ISOTRAC
    3324         call iso_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)) then           
     3326        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
    33293331         endif !if (i.lt.INB et lwork)
    33303332        enddo ! il=1,ncum
     
    33353337
    33363338! fin de la boucle en i (altitude)
    3337 #ifdef ISO   
    3338       write(*,*) 'nl=',nl,'nd=',nd,'; ncum=',ncum 
    3339 #ifdef ISOVERIF
    3340       do i=1,nl !nl
    3341         do il=1,ncum
    3342         if (iso_eau.gt.0) then
    3343 !            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)=',
    33443346!     :           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             call iso_verif_egalite_choix(xt(iso_eau,il,i), &
    3348      &           rr(il,i),'cv30_unsat 2668',errmax,errmaxrel)
    3349             call iso_verif_egalite_choix(xtp(iso_eau,il,i), &
    3350      &           rp(il,i),'cv30_unsat 2670',errmax,errmaxrel)
    3351            call iso_verif_egalite_choix(xtwater(iso_eau,il,i), &
    3352      &           water(il,i),'cv30_unsat 2672',errmax,errmaxrel)
    3353         endif !if (iso_eau.gt.0) then
     3347!            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
    33543356!#ifdef ISOTRAC
    33553357!        if (iso_verif_traceur_choix_nostop(xtwater(1,il,i),
    33563358!     :       'cv30_routine 2982 unsat',errmax,
    3357 !     :       errmaxrel,ridicule_trac,deltalimtrac).eq.1) then
    3358 !              write(*,*) 'il,i,inb(il),lwork(il)=',
     3359!     :       errmaxrel,ridicule_trac,deltalimtrac).EQ.1) THEN
     3360!              WRITE(*,*) 'il,i,inb(il),lwork(il)=',
    33593361!     :           il,i,inb(il),lwork(il)
    3360 !              write(*,*) 'xtwater(:,il,i)=',xtwater(:,il,i)
     3362!              WRITE(*,*) 'xtwater(:,il,i)=',xtwater(:,il,i)
    33613363!              stop
    33623364!        endif
    3363 !#endif       
     3365!#endif
    33643366        enddo !do il=1,nloc!ncum
    33653367      enddo !do i=1,nl!nl
    33663368      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)=' &
    33693371               ,il,water(il,i),xtwater(iso_eau,il,i)
    33703372#endif
    33713373#endif
    3372   RETURN
     3374
    33733375END SUBROUTINE cv30_unsat
    33743376
     
    33793381    mike, tls, tps, qcondc, wd &
    33803382#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 &
    33833385#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, &
    33953398        iso_verif_egalite_choix, iso_verif_noNaN,iso_verif_aberrant, &
    33963399        iso_verif_egalite,iso_verif_egalite_choix_nostop,iso_verif_positif_nostop, &
     
    34013404#endif
    34023405#ifdef ISOTRAC
    3403         use isotrac_mod, only: option_traceurs, &
     3406        USE isotrac_mod, ONLY: option_traceurs, &
    34043407        izone_revap,izone_poubelle,izone_ddft
    34053408#ifdef ISOVERIF
    3406     use isotopes_verif_mod, ONLY: iso_verif_traceur_choix_nostop,deltalimtrac, &
     3409    USE isotopes_verif_mod, ONLY: iso_verif_traceur_choix_nostop,deltalimtrac, &
    34073410&       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
     3415USE cvflag_mod_h
     3416USE cvthermo_mod_h
     3417
    34173418  IMPLICIT NONE
    3418 
    3419   include "cv30param.h"
    3420   include "conema3.h"
    3421 
    34223419  ! inputs:
    34233420  INTEGER ncum, nd, na, ntra, nloc
     
    34393436  REAL tv(nloc, nd), tvp(nloc, nd)
    34403437#ifdef ISO
    3441       real xt(ntraciso,nloc,nd)
     3438      REAL xt(ntraciso,nloc,nd)
    34423439!      real xtep(ntraciso,nloc,na) ! le 7 mai: on supprime xtep
    3443       real xtclw(ntraciso,nloc,na), xtp(ntraciso,nloc,na)
    3444       real xtwater(ntraciso,nloc,na), xtevap(ntraciso,nloc,na)
    3445       real xtent(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
    34473444      CHARACTER (LEN=20) :: modname='cv30_compress'
    34483445      CHARACTER (LEN=80) :: abort_message
     
    34643461  REAL wd(nloc) ! gust
    34653462#ifdef ISO
    3466       real xtprecip(ntraciso,nloc), fxt(ntraciso,nloc,nd)
    3467       real xtVprecip(ntraciso,nloc,nd+1)
     3463      REAL xtprecip(ntraciso,nloc), fxt(ntraciso,nloc,nd)
     3464      REAL xtVprecip(ntraciso,nloc,nd+1)
    34683465#endif
    34693466
     
    34813478  REAL siga(nloc, nd), sax(nloc, nd), mac(nloc, nd) ! cld
    34823479#ifdef ISO
    3483       integer ixt
    3484       real xtbx(ntraciso), xtawat(ntraciso)
     3480      INTEGER ixt
     3481      REAL xtbx(ntraciso), xtawat(ntraciso)
    34853482      ! cam debug
    34863483      ! pour l'homogeneisation sous le nuage:
    3487       real frsum(nloc), bxtsum(ntraciso,nloc), fxtsum(ntraciso,nloc)
     3484      REAL frsum(nloc), bxtsum(ntraciso,nloc), fxtsum(ntraciso,nloc)
    34883485      ! correction dans calcul tendance liee a Am:
    3489       real dq_tmp,k_tmp,dx_tmp,R_tmp,dqreste_tmp,dxreste_tmp,kad_tmp
    3490       logical correction_excess_aberrant
    3491       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.)
    34923489        ! correction qui permettait d'eviter deltas et dexcess aberrants. Mais
    34933490        ! pb: ne conserve pas la masse d'isotopes!
    34943491#ifdef DIAGISO
    34953492        ! diagnostiques juste: tendance des differents processus
    3496       real fxt_detrainement(ntraciso,nloc,nd)
    3497       real fxt_fluxmasse(ntraciso,nloc,nd)
    3498       real fxt_evapprecip(ntraciso,nloc,nd)
    3499       real fxt_ddft(ntraciso,nloc,nd)
    3500       real fq_detrainement(nloc,nd)
    3501       real q_detrainement(nloc,nd)
    3502       real xt_detrainement(ntraciso,nloc,nd)
    3503       real f_detrainement(nloc,nd)
    3504       real fq_fluxmasse(nloc,nd)
    3505       real fq_evapprecip(nloc,nd)
    3506       real fq_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
    35083505!#ifdef ISOVERIF
    35093506!      integer iso_verif_aberrant_nostop
    35103507!      real deltaD
    3511 !#endif     
    3512 #ifdef ISOTRAC     
     3508!#endif
     3509#ifdef ISOTRAC
    35133510!      integer iso_verif_traceur_choix_nostop
    35143511!      integer iso_verif_tracpos_choix_nostop
    3515       real xtnew(ntraciso)
     3512      REAL xtnew(ntraciso)
    35163513!      real conversion(niso)
    3517       real fxtYe(niso)
    3518       real fxtqe(niso)
    3519       real fxtXe(niso)
    3520       real fxt_revap(niso)
    3521       real Xe(niso)
    3522       integer ixt_revap,izone
    3523       integer ixt_poubelle, ixt_ddft,iiso
     3514      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
    35243521#endif
    35253522#endif
     
    35383535#ifdef ISO
    35393536       ! cam debug
    3540 !       write(*,*) 'cv30_routines 3082: entree dans cv3_yield'
     3537!       WRITE(*,*) 'cv30_routines 3082: entree dans cv3_yield'
    35413538       ! en cam debug
    3542        do ixt = 1, ntraciso
     3539       DO ixt = 1, ntraciso
    35433540        xtprecip(ixt,il)=0.0
    35443541        xtVprecip(ixt,il,nd+1)=0.0
     
    35583555      nqcond(il, i) = 0.0 ! cld
    35593556#ifdef ISO
    3560          do ixt = 1, ntraciso
     3557         DO ixt = 1, ntraciso
    35613558          fxt(ixt,il,i)=0.0
    35623559          xtVprecip(ixt,il,i)=0.0
     
    35693566        fq_evapprecip(il,i)=0.0
    35703567        fq_ddft(il,i)=0.0
    3571         do ixt = 1, niso
     3568        DO ixt = 1, niso
    35723569          fxt_fluxmasse(ixt,il,i)=0.0
    35733570          fxt_detrainement(ixt,il,i)=0.0
     
    35753572          fxt_evapprecip(ixt,il,i)=0.0
    35763573          fxt_ddft(ixt,il,i)=0.0
    3577         enddo 
    3578 #endif                     
     3574        enddo
     3575#endif
    35793576#endif
    35803577    END DO
     
    36053602
    36063603#ifdef ISO
    3607          do ixt = 1, ntraciso
     3604         DO ixt = 1, ntraciso
    36083605          xtprecip(ixt,il)=wt(il,1)*sigd*xtwater(ixt,il,1) &
    3609      &                      *86400.*1000./(rowl*grav) ! en mm/jour
     3606                            *86400.*1000./(rowl*grav) ! en mm/jour
    36103607         enddo
    36113608         ! cam verif
    36123609#ifdef ISOVERIF
    3613           if (iso_eau.gt.0) then
    3614 !              write(*,*) 'cv30_yield 2952: '//
     3610          IF (iso_eau.gt.0) THEN
     3611!              WRITE(*,*) 'cv30_yield 2952: '//
    36153612!     :           'il,water(il,1),xtwater(iso_eau,il,1)='
    36163613!     :           ,il,water(il,1),xtwater(iso_eau,il,1)
    3617               call iso_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)
    36203617                !Rq: wt(il,1)*sigd*86400.*1000./(rowl*grav)=3964.6565
    36213618                ! -> on auatorise 3e3 fois plus d'erreur dans precip
    3622               call iso_verif_egalite_choix(xtprecip(iso_eau,il), &
    3623      &           precip(il),'cv30_routines 3138', &
    3624      &           errmax*4e3,errmaxrel)
    3625           endif !if (iso_eau.gt.0) then
     3619              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
    36263623#ifdef ISOTRAC
    3627         call iso_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) then
    3632           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)
    36363633          stop
    36373634        endif
    3638 #endif           
     3635#endif
    36393636#endif
    36403637          ! end cam verif
     
    36433640        precip(il) = wt(il, 1)*sigd*water(il, 1)*8640.
    36443641#ifdef ISO
    3645          do ixt = 1, ntraciso
     3642         DO ixt = 1, ntraciso
    36463643          xtprecip(ixt,il)=wt(il,1)*sigd*xtwater(ixt,il,1)*8640.
    36473644         enddo
    36483645         ! cam verif
    3649 #ifdef ISOVERIF         
    3650           if (iso_eau.gt.0) then
    3651               call iso_verif_egalite_choix(xtprecip(iso_eau,il), &
    3652      &           precip(il),'cv30_routines 3139', &
    3653      &           errmax,errmaxrel)
    3654           endif !if (iso_eau.gt.0) then
     3646#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
    36553652#ifdef ISOTRAC
    3656         call iso_verif_traceur(xtprecip(1,il),'cv30_routine 3166')
    3657 #endif         
     3653        CALL iso_verif_traceur(xtprecip(1,il),'cv30_routine 3166')
     3654#endif
    36583655#endif
    36593656         ! end cam verif
     
    36723669          vprecip(il, k) = wt(il, k)*sigd*water(il, k)/grav
    36733670#ifdef ISO
    3674              do ixt=1,ntraciso
     3671             DO ixt=1,ntraciso
    36753672               xtVPrecip(ixt,il,k) = wt(il,k)*sigd &
    3676      &          *xtwater(ixt,il,k)/grav
     3673                *xtwater(ixt,il,k)/grav
    36773674             enddo
    36783675#endif
     
    36803677          vprecip(il, k) = wt(il, k)*sigd*water(il, k)/10.
    36813678#ifdef ISO
    3682              do ixt=1,ntraciso
     3679             DO ixt=1,ntraciso
    36833680               xtVPrecip(ixt,il,k) = wt(il,k)*sigd &
    3684      &          *xtwater(ixt,il,k)/10.0
     3681                *xtwater(ixt,il,k)/10.0
    36853682             enddo
    36863683#endif
     
    36943691  ! ***  NE PAS UTILISER POUR L'INSTANT ***
    36953692
    3696   ! !      do il=1,ncum
    3697   ! !        wd(il)=betad*abs(mp(il,icb(il)))*0.01*rrd*t(il,icb(il))
    3698   ! !     :                                  /(sigd*p(il,icb(il)))
    3699   ! !      enddo
     3693  !      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
    37003697
    37013698
     
    37523749      fr(il, 1) = fr(il, 1) + 0.01*grav*am(il)*(rr(il,2)-rr(il,1))*work(il)
    37533750
    3754 #ifdef ISO   
     3751#ifdef ISO
    37553752        ! juste Mp et evap pour l'instant, voir plus bas pour am
    3756        do ixt = 1, ntraciso
     3753       DO ixt = 1, ntraciso
    37573754        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)
    37613758       enddo !do ixt = 1, ntraciso       ! pour water tagging option 6: pas besoin ici de faire de conversion.
    37623759
    37633760#ifdef DIAGISO
    37643761        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)
    37663763        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))
    37683765        fq_fluxmasse(il,1)=fq_fluxmasse(il,1) &
    3769      &           +0.01*grav*am(il)*(rr(il,2)-rr(il,1))*work(il)
    3770         do ixt = 1, ntraciso
     3766                 +0.01*grav*am(il)*(rr(il,2)-rr(il,1))*work(il)
     3767        DO ixt = 1, ntraciso
    37713768!        fxt_fluxmasse(ixt,il,1)=fxt_fluxmasse(ixt,il,1) &
    37723769!     &      +0.01*grav*am(il)*(xt(ixt,il,2)-xt(ixt,il,1))*work(il) ! deplace
    37733770!     plus haut car il existe differents cas
    37743771        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)
    37763773        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))
    37783775        enddo
    3779 #endif     
     3776#endif
    37803777
    37813778
     
    37873784        ! Mais on plante dans un cas pathologique en decembre 2017 lors du test
    37883785        ! 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!
    37903787        ! q2=1.01e-3 et q1=1.25e-3 kg/kg
    37913788        ! et dq=-1.24e-3: comment est-ce possible qu'un flux venant d'un air a
     
    37973794        ! sortant.
    37983795        ! 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.
    38003797        ! A la fin, on a R=(x1+dx)/(q1+dq)=(x1+k*x2)/(q1+k*q2)
    38013798        ! On verifie que quand k est petit, on tend vers la formulation
     
    38103807        ! calcule R_tmp.
    38113808        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) then
     3809        IF ((dq_tmp/rr(il,1).lt.-0.9).AND.correction_excess_aberrant) THEN
    38133810                ! nouvelle formulation ou on fait d'abord entrer k*q2 et ensuite
    38143811                ! seulement on fait sortir k*q1 sans changement de composition
     
    38163813             k_tmp=0.01*grav*am(il)*work(il)*delt
    38173814             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))*delt
    3819              do ixt = 1, ntraciso
     3815                         sigd*0.5*(evap(il,1)+evap(il,2))*delt
     3816             DO ixt = 1, ntraciso
    38203817                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))*delt
     3818                        +sigd*0.5*(xtevap(ixt,il,1)+xtevap(ixt,il,2))*delt
    38223819                R_tmp=(xt(ixt,il,1)+dxreste_tmp+k_tmp*xt(ixt,il,2))/(rr(il,1)+dqreste_tmp+k_tmp*rr(il,2))
    38233820                dx_tmp=R_tmp*(rr(il,1)+dqreste_tmp+dq_tmp)-(xt(ixt,il,1)+dxreste_tmp)
    38243821                fxt(ixt,il,1)=fxt(ixt,il,1) &
    3825      &                 + dx_tmp/delt
    3826 #ifdef ISOVERIF
    3827                 if (ixt.eq.iso_HDO) then
    3828                 write(*,*) 'cv30_routines 3888: il=',il
    3829                 write(*,*) 'dq_tmp,rr(il,1)=',dq_tmp,rr(il,1)
    3830                 write(*,*) 'R_tmp,dx_tmp,delt=',R_tmp,dx_tmp,delt
    3831                 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/delt
    3834                 write(*,*) 'rr(il,1)+dq_tmp=',rr(il,1)+dq_tmp
    3835                 write(*,*) 'xt(ixt,il,1)+dx_tmp=',xt(ixt,il,1)+dx_tmp
    3836                 write(*,*) 'xt(ixt,il,1)+fxt(ixt,il,1)*delt=', &
    3837      &                   xt(ixt,il,1)+fxt(ixt,il,1)*delt
    3838                 write(*,*) 'dqreste_tmp,dxreste_tmp=',dqreste_tmp,dxreste_tmp
    3839                 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)*delt
    3841                 endif !if (ixt.eq.iso_HDO) then
     3822                       + 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
    38423839#endif
    38433840#ifdef DIAGISO
    3844                 if (ixt.le.niso) then
     3841                IF (ixt.le.niso) THEN
    38453842                        fxt_fluxmasse(ixt,il,1)=fxt_fluxmasse(ixt,il,1) &
    3846      &                 + dx_tmp/delt
     3843                       + dx_tmp/delt
    38473844                endif
    38483845#endif
    38493846           enddo ! do ixt = 1, ntraciso
    3850         else !if (dq_tmp/rr(il,1).lt.-0.9) then
     3847        else !if (dq_tmp/rr(il,1).lt.-0.9) THEN
    38513848                ! formulation habituelle qui avait toujours marche de 2006 a
    38523849                ! decembre 2017.
    3853            do ixt = 1, ntraciso     
     3850           DO ixt = 1, ntraciso
    38543851                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)
    38563853#ifdef DIAGISO
    3857                 if (ixt.le.niso) then
     3854                IF (ixt.le.niso) THEN
    38583855                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)
    38603857                endif
    38613858#endif
    38623859           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
    38653861       ! cam verif
    38663862#ifdef ISOVERIF
    3867           if (iso_eau.gt.0) then
    3868               call iso_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) then
    3872           !write(*,*) 'il,am(il)=',il,am(il)
    3873           if ((iso_HDO.gt.0).and. &
    3874      &           (rr(il,1)+delt*fr(il,1).gt.ridicule)) then
    3875             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) then
    3878                 write(*,*) 'il,rr(il,1),delt=',il,rr(il,1),delt
    3879                 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_tmp
    3891                 call abort_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)
    38923888            endif ! iso_verif_aberrant_enc_nostop
    3893           endif !if (iso_HDO.gt.0) then
     3889          endif !if (iso_HDO.gt.0) THEN
    38943890#ifdef ISOTRAC
    3895         call iso_verif_traceur_justmass(fxt(1,il,1),'cv30_routine 3417')
    3896         do ixt=1,ntraciso
     3891        CALL iso_verif_traceur_justmass(fxt(1,il,1),'cv30_routine 3417')
     3892        DO ixt=1,ntraciso
    38973893          xtnew(ixt)=xt(ixt,il,1)+delt*fxt(ixt,il,1)
    38983894        enddo
    3899         if (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3395',1e-5) &
    3900      &           .eq.1) then
    3901               write(*,*) 'il=',il 
    3902               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)
    39043900#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.5
    3915 #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
    39163912!              stop
    39173913        endif
    3918 #endif           
     3914#endif
    39193915#endif
    39203916       ! end cam verif
     
    39323928
    39333929#ifdef ISO
    3934        do ixt = 1, ntraciso
     3930       DO ixt = 1, ntraciso
    39353931       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))
    39373933       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)
    39393935       enddo
    39403936
    39413937#ifdef DIAGISO
    39423938       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)
    39443940       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))
    39463942       fq_fluxmasse(il,1)=fq_fluxmasse(il,1) &
    3947      &           +0.1*am(il)*(rr(il,2)-rr(il,1))*work(il)
    3948        do ixt = 1, niso
     3943                 +0.1*am(il)*(rr(il,2)-rr(il,1))*work(il)
     3944       DO ixt = 1, niso
    39493945        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)
    39513947        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)
    39533949        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))
    39553951       enddo
    39563952#endif
    3957        
    3958        
     3953
     3954
    39593955       ! cam verif
    3960 #ifdef ISOVERIF         
    3961          if (iso_eau.gt.0) then
    3962               call iso_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) then
    3966           if ((iso_HDO.gt.0).and. &
    3967      &           (rr(il,1)+delt*fr(il,1).gt.ridicule)) then
    3968            call iso_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) then
     3956#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
    39733969#ifdef ISOTRAC
    3974         call iso_verif_traceur_justmass(fxt(1,il,1), &
    3975      &           'cv30_routine 3417')
    3976         do ixt=1,ntraciso
     3970        CALL iso_verif_traceur_justmass(fxt(1,il,1), &
     3971                 'cv30_routine 3417')
     3972        DO ixt=1,ntraciso
    39773973          xtnew(ixt)=xt(ixt,il,1)+delt*fxt(ixt,il,1)
    39783974        enddo
    3979         if (iso_verif_tracpos_choix_nostop(xtnew, &
    3980      &           'cv30_yield 3449',1e-5) &
    3981      &           .eq.1) then
    3982               write(*,*) 'il=',il   
    3983               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)
    39853981!              stop
    39863982        endif
    3987 #endif           
     3983#endif
    39883984#endif
    39893985       ! end cam verif
     
    39993995  ! do j=1,ntra
    40003996  ! do il=1,ncum
    4001   ! if (cvflag_grav) then
     3997  ! if (cvflag_grav) THEN
    40023998  ! ftra(il,1,j)=ftra(il,1,j)+0.01*grav*work(il)
    40033999  ! :                     *(mp(il,2)*(trap(il,2,j)-tra(il,1,j))
     
    40074003  ! :                     *(mp(il,2)*(trap(il,2,j)-tra(il,1,j))
    40084004  ! :             +am(il)*(tra(il,2,j)-tra(il,1,j)))
    4009   ! endif
     4005  ! END IF
    40104006  ! enddo
    40114007  ! enddo
     
    40234019
    40244020#ifdef ISO
    4025        do ixt = 1, ntraciso
     4021       DO ixt = 1, ntraciso
    40264022       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))
    40284024       enddo
    40294025
    40304026#ifdef DIAGISO
    40314027        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))
    40334029        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)
    40354031        q_detrainement(il,1)=q_detrainement(il,1) &
    4036      &          +0.01*grav*work(il)*ment(il,j,1)*qent(il,j,1)
    4037         do ixt = 1, niso
     4032                +0.01*grav*work(il)*ment(il,j,1)*qent(il,j,1)
     4033        DO ixt = 1, niso
    40384034          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))
    40404036          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)
    40424038        enddo
    40434039#endif
     
    40454041       ! cam verif
    40464042#ifdef ISOVERIF
    4047           if (iso_eau.gt.0) then
    4048               call iso_verif_egalite_choix(fxt(iso_eau,il,1), &
    4049      &           fr(il,1),'cv30_routines 3251',errmax,errmaxrel)
    4050           endif !if (iso_eau.gt.0) then
    4051           if ((iso_HDO.gt.0).and. &
    4052      &           (rr(il,1)+delt*fr(il,1).gt.ridicule)) then
    4053            call iso_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) then
     4043          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
    40574053#ifdef ISOTRAC
    4058         call iso_verif_traceur_justmass(fxt(1,il,1),'cv30_routine 3417')
    4059         do ixt=1,ntraciso
     4054        CALL iso_verif_traceur_justmass(fxt(1,il,1),'cv30_routine 3417')
     4055        DO ixt=1,ntraciso
    40604056          xtnew(ixt)=xt(ixt,il,1)+delt*fxt(ixt,il,1)
    40614057        enddo
    4062         if (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3525',1e-5) &
    4063      &           .eq.1) then
    4064               write(*,*) 'il=',il   
    4065               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)
    40694065!              stop
    40704066        endif
    4071 #endif           
     4067#endif
    40724068#endif
    40734069       ! end cam verif
     
    40834079
    40844080#ifdef ISO
    4085        do ixt = 1, ntraciso
     4081       DO ixt = 1, ntraciso
    40864082       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))
    40884084       enddo
    40894085
    40904086#ifdef DIAGISO
    40914087        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))
    40934089        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)
    40954091        q_detrainement(il,1)=q_detrainement(il,1) &
    4096      &         +0.1*work(il)*ment(il,j,1)*qent(il,j,1)
    4097         do ixt = 1, niso
     4092               +0.1*work(il)*ment(il,j,1)*qent(il,j,1)
     4093        DO ixt = 1, niso
    40984094          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))
    41004096                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)
    41024098        enddo
    41034099#endif
     
    41054101       ! cam verif
    41064102#ifdef ISOVERIF
    4107           if (iso_eau.gt.0) then
    4108               call iso_verif_egalite_choix(fxt(iso_eau,il,1), &
    4109      &           fr(il,1),'cv30_routines 3092',errmax,errmaxrel)
    4110           endif !if (iso_eau.gt.0) then
    4111           if ((iso_HDO.gt.0).and. &
    4112      &           (rr(il,1)+delt*fr(il,1).gt.ridicule)) then
    4113            call iso_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) then
     4103          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
    41174113#ifdef ISOTRAC
    4118         call iso_verif_traceur_justmass(fxt(1,il,1),'cv30_routine 3462')
    4119         do ixt=1,ntraciso
     4114        CALL iso_verif_traceur_justmass(fxt(1,il,1),'cv30_routine 3462')
     4115        DO ixt=1,ntraciso
    41204116          xtnew(ixt)=xt(ixt,il,1)+delt*fxt(ixt,il,1)
    41214117        enddo
    4122         if (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3753',1e-5) &
    4123      &           .eq.1) then
    4124               write(*,*) 'il=',il   
     4118        IF (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3753',1e-5) &
     4119                 .EQ.1) THEN
     4120              WRITE(*,*) 'il=',il
    41254121        endif
    4126 #endif           
     4122#endif
    41274123#endif
    41284124       ! end cam verif
     
    41374133  ! do j=2,nl
    41384134  ! 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
    41424137  ! ftra(il,1,k)=ftra(il,1,k)+0.01*grav*work(il)*ment(il,j,1)
    41434138  ! :                *(traent(il,j,1,k)-tra(il,1,k))
     
    41454140  ! ftra(il,1,k)=ftra(il,1,k)+0.1*work(il)*ment(il,j,1)
    41464141  ! :                *(traent(il,j,1,k)-tra(il,1,k))
    4147   ! endif
    4148 
    4149   ! endif
     4142  ! END IF
     4143
     4144  ! END IF
    41504145  ! enddo
    41514146  ! enddo
     
    42484243#ifdef DIAGISO
    42494244        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)))
    42524247        ! modif 2 fev: pour avoir subsidence compensatoire totale, on retranche
    42534248        ! ad.
     
    42604255       ! meme temps.
    42614256       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)))*delt
     4257                 -ad(il)*(rr(il,i)-rr(il,i-1)))*delt
    42634258       ! 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) then
     4259       IF ((dq_tmp/rr(il,i).lt.-0.9).AND.correction_excess_aberrant) THEN
    42654260        ! nouvelle formulation
    42664261        k_tmp=0.01*grav*dpinv*amp1(il)*delt
    42674262        kad_tmp=0.01*grav*dpinv*ad(il)*delt
    4268         do ixt = 1, ntraciso
     4263        DO ixt = 1, ntraciso
    42694264            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))
    42714266            dx_tmp=  R_tmp*( rr(il,i)+ dq_tmp)-xt(ixt,il,i)
    42724267            fxt(ixt,il,i)= dx_tmp/delt
    42734268#ifdef ISOVERIF
    4274                 if ((ixt.eq.iso_HDO).or.(ixt.eq.iso_eau)) then
    4275                 write(*,*) 'cv30_routines 4367: il,i,ixt=',il,i,ixt
    4276                 write(*,*) 'dq_tmp,rr(il,i)=',dq_tmp,rr(il,i)
    4277                 write(*,*) 'R_tmp,dx_tmp,delt=',R_tmp,dx_tmp,delt
    4278                 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/delt
    4282                 write(*,*) 'rr(il,i)+dq_tmp=',rr(il,1)+dq_tmp
    4283                 write(*,*) 'xt(ixt,il,i)+dx_tmp=',xt(ixt,il,i)+dx_tmp
    4284                 write(*,*) 'xt(ixt,il,i)+fxt(ixt,il,i)*delt=', &
    4285      &                   xt(ixt,il,i)+fxt(ixt,il,i)*delt
    4286                 write(*,*) 'fxt(:,il,i)=',fxt(:,il,i)
    4287                 endif !if (ixt.eq.iso_HDO) then 
    4288 #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
    42904285#ifdef DIAGISO
    4291         do ixt = 1, niso
     4286        DO ixt = 1, niso
    42924287                fxt_fluxmasse(ixt,il,i)=fxt(ixt,il,i)
    42934288        enddo
    4294 #endif 
    4295        else !if (dq_tmp/rr(il,i).lt.-0.9) then
     4289#endif
     4290       else !if (dq_tmp/rr(il,i).lt.-0.9) THEN
    42964291        ! ancienne formulation
    4297          do ixt = 1, ntraciso
     4292         DO ixt = 1, ntraciso
    42984293         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)))
    43014296         enddo
    43024297#ifdef DIAGISO
    4303         do ixt = 1, niso
     4298        DO ixt = 1, niso
    43044299           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)))
    43074302        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
    43124305       ! cam verif
    43134306#ifdef ISOVERIF
    4314         if (iso_eau.gt.0) then
    4315               call iso_verif_egalite_choix(fxt(iso_eau,il,i), &
    4316      &           fr(il,i),'cv30_routines 3226',errmax,errmaxrel)
    4317         endif !if (iso_eau.gt.0) then
    4318         do ixt=1,niso
    4319             call iso_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')
    43204313        enddo
    4321         if ((iso_HDO.gt.0).and. &
    4322      &           (rr(il,i)+delt*fr(il,i).gt.ridicule)) then
    4323          call iso_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) then
    4328         if ((iso_HDO.gt.0).and.(iso_O18.gt.0).and. &
    4329      &           (rr(il,i)+delt*fr(il,i).gt.ridicule)) then
    4330          call iso_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) then
     4314        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
    43354328#ifdef ISOTRAC
    4336         call iso_verif_traceur_justmass(fxt(1,il,1),'cv30_routine 3626')
    4337         do ixt=1,ntraciso
     4329        CALL iso_verif_traceur_justmass(fxt(1,il,1),'cv30_routine 3626')
     4330        DO ixt=1,ntraciso
    43384331          xtnew(ixt)=xt(ixt,il,i)+delt*fxt(ixt,il,i)
    43394332        enddo
    4340         if (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3727',1e-5) &
    4341      &           .eq.1) then
    4342               write(*,*) 'il,i=',il,i   
    4343               write(*,*) 'fxt(:,il,i)=',fxt(:,il,i)
    4344               write(*,*) 'amp1(il),ad(il),fac=',  &
    4345      &              amp1(il),ad(il),0.01*grav*dpinv
    4346               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)
    43494342!              stop
    43504343        endif
    4351 #endif         
    4352 #endif
    4353        ! end cam verif 
     4344#endif
     4345#endif
     4346       ! end cam verif
    43544347#endif
    43554348        ELSE ! cvflag_grav
     
    43624355
    43634356#ifdef ISO
    4364        do ixt = 1, ntraciso
     4357       DO ixt = 1, ntraciso
    43654358       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)))
    43684361       enddo
    43694362
    43704363#ifdef DIAGISO
    43714364        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         do ixt = 1, niso
     4365                 +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
    43754368        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)))
    43784371        enddo
    4379 #endif     
     4372#endif
    43804373
    43814374       ! cam verif
    43824375#ifdef ISOVERIF
    4383           if (iso_eau.gt.0) then
    4384               call iso_verif_egalite_choix(fxt(iso_eau,il,i), &
    4385      &           fr(il,i),'cv30_routines 3252',errmax,errmaxrel)
    4386           endif !if (iso_eau.gt.0) then
    4387           do ixt=1,niso
    4388             call iso_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')
    43894382          enddo
    43904383          ! correction 21 oct 2008
    4391           if ((iso_HDO.gt.0).and. &
    4392      &           (rr(il,i)+delt*fr(il,i).gt.ridicule)) then
    4393          call iso_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) then
    4397           call iso_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) then
    4404         endif !if (iso_HDO.gt.0) then
     4384          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
    44054398#ifdef ISOTRAC
    4406         call iso_verif_traceur_justmass(fxt(1,il,1),'cv30_routine 3674')
    4407         do ixt=1,ntraciso
     4399        CALL iso_verif_traceur_justmass(fxt(1,il,1),'cv30_routine 3674')
     4400        DO ixt=1,ntraciso
    44084401          xtnew(ixt)=xt(ixt,il,i)+delt*fxt(ixt,il,i)
    44094402        enddo
    4410         if (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3775',1e-5) &
    4411      &           .eq.1) then
    4412               write(*,*) 'il,i=',il,i 
     4403        IF (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3775',1e-5) &
     4404                 .EQ.1) THEN
     4405              WRITE(*,*) 'il,i=',il,i
    44134406        endif
    4414 #endif         
    4415 #endif
    4416        ! end cam verif 
     4407#endif
     4408#endif
     4409       ! end cam verif
    44174410#endif
    44184411        END IF ! cvflag_grav
     
    44234416    ! do k=1,ntra
    44244417    ! do il=1,ncum
    4425     ! if (i.le.inb(il)) then
     4418    ! if (i.le.inb(il)) THEN
    44264419    ! dpinv=1.0/(ph(il,i)-ph(il,i+1))
    44274420    ! cpinv=1.0/cpn(il,i)
    4428     ! if (cvflag_grav) then
     4421    ! if (cvflag_grav) THEN
    44294422    ! ftra(il,i,k)=ftra(il,i,k)+0.01*grav*dpinv
    44304423    ! :         *(amp1(il)*(tra(il,i+1,k)-tra(il,i,k))
     
    44344427    ! :         *(amp1(il)*(tra(il,i+1,k)-tra(il,i,k))
    44354428    ! :           -ad(il)*(tra(il,i,k)-tra(il,i-1,k)))
    4436     ! endif
    4437     ! endif
     4429    ! END IF
     4430    ! END IF
    44384431    ! enddo
    44394432    ! enddo
     
    44584451        ! ce surplus a la meme compo que le elij, sans fractionnement.
    44594452        ! d'ou le nouveau traitement ci-dessous.
    4460       if (elij(il,k,i).gt.0.0) then
    4461         do ixt = 1, ntraciso
     4453      IF (elij(il,k,i).gt.0.0) THEN
     4454        DO ixt = 1, ntraciso
    44624455          xtawat(ixt)=awat*(xtelij(ixt,il,k,i)/elij(il,k,i))
    44634456!          xtawat(ixt)=amax1(xtawat(ixt),0.0) ! pas necessaire
    44644457        enddo
    4465       else !if (elij(il,k,i).gt.0.0) then
     4458      else !if (elij(il,k,i).gt.0.0) THEN
    44664459          ! normalement, si elij(il,k,i)<=0, alors awat=0
    44674460          ! on le verifie. Si c'est vrai -> xtawat=0 aussi
    44684461#ifdef ISOVERIF
    4469         call iso_verif_egalite(awat,0.0,'cv30_yield 3779')
    4470 #endif
    4471         do ixt = 1, ntraciso
     4462        CALL iso_verif_egalite(awat,0.0,'cv30_yield 3779')
     4463#endif
     4464        DO ixt = 1, ntraciso
    44724465          xtawat(ixt)=0.0
    4473         enddo       
     4466        enddo
    44744467      endif
    44754468
    44764469      ! cam verif
    44774470#ifdef ISOVERIF
    4478           if (iso_eau.gt.0) then
    4479               call iso_verif_egalite_choix(xtawat(iso_eau), &
    4480      &           awat,'cv30_routines 3301',errmax,errmaxrel)
    4481           endif !if (iso_eau.gt.0) then
     4471          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
    44824475#ifdef ISOTRAC
    4483         call iso_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
    44874480#endif
    44884481
     
    44964489
    44974490#ifdef ISO
    4498       do ixt = 1, ntraciso
     4491      DO ixt = 1, ntraciso
    44994492      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))
    45024495      enddo
    45034496
    45044497#ifdef DIAGISO
    45054498        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)
    45104503        q_detrainement(il,i)=q_detrainement(il,i) &
    4511      &          +0.01*grav*dpinv*ment(il,k,i)*qent(il,k,i)
    4512         do ixt = 1, niso
     4504                +0.01*grav*dpinv*ment(il,k,i)*qent(il,k,i)
     4505        DO ixt = 1, niso
    45134506        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))
    45164509        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)
    45184511        enddo
    4519 #endif 
     4512#endif
    45204513      ! cam verif
    45214514#ifdef ISOVERIF
    4522         if (iso_eau.gt.0) then
    4523               call iso_verif_egalite_choix(fxt(iso_eau,il,i), &
    4524      &           fr(il,i),'cv30_routines 3325',errmax,errmaxrel)
    4525         endif !if (iso_eau.gt.0) then
    4526         do ixt=1,niso
    4527             call iso_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')
    45284521        enddo
    4529         if ((iso_HDO.gt.0).and. &
    4530      &           (rr(il,i)+delt*fr(il,i).gt.ridicule)) then
    4531         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) then
    4535            write(*,*) 'il,k,i=',il,k,i
    4536            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)) &
    45404533                /(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) &
    45424535                -0.01*grav*dpinv*ment(il, k, i)*(xtent(iso_HDO,il,k,i)-xtawat(iso_HDO)-xt(iso_HDO,il,i))) &
    45434536                /(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),awat
    4546            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))
    45554548!           stop
    45564549        endif
    4557         if (iso_O18.gt.0) then
    4558           call iso_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) then
    4565         endif !if (iso_HDO.gt.0) then
     4550        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
    45664559#ifdef ISOTRAC
    4567         call iso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 3784')
    4568         do ixt=1,ntraciso
     4560        CALL iso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 3784')
     4561        DO ixt=1,ntraciso
    45694562          xtnew(ixt)=xt(ixt,il,i)+delt*fxt(ixt,il,i)
    45704563        enddo
    4571         if (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3905',1e-5) &
    4572      &           .eq.1) then
    4573               write(*,*) 'il,i=',il,i 
     4564        IF (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3905',1e-5) &
     4565                 .EQ.1) THEN
     4566              WRITE(*,*) 'il,i=',il,i
    45744567         endif
    4575 !        call iso_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
    45774570#endif
    45784571#endif
     
    45864579
    45874580#ifdef ISO
    4588       do ixt = 1, ntraciso
     4581      DO ixt = 1, ntraciso
    45894582      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))
    45924585      enddo
    45934586
    45944587#ifdef DIAGISO
    45954588        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))
    45974590        f_detrainement(il,i)=f_detrainement(il,i) &
    4598      &          +0.1*dpinv*ment(il,k,i)
     4591                +0.1*dpinv*ment(il,k,i)
    45994592        q_detrainement(il,i)=q_detrainement(il,i) &
    4600      &          +0.1*dpinv*ment(il,k,i)*qent(il,k,i)
    4601        do ixt = 1, niso
     4593                +0.1*dpinv*ment(il,k,i)*qent(il,k,i)
     4594       DO ixt = 1, niso
    46024595        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))
    46054598        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)
    46074600       enddo
    4608 #endif     
     4601#endif
    46094602
    46104603      ! cam verif
    46114604#ifdef ISOVERIF
    4612         if (iso_eau.gt.0) then
    4613               call iso_verif_egalite_choix(fxt(iso_eau,il,i), &
    4614      &           fr(il,i),'cv30_routines 3350',errmax,errmaxrel)
    4615         endif !if (iso_eau.gt.0) then
    4616         do ixt=1,niso
    4617             call iso_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')
    46184611        enddo
    4619         if ((iso_HDO.gt.0).and. &
    4620      &           (rr(il,i)+delt*fr(il,i).gt.ridicule)) then
    4621          call iso_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) then
    4625         if ((iso_HDO.gt.0).and.(iso_O18.gt.0).and. &
    4626      &           (rr(il,i)+delt*fr(il,i).gt.ridicule)) then
    4627          call iso_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) then
     4612        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
    46324625#ifdef ISOTRAC
    4633         call iso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 3828')
    4634         do ixt=1,ntraciso
     4626        CALL iso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 3828')
     4627        DO ixt=1,ntraciso
    46354628          xtnew(ixt)=xt(ixt,il,i)+delt*fxt(ixt,il,i)
    46364629        enddo
    4637         if (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3949',1e-5) &
    4638      &           .eq.1) then
    4639               write(*,*) 'il,i=',il,i 
     4630        IF (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 3949',1e-5) &
     4631                 .EQ.1) THEN
     4632              WRITE(*,*) 'il,i=',il,i
    46404633         endif
    4641 !        call iso_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
    46454638#endif
    46464639
     
    46574650    ! do k=1,i-1
    46584651    ! do il=1,ncum
    4659     ! if (i.le.inb(il)) then
     4652    ! if (i.le.inb(il)) THEN
    46604653    ! dpinv=1.0/(ph(il,i)-ph(il,i+1))
    46614654    ! cpinv=1.0/cpn(il,i)
    4662     ! if (cvflag_grav) then
     4655    ! if (cvflag_grav) THEN
    46634656    ! ftra(il,i,j)=ftra(il,i,j)+0.01*grav*dpinv*ment(il,k,i)
    46644657    ! :        *(traent(il,k,i,j)-tra(il,i,j))
     
    46664659    ! ftra(il,i,j)=ftra(il,i,j)+0.1*dpinv*ment(il,k,i)
    46674660    ! :        *(traent(il,k,i,j)-tra(il,i,j))
    4668     ! endif
    4669     ! endif
     4661    ! END IF
     4662    ! END IF
    46704663    ! enddo
    46714664    ! enddo
     
    46864679              ,i)-v(il,i))
    46874680#ifdef ISO
    4688        do ixt = 1, ntraciso
     4681       DO ixt = 1, ntraciso
    46894682        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))
    46914684       enddo
    46924685
    46934686#ifdef DIAGISO
    46944687       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))
    46964689       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)
    46984691       q_detrainement(il,i)=q_detrainement(il,i) &
    4699      &         +0.01*grav*dpinv*ment(il,k,i)*qent(il,k,i)
    4700        do ixt = 1, niso
     4692               +0.01*grav*dpinv*ment(il,k,i)*qent(il,k,i)
     4693       DO ixt = 1, niso
    47014694        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))
    47034696        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)
    47054698       enddo
    4706 #endif     
    4707        
     4699#endif
     4700
    47084701       ! cam verif
    47094702#ifdef ISOVERIF
    4710         if ((il.eq.1636).and.(i.eq.9)) then
    4711                 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)
    47144707                bx=0.01*grav*dpinv*ment(il,k,i)*(qent(il,k,i)-rr(il,i))
    4715                 do ixt=1,niso
     4708                DO ixt=1,niso
    47164709                 xtbx(ixt)=0.01*grav*dpinv*ment(il,k,i)*(xtent(ixt,il,k,i)-xt(ixt,il,i))
    47174710                enddo
    47184711        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')
    47304714        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
    47394732!                 stop
    47404733!                endif
    47414734               endif
    4742         endif !if (iso_HDO.gt.0) then
    4743         endif !if (1.eq.0) then
    4744         if ((iso_HDO.gt.0).and. &
    4745      &           (rr(il,i)+delt*fr(il,i).gt.ridicule)) then
    4746          call iso_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) then
    4750           call iso_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)) then
    4757           call iso_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)) then
    4764         endif !if (iso_O18.gt.0) then
    4765         endif !if (iso_HDO.gt.0) then
     4735        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
    47664759#ifdef ISOTRAC
    4767         call iso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 3921')
    4768         do ixt=1,ntraciso
     4760        CALL iso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 3921')
     4761        DO ixt=1,ntraciso
    47694762          xtnew(ixt)=xt(ixt,il,i)+delt*fxt(ixt,il,i)
    47704763        enddo
    4771         if (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 4036',1e-5) &
    4772      &           .eq.1) then
    4773               write(*,*) 'il,i=',il,i 
     4764        IF (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 4036',1e-5) &
     4765                 .EQ.1) THEN
     4766              WRITE(*,*) 'il,i=',il,i
    47744767         endif
    4775 !        call iso_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
    47794772#endif
    47804773          ELSE ! cvflag_grav
     
    47874780
    47884781#ifdef ISO
    4789        do ixt = 1, ntraciso
     4782       DO ixt = 1, ntraciso
    47904783        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))
    47924785       enddo
    47934786
    47944787#ifdef DIAGISO
    47954788       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))
    47974790       f_detrainement(il,i)=f_detrainement(il,i) &
    4798      &         +0.1*dpinv*ment(il,k,i)
     4791               +0.1*dpinv*ment(il,k,i)
    47994792       q_detrainement(il,i)=q_detrainement(il,i) &
    4800      &         +0.1*dpinv*ment(il,k,i)*qent(il,k,i)
    4801        do ixt = 1, niso
     4793               +0.1*dpinv*ment(il,k,i)*qent(il,k,i)
     4794       DO ixt = 1, niso
    48024795        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))
    48044797        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)
    48064799       enddo
    4807 #endif     
    4808        
     4800#endif
     4801
    48094802       ! cam verif
    48104803#ifdef ISOVERIF
    4811           if ((il.eq.1636).and.(i.eq.9)) then
    4812                 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)
    48154808          endif
    4816           if (iso_eau.gt.0) then
    4817               call iso_verif_egalite_choix(fxt(iso_eau,il,i), &
    4818      &           fr(il,i),'cv30_routines 3433',errmax,errmaxrel)
    4819           endif !if (iso_eau.gt.0) then
    4820           do ixt=1,niso
    4821             call iso_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')
    48224815          enddo
    4823           if ((iso_HDO.gt.0).and.(delt*fr(il,i).gt.ridicule)) then
    4824               if (iso_verif_aberrant_enc_nostop( &
    4825      &           fxt(iso_HDO,il,i)/fr(il,i), &
    4826      &           'cv30_yield 3597').eq.1) then
    4827                 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)
    48284821                stop
    48294822               endif
    4830           endif !if (iso_HDO.gt.0) then
    4831           if ((iso_HDO.gt.0).and. &
    4832      &           (rr(il,i)+delt*fr(il,i).gt.ridicule)) then
    4833            call iso_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) then
     4823          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
    48374830#ifdef ISOTRAC
    4838         call iso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 3972')
    4839         do ixt=1,ntraciso
     4831        CALL iso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 3972')
     4832        DO ixt=1,ntraciso
    48404833          xtnew(ixt)=xt(ixt,il,i)+delt*fxt(ixt,il,i)
    48414834        enddo
    4842         if (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 4091',1e-5) &
    4843      &           .eq.1) then
    4844               write(*,*) 'il,i=',il,i 
     4835        IF (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 4091',1e-5) &
     4836                 .EQ.1) THEN
     4837              WRITE(*,*) 'il,i=',il,i
    48454838         endif
    4846 !        call iso_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
    48504843#endif
    48514844          END IF ! cvflag_grav
     
    48574850    ! do k=i,nl+1
    48584851    ! do il=1,ncum
    4859     ! if (i.le.inb(il) .and. k.le.inb(il)) then
     4852    ! if (i.le.inb(il) .AND. k.le.inb(il)) THEN
    48604853    ! dpinv=1.0/(ph(il,i)-ph(il,i+1))
    48614854    ! cpinv=1.0/cpn(il,i)
    4862     ! if (cvflag_grav) then
     4855    ! if (cvflag_grav) THEN
    48634856    ! ftra(il,i,j)=ftra(il,i,j)+0.01*grav*dpinv*ment(il,k,i)
    48644857    ! :         *(traent(il,k,i,j)-tra(il,i,j))
     
    48664859    ! ftra(il,i,j)=ftra(il,i,j)+0.1*dpinv*ment(il,k,i)
    48674860    ! :             *(traent(il,k,i,j)-tra(il,i,j))
    4868     ! endif
    4869     ! endif ! i and k
     4861    ! END IF
     4862    ! END IF ! i and k
    48704863    ! enddo
    48714864    ! enddo
     
    48894882            i))-mp(il,i)*(vp(il,i)-v(il,i-1)))*dpinv
    48904883#ifdef ISO
    4891         do ixt = 1, niso
     4884        DO ixt = 1, niso
    48924885        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)))*dpinv
     4886                +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
    48974890        enddo
    48984891
    48994892#ifdef DIAGISO
    49004893       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))
    49024895       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)))*dpinv
    4905        do ixt = 1, niso
     4896              +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
    49064899        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))
    49084901        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)))*dpinv
    4911        enddo 
    4912 #endif             
    4913 
    4914 #ifdef ISOVERIF
    4915         do ixt=1,niso
    4916            call iso_verif_noNaN(xt(ixt,il,i),'cv30_yield 4514')
    4917            call iso_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')
    49184911        enddo
    4919         if ((iso_HDO.gt.0).and. &
    4920      &           (rr(il,i)+delt*fr(il,i).gt.ridicule)) then
    4921         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) then
    4925         write(*,*) 'il,i=',il,i
    4926         if (rr(il,i).ne.0.0) then
    4927         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))
    49294922        endif
    4930         if (fr(il,i).ne.0.0) then
    4931         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))
    49334926        endif
    4934 #ifdef DIAGISO       
    4935         if (fq_ddft(il,i).ne.0.0) then
    4936         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))
    49384931        endif
    4939         if (fq_evapprecip(il,i).ne.0.0) then
    4940         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))
    49424935        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),dpinv
    4950         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)
    49554948        stop
    49564949        endif
    4957         endif !if (iso_HDO.gt.0) then
    4958         if ((iso_HDO.gt.0).and.(iso_O18.gt.0).and. &
    4959      &           (rr(il,i)+delt*fr(il,i).gt.ridicule)) then
    4960          call iso_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)) then
    4965             write(*,*) 'cv30_yield 5057: ici, on verifie deltaD_nobx'
    4966             write(*,*) 'il,i=',il,i
    4967             write(*,*) 'fr(il,i),bx,fr(il,i)-bx=',fr(il,i),bx,fr(il,i)-bx
    4968             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             call iso_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)) then
    4980           endif !if (iso_HDO.gt.0) then
     4950        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
    49814974#endif
    49824975
    49834976#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
    49864978            ! facile: on fait comme l'eau
    4987             do ixt = 1+niso,ntraciso
     4979            DO ixt = 1+niso,ntraciso
    49884980             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)))*dpinv
    4992             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
    49934985
    49944986        else ! taggage des ddfts:
     
    50024994!             fxt(ixt_ddft,il,i)=fxt(ixt_ddft,il,i)+conversion(iiso)
    50034995!             fxt(ixt_poubelle,il,i)=fxt(ixt_poubelle,il,i)
    5004 !     :           -conversion(iiso)   
     4996!     :           -conversion(iiso)
    50054997
    50064998        ! Pb: quand on discretise, dqp/dt n'est pas verifee numeriquement.
     
    50105002        ! Solution alternative: Dans le cas entrainant, Ye ne varie que par
    50115003        ! 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:
    50135005
    50145006        ! ajout deja de l'evap
    5015         do ixt = 1+niso,ntraciso
     5007        DO ixt = 1+niso,ntraciso
    50165008             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))
    50185010        enddo !do ixt = 1+niso,ntraciso
    50195011
    50205012        ! ajout du terme des ddfts sensi stricto
    5021 !        write(*,*) 'tmp cv3_yield 4165: i,il=',i,il
    5022 !
    5023         if (option_traceurs.eq.6) then
    5024           do iiso = 1, niso
    5025              
    5026              ixt_ddft=itZonIso(izone_ddft,iiso) 
    5027              if (mp(il,i).gt.mp(il,i+1)) then
     5013!        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
    50285020                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)) then
     5021                 *(xt(ixt_ddft,il,i-1)-xt(ixt_ddft,il,i))
     5022             else !if (mp(il,i).gt.mp(il,i+1)) THEN
    50315023                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)) then
     5024                 *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
    50355027             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
    50395031             ixt_poubelle=itZonIso(izone_poubelle,iiso)
    50405032             fxt(ixt_ddft,il,i)=fxt(ixt_ddft,il,i)+fxtYe(iiso)
    50415033             fxt(ixt_poubelle,il,i)=fxt(ixt_poubelle,il,i) &
    5042      &           +fxtqe(iiso)-fxtYe(iiso)
     5034                 +fxtqe(iiso)-fxtYe(iiso)
    50435035         enddo !do iiso = 1, niso
    50445036
    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
    50495039                ! cas entrainant: faire attention
    5050                
    5051                 do iiso = 1, niso
     5040
     5041                DO iiso = 1, niso
    50525042                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)
    50575047                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)
    50625052               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)))
    50655055               fxt(ixt_revap,il,i)=fxt(ixt_revap,il,i) &
    5066      &                  +fxt_revap(iiso)
     5056                        +fxt_revap(iiso)
    50675057
    50685058                fxtXe(iiso)=fxtqe(iiso)-fxtYe(iiso)-fxt_revap(iiso)
    50695059                Xe(iiso)=xt(iiso,il,i) &
    5070      &                   -xt(ixt_ddft,il,i)-xt(ixt_revap,il,i)
    5071                 if (Xe(iiso).gt.ridicule) then
    5072                   do izone=1,nzone
    5073                    if ((izone.ne.izone_revap).and. &
    5074      &                   (izone.ne.izone_ddft)) then
    5075                     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)
    50765066                    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=',iiso
    5082 !                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                   call iso_verif_traceur_justmass(fxt(1,il,i), &
    5089      &                   'cv30_routine 4646')
    5090 #endif
    5091                 else !if (abs(dXe).gt.ridicule) then
     5067                         +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
    50925082                    ! dans ce cas, fxtXe doit etre faible
    5093                    
    5094 #ifdef ISOVERIF
    5095                 if (delt*fxtXe(iiso).gt.ridicule) then
    5096                    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)
    50985088                   stop
    50995089                endif
    5100 #endif                   
    5101                 do izone=1,nzone
    5102                    if ((izone.ne.izone_revap).and. &
    5103      &                   (izone.ne.izone_ddft)) then                   
    5104                     ixt=itZonIso(izone,iiso) 
    5105                     if (izone.eq.izone_poubelle) then
     5090#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
    51065096                      fxt(ixt,il,i)=fxt(ixt,il,i)+fxtXe(iiso)
    5107                     else !if (izone.eq.izone_poubelle) then
     5097                    else !if (izone.EQ.izone_poubelle) THEN
    51085098                        ! pas de tendance pour ce tag la
    5109                     endif !if (izone.eq.izone_poubelle) then
    5110                    endif !if ((izone.ne.izone_revap).and.
     5099                    endif !if (izone.EQ.izone_poubelle) THEN
     5100                   endif !if ((izone.NE.izone_revap).AND.
    51115101                enddo !do izone=1,nzone
    51125102#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
    51195108              enddo !do iiso = 1, niso
    5120                
    5121             else !if (mp(il,i).gt.mp(il,i+1)) then
     5109
     5110            else !if (mp(il,i).gt.mp(il,i+1)) THEN
    51225111                ! cas detrainant: pas de problemes
    5123                 do ixt=1+niso,ntraciso
     5112                DO ixt=1+niso,ntraciso
    51245113                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)))*dpinv
     5114                        +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
    51275116                enddo !do ixt=1+niso,ntraciso
    51285117#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
    51435130        ! cam verif
    51445131#ifdef ISOVERIF
    5145           do ixt=1,niso
    5146             call iso_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')
    51475134          enddo
    51485135#endif
    51495136#ifdef ISOVERIF
    5150           if (iso_eau.gt.0) then
    5151               call iso_verif_egalite_choix(fxt(iso_eau,il,i), &
    5152      &           fr(il,i),'cv30_routines 3493',errmax,errmaxrel)
    5153           endif !if (iso_eau.gt.0) then
    5154           if (1.eq.0) then
    5155           if ((iso_HDO.gt.0).and.(delt*fr(il,i).gt.ridicule)) then
    5156               if (iso_verif_aberrant_enc_nostop( &
    5157      &           fxt(iso_HDO,il,i)/fr(il,i), &
    5158      &           'cv30_yield 3662').eq.1) then
    5159                 write(*,*) 'il,i,icb(il),inb(il)=',il,i,icb(il),inb(il)
    5160                 write(*,*) 'fr(il,i),delt=',fr(il,i),delt
    5161 #ifdef DIAGISO                       
    5162                 if (fq_ddft(il,i).ne.0.0) then
    5163                 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) then
    5166                 if (fq_evapprecip(il,i).ne.0.0) then
    5167                 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) then
    5171 #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
    51725159               endif !if (iso_verif_aberrant_enc_nostop(
    5173           endif !if (iso_HDO.gt.0) then
    5174           endif !if (1.eq.0) then
    5175           if ((iso_HDO.gt.0).and. &
    5176      &           (rr(il,i)+delt*fr(il,i).gt.ridicule)) then
    5177            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) then
    5181                 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))
    51855172                stop
    51865173            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
    51975182#ifdef ISOTRAC
    5198 !        write(*,*) 'tmp cv3_yield 4224: i,il=',i,il
    5199         call iso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 4107')
    5200         do ixt=1,ntraciso
     5183!        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
    52015186          xtnew(ixt)=xt(ixt,il,i)+delt*fxt(ixt,il,i)
    52025187        enddo
    5203         if (iso_verif_tracpos_choix_nostop(xtnew, &
    5204      &                  'cv30_yield 4221',1e-5).eq.1) then
    5205           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,dpinv
    5209           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)
    52165201!         rappel: fxt(ixt,il,i)=fxt(ixt,il,i)
    52175202!          0.5*sigd*(xtevap(ixt,il,i)+xtevap(ixt,il,i+1))
     
    52205205!          stop
    52215206        endif
    5222 #endif           
     5207#endif
    52235208#endif
    52245209#endif
     
    52325217            i))-mp(il,i)*(vp(il,i)-v(il,i-1)))*dpinv
    52335218#ifdef ISO
    5234         do ixt = 1, ntraciso
     5219        DO ixt = 1, ntraciso
    52355220        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)))*dpinv
     5221         +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
    52395224        enddo ! ixt=1,niso
    52405225
    5241 #ifdef ISOTRAC       
    5242         if (option_traceurs.ne.6) then
    5243 
     5226#ifdef ISOTRAC
     5227        IF (option_traceurs.NE.6) THEN
    52445228            ! facile: on fait comme l'eau
    5245             do ixt = 1+niso,ntraciso
     5229            DO ixt = 1+niso,ntraciso
    52465230             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)))*dpinv
     5231                +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
    52505234            enddo !do ixt = 1+niso,ntraciso
    52515235
    5252         else  !if (option_traceurs.ne.6) then
    5253 
     5236        else  !if (option_traceurs.NE.6) THEN
    52545237            ! taggage des ddfts:  voir blabla + haut
    5255         do ixt = 1+niso,ntraciso
     5238        DO ixt = 1+niso,ntraciso
    52565239             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))
    52585241        enddo !do ixt = 1+niso,ntraciso
    5259 !        write(*,*) 'tmp cv3_yield 4165: i,il=',i,il
     5242!        WRITE(*,*) 'tmp cv3_yield 4165: i,il=',i,il
    52605243!        ixt_poubelle=itZonIso(izone_poubelle,iso_eau)
    52615244!        ixt_ddft=itZonIso(izone_ddft,iso_eau)
    5262 !        write(*,*) 'delt*fxt(ixt_poubelle,il,i)=',
     5245!        WRITE(*,*) 'delt*fxt(ixt_poubelle,il,i)=',
    52635246!     :           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           do iiso = 1, niso
     5247!        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
    52675250             ixt_poubelle=itZonIso(izone_poubelle,iiso)
    5268              ixt_ddft=itZonIso(izone_ddft,iiso) 
    5269              if (mp(il,i).gt.mp(il,i+1)) then
     5251             ixt_ddft=itZonIso(izone_ddft,iiso)
     5252             IF (mp(il,i).gt.mp(il,i+1)) THEN
    52705253                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)) then
     5254                 *(xt(ixt_ddft,il,i-1)-xt(ixt_ddft,il,i))
     5255             else !if (mp(il,i).gt.mp(il,i+1)) THEN
    52735256                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)) then
     5257                 *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
    52775260             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)))
    52805263             fxt(ixt_ddft,il,i)=fxt(ixt_ddft,il,i)+fxtYe(iiso)
    52815264             fxt(ixt_poubelle,il,i)=fxt(ixt_poubelle,il,i) &
    5282      &           +fxtqe(iiso)-fxtYe(iiso)
     5265                 +fxtqe(iiso)-fxtYe(iiso)
    52835266          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) then
    5288 #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
    52895272
    52905273#ifdef DIAGISO
    52915274        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))
    52935276        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)))*dpinv
    5296        do ixt = 1, niso
     5277              +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
    52975280        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))
    52995282        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)))*dpinv
    5302        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
    53045287
    53055288        ! cam verif
    53065289
    53075290#ifdef ISOVERIF
    5308        do ixt=1,niso
    5309         call iso_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')
    53105293       enddo
    5311 #endif       
    5312 #ifdef ISOVERIF
    5313           if (iso_eau.gt.0) then
    5314               call iso_verif_egalite_choix(fxt(iso_eau,il,i), &
    5315      &           fr(il,i),'cv30_routines 3522',errmax,errmaxrel)
    5316           endif !if (iso_eau.gt.0) then
    5317           if ((iso_HDO.gt.0).and.(delt*fr(il,i).gt.ridicule)) then
    5318               if (iso_verif_aberrant_enc_nostop( &
    5319      &           fxt(iso_HDO,il,i)/fr(il,i), &
    5320      &           'cv30_yield 3690').eq.1) then
    5321                 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)
    53225305                stop
    53235306               endif
    5324           endif !if (iso_HDO.gt.0) then
    5325           if ((iso_HDO.gt.0).and. &
    5326      &           (rr(il,i)+delt*fr(il,i).gt.ridicule)) then
    5327            call iso_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) then         
    5331           if ((iso_HDO.gt.0).and.(iso_O18.gt.0).and. &
    5332      &           (rr(il,i)+delt*fr(il,i).gt.ridicule)) then
    5333            call iso_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) then     
     5307          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
    53385321#ifdef ISOTRAC
    5339         call iso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 4172')
    5340         do ixt=1,ntraciso
     5322        CALL iso_verif_traceur_justmass(fxt(1,il,i),'cv30_routine 4172')
     5323        DO ixt=1,ntraciso
    53415324          xtnew(ixt)=xt(ixt,il,1)+delt*fxt(ixt,il,1)
    53425325        enddo
    5343         if (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 4295',1e-5) &
    5344      &           .eq.1) then
    5345               write(*,*) 'il,i=',il,i 
     5326        IF (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 4295',1e-5) &
     5327                 .EQ.1) THEN
     5328              WRITE(*,*) 'il,i=',il,i
    53465329         endif
    5347 !        call iso_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
    53515334#endif
    53525335
     
    53845367    ! do j=1,ntra
    53855368    ! do il=1,ncum
    5386     ! if (i.le.inb(il)) then
     5369    ! if (i.le.inb(il)) THEN
    53875370    ! dpinv=1.0/(ph(il,i)-ph(il,i+1))
    53885371    ! cpinv=1.0/cpn(il,i)
    53895372
    5390     ! if (cvflag_grav) then
     5373    ! if (cvflag_grav) THEN
    53915374    ! ftra(il,i,j)=ftra(il,i,j)+0.01*grav*dpinv
    53925375    ! :     *(mp(il,i+1)*(trap(il,i+1,j)-tra(il,i,j))
     
    53965379    ! :     *(mp(il,i+1)*(trap(il,i+1,j)-tra(il,i,j))
    53975380    ! :     -mp(il,i)*(trap(il,i,j)-tra(il,i-1,j)))
    5398     ! endif
    5399     ! endif ! i
     5381    ! END IF
     5382    ! END IF ! i
    54005383    ! enddo
    54015384    ! enddo
     
    54115394
    54125395! attention, on corrige un probleme C Risi
    5413       IF (cvflag_grav) then
    5414 
     5396      IF (cvflag_grav) THEN
    54155397       ax = 0.01*grav*ment(il, inb(il), inb(il))*(hp(il,inb(il))-h(il,inb(il))+t(il, &
    54165398      inb(il))*(cpv-cpd)*(rr(il,inb(il))-qent(il,inb(il), &
     
    54395421      1))/(ph(il,inb(il)-1)-ph(il,inb(il)))
    54405422
    5441      
    5442 #ifdef ISO
    5443       do ixt = 1, ntraciso
     5423
     5424#ifdef ISO
     5425      DO ixt = 1, ntraciso
    54445426       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))
    54475429       fxt(ixt,il,inb(il))=fxt(ixt,il,inb(il))-xtbx(ixt)
    54485430       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)))
    54515433      enddo !do ixt = 1, niso
    5452 #endif   
     5434#endif
    54535435
    54545436      else !IF (cvflag_grav)
     
    54805462
    54815463
    5482      
    5483 #ifdef ISO
    5484       do ixt = 1, ntraciso
     5464
     5465#ifdef ISO
     5466      DO ixt = 1, ntraciso
    54855467       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))
    54885470       fxt(ixt,il,inb(il))=fxt(ixt,il,inb(il))-xtbx(ixt)
    54895471       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)))
    54925474      enddo !do ixt = 1, niso
    5493 #endif     
     5475#endif
    54945476
    54955477      endif  !IF (cvflag_grav)
     
    55005482       fq_detrainement(il,inb(il))=fq_detrainement(il,inb(il))-bx
    55015483       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        do ixt = 1, niso
     5484         +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
    55055487        fxt_detrainement(ixt,il,inb(il))= &
    5506      &           fxt_detrainement(ixt,il,inb(il))-xtbx(ixt)
     5488                 fxt_detrainement(ixt,il,inb(il))-xtbx(ixt)
    55075489        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)))
    55115493       enddo
    55125494#endif
    55135495      ! cam verif
    55145496#ifdef ISOVERIF
    5515        do ixt=1,niso
    5516         call iso_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')
    55175499       enddo
    5518           if (iso_eau.gt.0) then
    5519               call iso_verif_egalite_choix(fxt(iso_eau,il,inb(il)), &
    5520      &           fr(il,inb(il)),'cv30_routines 3638',errmax,errmaxrel)
    5521               call iso_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) then
    5524           if ((iso_HDO.gt.0).and. &
    5525      &       (rr(il,inb(il))+delt*fr(il,inb(il)).gt.ridicule)) then
    5526            call iso_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) then               
    5531                 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) then
    5537                         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)
    55385520                        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))+bx
    5540                         write(*,*) 'M,dt,k_tmp*dt=',k_tmp,delt,k_tmp*delt
    5541                         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)))
    55475529                stop
    55485530              endif !if (iso_verif_O18_aberrant_nostop
    5549             endif !if (iso_O18.gt.0) then
    5550           endif !if (iso_HDO.gt.0) then
    5551           if ((iso_HDO.gt.0).and. &
    5552      &       (rr(il,inb(il)-1)+delt*fr(il,inb(il)-1).gt.ridicule)) then
    5553            call iso_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) then               
    5559                 call iso_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')
    55655547              endif
    5566           endif !if (iso_HDO.gt.0) then
     5548          endif !if (iso_HDO.gt.0) THEN
    55675549#ifdef ISOTRAC
    5568         call iso_verif_traceur_justmass(fxt(1,il,inb(il)-1), &
    5569      &           'cv30_routine 4364')
    5570         call iso_verif_traceur_justmass(fxt(1,il,inb(il)), &
    5571      &           'cv30_routine 4364b')
    5572         do ixt=1,ntraciso
     5550        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
    55735555          xtnew(ixt)=xt(ixt,il,inb(il))+delt*fxt(ixt,il,inb(il))
    55745556        enddo
    5575         if (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 4492',1e-5) &
    5576      &           .eq.1) then
    5577               write(*,*) 'il,i=',il,i 
     5557        IF (iso_verif_tracpos_choix_nostop(xtnew,'cv30_yield 4492',1e-5) &
     5558                 .EQ.1) THEN
     5559              WRITE(*,*) 'il,i=',il,i
    55785560         endif
    5579 !        call iso_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
    55835565#endif
    55845566
     
    56085590#ifdef ISO
    56095591        frsum(il)=0.0
    5610         do ixt=1,ntraciso
     5592        DO ixt=1,ntraciso
    56115593          fxtsum(ixt,il)=0.0
    56125594          bxtsum(ixt,il)=0.0
     
    56255607        dsum(il) = dsum(il) + t(il, i)*(ph(il,i)-ph(il,i+1))/th(il, i)
    56265608#ifdef ISO
    5627        
     5609
    56285610      frsum(il)=frsum(il)+fr(il,i)
    5629       do ixt=1,ntraciso
     5611      DO ixt=1,ntraciso
    56305612        fxtsum(ixt,il)=fxtsum(ixt,il)+fxt(ixt,il,i)
    56315613        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
    56355617#endif
    56365618      END IF
     
    56455627        fr(il, i) = bsum(il)/csum(il)
    56465628#ifdef ISO
    5647         if (abs(csum(il)).gt.0.0) then
    5648           do ixt=1,ntraciso
    5649             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)
    56505632          enddo
    5651         else !if (frsum(il).gt.ridicule) then
    5652            if (abs(frsum(il)).gt.0.0) then
    5653             do ixt=1,ntraciso
    5654              fxt(ixt,il,i)=fr(il,i)*fxtsum(ixt,il)/frsum(il)       
    5655             enddo 
    5656            else !if (abs(frsum(il)).gt.0.0) then
    5657              if (abs(fr(il,i))*delt.gt.ridicule) then
    5658                write(*,*) 'cv30_yield 4048: fr(il,i)=',fr(il,i)
    5659                stop 
    5660              else !if (abs(fr(il,i))*delt.gt.ridicule) then
    5661                do ixt=1,ntraciso
     5633        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
    56625644                 fxt(ixt,il,i)=0.0
    56635645               enddo
    5664                if (iso_eau.gt.0) then
     5646               IF (iso_eau.gt.0) THEN
    56655647                   fxt(iso_eau,il,i)=1.0
    56665648               endif
    5667              endif !if (abs(fr(il,i))*delt.gt.ridicule) then
    5668            endif !if (abs(frsum(il)).gt.0.0) then
    5669          endif !if (frsum(il).gt.0) then
     5649             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
    56705652#endif
    56715653      END IF
     
    56765658#ifdef ISO
    56775659#ifdef ISOVERIF
    5678         do i=1,nl
    5679           do il=1,ncum
    5680            do ixt=1,ntraciso
    5681             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')
    56825664           enddo
    56835665          enddo
    56845666        enddo
    5685 #endif               
    5686 #ifdef ISOVERIF
    5687           do i=1,nl
    5688 !             write(*,*) 'cv30_routines temp 3967: i=',i
    5689              do il=1,ncum
    5690 !                write(*,*) 'cv30_routines 3969: il=',il
    5691 !                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=',
    56925674!     :                           il,i,inb(il),ncum
    5693 !                write(*,*) 'cv30_routines 3974'
    5694                 if (iso_eau.gt.0) then
    5695                   call iso_verif_egalite_choix(fxt(iso_eau,il,i), &
    5696      &              fr(il,i),'cv30_yield 3830',errmax,errmaxrel) 
    5697                 endif !if (iso_eau.gt.0) then
    5698 !                write(*,*) 'cv30_routines 3979'
    5699                 if ((iso_HDO.gt.0).and. &
    5700      &              (delt*fr(il,i).gt.ridicule)) then
    5701                     if (iso_verif_aberrant_enc_nostop( &
    5702      &                   fxt(iso_HDO,il,i)/fr(il,i), &
    5703      &                  'cv30_yield 3834').eq.1) then                       
    5704                         if (fr(il,i).gt.ridicule*1e5) 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) 
    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))
    57125694!                           stop
    57135695                        endif
    5714 !                        write(*,*) 'cv30_routines 3986: temporaire'
    5715                     endif   !if (iso_verif_aberrant_enc_nostop   
    5716                 endif !if (iso_HDO.gt.0) then
    5717                 if ((iso_HDO.gt.0).and. &
    5718      &           (rr(il,i)+delt*fr(il,i).gt.ridicule)) then
    5719                   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) then
    5723                      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)
    57265708                     stop
    57275709                  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
    57375718#ifdef ISOTRAC
    5738                 call iso_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'
    57425723             enddo !do il=1,ncum
    5743 !             write(*,*) 'cv30_routine 3990: fin des il pour i=',i
     5724!             WRITE(*,*) 'cv30_routine 3990: fin des il pour i=',i
    57445725          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'
    57465727#endif
    57475728
    57485729#ifdef ISOVERIF
    57495730        ! verif finale des tendances:
    5750           do i=1,nl
    5751              do il=1,ncum
    5752                 if (iso_eau.gt.0) then
    5753                   call iso_verif_egalite_choix(fxt(iso_eau,il,i), &
    5754      &              fr(il,i),'cv30_yield 3830',errmax,errmaxrel) 
    5755                 endif !if (iso_eau.gt.0) then
    5756                 if ((iso_HDO.gt.0).and. &
    5757      &           (rr(il,i)+delt*fr(il,i).gt.ridicule)) then
    5758                   call iso_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) then               
    5763                if ((iso_HDO.gt.0).and.(iso_O18.gt.0).and. &
    5764      &           (rr(il,i)+delt*fr(il,i).gt.ridicule)) then
    5765                   call iso_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) then
     5731          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
    57705751             enddo !do il=1,ncum
    57715752          enddo !do i=1,nl
     
    58355816    DO k = i, nl
    58365817      DO il = 1, ncum
    5837         ! test         if (i.ge.icb(il).and.i.le.inb(il).and.k.le.inb(il))
    5838         ! then
     5818        ! test         if (i.ge.icb(il).AND.i.le.inb(il).AND.k.le.inb(il))
     5819        ! THEN
    58395820        IF (i<=inb(il) .AND. k<=inb(il)) THEN
    58405821          upwd(il, i) = upwd(il, i) + m(il, k) + up1(il, k, i)
     
    59335914  ! *** diagnose the in-cloud mixing ratio   ***            ! cld
    59345915  ! ***           of condensed water         ***            ! cld
    5935   ! ! cld
     5916  ! cld
    59365917
    59375918  DO i = 1, nd ! cld
     
    59925973  END DO ! cld
    59935974
    5994   RETURN
     5975
    59955976END SUBROUTINE cv30_yield
    59965977
    5997 ! !RomP >>>
     5978!RomP >>>
    59985979SUBROUTINE cv30_tracer(nloc, len, ncum, nd, na, ment, sij, da, phi, phi2, &
    59995980    d1a, dam, ep, vprecip, elij, clw, epmlmmm, eplamm, icb, inb)
    60005981  IMPLICIT NONE
    60015982
    6002   include "cv30param.h"
     5983
    60035984
    60045985  ! inputs:
     
    60536034      DO i = 1, ncum
    60546035        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)
    60566037          epm(i, j, k) = 1. - (1.-ep(i,j))*clw(i, j)/max(elij(i,k,j), 1.E-16)
    6057           ! !
     6038
    60586039          epm(i, j, k) = max(epm(i,j,k), 0.0)
    60596040        END IF
     
    61046085  END DO
    61056086
    6106   RETURN
     6087
    61076088END SUBROUTINE cv30_tracer
    61086089! RomP <<<
     
    61166097    elij1, clw1, epmlmmm1, eplamm1, wdtraina1, wdtrainm1,epmax_diag1 & ! epmax_cape
    61176098#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 &
    61206101#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     use infotrac_phy, ONLY: ntraciso=>ntiso
    6135 #ifdef ISOVERIF
    6136     use isotopes_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, &
    61376118        iso_verif_egalite,iso_verif_egalite_choix_nostop,iso_verif_positif_nostop, &
    61386119        iso_verif_egalite_nostop,iso_verif_aberrant_nostop,deltaD,iso_verif_noNaN_nostop, &
     
    61426123  IMPLICIT NONE
    61436124
    6144   include "cv30param.h"
     6125
    61456126
    61466127  ! inputs:
     
    61726153  REAL xtprecip(ntraciso,nloc)
    61736154  REAL xtvprecip(ntraciso,nloc, nd+1), xtevap(ntraciso,nloc, nd)
    6174   real fxt(ntraciso,nloc,nd)
    6175   real xtclw(ntraciso,nloc,nd)
     6155  REAL fxt(ntraciso,nloc,nd)
     6156  REAL xtclw(ntraciso,nloc,nd)
    61766157  REAL xtwdtraina(ntraciso,nloc, nd)
    61776158#endif
     
    62016182  ! RomP <<<
    62026183#ifdef ISO
    6203   real xtprecip1(ntraciso,len)
    6204   real fxt1(ntraciso,len,nd)
    6205   real xtVPrecip1(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)
    62066187  REAL xtwdtraina1(ntraciso,len, nd)
    62076188  REAL xtclw1(ntraciso,len, nd)
     
    62116192  INTEGER i, k, j
    62126193#ifdef ISO
    6213       integer ixt
     6194      INTEGER ixt
    62146195#endif
    62156196
    62166197#ifdef DIAGISO
    6217       real water(nloc,nd)
    6218       real xtwater(ntraciso,nloc,nd)
    6219       real qp(nloc,nd),xtp(ntraciso,nloc,nd)
    6220       real fq_detrainement(nloc,nd)
    6221       real f_detrainement(nloc,nd)
    6222       real q_detrainement(nloc,nd)
    6223       real fq_ddft(nloc,nd)
    6224       real fq_fluxmasse(nloc,nd)
    6225       real fq_evapprecip(nloc,nd)
    6226       real fxt_detrainement(ntraciso,nloc,nd)
    6227       real xt_detrainement(ntraciso,nloc,nd)
    6228       real fxt_ddft(ntraciso,nloc,nd)
    6229       real fxt_fluxmasse(ntraciso,nloc,nd)
    6230       real fxt_evapprecip(ntraciso,nloc,nd)
    6231 
    6232       real water1(len,nd)
    6233       real xtwater1(ntraciso,len,nd)
    6234       real qp1(len,nd),xtp1(ntraciso,len,nd)
    6235       real fq_detrainement1(len,nd)
    6236       real f_detrainement1(len,nd)
    6237       real q_detrainement1(len,nd)
    6238       real fq_ddft1(len,nd)
    6239       real fq_fluxmasse1(len,nd)
    6240       real fq_evapprecip1(len,nd)
    6241       real fxt_detrainement1(ntraciso,len,nd)
    6242       real xt_detrainement1(ntraciso,len,nd)
    6243       real fxt_ddft1(ntraciso,len,nd)
    6244       real fxt_fluxmasse1(ntraciso,len,nd)
    6245       real fxt_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'
    62506231#endif
    62516232  DO i = 1, ncum
     
    62576238    epmax_diag1(idcum(i))=epmax_diag(i) ! epmax_cape
    62586239#ifdef ISO
    6259          do ixt = 1, ntraciso
     6240         DO ixt = 1, ntraciso
    62606241          xtprecip1(ixt,idcum(i))=xtprecip(ixt,i)
    62616242         enddo
     
    62906271      ! RomP <<<
    62916272#ifdef ISO
    6292             do ixt = 1, ntraciso
     6273            DO ixt = 1, ntraciso
    62936274             fxt1(ixt,idcum(i),k)=fxt(ixt,i,k)
    62946275             xtVPrecip1(ixt,idcum(i),k)=xtVPrecip(ixt,i,k)
     
    63096290
    63106291#ifdef ISO
    6311 #ifdef DIAGISO 
    6312         do k=1,nl
    6313           do i=1,ncum   
     6292#ifdef DIAGISO
     6293        DO k=1,nl
     6294          DO i=1,ncum
    63146295            water1(idcum(i),k)=water(i,k)
    63156296            qp1(idcum(i),k)=qp(i,k)
     
    63216302            fq_evapprecip1(idcum(i),k)=fq_evapprecip(i,k)
    63226303            fq_fluxmasse1(idcum(i),k)=fq_fluxmasse(i,k)
    6323             do ixt = 1, ntraciso
     6304            DO ixt = 1, ntraciso
    63246305             xtwater1(ixt,idcum(i),k)=xtwater(ixt,i,k)
    63256306             xtp1(ixt,idcum(i),k)=xtp(ixt,i,k)
     
    63326313           enddo
    63336314         enddo
    6334          do i=1,ncum   
     6315         DO i=1,ncum
    63356316            epmax_diag1(idcum(i))=epmax_diag(i)
    63366317         enddo
     
    63586339  END DO
    63596340
    6360   RETURN
     6341
    63616342END SUBROUTINE cv30_uncompress
    63626343
    6363         subroutine cv30_epmax_fn_cape(nloc,ncum,nd &
     6344        SUBROUTINE cv30_epmax_fn_cape(nloc,ncum,nd &
    63646345                ,cape,ep,hp,icb,inb,clw,nk,t,h,lv &
    63656346                ,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
    63696351
    63706352        ! On fait varier epmax en fn de la cape
     
    63736355        ! Toutes les autres variables fn de ep sont calculees plus bas.
    63746356
    6375 INCLUDE "cv30param.h"
    6376 INCLUDE "conema3.h"
    6377 
    63786357! inputs:
    6379       integer ncum, nd, nloc
    6380       integer icb(nloc), inb(nloc)
    6381       real cape(nloc)
    6382       real clw(nloc,nd),lv(nloc,nd),t(nloc,nd),h(nloc,nd)
    6383       integer nk(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)
    63846363! inouts:
    6385       real ep(nloc,nd)
    6386       real hp(nloc,nd)
     6364      REAL ep(nloc,nd)
     6365      REAL hp(nloc,nd)
    63876366! outputs ou local
    6388       real epmax_diag(nloc)
     6367      REAL epmax_diag(nloc)
    63896368! locals
    6390       integer i,k   
    6391       real hp_bak(nloc,nd)
     6369      INTEGER i,k
     6370      REAL hp_bak(nloc,nd)
    63926371      CHARACTER (LEN=20) :: modname='cv30_epmax_fn_cape'
    63936372      CHARACTER (LEN=80) :: abort_message
    63946373
    63956374        ! on recalcule ep et hp
    6396        
    6397         if (coef_epmax_cape.gt.1e-12) then
    6398         do i=1,ncum
     6375
     6376        IF (coef_epmax_cape.gt.1e-12) THEN
     6377        DO i=1,ncum
    63996378           epmax_diag(i)=epmax-coef_epmax_cape*sqrt(cape(i))
    6400            do k=1,nl
     6379           DO k=1,nl
    64016380                ep(i,k)=ep(i,k)/epmax*epmax_diag(i)
    64026381                ep(i,k)=amax1(ep(i,k),0.0)
     
    64066385
    64076386! On recalcule hp:
    6408       do k=1,nl
    6409         do i=1,ncum
    6410           hp_bak(i,k)=hp(i,k)
    6411         enddo
     6387      DO k=1,nl
     6388        DO i=1,ncum
     6389      hp_bak(i,k)=hp(i,k)
     6390    enddo
    64126391      enddo
    6413       do k=1,nlp
    6414         do i=1,ncum
    6415           hp(i,k)=h(i,k)
    6416         enddo
     6392      DO k=1,nlp
     6393        DO i=1,ncum
     6394      hp(i,k)=h(i,k)
     6395    enddo
    64176396      enddo
    6418       do k=minorig+1,nl
    6419        do i=1,ncum
    6420         if((k.ge.icb(i)).and.(k.le.inb(i)))then
     6397      DO k=minorig+1,nl
     6398       DO i=1,ncum
     6399        IF((k.ge.icb(i)).AND.(k.le.inb(i)))THEN
    64216400          hp(i,k)=h(i,nk(i))+(lv(i,k)+(cpd-cpv)*t(i,k))*ep(i,k)*clw(i,k)
    64226401        endif
    64236402       enddo
    64246403      enddo !do k=minorig+1,n
    6425 !     write(*,*) 'cv30_routines 6218: hp(1,20)=',hp(1,20)
    6426       do i=1,ncum 
    6427        do k=1,nl
    6428         if (abs(hp_bak(i,k)-hp(i,k)).gt.0.01) then
    6429            write(*,*) 'i,k=',i,k
    6430            write(*,*) 'coef_epmax_cape=',coef_epmax_cape
    6431            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,cpv
     6404!     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
    64426421           CALL abort_physic(modname,abort_message,0)
    64436422        endif
    64446423       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
     6433END MODULE cv30_routines_mod
     6434
     6435
  • LMDZ6/trunk/libf/phylmdiso/cv3_routines.F90

    r5276 r5283  
    1111  USE ioipsl_getin_p_mod, ONLY : getin_p
    1212  use mod_phys_lmdz_para
    13 
     13  USE conema3_mod_h
    1414  IMPLICIT NONE
    1515
     
    3838
    3939  include "cv3param.h"
    40   include "conema3.h"
    4140
    4241  INTEGER, INTENT(IN)              :: nd
     
    14931492  USE cvflag_mod_h, ONLY: icvflag_Tpa, cvflag_grav, cvflag_ice, ok_optim_yield, ok_entrain, ok_homo_tend, &
    14941493          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
    14951495  IMPLICIT NONE
    14961496
     
    15141514
    15151515  include "cv3param.h"
    1516   include "conema3.h"
    15171516  include "YOMCST2.h"
    15181517
     
    47344733#endif
    47354734#endif
    4736   USE cvthermo_mod_h, ONLY: cpd, cpv, cl, ci, rrv, rrd, lv0, lf0, g, rowl, t0, clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl  &
     4735USE 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  &
    47374737          , clmci, eps, epsi, epsim1, ginv, hrd, grav
    47384738  USE cvflag_mod_h, ONLY: icvflag_Tpa, cvflag_grav, cvflag_ice, ok_optim_yield, ok_entrain, ok_homo_tend, &
     
    47414741
    47424742  include "cv3param.h"
    4743   include "conema3.h"
    47444743
    47454744!inputs:
     
    76257624                 , pbase, p, ph, tv, buoy, sig, w0,iflag &
    76267625                 , epmax_diag)
    7627         USE cvthermo_mod_h, ONLY: cpd, cpv, cl, ci, rrv, rrd, lv0, lf0, g, rowl, t0, clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl  &
     7626USE 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  &
    76287628          , clmci, eps, epsi, epsim1, ginv, hrd, grav
    76297629  USE cvflag_mod_h, ONLY: icvflag_Tpa, cvflag_grav, cvflag_ice, ok_optim_yield, ok_entrain, ok_homo_tend, &
     
    76377637
    76387638  include "cv3param.h"
    7639   include "conema3.h"
    76407639
    76417640! inputs:
  • LMDZ6/trunk/libf/phylmdiso/cv_driver.F90

    r5276 r5283  
    4242#endif
    4343#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
    4446  IMPLICIT NONE
    4547
  • LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90

    r5282 r5283  
    444444          , RALPD, RBETD, RGAMD
    445445       USE clesphys_mod_h
     446       USE conema3_mod_h
    446447
    447448    IMPLICIT NONE
     
    12951296    include "FCTTRE.h"
    12961297    !IM 100106 BEG : pouvoir sortir les ctes de la physique
    1297     include "conema3.h"
    12981298    include "nuage.h"
    12991299    include "compbl.h"
Note: See TracChangeset for help on using the changeset viewer.