<p><b>mpetersen@lanl.gov</b> 2010-05-07 08:00:22 -0600 (Fri, 07 May 2010)</p><p>Corrected indexing error in vertical momentum advection term.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/ocean_projects/z_level_mrp/mpas/src/core_ocean/module_time_integration.F
===================================================================
--- branches/ocean_projects/z_level_mrp/mpas/src/core_ocean/module_time_integration.F        2010-05-06 21:22:50 UTC (rev 258)
+++ branches/ocean_projects/z_level_mrp/mpas/src/core_ocean/module_time_integration.F        2010-05-07 14:00:22 UTC (rev 259)
@@ -284,7 +284,7 @@
       integer :: nCells, nEdges, nVertices, nVertLevels
 
       real (kind=RKIND) :: flux, vorticity_abs, h_vertex, workpv, q, &amp;
-        upstream_bias, wHat, areaSumInv, rho0Inv
+        upstream_bias, wHat, rho0Inv
       real (kind=RKIND), dimension(:), pointer :: &amp;
         h_s, fVertex, fEdge, dvEdge, dcEdge, areaCell, areaTriangle, zSurfaceEdge
       real (kind=RKIND), dimension(grid % nVertLevels) :: w_dudz
@@ -455,19 +455,18 @@
 
          ! mrp 100422 add -w*dudz term to tendancy
          ! For isopycnal mode, Fv should be zero.
-         areaSumInv = 1.0/(areaCell(cell1)+areaCell(cell2))
          ! change nvertlevels to kmt later
          do k=1,nVertLevels-1
            ! w =Fv/h.  Also average w from cell center to edge
-           wHat = (  areaCell(cell1)*Fv(k,cell1)/h(k+1,cell1) &amp;
-                   + areaCell(cell2)*Fv(k,cell2)/h(k+1,cell2)) &amp;
-                   *areaSumInv
+           wHat = (  Fv(k,cell1)/h(k+1,cell1) &amp;
+                   + Fv(k,cell2)/h(k+1,cell2))/2.0
            ! compute dudz at vertical interface with first order derivative.
-           w_dudz(k) = wHat * (u(k-1,iEdge)-u(k,iEdge)) &amp;
-                       * 2.0 / (h_edge(k-1,iEdge) + h_edge(k,iEdge))
+           w_dudz(k) = wHat * (u(k,iEdge)-u(k+1,iEdge)) &amp;
+                       * 2.0 / (h_edge(k,iEdge) + h_edge(k+1,iEdge))
          end do
          w_dudz(nVertLevels) = 0.0
 
+         ! Average w*du/dz from vertical edges to vertical middle of cell
          tend_u(1,iEdge) = - 0.5 * w_dudz(1)
          do k=2,nVertLevels
             tend_u(k,iEdge) = - 0.5 * (w_dudz(k-1) + w_dudz(k))
@@ -710,6 +709,19 @@
             end do
           end do
 
+         elseif (config_vert_tracer_adv.eq.'downwind') then
+
+          do k=1,nVertLevels-1
+            if (Fv(k,iCell)&gt;0.0) then
+              upwindCell = k
+            else
+              upwindCell = k+1
+            endif
+            do iTracer=1,num_tracers
+               Tmid(iTracer,k) = tracers(iTracer,upwindCell,iCell)
+            end do
+          end do
+
          endif
 
          ! The next loop could be combined with the later two for better efficiency.

</font>
</pre>