<p><b>dwj07@fsu.edu</b> 2012-03-13 16:04:49 -0600 (Tue, 13 Mar 2012)</p><p><br>
        -- BRANCH COMMIT --<br>
<br>
        splitting advectionMasks into two arrays.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/ocean_projects/monotonic_advection/src/core_ocean/Registry
===================================================================
--- branches/ocean_projects/monotonic_advection/src/core_ocean/Registry        2012-03-13 22:01:16 UTC (rev 1629)
+++ branches/ocean_projects/monotonic_advection/src/core_ocean/Registry        2012-03-13 22:04:49 UTC (rev 1630)
@@ -158,7 +158,8 @@
 var persistent real    adv_coefs_3rd ( FIFTEEN nEdges ) 0 - adv_coefs_3rd mesh - -
 var persistent integer advCellsForEdge ( FIFTEEN nEdges ) 0 - advCellsForEdge mesh - -
 var persistent integer nAdvCellsForEdge ( nEdges ) 0 - nAdvCellsForEdge mesh - -
-var persistent integer advectionMasks ( TWO nVertLevels nEdges ) 0 - advectionMasks mesh - -
+var persistent integer highOrderAdvectionMask ( nVertLevels nEdges ) 0 - highOrderAdvectionMask mesh - -
+var persistent integer lowOrderAdvectionMask ( nVertLevels nEdges ) 0 - lowOrderAdvectionMask mesh - -
 
 % !! NOTE: the following arrays are needed to allow the use
 % !! of the module_advection.F w/o alteration

Modified: branches/ocean_projects/monotonic_advection/src/core_ocean/mpas_ocn_tracer_advection.F
===================================================================
--- branches/ocean_projects/monotonic_advection/src/core_ocean/mpas_ocn_tracer_advection.F        2012-03-13 22:01:16 UTC (rev 1629)
+++ branches/ocean_projects/monotonic_advection/src/core_ocean/mpas_ocn_tracer_advection.F        2012-03-13 22:04:49 UTC (rev 1630)
@@ -54,13 +54,12 @@
 
       real (kind=RKIND), dimension(:,:,:), pointer :: deriv_two
       real (kind=RKIND), dimension(:,:), pointer :: adv_coefs, adv_coefs_3rd
-      integer, dimension(:,:,:), pointer :: advectionMasks
-      integer, dimension(:,:), pointer :: cellsOnCell, cellsOnEdge, advCellsForEdge, boundaryCell
-      integer, dimension(:), pointer :: nEdgesOnCell, nAdvCellsForEdge
+      integer, dimension(:,:), pointer :: cellsOnCell, cellsOnEdge, advCellsForEdge, highOrderAdvectionMask, lowOrderAdvectionMask, boundaryCell
+      integer, dimension(:), pointer :: nEdgesOnCell, nAdvCellsForEdge, maxLevelCell
 
       integer, dimension(:), pointer :: cell_list, ordered_cell_list
       integer :: cell1, cell2, iEdge, n, i, j, j_in, iCell, k, nVertLevels
-      logical :: addcell
+      logical :: addcell, highOrderAdvection
 
       deriv_two =&gt; grid % deriv_two % array
       adv_coefs =&gt; grid % adv_coefs % array
@@ -69,8 +68,10 @@
       cellsOnEdge =&gt; grid % cellsOnEdge % array
       advCellsForEdge =&gt; grid % advCellsForEdge % array
       boundaryCell =&gt; grid % boundaryCell % array
-      avectionMasks =&gt; grid % advectionMasks % array
+      highOrderAdvectionMask =&gt; grid % highOrderAdvectionMask % array
+      lowOrderAdvectionMask =&gt; grid % lowOrderAdvectionMask % array
       nEdgesOnCell =&gt; grid % nEdgesOnCell % array
+      maxLevelCell =&gt; grid % maxLevelCell % array
       nAdvCellsForEdge =&gt; grid % nAdvCellsForEdge % array
 
       nVertLevels = grid % nVertLevels
@@ -78,7 +79,8 @@
       allocate(cell_list(grid % maxEdges2 + 2))
       allocate(ordered_cell_list(grid % maxEdges2 + 2))
 
-      avectionMasks = 0
+      highOrderAdvectionMask = 0
+      lowOrderAdvectionMask = 0
 
       do iEdge = 1, grid % nEdges
         nAdvCellsForEdge(iEdge) = 0
@@ -88,12 +90,12 @@
 
         do k = 1, nVertLevels
           if (boundaryCell(k, cell1) == 1 .or. boundaryCell(k, cell2) == 1) then
-            advectionMasks(1, k, iEdge) = 1 ! Need to use low order advection for this edge
+            highOrderAdvectionMask(k, iEdge) = 0
+            lowOrderAdvectionMask(k, iEdge) = 1
           else
-            advectionMasks(2, k, iEdge) = 1 ! Can use high order advection for this edge
+            highOrderAdvectionMask(k, iEdge) = 1
+            lowOrderAdvectionMask(k, iEdge) = 0
           end if
-
-          write(*,*) iedge, k, advectionMasks(1,k,iEdge) + advectionMasks(2,k,iEdge)
         end do
 
         !
@@ -221,7 +223,7 @@
       deallocate(cell_list)
       deallocate(ordered_cell_list)
 
-      write(*,*) 'Min max of sum, ', minval(advectionMasks(1,:,:)+advectionMasks(2,:,:)), maxval(advectionMasks(1,:,:) + advectionMasks(2,:,:))
+      write(*,*) 'Min max of sum, ', minval(highOrderAdvectionMask+lowOrderAdvectionMask), maxval(highOrderAdvectionMask+lowOrderAdvectionMask)
 
    end subroutine mpas_ocn_tracer_advection_coefficients!}}}
 

Modified: branches/ocean_projects/monotonic_advection/src/core_ocean/mpas_ocn_tracer_advection_mono.F
===================================================================
--- branches/ocean_projects/monotonic_advection/src/core_ocean/mpas_ocn_tracer_advection_mono.F        2012-03-13 22:01:16 UTC (rev 1629)
+++ branches/ocean_projects/monotonic_advection/src/core_ocean/mpas_ocn_tracer_advection_mono.F        2012-03-13 22:04:49 UTC (rev 1630)
@@ -61,8 +61,7 @@
       integer :: i, iCell, iEdge, k, iTracer, cell1, cell2
       integer :: nVertLevels, num_tracers, nCells, nEdges, nCellsSolve
       integer, dimension(:), pointer :: nAdvCellsForEdge, maxLevelCell, maxLevelEdgeTop, nEdgesOnCell
-      integer, dimension(:,:), pointer :: cellsOnEdge, cellsOnCell, advCellsForEdge
-      integer, dimension(:,:,:), pointer :: advectionMasks
+      integer, dimension(:,:), pointer :: cellsOnEdge, cellsOnCell, advCellsForEdge, highOrderAdvectionMask, lowOrderAdvectionMask
 
       real (kind=RKIND) :: coef_3rd_order, flux_upwind, tracer_min_new, tracer_max_new, tracer_upwind_new, scale_factor
       real (kind=RKIND) :: flux, tracer_weight, invDvEdge, invAreaCell1, invAreaCell2
@@ -90,7 +89,8 @@
       adv_coefs_3rd =&gt; grid % adv_coefs_3rd % array
       maxLevelCell =&gt; grid % maxLevelCell % array
       maxLevelEdgeTop =&gt; grid % maxLevelEdgeTop % array
-      advectionMasks =&gt; grid % advectionMasks % array
+      highOrderAdvectionMask =&gt; grid % highOrderAdvectionMask % array
+      lowOrderAdvectionMask =&gt; grid % lowOrderAdvectionMask % array
 
       nCells = grid % nCells
       nCellsSolve = grid % nCellsSolve
@@ -181,9 +181,8 @@
           do i = 1, nAdvCellsForEdge(iEdge)
             iCell = advCellsForEdge(i,iEdge)
             do k = 1, maxLevelCell(iCell)
-              ! AdvectionMasks defines the mask for low or high order advection (1,:,:) is the low order mask, while (2,:,:) is the high order mask
-              tracer_weight = advectionMasks(1, k, iEdge) * 0.5 * dvEdge(iEdge) &amp;
-                            + advectionMasks(2, k, iEdge) * (adv_coefs(i,iEdge) + coef_3rd_order*sign(1.,uh(k,iEdge))*adv_coefs_3rd(i,iEdge))
+              tracer_weight = lowOrderAdvectionMask(k, iEdge) * 0.5 * dvEdge(iEdge) &amp;
+                            + highOrderAdvectionMask(k, iEdge) * (adv_coefs(i,iEdge) + coef_3rd_order*sign(1.,uh(k,iEdge))*adv_coefs_3rd(i,iEdge))
 
               tracer_weight = uh(k,iEdge)*tracer_weight
               high_order_horiz_flux(k,iEdge) = high_order_horiz_flux(k,iEdge) + tracer_weight* tracer_cur(k,iCell)

</font>
</pre>