<p><b>dwj07@fsu.edu</b> 2012-07-06 08:19:01 -0600 (Fri, 06 Jul 2012)</p><p><br>
        -- TRUNK COMMIT --<br>
        core_ocean only<br>
<br>
        Adding a halo update for high_order_horizontal_flux with the monotonic tracer advection code.<br>
        This addition fixes the issue with tracer_edge not being correct on halo edges.<br>
</p><hr noshade><pre><font color="gray">Modified: trunk/mpas/src/core_ocean/mpas_ocn_tracer_advection_mono.F
===================================================================
--- trunk/mpas/src/core_ocean/mpas_ocn_tracer_advection_mono.F        2012-07-03 17:40:48 UTC (rev 2009)
+++ trunk/mpas/src/core_ocean/mpas_ocn_tracer_advection_mono.F        2012-07-06 14:19:01 UTC (rev 2010)
@@ -77,6 +77,8 @@
 
       real (kind=RKIND), parameter :: eps = 1.e-10
 
+      type (field2dReal), pointer :: high_order_horiz_flux_field
+
       ! Initialize pointers
       dvEdge      =&gt; grid % dvEdge % array
       cellsOnEdge =&gt; grid % cellsOnEdge % array
@@ -100,6 +102,17 @@
       nVertLevels = grid % nVertLevels
       num_tracers = size(tracers,dim=1)
 
+      allocate(high_order_horiz_flux_field)
+      nullify(high_order_horiz_flux_field % next)
+      high_order_horiz_flux_field % block =&gt; grid % block
+      high_order_horiz_flux_field % sendList =&gt; grid % xEdge % sendList
+      high_order_horiz_flux_field % recvList =&gt; grid % xEdge % recvList
+      high_order_horiz_flux_field % copyList =&gt; grid % xEdge % copyList
+      high_order_horiz_flux_field % dimSizes(1) = nVertLevels
+      high_order_horiz_flux_field % dimSizes(2) = nEdges+1
+      allocate(high_order_horiz_flux_field % array(high_order_horiz_flux_field % dimSizes(1), high_order_horiz_flux_field % dimSizes(2)))
+      high_order_horiz_flux =&gt; high_order_horiz_flux_field % array
+
       ! allocate nCells arrays
 
       allocate(tracer_new(nVertLevels, nCells+1))
@@ -112,7 +125,7 @@
       allocate(flux_outgoing(nVertLevels, nCells+1))
 
       ! allocate nEdges arrays
-      allocate(high_order_horiz_flux(nVertLevels, nEdges))
+!     allocate(high_order_horiz_flux(nVertLevels, nEdges))
 
       ! allocate nVertLevels+1 and nCells arrays
       allocate(high_order_vert_flux(nVertLevels+1, nCells))
@@ -192,6 +205,8 @@
           end do ! i loop over nAdvCellsForEdge
         end do ! iEdge loop
 
+        call mpas_dmpar_exch_halo_field(high_order_horiz_flux_field)
+
         !  low order upwind vertical flux (monotonic and diffused)
         !  Remove low order flux from the high order flux.
         !  Store left over high order flux in high_order_vert_flux array.
@@ -348,6 +363,7 @@
       deallocate(flux_outgoing)
       deallocate(high_order_horiz_flux)
       deallocate(high_order_vert_flux)
+      deallocate(high_order_horiz_flux_field)
    end subroutine mpas_ocn_tracer_advection_mono_tend!}}}
 
 !|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

</font>
</pre>