4       RECURSIVE SUBROUTINE vlx_loc(q,pente_max,masse,u_m,ijb_x,ije_x,iq)
 
   19 #include "dimensions.h" 
   37       INTEGER ij,l,j,i,iju,ijq,indu(
ijnb_u),niju
 
   56       INTEGER ijb,ije,ijb_x,ije_x
 
   68       IF (pente_max.gt.-1.e-5) 
THEN 
   79                dxqu(ij)=q(ij+1,l,iq)-q(ij,l,iq)
 
   83             DO ij=ijb+iip1-1,ije,iip1
 
   89                adxqu(ij)=abs(dxqu(ij))
 
   95                dxqmax(ij,l)=pente_max*
 
   96      ,      min(adxqu(ij-1),adxqu(ij))
 
  103             DO ij=ijb+iip1-1,ije,iip1
 
  104                dxqmax(ij-
iim,l)=dxqmax(ij,l)
 
  110      ,         cvmgp(dxqu(ij-1)+dxqu(ij),0.,dxqu(ij-1)*dxqu(ij))
 
  112                IF(dxqu(ij-1)*dxqu(ij).gt.0) 
THEN 
  113                   dxq(ij,l)=dxqu(ij-1)+dxqu(ij)
 
  119                dxq(ij,l)=0.5*dxq(ij,l)
 
  121      ,         sign(min(abs(dxq(ij,l)),dxqmax(ij,l)),dxq(ij,l))
 
  135                dxqu(ij)=q(ij+1,l,iq)-q(ij,l,iq)
 
  137             DO ij=ijb+iip1-1,ije,iip1
 
  138                dxqu(ij)=dxqu(ij-
iim)
 
  142                zz(ij)=dxqu(ij-1)*dxqu(ij)
 
  145                   dxq(ij,l)=zz(ij)/(dxqu(ij-1)+dxqu(ij))
 
  162          DO ij=ijb+iip1-1,ije,iip1
 
  163             dxq(ij-
iim,l)=dxq(ij,l)
 
  179           zdum(ij,l)=cvmgp(1.-u_m(ij,l)/masse(ij,l,iq),
 
  180      ,                     1.+u_m(ij,l)/masse(ij+1,l,iq),
 
  182           zdum(ij,l)=0.5*zdum(ij,l)
 
  184      ,                q(ij,l,iq)+zdum(ij,l)*dxq(ij,l),
 
  185      ,                q(ij+1,l,iq)-zdum(ij,l)*dxq(ij+1,l),
 
  187           u_mq(ij,l)=u_m(ij,l)*u_mq(ij,l)
 
  200           IF (u_m(ij,l).gt.0.) 
THEN 
  201              zdum(ij,l)=1.-u_m(ij,l)/masse(ij,l,iq)
 
  202              u_mq(ij,l)=u_m(ij,l)*(q(ij,l,iq)
 
  203      :           +0.5*zdum(ij,l)*dxq(ij,l))
 
  205              zdum(ij,l)=1.+u_m(ij,l)/masse(ij+1,l,iq)
 
  206              u_mq(ij,l)=u_m(ij,l)*(q(ij+1,l,iq)
 
  207      :           -0.5*zdum(ij,l)*dxq(ij+1,l))
 
  221             IF(zdum(ij,l).lt.0) 
THEN 
  232        DO ij=ijb+iip1-1,ije,iip1
 
  233           iadvplus(ij,l)=iadvplus(ij-
iim,l)
 
  251             nl(l)=nl(l)+iadvplus(ij,l)
 
  269                   IF(iadvplus(ij,l).eq.1.and.mod(ij,iip1).ne.0) 
THEN 
  287                      do while(zu_m.gt.masse(ijq,l,iq))
 
  288                         u_mq(ij,l)=u_mq(ij,l)
 
  289      &                          +q(ijq,l,iq)*masse(ijq,l,iq)
 
  290                         zu_m=zu_m-masse(ijq,l,iq)
 
  295                      u_mq(ij,l)=u_mq(ij,l)+zu_m*
 
  297      &               (1.-zu_m/masse(ijq,l,iq))*dxq(ijq,l))
 
  302                      do while(-zu_m.gt.masse(ijq,l,iq))
 
  303                         u_mq(ij,l)=u_mq(ij,l)-q(ijq,l,iq)
 
  305                         zu_m=zu_m+masse(ijq,l,iq)
 
  310                      u_mq(ij,l)=u_mq(ij,l)+zu_m*(q(ijq,l,iq)-
 
  311      &               0.5*(1.+zu_m/masse(ijq,l,iq))*dxq(ijq,l))
 
  324         DO ij=ijb+iip1-1,ije,iip1
 
  325            u_mq(ij,l)=u_mq(ij-
iim,l)
 
  343            masse(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq)
 
  344            ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
 
  351          call vlx_loc(ratio,pente_max,masse,u_mq,ijb_x,ije_x,iq2)
 
  362             new_m=masse(ij,l,iq)+u_m(ij-1,l)-u_m(ij,l)
 
  363             q(ij,l,iq)=(q(ij,l,iq)*masse(ij,l,iq)+
 
  364      &        u_mq(ij-1,l)-u_mq(ij,l))
 
  369          DO ij=ijb+iip1-1,ije,iip1
 
  370             q(ij-
iim,l,iq)=q(ij,l,iq)
 
  371             masse(ij-
iim,l,iq)=masse(ij,l,iq)
 
  386             q(ij,l,iq2)=q(ij,l,iq)*ratio(ij,l,iq2)            
 
  388           DO ij=ijb+iip1-1,ije,iip1
 
  389              q(ij-
iim,l,iq2)=q(ij,l,iq2)
 
  405       RECURSIVE SUBROUTINE vly_loc(q,pente_max,masse,masse_adv_v,iq)
 
  421 #include "dimensions.h" 
  425 #include "comconst.h" 
  441       REAL airej2,airejjm,airescb(
iim),airesch(
iim)
 
  446       REAL qpns,qpsn,appn,apps,dyn1,dys1,dyn2,dys2,newmasse,fn,fs
 
  448       Logical extremum,first,testcpu
 
  449       REAL temps0,temps1,temps2,temps3,temps4,temps5,second
 
  450       SAVE temps0,temps1,temps2,temps3,temps4,temps5
 
  455       REAL convpn,convps,convmpn,convmps
 
  456       real massepn,masseps,qpn,qps
 
  457       REAL sinlon(iip1),sinlondlon(iip1)
 
  458       REAL coslon(iip1),coslondlon(iip1)
 
  459       SAVE sinlon,coslon,sinlondlon,coslondlon
 
  472       DATA temps0,temps1,temps2,temps3,temps4,temps5/0.,0.,0.,0.,0.,0./
 
  481          print*,
'Shema  Amont nouveau  appele dans  Vanleer   ' 
  484             coslon(i)=cos(
rlonv(i))
 
  485             sinlon(i)=sin(
rlonv(i))
 
  489          coslon(1)=coslon(iip1)
 
  490          coslondlon(1)=coslondlon(iip1)
 
  491          sinlon(1)=sinlon(iip1)
 
  492          sinlondlon(1)=sinlondlon(iip1)
 
  513           airescb(i) = 
aire(i+ iip1) * q(i+ iip1,l,iq)
 
  515         qpns   = ssum( 
iim,  airescb ,1 ) / airej2
 
  522         qpsn   = ssum( 
iim,  airesch ,1 ) / airejjm
 
  536          dyqv(ij)=q(ij,l,iq)-q(ij+iip1,l,iq)
 
  537          adyqv(ij)=abs(dyqv(ij))
 
  548          dyq(ij,l)=.5*(dyqv(ij-iip1)+dyqv(ij))
 
  549          dyqmax(ij)=min(adyqv(ij-iip1),adyqv(ij))
 
  550          dyqmax(ij)=pente_max*dyqmax(ij)
 
  556            dyq(ij,l)=qpns-q(ij+iip1,l,iq)
 
  562           dyn1=dyn1+sinlondlon(ij)*dyq(ij,l)
 
  563           dyn2=dyn2+coslondlon(ij)*dyq(ij,l)
 
  566           dyq(ij,l)=dyn1*sinlon(ij)+dyn2*coslon(ij)
 
  585           dys1=dys1+sinlondlon(ij)*dyq(
ip1jm+ij,l)
 
  586           dys2=dys2+coslondlon(ij)*dyq(
ip1jm+ij,l)
 
  590           dyq(
ip1jm+ij,l)=dys1*sinlon(ij)+dys2*coslon(ij)
 
  695          IF(dyqv(ij)*dyqv(ij-iip1).gt.0.) 
THEN 
  696             dyq(ij,l)=sign(min(abs(dyq(ij,l)),dyqmax(ij)),dyq(ij,l))
 
  713           IF(masse_adv_v(ij,l).gt.0) 
THEN 
  714               qbyv(ij,l)=q(ij+iip1,l,iq)+dyq(ij+iip1,l)*
 
  715      ,                   0.5*(1.-masse_adv_v(ij,l)
 
  716      ,                   /masse(ij+iip1,l,iq))
 
  718               qbyv(ij,l)=q(ij,l,iq)-dyq(ij,l)*
 
  719      ,                   0.5*(1.+masse_adv_v(ij,l)/masse(ij,l,iq))
 
  721           qbyv(ij,l)=masse_adv_v(ij,l)*qbyv(ij,l)
 
  741            masse(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq)
 
  742            ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)     
 
  750          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)
 
  766             q(ij,l,iq)=(q(ij,l,iq)*masse(ij,l,iq)+qbyv(ij,l)
 
  767      &         -qbyv(ij-iip1,l))/newmasse
 
  769             masse(ij,l,iq)=newmasse
 
  778            convpn=ssum(
iim,qbyv(1,l),1)
 
  779            convmpn=ssum(
iim,masse_adv_v(1,l),1)
 
  780            massepn=ssum(
iim,masse(1,l,iq),1)
 
  783               qpn=qpn+masse(ij,l,iq)*q(ij,l,iq)
 
  785            qpn=(qpn+convpn)/(massepn+convmpn)
 
  798            masseps=ssum(
iim, masse(
ip1jm+1,l,iq),1)
 
  801               qps=qps+masse(ij,l,iq)*q(ij,l,iq)
 
  803            qps=(qps+convps)/(masseps+convmps)
 
  847             q(ij,l,iq2)=q(ij,l,iq)*ratio(ij,l,iq2)            
 
  860       RECURSIVE SUBROUTINE vlz_loc(q,pente_max,masse,w,ijb_x,ije_x,iq)
 
  877 #include "dimensions.h" 
  881 #include "comconst.h" 
  904       REAL temps0,temps1,temps2,temps3,temps4,temps5,second
 
  905       SAVE temps0,temps1,temps2,temps3,temps4,temps5
 
  911       DATA testcpu/.
false./
 
  912       DATA temps0,temps1,temps2,temps3,temps4,temps5/0.,0.,0.,0.,0.,0./
 
  913       INTEGER ijb,ije,ijb_x,ije_x
 
  914       LOGICAL,
SAVE :: first=.
true.
 
  941             dzqw(ij,l)=q(ij,l-1,iq)-q(ij,l,iq)
 
  954             IF(
dzqw(ij,l)*
dzqw(ij,l+1).gt.0.) 
THEN 
  960             dzqmax=pente_max*min(
adzqw(ij,l),
adzqw(ij,l+1))
 
  961             dzq(ij,l)=sign(min(abs(
dzq(ij,l)),dzqmax),
dzq(ij,l))
 
  975          temps1=temps1+second(0.)-temps0
 
  988           IF(w(ij,l+1,iq).gt.0.) 
THEN 
  989              sigw=w(ij,l+1,iq)/masse(ij,l+1,iq)
 
  990              wq(ij,l+1,iq)=w(ij,l+1,iq)*(q(ij,l+1,iq)
 
  991      :           +0.5*(1.-sigw)*
dzq(ij,l+1))
 
  993              sigw=w(ij,l+1,iq)/masse(ij,l,iq)
 
  994              wq(ij,l+1,iq)=w(ij,l+1,iq)*(q(ij,l,iq)
 
  995      :           -0.5*(1.+sigw)*
dzq(ij,l))
 
 1013       if (
nqfils(iq).gt.0) 
then   
 1019            masse(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq)
 
 1020            ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
 
 1022            w(ij,l,iq2)=
wq(ij,l,iq)
 
 1043             newmasse=masse(ij,l,iq)+w(ij,l+1,iq)-w(ij,l,iq)
 
 1044             q(ij,l,iq)=(q(ij,l,iq)*masse(ij,l,iq)
 
 1045      &         +
wq(ij,l+1,iq)-
wq(ij,l,iq))
 
 1047             masse(ij,l,iq)=newmasse
 
 1054       if (
nqfils(iq).gt.0) 
then   
 1060             q(ij,l,iq2)=q(ij,l,iq)*
ratio(ij,l,iq2)            
 
real, dimension(:,:), pointer, save dzqw
 
!$Header llmm1 INTEGER ip1jmp1
 
integer, dimension(:), allocatable, save nqdesc
 
recursive subroutine vlx_loc(q, pente_max, masse, u_m, ijb_x, ije_x, 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
 
real, dimension(:,:), pointer, save adzqw
 
!$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
 
real, dimension(:,:), pointer, save dzq
 
!$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
 
real, dimension(:,:,:), pointer, save wq
 
c c zjulian c cym CALL iim cym klev iim
 
real, dimension(:,:,:), pointer, save ratio
 
recursive subroutine vlz_loc(q, pente_max, masse, w, ijb_x, ije_x, iq)
 
!$Header!CDK comgeom COMMON comgeom rlonv