<p><b>mhecht@lanl.gov</b> 2010-06-17 13:00:55 -0600 (Thu, 17 Jun 2010)</p><p>Some use of new lateral boundary support through cellsOnEdge.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/ocean_projects/port_adv_mwh/src/core_sw/module_time_integration.F
===================================================================
--- branches/ocean_projects/port_adv_mwh/src/core_sw/module_time_integration.F        2010-06-16 21:51:04 UTC (rev 357)
+++ branches/ocean_projects/port_adv_mwh/src/core_sw/module_time_integration.F        2010-06-17 19:00:55 UTC (rev 358)
@@ -452,8 +452,7 @@
       do iEdge=1,grid % nEdges
             cell1 = grid % cellsOnEdge % array(1,iEdge)
             cell2 = grid % cellsOnEdge % array(2,iEdge)
-            if (cell1 &gt; 0 .and. cell2 &gt; 0) then
-!!$            if (cell1 &lt;= grid%nCells .and. cell2 &lt;= grid%nCells) then
+            if (cell1 &lt;= grid%nCells .and. cell2 &lt;= grid%nCells) then
                do k=1,grid % nVertLevels
                   do iTracer=1,2
                      tracer_edge = 0.5 * (s % tracers % array(iTracer,k,cell1) + s % tracers % array(iTracer,k,cell2))
@@ -522,8 +521,7 @@
 !!$      do iEdge=1,grid % nEdges
 !!$            cell1 = cellsOnEdge(1,iEdge)
 !!$            cell2 = cellsOnEdge(2,iEdge)
-!!$            if (cell1 &gt; 0 .and. cell2 &gt; 0) then
-!!!$            if (cell1 &lt;= grid%nCells .and. cell2 &lt;= grid%nCells) then
+!!$            if (cell1 &lt;= grid%nCells .and. cell2 &lt;= grid%nCells) then
 !!$               do k=1,grid % nVertLevels
 !!$                  do iTracer=3,grid % nTracers
 !!$                     tracer_edge = 0.5 * (tracer_new(iTracer,k,cell1) + tracer_new(iTracer,k,cell2))
@@ -549,8 +547,7 @@
          do iEdge=1,grid%nEdges
             cell1 = cellsOnEdge(1,iEdge)
             cell2 = cellsOnEdge(2,iEdge)
-            if (cell1 &gt; 0 .and. cell2 &gt; 0) then
-!!$            if (cell1 &lt;= grid%nCells .and. cell2 &lt;= grid%nCells) then
+            if (cell1 &lt;= grid%nCells .and. cell2 &lt;= grid%nCells) then
                do k=1,grid % nVertLevels
                   do iTracer=3,grid % nTracers
                      tracer_edge = 0.5 * (tracer_new(iTracer,k,cell1) + tracer_new(iTracer,k,cell2))
@@ -567,30 +564,39 @@
          do iEdge=1,grid%nEdges
             cell1 = cellsOnEdge(1,iEdge)
             cell2 = cellsOnEdge(2,iEdge)
-            if (cell1 &gt; 0 .and. cell2 &gt; 0) then
-!!$            if (cell1 &lt;= grid%nCells .and. cell2 &lt;= grid%nCells) then
 
+            !-- if interior edge
+            if (cell1 &lt;= grid%nCells .and. cell2 &lt;= grid%nCells) then
+
                do k=1,grid % nVertLevels
 
                   do iTracer=3,grid % nTracers
                      d2fdx2_cell1 = deriv_two(1,1,iEdge) * tracer_new(iTracer,k,cell1)
                      d2fdx2_cell2 = deriv_two(1,2,iEdge) * tracer_new(iTracer,k,cell2)
+
+                     !-- all edges of cell 1
                      do i=1, grid % nEdgesOnCell % array (cell1)
+                        !-- check neighbor, across edge i of cell 1
                         if ( grid % CellsOnCell % array (i,cell1) &gt; 0) &amp;
                              d2fdx2_cell1 = d2fdx2_cell1 + &amp;
                              deriv_two(i+1,1,iEdge) * tracer_new(iTracer,k,grid % CellsOnCell % array (i,cell1))
                      end do
+
+                     !-- all edges of cell 2
                      do i=1, grid % nEdgesOnCell % array (cell2)
+                        !-- check neighbor, across edge i of cell 2?
                         if ( grid % CellsOnCell % array (i,cell2) &gt; 0) &amp;
                              d2fdx2_cell2 = d2fdx2_cell2 + &amp;
                              deriv_two(i+1,2,iEdge) * tracer_new(iTracer,k,grid % CellsOnCell % array (i,cell2))
                      end do
 
+                     !-- look one way
                      if (s % u % array(k,iEdge) * s % h_edge % array(k,iEdge) &gt; 0) then
                         flux = dvEdge(iEdge) * s % u % array(k,iEdge) * s % h_edge % array(k,iEdge) * (          &amp;
                              0.5*(tracer_new(iTracer,k,cell1) + tracer_new(iTracer,k,cell2))      &amp;
                              -(dcEdge(iEdge) **2) * (d2fdx2_cell1 + d2fdx2_cell2) / 12.          &amp;
                              -(dcEdge(iEdge) **2) * coef_3rd_order*(d2fdx2_cell1 - d2fdx2_cell2) / 12. )
+                     !-- look the other way
                      else
                         flux = dvEdge(iEdge) *  s % u % array(k,iEdge) * s % h_edge % array(k,iEdge) * (          &amp;
                              0.5*(tracer_new(iTracer,k,cell1) + tracer_new(iTracer,k,cell2))      &amp;
@@ -598,6 +604,7 @@
                              +(dcEdge(iEdge) **2) * coef_3rd_order*(d2fdx2_cell1 - d2fdx2_cell2) / 12. )
                      end if
 
+                     !-- update tendency
                      tracer_tend(iTracer,k,cell1) = tracer_tend(iTracer,k,cell1) - flux/areaCell(cell1)
                      tracer_tend(iTracer,k,cell2) = tracer_tend(iTracer,k,cell2) + flux/areaCell(cell2)
 
@@ -611,8 +618,7 @@
          do iEdge=1,grid%nEdges
             cell1 = cellsOnEdge(1,iEdge)
             cell2 = cellsOnEdge(2,iEdge)
-            if (cell1 &gt; 0 .and. cell2 &gt; 0) then
-!!$            if (cell1 &lt;= grid%nCells .and. cell2 &lt;= grid%nCells) then
+            if (cell1 &lt;= grid%nCells .and. cell2 &lt;= grid%nCells) then
 
                do k=1,grid % nVertLevels
 

</font>
</pre>