<p><b>mpetersen@lanl.gov</b> 2010-05-24 15:32:04 -0600 (Mon, 24 May 2010)</p><p>A few additional changes to vertical tracer diffusion, h d/dz( \kappa_v d\phi/dz).<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-24 21:00:10 UTC (rev 309)
+++ branches/ocean_projects/z_level_mrp/mpas/src/core_ocean/module_time_integration.F        2010-05-24 21:32:04 UTC (rev 310)
@@ -559,11 +559,11 @@
       integer, dimension(:), pointer :: nEdgesOnCell, nEdgesOnEdge
       integer, dimension(:,:), pointer :: cellsOnEdge
       real (kind=RKIND), dimension(:), pointer :: &amp;
-        zMidZLevel 
+        zTopZLevel 
       real (kind=RKIND), dimension(:,:), allocatable:: fluxVertTop, tracerTop
       real (kind=RKIND), dimension(:,:,:), allocatable::tr_flux, tr_div
 
-      real (kind=RKIND), dimension(:), allocatable:: vertDiff
+      real (kind=RKIND), dimension(:), allocatable:: vertDiffTop
 
       u           =&gt; s % u % array
       h           =&gt; s % h % array
@@ -579,10 +579,11 @@
       cellsOnEdge       =&gt; grid % cellsOnEdge % array
       dvEdge            =&gt; grid % dvEdge % array
       dcEdge            =&gt; grid % dcEdge % array
+      zTopZLevel        =&gt; grid % zTopZLevel % array
+
       nEdges      = grid % nEdges
       nCells      = grid % nCells
       nVertLevels = grid % nVertLevels
-      zMidZLevel  =&gt; grid % zMidZLevel % array
 
       !
       ! tracer tendency: horizontal advection term -div( h \phi u)
@@ -736,11 +737,11 @@
       deallocate(tr_flux, tr_div)
 
       !
-      ! tracer tendency: vertical mixing d/dz(h \kappa_v d\phi/dz))
+      ! tracer tendency: vertical diffusion h d/dz( \kappa_v d\phi/dz)
       !
-      allocate(vertDiff(nVertLevels))
+      allocate(vertDiffTop(nVertLevels))
       if (config_vert_diff_type.eq.'const') then
-        vertDiff = config_vert_diffusion
+        vertDiffTop = config_vert_diffusion
       elseif (config_vert_diff_type.eq.'tanh') then
         if (config_vert_grid_type.ne.'zlevel') then
           write(0,*) 'Abort: config_vert_diff_type.eq.tanh may only', &amp;
@@ -749,8 +750,8 @@
         endif
   
         do k=1,nVertLevels
-          vertDiff(k) = -(config_vmixTanhDiffMax-config_vmixTanhDiffMin)/2.0 &amp;
-            *tanh(-(zMidZLevel(k)-config_vmixTanhZMid) &amp;
+          vertDiffTop(k) = -(config_vmixTanhDiffMax-config_vmixTanhDiffMin)/2.0 &amp;
+            *tanh(-(zTopZLevel(k)-config_vmixTanhZMid) &amp;
                   /config_vmixTanhZWidth) &amp;
             + (config_vmixTanhDiffMax+config_vmixTanhDiffMin)/2
         enddo
@@ -765,7 +766,8 @@
       do iCell=1,grid % nCellsSolve 
          do k=2,nVertLevels
            do iTracer=1,num_tracers
-             fluxVertTop(iTracer,k) = h(k,iCell)*vertDiff(k) &amp;
+             ! compute \kappa_v d\phi/dz
+             fluxVertTop(iTracer,k) = vertDiffTop(k) &amp;
                 * (tracers(iTracer,k-1,iCell) - tracers(iTracer,k,iCell) )&amp;
                 / (zMid(k-1,iCell) -zMid(k,iCell))
            enddo
@@ -775,12 +777,12 @@
            dist = zTop(k,iCell) - zTop(k+1,iCell)
            do iTracer=1,num_tracers
              tend_tr(iTracer,k,iCell) = tend_tr(iTracer,k,iCell) &amp;
-               + (fluxVertTop(iTracer,k) - fluxVertTop(iTracer,k+1))/dist
+               + h(k,iCell)*(fluxVertTop(iTracer,k) - fluxVertTop(iTracer,k+1))/dist
            enddo
          enddo
 
       enddo ! iCell loop
-      deallocate(fluxVertTop, vertDiff)
+      deallocate(fluxVertTop, vertDiffTop)
 
 
           ! print some diagnostics - for debugging

</font>
</pre>