1       SUBROUTINE vlxqs_loc(q,pente_max,masse,u_m,qsat,ijb_x,ije_x,iq)
 
   14 #include "dimensions.h" 
   32       INTEGER ij,l,j,i,iju,ijq,indu(
ijnb_u),niju
 
   47       INTEGER ijb,ije,ijb_x,ije_x
 
   63       IF (pente_max.gt.-1.e-5) 
THEN 
   74                dxqu(ij)=q(ij+1,l,iq)-q(ij,l,iq)
 
   78             DO ij=ijb+iip1-1,ije,iip1
 
   84                adxqu(ij)=abs(dxqu(ij))
 
   90                dxqmax(ij,l)=pente_max*
 
   91      ,      min(adxqu(ij-1),adxqu(ij))
 
   98             DO ij=ijb+iip1-1,ije,iip1
 
   99                dxqmax(ij-
iim,l)=dxqmax(ij,l)
 
  105      ,         cvmgp(dxqu(ij-1)+dxqu(ij),0.,dxqu(ij-1)*dxqu(ij))
 
  107                IF(dxqu(ij-1)*dxqu(ij).gt.0) 
THEN 
  108                   dxq(ij,l)=dxqu(ij-1)+dxqu(ij)
 
  114                dxq(ij,l)=0.5*dxq(ij,l)
 
  116      ,         sign(min(abs(dxq(ij,l)),dxqmax(ij,l)),dxq(ij,l))
 
  129                dxqu(ij)=q(ij+1,l,iq)-q(ij,l,iq)
 
  131             DO ij=ijb+iip1-1,ije,iip1
 
  132                dxqu(ij)=dxqu(ij-
iim)
 
  136                zz(ij)=dxqu(ij-1)*dxqu(ij)
 
  139                   dxq(ij,l)=zz(ij)/(dxqu(ij-1)+dxqu(ij))
 
  154          DO ij=ijb+iip1-1,ije,iip1
 
  155             dxq(ij-
iim,l)=dxq(ij,l)
 
  188           zdum(ij,l)=cvmgp(1.-u_m(ij,l)/masse(ij,l,iq),
 
  189      ,                     1.+u_m(ij,l)/masse(ij+1,l,iq),
 
  191           zdum(ij,l)=0.5*zdum(ij,l)
 
  193      ,                q(ij,l,iq)+zdum(ij,l)*dxq(ij,l),
 
  194      ,                q(ij+1,l,iq)-zdum(ij,l)*dxq(ij+1,l),
 
  196           u_mq(ij,l)=u_m(ij,l)*u_mq(ij,l)
 
  208           IF (u_m(ij,l).gt.0.) 
THEN 
  209              zdum(ij,l)=1.-u_m(ij,l)/masse(ij,l,iq)
 
  210              u_mq(ij,l)=u_m(ij,l)*
 
  211      $         min(q(ij,l,iq)+0.5*zdum(ij,l)*dxq(ij,l),qsat(ij+1,l))
 
  213              zdum(ij,l)=1.+u_m(ij,l)/masse(ij+1,l,iq)
 
  214              u_mq(ij,l)=u_m(ij,l)*
 
  215      $         min(q(ij+1,l,iq)-0.5*zdum(ij,l)*dxq(ij+1,l),qsat(ij,l))
 
  228             IF(zdum(ij,l).lt.0) 
THEN 
  238        DO ij=ijb+iip1-1,ije,iip1
 
  239           iadvplus(ij,l)=iadvplus(ij-
iim,l)
 
  259             nl(l)=nl(l)+iadvplus(ij,l)
 
  276                   IF(iadvplus(ij,l).eq.1.and.mod(ij,iip1).ne.0) 
THEN 
  294                      do while(zu_m.gt.masse(ijq,l,iq))
 
  295                         u_mq(ij,l)=u_mq(ij,l)+q(ijq,l,iq)
 
  297                         zu_m=zu_m-masse(ijq,l,iq)
 
  302                      u_mq(ij,l)=u_mq(ij,l)+zu_m*(q(ijq,l,iq)
 
  303      &                 +0.5*(1.-zu_m/masse(ijq,l,iq))*dxq(ijq,l))
 
  308                      do while(-zu_m.gt.masse(ijq,l,iq))
 
  309                         u_mq(ij,l)=u_mq(ij,l)-q(ijq,l,iq)
 
  311                         zu_m=zu_m+masse(ijq,l,iq)
 
  316                      u_mq(ij,l)=u_mq(ij,l)+zu_m*(q(ijq,l,iq)-
 
  317      &               0.5*(1.+zu_m/masse(ijq,l,iq))*dxq(ijq,l))
 
  330         DO ij=ijb+iip1-1,ije,iip1
 
  331            u_mq(ij,l)=u_mq(ij-
iim,l)
 
  347            masse(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq)
 
  348            ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)      
 
  356          call vlx_loc(ratio,pente_max,masse,u_mq,ijb_x,ije_x,iq2)
 
  367             new_m=masse(ij,l,iq)+u_m(ij-1,l)-u_m(ij,l)
 
  368             q(ij,l,iq)=(q(ij,l,iq)*masse(ij,l,iq)+
 
  369      &      u_mq(ij-1,l)-u_mq(ij,l))
 
  374          DO ij=ijb+iip1-1,ije,iip1
 
  375             q(ij-
iim,l,iq)=q(ij,l,iq)
 
  376             masse(ij-
iim,l,iq)=masse(ij,l,iq)
 
  390             q(ij,l,iq2)=q(ij,l,iq)*ratio(ij,l,iq2)            
 
  392           DO ij=ijb+iip1-1,ije,iip1
 
  393              q(ij-
iim,l,iq2)=q(ij,l,iq2)
 
  408       SUBROUTINE vlyqs_loc(q,pente_max,masse,masse_adv_v,qsat,iq)
 
  424 #include "dimensions.h" 
  428 #include "comconst.h" 
  445       REAL airej2,airejjm,airescb(
iim),airesch(
iim)
 
  450       REAL qpns,qpsn,dyn1,dys1,dyn2,dys2,newmasse,fn,fs
 
  455       REAL convpn,convps,convmpn,convmps
 
  456       REAL sinlon(iip1),sinlondlon(iip1)
 
  457       REAL coslon(iip1),coslondlon(iip1)
 
  458       SAVE sinlon,coslon,sinlondlon,coslondlon
 
  478       if ((ij.ge.ijb).and.(ij.le.ije)) 
then 
  484          print*,
'Shema  Amont nouveau  appele dans  Vanleer   ' 
  485          print*,
'vlyqs_loc, iq=',iq
 
  488             coslon(i)=cos(
rlonv(i))
 
  489             sinlon(i)=sin(
rlonv(i))
 
  493          coslon(1)=coslon(iip1)
 
  494          coslondlon(1)=coslondlon(iip1)
 
  495          sinlon(1)=sinlon(iip1)
 
  496          sinlondlon(1)=sinlondlon(iip1)
 
  516           airescb(i) = 
aire(i+ iip1) * q(i+ iip1,l,iq)
 
  518         qpns   = ssum( 
iim,  airescb ,1 ) / airej2
 
  525         qpsn   = ssum( 
iim,  airesch ,1 ) / airejjm
 
  537          dyqv(ij)=q(ij,l,iq)-q(ij+iip1,l,iq)
 
  538          adyqv(ij)=abs(dyqv(ij))
 
  550          dyq(ij,l)=.5*(dyqv(ij-iip1)+dyqv(ij))
 
  551          dyqmax(ij)=min(adyqv(ij-iip1),adyqv(ij))
 
  552          dyqmax(ij)=pente_max*dyqmax(ij)
 
  559            dyq(ij,l)=qpns-q(ij+iip1,l,iq)
 
  566           dyn1=dyn1+sinlondlon(ij)*dyq(ij,l)
 
  567           dyn2=dyn2+coslondlon(ij)*dyq(ij,l)
 
  570           dyq(ij,l)=dyn1*sinlon(ij)+dyn2*coslon(ij)
 
  576           IF(pente_max*adyqv(ij).lt.abs(dyq(ij,l))) 
THEN 
  577             fn=min(pente_max*adyqv(ij)/abs(dyq(ij,l)),fn)
 
  582          dyq(ij,l)=fn*dyq(ij,l)
 
  597           dys1=dys1+sinlondlon(ij)*dyq(
ip1jm+ij,l)
 
  598           dys2=dys2+coslondlon(ij)*dyq(
ip1jm+ij,l)
 
  602           dyq(
ip1jm+ij,l)=dys1*sinlon(ij)+dys2*coslon(ij)
 
  608         IF(pente_max*adyqv(ij+
ip1jm-iip1).lt.abs(dyq(ij+
ip1jm,l))) 
THEN 
  609          fs=min(pente_max*adyqv(ij+
ip1jm-iip1)/abs(dyq(ij+
ip1jm,l)),fs)
 
  694          IF(dyqv(ij)*dyqv(ij-iip1).gt.0.) 
THEN 
  695             dyq(ij,l)=sign(min(abs(dyq(ij,l)),dyqmax(ij)),dyq(ij,l))
 
  712          IF( masse_adv_v(ij,l).GT.0. ) 
THEN 
  713            qbyv(ij,l,iq)= min( qsat(ij+iip1,l), q(ij+iip1,l,iq )  +
 
  714      ,      dyq(ij+iip1,l)*0.5*(1.-masse_adv_v(ij,l)
 
  715      ,      /masse(ij+iip1,l,iq)))
 
  717               qbyv(ij,l,iq)= min( qsat(ij,l), q(ij,l,iq) - dyq(ij,l) *
 
  718      ,                   0.5*(1.+masse_adv_v(ij,l)/masse(ij,l,iq)) )
 
  720           qbyv(ij,l,iq) = masse_adv_v(ij,l)*qbyv(ij,l,iq)
 
  740            masse(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq)
 
  741            ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)   
 
  748          call vly_loc(ratio,pente_max,masse,qbyv,iq2)
 
  763             newmasse=masse(ij,l,iq)
 
  764      &      +masse_adv_v(ij,l)-masse_adv_v(ij-iip1,l)
 
  765             q(ij,l,iq)=(q(ij,l,iq)*masse(ij,l,iq)+qbyv(ij,l,iq)
 
  766      &         -qbyv(ij-iip1,l,iq))/newmasse
 
  767             masse(ij,l,iq)=newmasse
 
  773            convpn=ssum(
iim,qbyv(1,l,iq),1)/
apoln 
  774            convmpn=ssum(
iim,masse_adv_v(1,l),1)/
apoln 
  776               newmasse=masse(ij,l,iq)+convmpn*
aire(ij)
 
  777               q(ij,l,iq)=(q(ij,l,iq)*masse(ij,l,iq)+convpn*
aire(ij))/
 
  779               masse(ij,l,iq)=newmasse
 
  789               newmasse=masse(ij,l,iq)+convmps*
aire(ij)
 
  790               q(ij,l,iq)=(q(ij,l,iq)*masse(ij,l,iq)+convps*
aire(ij))/
 
  792               masse(ij,l,iq)=newmasse
 
  835             q(ij,l,iq2)=q(ij,l,iq)*ratio(ij,l,iq2)            
 
!$Header llmm1 INTEGER ip1jmp1
 
subroutine vlxqs_loc(q, pente_max, masse, u_m, qsat, ijb_x, ije_x, iq)
 
integer, dimension(:), allocatable, save nqdesc
 
!$Header!CDK comgeom COMMON comgeom apols
 
recursive subroutine vlx_loc(q, pente_max, masse, u_m, ijb_x, ije_x, iq)
 
subroutine vlyqs_loc(q, pente_max, masse, masse_adv_v, qsat, iq)
 
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga u_toga vq_toga w_prof vq_prof llm day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof vg_profd w_profd omega_profd!do llm!print llm l llm
 
!$Id mode_top_bound COMMON comconstr && pi
 
!$Header!CDK comgeom COMMON comgeom aire
 
integer, dimension(:,:), allocatable, save iqfils
 
!$Header llmm1 INTEGER ip1jm
 
!$Header!CDK comgeom COMMON comgeom apoln
 
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
 
!$Header!CDK comgeom COMMON comgeom rlonu
 
recursive subroutine vly_loc(q, pente_max, masse, masse_adv_v, iq)
 
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
 
integer, dimension(:), allocatable, save nqfils
 
c c zjulian c cym CALL iim cym klev iim
 
!$Header!CDK comgeom COMMON comgeom rlonv