<p><b>dwj07@fsu.edu</b> 2012-01-20 15:12:31 -0700 (Fri, 20 Jan 2012)</p><p><br>
        -- BRANCH COMMIT --<br>
        <br>
        Working version of standard 2nd order vertical advection.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/ocean_projects/advection_routines/src/operators/mpas_tracer_advection_std_vadv2.F
===================================================================
--- branches/ocean_projects/advection_routines/src/operators/mpas_tracer_advection_std_vadv2.F        2012-01-20 20:43:50 UTC (rev 1402)
+++ branches/ocean_projects/advection_routines/src/operators/mpas_tracer_advection_std_vadv2.F        2012-01-20 22:12:31 UTC (rev 1403)
@@ -38,11 +38,13 @@
 !     real (kind=RKIND), dimension( s_old % num_tracers, grid % nVertLevels + 1 ) :: vert_flux
       real (kind=RKIND), dimension(:,:), allocatable :: vert_flux
       integer :: nVertLevels, num_tracers
+      integer, dimension(:), pointer :: maxLevelCell
 
       integer, parameter :: hadv_opt = 2
 
       nVertLevels = grid % nVertLevels
       num_tracers = size(tracers, dim=1)
+      maxLevelCell =&gt; grid % maxLevelCell % array
 
       allocate(vert_flux(num_tracers, nVertLevels+1))
 
@@ -53,17 +55,19 @@
       ! zero fluxes at top and bottom
 
       vert_flux(:,1) = 0.
-      vert_flux(:,grid % nVertLevels+1) = 0.
 
       do iCell=1,grid % nCellsSolve
-        do k = 2, nVertLevels
+        do k = 2, maxLevelCell(iCell)
            do iTracer=1,num_tracers
-             vert_flux(iTracer,k) = w(k,iCell)*(zWeightDown(k)*tracers(iTracer,k,iCell)+zWeightUp(k)*tracers(iTracer,k-1,iCell))
+             vert_flux(iTracer,k) = w(k,iCell)*(zWeightUp(k)*tracers(iTracer,k,iCell)+zWeightDown(k)*tracers(iTracer,k-1,iCell))
            end do
         end do
-        do k=1,grid % nVertLevelsSolve
+
+        vert_flux(:,maxLevelCell(iCell)+1) = 0
+
+        do k=1,maxLevelCell(iCell)
            do iTracer=1,num_tracers
-             tend(iTracer, k, iCell) = tend(iTracer, k, iCell) - ( vert_flux(iTracer, k+1) - vert_flux(iTracer, k)) / zDistance(k)
+             tend(iTracer, k, iCell) = tend(iTracer, k, iCell) + ( vert_flux(iTracer, k+1) - vert_flux(iTracer, k))
 !            tracers(iTracer,k,iCell) = (   tracers(iTracer,k,iCell)*h_old(k,iCell) &amp;
 !                  + dt*( tracer_tend(iTracer,k,iCell) -rdnw(k)*(vert_flux(iTracer,k+1)-vert_flux(iTracer,k)) ) )/h_new(k,iCell)
            end do

</font>
</pre>