4       SUBROUTINE prather (q,w,masse,pbaru,pbarv,nt,dt)
 
   21 #include "dimensions.h" 
   50       real sxn(iip1),sxs(iip1)
 
   52       real sinlon(iip1),sinlondlon(iip1)
 
   53       real coslon(iip1),coslondlon(iip1)
 
   56       save sinlon,coslon,sinlondlon,coslondlon
 
   57       real dyn1,dyn2,dys1,dys2,qpn,qps,dqzpn,dqzps
 
   62       EXTERNAL  ssum, ismin,ismax
 
   69       data qmin,qmax/-1.e33,1.e33/
 
   82          print*,
'SCHEMA PRATHER' 
   85             coslon(i)=cos(
rlonv(i))
 
   86             sinlon(i)=sin(
rlonv(i))
 
   90          coslon(1)=coslon(iip1)
 
   91          coslondlon(1)=coslondlon(iip1)
 
   92          sinlon(1)=sinlon(iip1)
 
   93          sinlondlon(1)=sinlondlon(iip1)
 
  118          sm( i,j,
llm+1-l ) =masse(i,j,l)
 
  130        s0( i,j,l) = q( i,j,
llm+1-l,0 )*sm(i,j,l)
 
  131        sx( i,j,l) = q( i,j,
llm+1-l,1 )*sm(i,j,l)
 
  132        sy( i,j,l) = q( i,j,
llm+1-l,2)*sm(i,j,l)
 
  133        sz( i,j,l) = q( i,j,
llm+1-l,3)*sm(i,j,l)
 
  134        sxx( i,j,l) = q( i,j,
llm+1-l,4)*sm(i,j,l)
 
  135        sxy( i,j,l) = q( i,j,
llm+1-l,5)*sm(i,j,l)
 
  136        sxz( i,j,l) = q( i,j,
llm+1-l,6)*sm(i,j,l)
 
  137        syy( i,j,l) = q( i,j,
llm+1-l,7)*sm(i,j,l)
 
  138        syz( i,j,l) = q( i,j,
llm+1-l,8)*sm(i,j,l)
 
  139        szz( i,j,l) = q( i,j,
llm+1-l,9)*sm(i,j,l)
 
  148        call advxp( 
limit,0.5*dt,pbaru,sm,s0,sx,sy,sz
 
  149      .             ,sxx,sxy,sxz,syy,syz,szz,1 )
 
  158        call advyp( 
limit,.5*dt*nt,pbarv,sm,s0,sx,sy,sz
 
  159      .             ,sxx,sxy,sxz,syy,syz,szz,1 )
 
  176      .             ,sxx,sxy,sxz,syy,syz,szz,1 )
 
  187        call advyp( 
limit,.5*dt*nt,pbarv,sm,s0,sx,sy,sz
 
  188      .             ,sxx,sxy,sxz,syy,syz,szz,1 )
 
  192              s0( iip1,j,l)=s0( 1,j,l )
 
  193              sx( iip1,j,l)=sx( 1,j,l )
 
  194              sy( iip1,j,l)=sy( 1,j,l )
 
  195              sz( iip1,j,l)=sz( 1,j,l )
 
  196              sxx( iip1,j,l)=sxx( 1,j,l )
 
  197              sxy( iip1,j,l)=sxy( 1,j,l) 
 
  198              sxz( iip1,j,l)=sxz( 1,j,l )
 
  199              syy( iip1,j,l)=syy( 1,j,l )
 
  200              syz( iip1,j,l)=syz( 1,j,l)
 
  201              szz( iip1,j,l)=szz( 1,j,l )
 
  205        call advxp( 
limit,0.5*dt,pbaru,sm,s0,sx,sy,sz
 
  206      .             ,sxx,sxy,sxz,syy,syz,szz,1 )
 
  216       q( i,j,
llm+1-l,0 )=s0( i,j,l )/sm(i,j,l)
 
  217       q( i,j,
llm+1-l,1 ) = sx( i,j,l )/sm(i,j,l)
 
  218       q( i,j,
llm+1-l,2 ) = sy( i,j,l )/sm(i,j,l)
 
  219       q( i,j,
llm+1-l,3 ) = sz( i,j,l )/sm(i,j,l)
 
  220       q( i,j,
llm+1-l,4 ) = sxx( i,j,l )/sm(i,j,l)
 
  221       q( i,j,
llm+1-l,5 ) = sxy( i,j,l )/sm(i,j,l)
 
  222       q( i,j,
llm+1-l,6 ) = sxz( i,j,l )/sm(i,j,l)
 
  223       q( i,j,
llm+1-l,7 ) = syy( i,j,l )/sm(i,j,l)
 
  224       q( i,j,
llm+1-l,8 ) = syz( i,j,l )/sm(i,j,l)
 
  225       q( i,j,
llm+1-l,9 ) = szz( i,j,l )/sm(i,j,l)
 
  239          masn=ssum(
iim,sm(1,1,l),1)
 
  241          qpn=ssum(
iim,s0(1,1,l),1)/masn
 
  242          qps=ssum(
iim,s0(1,
jjp1,l),1)/mass
 
  243          dqzpn=ssum(
iim,sz(1,1,l),1)/masn
 
  244          dqzps=ssum(
iim,sz(1,
jjp1,l),1)/mass
 
  246           q( i,1,
llm+1-l,3)=dqzpn
 
  248           q( i,1,
llm+1-l,0)=qpn
 
  260         zz=s0(i,2,l)/sm(i,2,l)-q(i,1,
llm+1-l,0)
 
  261         dyn1=dyn1+sinlondlon(i)*zz
 
  262         dyn2=dyn2+coslondlon(i)*zz
 
  263         zz=q(i,
jjp1,
llm+1-l,0)-s0(i,jjm,l)/sm(i,jjm,l)
 
  264         dys1=dys1+sinlondlon(i)*zz
 
  265         dys2=dys2+coslondlon(i)*zz
 
  269      $   (sinlon(i)*dyn1+coslon(i)*dyn2)/2.
 
  270          q(i,1,
llm+1-l,0)=q(i,1,
llm+1-l,0)
 
  273      $   (sinlon(i)*dys1+coslon(i)*dys2)/2.
 
  277       q(iip1,1,
llm+1-l,0)=q(1,1,
llm+1-l,0)
 
  280       sxn(i)=q(i+1,1,
llm+1-l,0)-q(i,1,
llm+1-l,0)
 
  286       q(i+1,1,
llm+1-l,1)=0.25*(sxn(i)+sxn(i+1))
 
  287       q(i+1,
jjp1,
llm+1-l,1)=0.25*(sxs(i)+sxs(i+1))
 
  289       q(1,1,
llm+1-l,1)=q(iip1,1,
llm+1-l,1)
 
  315       q(iip1,j,l,0)=q(1,j,l,0)
 
  316       q(iip1,j,
llm+1-l,0)=q(1,j,
llm+1-l,0)
 
  317       q(iip1,j,
llm+1-l,1)=q(1,j,
llm+1-l,1)
 
  318       q(iip1,j,
llm+1-l,2)=q(1,j,
llm+1-l,2)
 
  319       q(iip1,j,
llm+1-l,3)=q(1,j,
llm+1-l,3)
 
  320       q(iip1,j,
llm+1-l,4)=q(1,j,
llm+1-l,4)
 
  321       q(iip1,j,
llm+1-l,5)=q(1,j,
llm+1-l,5)
 
  322       q(iip1,j,
llm+1-l,6)=q(1,j,
llm+1-l,6)
 
  323       q(iip1,j,
llm+1-l,7)=q(1,j,
llm+1-l,7)
 
  324       q(iip1,j,
llm+1-l,8)=q(1,j,
llm+1-l,8)
 
  325       q(iip1,j,
llm+1-l,9)=q(1,j,
llm+1-l,9)
 
  331          IF (q(i,j,l,0).lt.0.)  
THEN 
  332          print*,
'------------ BIP-----------'  
  333          print*,
'S0(',i,j,l,
')=',q(i,j,l,0),
 
  335          print*,
'SX(',i,j,l,
')=',q(i,j,l,1)
 
  336          print*,
'SY(',i,j,l,
')=',q(i,j,l,2),
 
  338          print*,
'SZ(',i,j,l,
')=',q(i,j,l,3)
 
  347                IF (q(i,j,l,0).lt.0.)  
THEN 
  348                print*,
'------------ BIP 2-----------' 
  349          print*,
'S0(',i,j,l,
')=',q(i,j,l,0)
 
  350          print*,
'SX(',i,j,l,
')=',q(i,j,l,1)
 
  351          print*,
'SY(',i,j,l,
')=',q(i,j,l,2)
 
  352          print*,
'SZ(',i,j,l,
')=',q(i,j,l,3)
 
!$Header llmm1 INTEGER ip1jmp1
 
subroutine advzp(LIMIT, DTZ, W, SM, S0, SSX, SY, SZ, SSXX, SSXY, SSXZ, SYY, SYZ, SZZ, ntra)
 
!$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 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
 
!$Header!CDK comgeom COMMON comgeom rlonu
 
subroutine prather(q, w, masse, pbaru, pbarv, nt, dt)
 
!$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
 
c c zjulian c cym CALL iim cym klev iim
 
subroutine advyp(LIMIT, DTY, PBARV, SM, S0, SSX, SY, SZ, SSXX, SSXY, SSXZ, SYY, SYZ, SZZ, ntra)
 
!$Header!CDK comgeom COMMON comgeom rlonv