127     &                            LBi, UBi, LBj, UBj,                   &
 
  128     &                            IminS, ImaxS, JminS, JmaxS,           &
 
  129     &                            nrhs, nstp, nnew,                     &
 
  131     &                            rmask, umask, vmask,                  &
 
  132#  if defined SOLAR_SOURCE && defined WET_DRY
 
  139     &                            btflx, bustr, bvstr,                  &
 
  140     &                            stflx, sustr, svstr,                  &
 
  153# ifdef DIAGNOSTICS_TS
 
  156# ifdef DIAGNOSTICS_UV
 
  157     &                            DiaU3wrk, DiaV3wrk,                   &
 
  175      integer, 
intent(in) :: ng, tile
 
  176      integer, 
intent(in) :: LBi, UBi, LBj, UBj
 
  177      integer, 
intent(in) :: IminS, ImaxS, JminS, JmaxS
 
  178      integer, 
intent(in) :: nrhs, nstp, nnew
 
  182      real(r8), 
intent(in) :: rmask(LBi:,LBj:)
 
  183      real(r8), 
intent(in) :: umask(LBi:,LBj:)
 
  184      real(r8), 
intent(in) :: vmask(LBi:,LBj:)
 
  185#   if defined SOLAR_SOURCE && defined WET_DRY 
  186      real(r8), 
intent(in) :: rmask_wet(LBi:,LBj:)
 
  189      real(r8), 
intent(in) :: pm(LBi:,LBj:)
 
  190      real(r8), 
intent(in) :: pn(LBi:,LBj:)
 
  191      real(r8), 
intent(in) :: Hz(LBi:,LBj:,:)
 
  192      real(r8), 
intent(in) :: Huon(LBi:,LBj:,:)
 
  193      real(r8), 
intent(in) :: Hvom(LBi:,LBj:,:)
 
  194      real(r8), 
intent(in) :: z_r(LBi:,LBj:,:)
 
  195      real(r8), 
intent(in) :: z_w(LBi:,LBj:,0:)
 
  196      real(r8), 
intent(in) :: btflx(LBi:,LBj:,:)
 
  197      real(r8), 
intent(in) :: bustr(LBi:,LBj:)
 
  198      real(r8), 
intent(in) :: bvstr(LBi:,LBj:)
 
  199      real(r8), 
intent(in) :: stflx(LBi:,LBj:,:)
 
  200      real(r8), 
intent(in) :: sustr(LBi:,LBj:)
 
  201      real(r8), 
intent(in) :: svstr(LBi:,LBj:)
 
  203      real(r8), 
intent(in) :: srflx(LBi:,LBj:)
 
  206      real(r8), 
intent(in) :: Akt(LBi:UBi,LBj:UBj,0:N(ng),NAT)
 
  208      real(r8), 
intent(in) :: Akt(LBi:,LBj:,0:,:)
 
  210      real(r8), 
intent(in) :: Akv(LBi:,LBj:,0:)
 
  212      real(r8), 
intent(in) :: ghats(LBi:,LBj:,0:,:)
 
  214      real(r8), 
intent(in) :: W(LBi:,LBj:,0:)
 
  216      real(r8), 
intent(in) :: W_stokes(LBi:,LBj:,0:)
 
  218      real(r8), 
intent(in) :: ru(LBi:,LBj:,0:,:)
 
  219      real(r8), 
intent(in) :: rv(LBi:,LBj:,0:,:)
 
  220#  ifdef DIAGNOSTICS_TS 
  221      real(r8), 
intent(inout) :: DiaTwrk(LBi:,LBj:,:,:,:)
 
  223#  ifdef DIAGNOSTICS_UV 
  224      real(r8), 
intent(inout) :: DiaU3wrk(LBi:,LBj:,:,:)
 
  225      real(r8), 
intent(inout) :: DiaV3wrk(LBi:,LBj:,:,:)
 
  226      real(r8), 
intent(inout) :: DiaRU(LBi:,LBj:,:,:,:)
 
  227      real(r8), 
intent(inout) :: DiaRV(LBi:,LBj:,:,:,:)
 
  230      real(r8), 
intent(inout) :: t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
 
  232      real(r8), 
intent(inout) :: t(LBi:,LBj:,:,:,:)
 
  234      real(r8), 
intent(inout) :: u(LBi:,LBj:,:,:)
 
  235      real(r8), 
intent(inout) :: v(LBi:,LBj:,:,:)
 
  240      real(r8), 
intent(in) :: rmask(LBi:UBi,LBj:UBj)
 
  241      real(r8), 
intent(in) :: umask(LBi:UBi,LBj:UBj)
 
  242      real(r8), 
intent(in) :: vmask(LBi:UBi,LBj:UBj)
 
  243#   if defined SOLAR_SOURCE && defined WET_DRY 
  244      real(r8), 
intent(in) :: rmask_wet(LBi:UBi,LBj:UBj)
 
  247      real(r8), 
intent(in) :: pm(LBi:UBi,LBj:UBj)
 
  248      real(r8), 
intent(in) :: pn(LBi:UBi,LBj:UBj)
 
  249      real(r8), 
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
 
  250      real(r8), 
intent(in) :: Huon(LBi:UBi,LBj:UBj,N(ng))
 
  251      real(r8), 
intent(in) :: Hvom(LBi:UBi,LBj:UBj,N(ng))
 
  252      real(r8), 
intent(in) :: z_r(LBi:UBi,LBj:UBj,N(ng))
 
  253      real(r8), 
intent(in) :: z_w(LBi:UBi,LBj:UBj,0:N(ng))
 
  254      real(r8), 
intent(in) :: btflx(LBi:UBi,LBj:UBj,NT(ng))
 
  255      real(r8), 
intent(in) :: bustr(LBi:UBi,LBj:UBj)
 
  256      real(r8), 
intent(in) :: bvstr(LBi:UBi,LBj:UBj)
 
  257      real(r8), 
intent(in) :: stflx(LBi:UBi,LBj:UBj,NT(ng))
 
  258      real(r8), 
intent(in) :: sustr(LBi:UBi,LBj:UBj)
 
  259      real(r8), 
intent(in) :: svstr(LBi:UBi,LBj:UBj)
 
  261      real(r8), 
intent(in) :: srflx(LBi:UBi,LBj:UBj)
 
  263      real(r8), 
intent(in) :: Akt(LBi:UBi,LBj:UBj,0:N(ng),NAT)
 
  264      real(r8), 
intent(in) :: Akv(LBi:UBi,LBj:UBj,0:N(ng))
 
  266      real(r8), 
intent(in) :: ghats(LBi:UBi,LBj:UBj,0:N(ng),NAT)
 
  268      real(r8), 
intent(in) :: W(LBi:UBi,LBj:UBj,0:N(ng))
 
  270      real(r8), 
intent(in) :: W_stokes(LBi:UBi,LBj:UBj,0:N(ng))
 
  272      real(r8), 
intent(in) :: ru(LBi:UBi,LBj:UBj,0:N(ng),2)
 
  273      real(r8), 
intent(in) :: rv(LBi:UBi,LBj:UBj,0:N(ng),2)
 
  274#  ifdef DIAGNOSTICS_TS 
  275      real(r8), 
intent(inout) :: DiaTwrk(LBi:UBi,LBj:UBj,N(ng),NT(ng),  &
 
  278#  ifdef DIAGNOSTICS_UV 
  279      real(r8), 
intent(inout) :: DiaU3wrk(LBi:UBi,LBj:UBj,N(ng),NDM3d)
 
  280      real(r8), 
intent(inout) :: DiaV3wrk(LBi:UBi,LBj:UBj,N(ng),NDM3d)
 
  281      real(r8), 
intent(inout) :: DiaRU(LBi:UBi,LBj:UBj,N(ng),2,NDrhs)
 
  282      real(r8), 
intent(inout) :: DiaRV(LBi:UBi,LBj:UBj,N(ng),2,NDrhs)
 
  284      real(r8), 
intent(inout) :: t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
 
  285      real(r8), 
intent(inout) :: u(LBi:UBi,LBj:UBj,N(ng),2)
 
  286      real(r8), 
intent(inout) :: v(LBi:UBi,LBj:UBj,N(ng),2)
 
  291      integer :: Isrc, Jsrc
 
  292      integer :: i, ic, indx, is, itrc, j, k, ltrc
 
  293# if defined AGE_MEAN && defined T_PASSIVE 
  296# if defined DIAGNOSTICS_TS || defined DIAGNOSTICS_UV 
  299      real(r8), 
parameter :: eps = 1.0e-16_r8
 
  301      real(r8) :: cff, cff1, cff2, cff3, cff4
 
  304      real(r8), 
dimension(IminS:ImaxS,0:N(ng)) :: CF
 
  305      real(r8), 
dimension(IminS:ImaxS,0:N(ng)) :: DC
 
  306      real(r8), 
dimension(IminS:ImaxS,0:N(ng)) :: FC
 
  309      real(r8), 
dimension(IminS:ImaxS,JminS:JmaxS,0:N(ng)) :: swdk
 
  311      real(r8), 
dimension(IminS:ImaxS,JminS:JmaxS) :: FE
 
  312      real(r8), 
dimension(IminS:ImaxS,JminS:JmaxS) :: FX
 
  313      real(r8), 
dimension(IminS:ImaxS,JminS:JmaxS) :: curv
 
  314      real(r8), 
dimension(IminS:ImaxS,JminS:JmaxS) :: grad
 
  316# include "set_bounds.h" 
  332            fx(i,j)=z_w(i,j,n(ng))-z_w(i,j,k)
 
  336     &                        lbi, ubi, lbj, ubj,                       &
 
  337     &                        imins, imaxs, jmins, jmaxs,               &
 
  354      t_loop1 :
DO itrc=1,nt(ng)
 
  357          hadv_flux : 
IF (
hadvection(itrc,ng)%CENTERED2) 
THEN 
  363                fx(i,j)=huon(i,j,k)*                                    &
 
  364     &                  0.5_r8*(t(i-1,j,k,nstp,itrc)+                   &
 
  365     &                          t(i  ,j,k,nstp,itrc))
 
  370                fe(i,j)=hvom(i,j,k)*                                    &
 
  371     &                  0.5_r8*(t(i,j-1,k,nstp,itrc)+                   &
 
  372     &                          t(i,j  ,k,nstp,itrc))
 
  383                cff1=max(huon(i,j,k),0.0_r8)
 
  384                cff2=min(huon(i,j,k),0.0_r8)
 
  385                fx(i,j)=cff1*t(i-1,j,k,nstp,itrc)+                      &
 
  386     &                  cff2*t(i  ,j,k,nstp,itrc)
 
  391                cff1=max(hvom(i,j,k),0.0_r8)
 
  392                cff2=min(hvom(i,j,k),0.0_r8)
 
  393                fe(i,j)=cff1*t(i,j-1,k,nstp,itrc)+                      &
 
  394     &                  cff2*t(i,j  ,k,nstp,itrc)
 
  408                fx(i,j)=t(i  ,j,k,nstp,itrc)-                           &
 
  409     &                  t(i-1,j,k,nstp,itrc)
 
  411                fx(i,j)=fx(i,j)*umask(i,j)
 
  416              IF (
domain(ng)%Western_Edge(tile)) 
THEN 
  418                  fx(istr-1,j)=fx(istr,j)
 
  423              IF (
domain(ng)%Eastern_Edge(tile)) 
THEN 
  425                  fx(iend+2,j)=fx(iend+1,j)
 
  433                  curv(i,j)=fx(i+1,j)-fx(i,j)
 
  435                  cff=2.0_r8*fx(i+1,j)*fx(i,j)
 
  437                    grad(i,j)=cff/(fx(i+1,j)+fx(i,j))
 
  441                ELSE IF ((
hadvection(itrc,ng)%CENTERED4).or.            &
 
  443                  grad(i,j)=0.5_r8*(fx(i+1,j)+fx(i,j))
 
  453                  fx(i,j)=huon(i,j,k)*0.5_r8*                           &
 
  454     &                    (t(i-1,j,k,nstp,itrc)+                        &
 
  455     &                     t(i  ,j,k,nstp,itrc))-                       &
 
  456     &                    cff1*(curv(i-1,j)*max(huon(i,j,k),0.0_r8)+    &
 
  457     &                          curv(i  ,j)*min(huon(i,j,k),0.0_r8))
 
  462                  fx(i,j)=huon(i,j,k)*0.5_r8*                           &
 
  463     &                    (t(i-1,j,k,nstp,itrc)+                        &
 
  464     &                     t(i  ,j,k,nstp,itrc)-                        &
 
  465     &                     cff2*(grad(i  ,j)-                           &
 
  473                fe(i,j)=t(i,j  ,k,nstp,itrc)-                           &
 
  474     &                  t(i,j-1,k,nstp,itrc)
 
  476                fe(i,j)=fe(i,j)*vmask(i,j)
 
  481              IF (
domain(ng)%Southern_Edge(tile)) 
THEN 
  483                  fe(i,jstr-1)=fe(i,jstr)
 
  488              IF (
domain(ng)%Northern_Edge(tile)) 
THEN 
  490                  fe(i,jend+2)=fe(i,jend+1)
 
  498                  curv(i,j)=fe(i,j+1)-fe(i,j)
 
  500                  cff=2.0_r8*fe(i,j+1)*fe(i,j)
 
  502                    grad(i,j)=cff/(fe(i,j+1)+fe(i,j))
 
  506                ELSE IF ((
hadvection(itrc,ng)%CENTERED4).or.            &
 
  508                  grad(i,j)=0.5_r8*(fe(i,j+1)+fe(i,j))
 
  518                  fe(i,j)=hvom(i,j,k)*0.5_r8*                           &
 
  519     &                    (t(i,j-1,k,nstp,itrc)+                        &
 
  520     &                     t(i,j  ,k,nstp,itrc))-                       &
 
  521     &                    cff1*(curv(i,j-1)*max(hvom(i,j,k),0.0_r8)+    &
 
  522     &                          curv(i,j  )*min(hvom(i,j,k),0.0_r8))
 
  526                  fe(i,j)=hvom(i,j,k)*0.5_r8*                           &
 
  527     &                    (t(i,j-1,k,nstp,itrc)+                        &
 
  528     &                     t(i,j  ,k,nstp,itrc)-                        &
 
  529     &                     cff2*(grad(i,j  )-                           &
 
  546              IF (((istr.le.isrc).and.(isrc.le.iend+1)).and.            &
 
  547     &            ((jstr.le.jsrc).and.(jsrc.le.jend+1))) 
THEN 
  548                IF (int(
sources(ng)%Dsrc(is)).eq.0) 
THEN 
  550                    fx(isrc,jsrc)=huon(isrc,jsrc,k)*                    &
 
  555                ELSE IF (int(
sources(ng)%Dsrc(is)).eq.1) 
THEN 
  557                    fe(isrc,jsrc)=hvom(isrc,jsrc,k)*                    &
 
  580            cff=(1.0_r8-gamma)*
dt(ng)
 
  586              t(i,j,k,3,itrc)=hz(i,j,k)*(cff1*t(i,j,k,nstp,itrc)+       &
 
  587     &                                   cff2*t(i,j,k,nnew,itrc))-      &
 
  588     &                        cff*pm(i,j)*pn(i,j)*                      &
 
  589     &                        (fx(i+1,j)-fx(i,j)+                       &
 
  596#  if defined AGE_MEAN && defined T_PASSIVE 
  610            cff=(1.0_r8-gamma)*
dt(ng)
 
  616                t(i,j,k,3,iage)=t(i,j,k,3,iage)+                        &
 
  618     &                          t(i,j,k,nnew,
inert(itrc))
 
  631      j_loop1 : 
DO j=jstr,jend
 
  632        t_loop2 : 
DO itrc=1,nt(ng)
 
  634          vadv_flux : 
IF (
vadvection(itrc,ng)%SPLINES) 
THEN 
  642              fc(i,0)=1.5_r8*t(i,j,1,nstp,itrc)
 
  645              fc(i,0)=2.0_r8*t(i,j,1,nstp,itrc)
 
  651                cff=1.0_r8/(2.0_r8*hz(i,j,k)+                           &
 
  652     &                      hz(i,j,k+1)*(2.0_r8-cf(i,k)))
 
  653                cf(i,k+1)=cff*hz(i,j,k)
 
  654                fc(i,k)=cff*(3.0_r8*(hz(i,j,k  )*t(i,j,k+1,nstp,itrc)+  &
 
  655     &                               hz(i,j,k+1)*t(i,j,k  ,nstp,itrc))- &
 
  656     &                       hz(i,j,k+1)*fc(i,k-1))
 
  661              fc(i,n(ng))=(3.0_r8*t(i,j,n(ng),nstp,itrc)-               &
 
  662     &                     fc(i,n(ng)-1))/(2.0_r8-cf(i,n(ng)))
 
  664              fc(i,n(ng))=(2.0_r8*t(i,j,n(ng),nstp,itrc)-               &
 
  665     &                     fc(i,n(ng)-1))/(1.0_r8-cf(i,n(ng)))
 
  670                fc(i,k)=fc(i,k)-cf(i,k+1)*fc(i,k+1)
 
  672                fc(i,k+1)=(w(i,j,k+1)+w_stokes(i,j,k+1))*fc(i,k+1)
 
  674                fc(i,k+1)=w(i,j,k+1)*fc(i,k+1)
 
  689                fc(i,k)=t(i,j,k+1,nstp,itrc)-                           &
 
  690     &                  t(i,j,k  ,nstp,itrc)
 
  695              fc(i,n(ng))=fc(i,n(ng)-1)
 
  699                cff=2.0_r8*fc(i,k)*fc(i,k-1)
 
  701                  cf(i,k)=cff/(fc(i,k)+fc(i,k-1))
 
  711                fc(i,k)=(w(i,j,k)+w_stokes(i,j,k))*                     &
 
  715     &                  0.5_r8*(t(i,j,k  ,nstp,itrc)+                   &
 
  716     &                          t(i,j,k+1,nstp,itrc)-                   &
 
  717     &                          cff1*(cf(i,k+1)-cf(i,k)))
 
  732                fc(i,k)=(w(i,j,k)+w_stokes(i,j,k))*                     &
 
  736     &                  0.5_r8*(t(i,j,k  ,nstp,itrc)+                   &
 
  737     &                          t(i,j,k+1,nstp,itrc))
 
  753                cff1=max(w(i,j,k)+w_stokes(i,j,k),0.0_r8)
 
  754                cff2=min(w(i,j,k)+w_stokes(i,j,k),0.0_r8)
 
  756                cff1=max(w(i,j,k),0.0_r8)
 
  757                cff2=min(w(i,j,k),0.0_r8)
 
  759                fc(i,k)=cff1*t(i,j,k  ,nstp,itrc)+                      &
 
  760     &                  cff2*t(i,j,k+1,nstp,itrc)
 
  768          ELSE IF ((
vadvection(itrc,ng)%CENTERED4).or.                  &
 
  779                fc(i,k)=(w(i,j,k)+w_stokes(i,j,k))*                     &
 
  783     &                  (cff2*(t(i,j,k  ,nstp,itrc)+                    &
 
  784     &                         t(i,j,k+1,nstp,itrc))-                   &
 
  785     &                   cff3*(t(i,j,k-1,nstp,itrc)+                    &
 
  786     &                         t(i,j,k+2,nstp,itrc)))
 
  792              fc(i,1)=(w(i,j,1)+w_stokes(i,j,1))*                       &
 
  796     &                (cff1*t(i,j,1,nstp,itrc)+                         &
 
  797     &                 cff2*t(i,j,2,nstp,itrc)-                         &
 
  798     &                 cff3*t(i,j,3,nstp,itrc))
 
  800              fc(i,n(ng)-1)=(w(i,j,n(ng)-1)+w_stokes(i,j,n(ng)-1))*     &
 
  802              fc(i,n(ng)-1)=w(i,j,n(ng)-1)*                             &
 
  804     &                      (cff1*t(i,j,n(ng)  ,nstp,itrc)+             &
 
  805     &                       cff2*t(i,j,n(ng)-1,nstp,itrc)-             &
 
  806     &                       cff3*t(i,j,n(ng)-2,nstp,itrc))
 
  825            cff=(1.0_r8-gamma)*
dt(ng)
 
  829              dc(i,k)=1.0_r8/(hz(i,j,k)-                                &
 
  830     &                        cff*pm(i,j)*pn(i,j)*                      &
 
  831     &                        (huon(i+1,j,k)-huon(i,j,k)+               &
 
  832     &                         hvom(i,j+1,k)-hvom(i,j,k)+               &
 
  834     &                        (w_stokes(i,j,k)-w_stokes(i,j,k-1))+      &
 
  836     &                        (w(i,j,k)-w(i,j,k-1))))
 
  845              cff1=cff*pm(i,j)*pn(i,j)
 
  846              t(i,j,k,3,itrc)=dc(i,k)*                                  &
 
  847     &                        (t(i,j,k,3,itrc)-                         &
 
  848     &                         cff1*(fc(i,k)-fc(i,k-1)))
 
  869              cff=1.0_r8/(z_r(i,j,k+1)-z_r(i,j,k))
 
  870              fc(i,k)=cff3*cff*akt(i,j,k,ltrc)*                         &
 
  871     &                (t(i,j,k+1,nstp,itrc)-                            &
 
  872     &                 t(i,j,k  ,nstp,itrc))
 
  883          IF (itrc.le.nat) 
THEN 
  887     &                  
dt(ng)*akt(i,j,k,itrc)*ghats(i,j,k,itrc)
 
  897          IF (itrc.eq.
itemp) 
THEN 
  901     &                  
dt(ng)*srflx(i,j)*                              &
 
  914            fc(i,0)=
dt(ng)*btflx(i,j,itrc)
 
  915            fc(i,n(ng))=
dt(ng)*stflx(i,j,itrc)
 
  922              cff1=hz(i,j,k)*t(i,j,k,nstp,itrc)
 
  923              cff2=fc(i,k)-fc(i,k-1)
 
  924              t(i,j,k,nnew,itrc)=cff1+cff2
 
  925#  ifdef DIAGNOSTICS_TS 
  926              diatwrk(i,j,k,itrc,
itrate)=cff1
 
  927              diatwrk(i,j,k,itrc,
itvdif)=cff2
 
  933# endif /* !TS_FIXED */ 
  943      j_loop2: 
DO j=jstr,jend
 
  947            cff=1.0_r8/(z_r(i,j,k+1)+z_r(i-1,j,k+1)-                    &
 
  948     &                  z_r(i,j,k  )-z_r(i-1,j,k  ))
 
  949            fc(i,k)=cff3*cff*(u(i,j,k+1,nstp)-u(i,j,k,nstp))*           &
 
  950     &              (akv(i,j,k)+akv(i-1,j,k))
 
  961          fc(i,0)=
dt(ng)*bustr(i,j)
 
  962          fc(i,n(ng))=
dt(ng)*sustr(i,j)
 
  970          dc(i,0)=cff*(pm(i,j)+pm(i-1,j))*(pn(i,j)+pn(i-1,j))
 
  976              cff1=u(i,j,k,nstp)*0.5_r8*(hz(i,j,k)+hz(i-1,j,k))
 
  977              cff2=fc(i,k)-fc(i,k-1)
 
  978              u(i,j,k,nnew)=cff1+cff2
 
  979# ifdef DIAGNOSTICS_UV 
  981                diau3wrk(i,j,k,idiag)=0.0_r8
 
  983              diau3wrk(i,j,k,
m3vvis)=cff2
 
  984              diau3wrk(i,j,k,
m3rate)=cff1
 
  991              cff1=u(i,j,k,nstp)*0.5_r8*(hz(i,j,k)+hz(i-1,j,k))
 
  992              cff2=fc(i,k)-fc(i,k-1)
 
  994              u(i,j,k,nnew)=cff1-                                       &
 
  995     &                      cff3*ru(i,j,k,indx)+                        &
 
  997# ifdef DIAGNOSTICS_UV 
  999                diau3wrk(i,j,k,idiag)=-cff3*diaru(i,j,k,indx,idiag)
 
 1001              diau3wrk(i,j,k,
m3vvis)=cff2
 
 1004     &                               cff3*diaru(i,j,k,indx,
m3vvis)
 
 1006              diau3wrk(i,j,k,
m3rate)=cff1
 
 1011          cff1= 5.0_r8/12.0_r8
 
 1012          cff2=16.0_r8/12.0_r8
 
 1015              cff3=u(i,j,k,nstp)*0.5_r8*(hz(i,j,k)+hz(i-1,j,k))
 
 1016              cff4=fc(i,k)-fc(i,k-1)
 
 1017              u(i,j,k,nnew)=cff3+                                       &
 
 1018     &                      dc(i,0)*(cff1*ru(i,j,k,nrhs)-               &
 
 1019     &                               cff2*ru(i,j,k,indx))+              &
 
 1021# ifdef DIAGNOSTICS_UV 
 1023                diau3wrk(i,j,k,idiag)=dc(i,0)*                          &
 
 1024     &                                (cff1*diaru(i,j,k,nrhs,idiag)-    &
 
 1025     &                                 cff2*diaru(i,j,k,indx,idiag))
 
 1027              diau3wrk(i,j,k,
m3vvis)=cff4
 
 1031     &                               (cff1*diaru(i,j,k,nrhs,
m3vvis)-    &
 
 1032     &                                cff2*diaru(i,j,k,indx,
m3vvis))
 
 1034              diau3wrk(i,j,k,
m3rate)=cff3
 
 1048        IF (j.ge.jstrv) 
THEN 
 1052              cff=1.0_r8/(z_r(i,j,k+1)+z_r(i,j-1,k+1)-                  &
 
 1053     &                    z_r(i,j,k  )-z_r(i,j-1,k  ))
 
 1054              fc(i,k)=cff3*cff*(v(i,j,k+1,nstp)-v(i,j,k,nstp))*         &
 
 1055     &                (akv(i,j,k)+akv(i,j-1,k))
 
 1066            fc(i,0)=
dt(ng)*bvstr(i,j)
 
 1067            fc(i,n(ng))=
dt(ng)*svstr(i,j)
 
 1075            dc(i,0)=cff*(pm(i,j)+pm(i,j-1))*(pn(i,j)+pn(i,j-1))
 
 1080                cff1=v(i,j,k,nstp)*0.5_r8*(hz(i,j,k)+hz(i,j-1,k))
 
 1081                cff2=fc(i,k)-fc(i,k-1)
 
 1082                v(i,j,k,nnew)=cff1+cff2
 
 1083# ifdef DIAGNOSTICS_UV 
 1085                  diav3wrk(i,j,k,idiag)=0.0_r8
 
 1087                diav3wrk(i,j,k,
m3vvis)=cff2
 
 1088                diav3wrk(i,j,k,
m3rate)=cff1
 
 1095                cff1=v(i,j,k,nstp)*0.5_r8*(hz(i,j,k)+hz(i,j-1,k))
 
 1096                cff2=fc(i,k)-fc(i,k-1)
 
 1098                v(i,j,k,nnew)=cff1-                                     &
 
 1099     &                        cff3*rv(i,j,k,indx)+                      &
 
 1101# ifdef DIAGNOSTICS_UV 
 1103                  diav3wrk(i,j,k,idiag)=-cff3*diarv(i,j,k,indx,idiag)
 
 1105                diav3wrk(i,j,k,
m3vvis)=cff2
 
 1108     &                                 cff3*diarv(i,j,k,indx,
m3vvis)
 
 1110                diav3wrk(i,j,k,
m3rate)=cff1
 
 1115            cff1= 5.0_r8/12.0_r8
 
 1116            cff2=16.0_r8/12.0_r8
 
 1119                cff3=v(i,j,k,nstp)*0.5_r8*(hz(i,j,k)+hz(i,j-1,k))
 
 1120                cff4=fc(i,k)-fc(i,k-1)
 
 1121                v(i,j,k,nnew)=cff3+                                     &
 
 1122     &                        dc(i,0)*(cff1*rv(i,j,k,nrhs)-             &
 
 1123     &                                 cff2*rv(i,j,k,indx))+            &
 
 1125# ifdef DIAGNOSTICS_UV 
 1127                  diav3wrk(i,j,k,idiag)=dc(i,0)*                        &
 
 1128     &                                  (cff1*diarv(i,j,k,nrhs,idiag)-  &
 
 1129     &                                   cff2*diarv(i,j,k,indx,idiag))
 
 1131                diav3wrk(i,j,k,
m3vvis)=cff4
 
 1135     &                                 (cff1*diarv(i,j,k,nrhs,
m3vvis)-  &
 
 1136     &                                  cff2*diarv(i,j,k,indx,
m3vvis))
 
 1138                diav3wrk(i,j,k,
m3rate)=cff3
 
 1158     &                   lbi, ubi, lbj, ubj, n(ng), nt(ng),             &
 
 1159     &                   imins, imaxs, jmins, jmaxs,                    &
 
 1165     &                            lbi, ubi, lbj, ubj, 1, n(ng),         &
 
 1172     &                    lbi, ubi, lbj, ubj, 1, n(ng), 1, nt(ng),      &