5       SUBROUTINE vlsplt_p(q,pente_max,masse,w,pbaru,pbarv,pdt)
 
   25 #include "dimensions.h" 
   45       INTEGER ijlqmin,iqmin,jqmin,lqmin
 
   53       REAL second,temps0,temps1,temps2,temps3
 
   54       REAL ztemps1,ztemps2,ztemps3
 
   58       SAVE temps1,temps2,temps3
 
   62       DATA qmin,qmax/0.,1.e33/
 
   64       DATA temps1,temps2,temps3/0.,0.,0./
 
   69       call settag(myrequest1,100)
 
   70       call settag(myrequest2,101)
 
   82             mu(ij,l)=pbaru(ij,l) * zzpbar
 
   93            mv(ij,l)=pbarv(ij,l) * zzpbar
 
  102            mw(ij,l)=w(ij,l) * zzw
 
  115        zq(ijb:ije,:)=q(ijb:ije,:)
 
  116        zm(ijb:ije,:)=masse(ijb:ije,:)
 
  142       call vly_p(zq,pente_max,zm,mv)
 
  163       call vly_p(zq,pente_max,zm,mv)
 
  182          DO ij=ijb,ije-iip1+1,iip1
 
  194       SUBROUTINE vlx_p(q,pente_max,masse,u_m,ijb_x,ije_x)
 
  208 #include "dimensions.h" 
  212 #include "comconst.h" 
  225       INTEGER ij,l,j,i,iju,ijq,indu(
ip1jmp1),niju
 
  241       INTEGER ijb,ije,ijb_x,ije_x
 
  251       IF (pente_max.gt.-1.e-5) 
THEN 
  262                dxqu(ij)=q(ij+1,l)-q(ij,l)
 
  266             DO ij=ijb+iip1-1,ije,iip1
 
  267                dxqu(ij)=dxqu(ij-
iim)
 
  272                adxqu(ij)=abs(dxqu(ij))
 
  278                dxqmax(ij,l)=pente_max*
 
  279      ,      min(adxqu(ij-1),adxqu(ij))
 
  286             DO ij=ijb+iip1-1,ije,iip1
 
  287                dxqmax(ij-
iim,l)=dxqmax(ij,l)
 
  293      ,         cvmgp(dxqu(ij-1)+dxqu(ij),0.,dxqu(ij-1)*dxqu(ij))
 
  295                IF(dxqu(ij-1)*dxqu(ij).gt.0) 
THEN 
  296                   dxq(ij,l)=dxqu(ij-1)+dxqu(ij)
 
  302                dxq(ij,l)=0.5*dxq(ij,l)
 
  304      ,         sign(min(abs(dxq(ij,l)),dxqmax(ij,l)),dxq(ij,l))
 
  318                dxqu(ij)=q(ij+1,l)-q(ij,l)
 
  320             DO ij=ijb+iip1-1,ije,iip1
 
  321                dxqu(ij)=dxqu(ij-
iim)
 
  325                zz(ij)=dxqu(ij-1)*dxqu(ij)
 
  328                   dxq(ij,l)=zz(ij)/(dxqu(ij-1)+dxqu(ij))
 
  343          DO ij=ijb+iip1-1,ije,iip1
 
  344             dxq(ij-
iim,l)=dxq(ij,l)
 
  360           zdum(ij,l)=cvmgp(1.-u_m(ij,l)/masse(ij,l),
 
  361      ,                     1.+u_m(ij,l)/masse(ij+1,l),
 
  363           zdum(ij,l)=0.5*zdum(ij,l)
 
  365      ,                q(ij,l)+zdum(ij,l)*dxq(ij,l),
 
  366      ,                q(ij+1,l)-zdum(ij,l)*dxq(ij+1,l),
 
  368           u_mq(ij,l)=u_m(ij,l)*u_mq(ij,l)
 
  380           IF (u_m(ij,l).gt.0.) 
THEN 
  381              zdum(ij,l)=1.-u_m(ij,l)/masse(ij,l)
 
  382              u_mq(ij,l)=u_m(ij,l)*(q(ij,l)+0.5*zdum(ij,l)*dxq(ij,l))
 
  384              zdum(ij,l)=1.+u_m(ij,l)/masse(ij+1,l)
 
  385              u_mq(ij,l)=u_m(ij,l)*(q(ij+1,l)-0.5*zdum(ij,l)*dxq(ij+1,l))
 
  399             IF(zdum(ij,l).lt.0) 
THEN 
  409        DO ij=ijb+iip1-1,ije,iip1
 
  410           iadvplus(ij,l)=iadvplus(ij-
iim,l)
 
  428             nl(l)=nl(l)+iadvplus(ij,l)
 
  444                   IF(iadvplus(ij,l).eq.1.and.mod(ij,iip1).ne.0) 
THEN 
  462                      do while(zu_m.gt.masse(ijq,l))
 
  463                         u_mq(ij,l)=u_mq(ij,l)+q(ijq,l)*masse(ijq,l)
 
  464                         zu_m=zu_m-masse(ijq,l)
 
  469                      u_mq(ij,l)=u_mq(ij,l)+zu_m*
 
  470      &               (q(ijq,l)+0.5*(1.-zu_m/masse(ijq,l))*dxq(ijq,l))
 
  475                      do while(-zu_m.gt.masse(ijq,l))
 
  476                         u_mq(ij,l)=u_mq(ij,l)-q(ijq,l)*masse(ijq,l)
 
  477                         zu_m=zu_m+masse(ijq,l)
 
  482                      u_mq(ij,l)=u_mq(ij,l)+zu_m*(q(ijq,l)-
 
  483      &               0.5*(1.+zu_m/masse(ijq,l))*dxq(ijq,l))
 
  497         DO ij=ijb+iip1-1,ije,iip1
 
  498            u_mq(ij,l)=u_mq(ij-
iim,l)
 
  507             new_m=masse(ij,l)+u_m(ij-1,l)-u_m(ij,l)
 
  508             q(ij,l)=(q(ij,l)*masse(ij,l)+
 
  509      &      u_mq(ij-1,l)-u_mq(ij,l))
 
  514          DO ij=ijb+iip1-1,ije,iip1
 
  516             masse(ij-
iim,l)=masse(ij,l)
 
  528       SUBROUTINE vly_p(q,pente_max,masse,masse_adv_v)
 
  543 #include "dimensions.h" 
  547 #include "comconst.h" 
  562       REAL airej2,airejjm,airescb(
iim),airesch(
iim)
 
  567       REAL qpns,qpsn,appn,apps,dyn1,dys1,dyn2,dys2,newmasse,fn,fs
 
  569       Logical extremum,first,testcpu
 
  570       REAL temps0,temps1,temps2,temps3,temps4,temps5,second
 
  571       SAVE temps0,temps1,temps2,temps3,temps4,temps5
 
  576       REAL convpn,convps,convmpn,convmps
 
  577       real massepn,masseps,qpn,qps
 
  578       REAL sinlon(iip1),sinlondlon(iip1)
 
  579       REAL coslon(iip1),coslondlon(iip1)
 
  580       SAVE sinlon,coslon,sinlondlon,coslondlon
 
  590       DATA temps0,temps1,temps2,temps3,temps4,temps5/0.,0.,0.,0.,0.,0./
 
  597             coslon(i)=cos(
rlonv(i))
 
  598             sinlon(i)=sin(
rlonv(i))
 
  602          coslon(1)=coslon(iip1)
 
  603          coslondlon(1)=coslondlon(iip1)
 
  604          sinlon(1)=sinlon(iip1)
 
  605          sinlondlon(1)=sinlondlon(iip1)
 
  626           airescb(i) = 
aire(i+ iip1) * q(i+ iip1,l)
 
  628         qpns   = ssum( 
iim,  airescb ,1 ) / airej2
 
  635         qpsn   = ssum( 
iim,  airesch ,1 ) / airejjm
 
  648          dyqv(ij)=q(ij,l)-q(ij+iip1,l)
 
  649          adyqv(ij)=abs(dyqv(ij))
 
  659          dyq(ij,l)=.5*(dyqv(ij-iip1)+dyqv(ij))
 
  660          dyqmax(ij)=min(adyqv(ij-iip1),adyqv(ij))
 
  661          dyqmax(ij)=pente_max*dyqmax(ij)
 
  667            dyq(ij,l)=qpns-q(ij+iip1,l)
 
  673           dyn1=dyn1+sinlondlon(ij)*dyq(ij,l)
 
  674           dyn2=dyn2+coslondlon(ij)*dyq(ij,l)
 
  677           dyq(ij,l)=dyn1*sinlon(ij)+dyn2*coslon(ij)
 
  696           dys1=dys1+sinlondlon(ij)*dyq(
ip1jm+ij,l)
 
  697           dys2=dys2+coslondlon(ij)*dyq(
ip1jm+ij,l)
 
  701           dyq(
ip1jm+ij,l)=dys1*sinlon(ij)+dys2*coslon(ij)
 
  806          IF(dyqv(ij)*dyqv(ij-iip1).gt.0.) 
THEN 
  807             dyq(ij,l)=sign(min(abs(dyq(ij,l)),dyqmax(ij)),dyq(ij,l))
 
  824           IF(masse_adv_v(ij,l).gt.0) 
THEN 
  825               qbyv(ij,l)=q(ij+iip1,l)+dyq(ij+iip1,l)*
 
  826      ,                   0.5*(1.-masse_adv_v(ij,l)/masse(ij+iip1,l))
 
  828               qbyv(ij,l)=q(ij,l)-dyq(ij,l)*
 
  829      ,                   0.5*(1.+masse_adv_v(ij,l)/masse(ij,l))
 
  831           qbyv(ij,l)=masse_adv_v(ij,l)*qbyv(ij,l)
 
  845      &      +masse_adv_v(ij,l)-masse_adv_v(ij-iip1,l)
 
  847             q(ij,l)=(q(ij,l)*masse(ij,l)+qbyv(ij,l)-qbyv(ij-iip1,l))
 
  855            convpn=ssum(
iim,qbyv(1,l),1)
 
  856            convmpn=ssum(
iim,masse_adv_v(1,l),1)
 
  857            massepn=ssum(
iim,masse(1,l),1)
 
  860               qpn=qpn+masse(ij,l)*q(ij,l)
 
  862            qpn=(qpn+convpn)/(massepn+convmpn)
 
  875            masseps=ssum(
iim, masse(
ip1jm+1,l),1)
 
  878               qps=qps+masse(ij,l)*q(ij,l)
 
  880            qps=(qps+convps)/(masseps+convmps)
 
  917       SUBROUTINE vlz_p(q,pente_max,masse,w,ijb_x,ije_x)
 
  932 #include "dimensions.h" 
  936 #include "comconst.h" 
  960       REAL temps0,temps1,temps2,temps3,temps4,temps5,second
 
  961       SAVE temps0,temps1,temps2,temps3,temps4,temps5
 
  967       DATA testcpu/.
false./
 
  968       DATA temps0,temps1,temps2,temps3,temps4,temps5/0.,0.,0.,0.,0.,0./
 
  969       INTEGER ijb,ije,ijb_x,ije_x
 
  985             dzqw(ij,l)=q(ij,l-1)-q(ij,l)
 
  986             adzqw(ij,l)=abs(dzqw(ij,l))
 
  996      ,      cvmgp(dzqw(ij,l)+dzqw(ij,l+1),0.,dzqw(ij,l)*dzqw(ij,l+1))
 
  998             IF(dzqw(ij,l)*dzqw(ij,l+1).gt.0.) 
THEN 
  999                 dzq(ij,l)=0.5*(dzqw(ij,l)+dzqw(ij,l+1))
 
 1004             dzqmax=pente_max*min(adzqw(ij,l),adzqw(ij,l+1))
 
 1005             dzq(ij,l)=sign(min(abs(dzq(ij,l)),dzqmax),dzq(ij,l))
 
 1019          temps1=temps1+second(0.)-temps0
 
 1031           IF(w(ij,l+1).gt.0.) 
THEN 
 1032              sigw=w(ij,l+1)/masse(ij,l+1)
 
 1033              wq(ij,l+1)=w(ij,l+1)*(q(ij,l+1)+0.5*(1.-sigw)*dzq(ij,l+1))
 
 1035              sigw=w(ij,l+1)/masse(ij,l)
 
 1036              wq(ij,l+1)=w(ij,l+1)*(q(ij,l)-0.5*(1.+sigw)*dzq(ij,l))
 
 1053             newmasse=masse(ij,l)+w(ij,l+1)-w(ij,l)
 
 1054             q(ij,l)=(q(ij,l)*masse(ij,l)+wq(ij,l+1)-wq(ij,l))
 
 1056             masse(ij,l)=newmasse
 
 1096       subroutine minmaxq_p(zq,qmin,qmax,comment)
 
 1098 #include "dimensions.h" 
 1099 #include "paramet.h" 
 1101       character*20 comment
 
 1106       integer imin,jmin,lmin,ijlmin
 
 1107       integer imax,jmax,lmax,ijlmax
 
 1114       ijlmin=ismin(ijp1llm,zq,1)
 
 1116       ijlmin=ijlmin-(lmin-1.)*
ip1jmp1 
 1117       jmin=(ijlmin-1)/iip1+1
 
 1118       imin=ijlmin-(jmin-1.)*iip1
 
 1119       zqmin=zq(ijlmin,lmin)
 
 1121       ijlmax=ismax(ijp1llm,zq,1)
 
 1123       ijlmax=ijlmax-(lmax-1.)*
ip1jmp1 
 1124       jmax=(ijlmax-1)/iip1+1
 
 1125       imax=ijlmax-(jmax-1.)*iip1
 
 1126       zqmax=zq(ijlmax,lmax)
 
 1130      s     
write(*,*) comment,
 
 1131      s     imin,jmin,lmin,zqmin,zzq(imin,jmin,lmin)
 
 1134      s     
write(*,*) comment,
 
 1135      s     imax,jmax,lmax,zqmax,zzq(imax,jmax,lmax)
 
 1138 9999  
format(a20,
'  q(',i3,
',',i2,
',',i2,
')=',e12.5,e12.5)
 
!$Header llmm1 INTEGER ip1jmp1
 
subroutine register_hallo(Field, ij, ll, RUp, Rdown, SUp, SDown, a_request)
 
subroutine minmaxq_p(zq, qmin, qmax, comment)
 
subroutine vlsplt_p(q, pente_max, masse, w, pbaru, pbarv, pdt)
 
!$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
 
subroutine scopy(n, sx, incx, sy, incy)
 
!$Header llmm1 INTEGER ip1jm
 
!$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
 
integer, parameter vthallo
 
!$Header!CDK comgeom COMMON comgeom rlonu
 
subroutine sendrequest(a_Request)
 
!$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
 
subroutine waitrecvrequest(a_Request)
 
subroutine vlz_p(q, pente_max, masse, w, ijb_x, ije_x)
 
subroutine vly_p(q, pente_max, masse, masse_adv_v)
 
subroutine waitsendrequest(a_Request)
 
c c zjulian c cym CALL iim cym klev iim
 
subroutine vlx_p(q, pente_max, masse, u_m, ijb_x, ije_x)
 
subroutine settag(a_request, tag)
 
!$Header!CDK comgeom COMMON comgeom rlonv