<p><b>gaw06e@fsu.edu</b> 2011-05-28 17:34:25 -0600 (Sat, 28 May 2011)</p><p>- changed compute_scalar_tend() to use cellArea approximation at boundaryCells<br>
</p><hr noshade><pre><font color="gray">Modified: branches/ocean_projects/triangle_border_swm/src/core_sw/module_time_integration.F
===================================================================
--- branches/ocean_projects/triangle_border_swm/src/core_sw/module_time_integration.F        2011-05-28 21:48:34 UTC (rev 857)
+++ branches/ocean_projects/triangle_border_swm/src/core_sw/module_time_integration.F        2011-05-28 23:34:25 UTC (rev 858)
@@ -329,7 +329,7 @@
          end do
       end do 
       do iCell=1,grid % nCellsSolve
-              if (boundaryCell(1,iCell).eq.1) then 
+         if (boundaryCell(1,iCell).eq.1) then 
             r = 1.0 / ( areaCell(iCell) * 2.0 )
          else
             r = 1.0 / areaCell(iCell)
@@ -595,12 +595,22 @@
             cell1 = cellsOnEdge(1,iEdge)
             cell2 = cellsOnEdge(2,iEdge)
             if (cell1 &lt;= grid%nCells .and. cell2 &lt;= grid%nCells) then
+               if (boundaryCell(1,cell1).eq.1) then 
+                  invAreaCell1 = 1.0 / ( areaCell(cell1) * 2.0 )
+               else
+                  invAreaCell1 = 1.0 / areaCell(cell1)
+               end if
+               if (boundaryCell(1,cell2).eq.1) then 
+                  invAreaCell2 = 1.0 / ( areaCell(cell2) * 2.0 )
+               else
+                  invAreaCell2 = 1.0 / areaCell(cell2)
+               end if
                do k=1,grid % nVertLevels
                   do iTracer=1,grid % nTracers
                      tracer_edge = 0.5 * (tracers(iTracer,k,cell1) + tracers(iTracer,k,cell2))
                      flux = u(k,iEdge) * dvEdge(iEdge) * h_edge(k,iEdge) * tracer_edge
-                     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)
+                     tracer_tend(iTracer,k,cell1) = tracer_tend(iTracer,k,cell1) - flux * invAreaCell1
+                     tracer_tend(iTracer,k,cell2) = tracer_tend(iTracer,k,cell2) + flux * invAreaCell2
                   end do 
                end do 
             end if
@@ -724,14 +734,21 @@
          !
          allocate(boundaryMask(grid % nVertLevels, grid % nEdges+1))
          boundaryMask = 1.0
-         where(boundaryEdge.eq.1) boundaryMask=0.0
+         where(boundaryEdge.gt.0) boundaryMask=0.0
 
          do iEdge=1,grid % nEdges
             cell1 = cellsOnEdge(1,iEdge)
             cell2 = cellsOnEdge(2,iEdge)
-            invAreaCell1 = 1.0/areaCell(cell1)
-            invAreaCell2 = 1.0/areaCell(cell2)
-
+            if (boundaryCell(1,cell1).eq.1) then 
+               invAreaCell1 = 1.0 / ( areaCell(cell1) * 2.0 )
+            else
+               invAreaCell1 = 1.0 / areaCell(cell1)
+            end if
+            if (boundaryCell(1,cell2).eq.1) then 
+               invAreaCell2 = 1.0 / ( areaCell(cell2) * 2.0 )
+            else
+               invAreaCell2 = 1.0 / areaCell(cell2)
+            end if
             do k=1,grid % nVertLevels
               do iTracer=1, grid % nTracers
                  ! \kappa_2 </font>
<font color="gray">abla \phi on edge
@@ -762,7 +779,7 @@
          !
          allocate(boundaryMask(grid % nVertLevels, grid % nEdges+1))
          boundaryMask = 1.0
-         where(boundaryEdge.eq.1) boundaryMask=0.0
+         where(boundaryEdge.gt.0) boundaryMask=0.0
 
          allocate(delsq_tracer(grid % nTracers, grid % nVertLevels, grid % nCells+1))
 
@@ -785,7 +802,12 @@
          end do
 
          do iCell = 1, grid % nCells
-            r = 1.0 / grid % areaCell % array(iCell)
+            if (boundaryCell(1,cell1).eq.1) then 
+               r = 1.0 / ( areaCell(cell1) * 2.0 )
+            else
+               r = 1.0 / areaCell(cell1)
+            end if
+            !r = 1.0 / grid % areaCell % array(iCell)
             do k=1,grid % nVertLevels
             do iTracer=1,grid % nTracers
                delsq_tracer(iTracer,k,iCell) = delsq_tracer(iTracer,k,iCell) * r
@@ -797,8 +819,18 @@
          do iEdge=1,grid % nEdges
             cell1 = grid % cellsOnEdge % array(1,iEdge)
             cell2 = grid % cellsOnEdge % array(2,iEdge)
-            invAreaCell1 = 1.0 / grid % areaCell % array(cell1)
-            invAreaCell2 = 1.0 / grid % areaCell % array(cell2)
+            if (boundaryCell(1,cell1).eq.1) then 
+               invAreaCell1 = 1.0 / ( areaCell(cell1) * 2.0 )
+            else
+               invAreaCell1 = 1.0 / areaCell(cell1)
+            end if
+            if (boundaryCell(1,cell2).eq.1) then 
+               invAreaCell2 = 1.0 / ( areaCell(cell2) * 2.0 )
+            else
+               invAreaCell2 = 1.0 / areaCell(cell2)
+            end if
+            !invAreaCell1 = 1.0 / grid % areaCell % array(cell1)
+            !invAreaCell2 = 1.0 / grid % areaCell % array(cell2)
 
             do k=1,grid % nVertLevels
             do iTracer=1,grid % nTracers

</font>
</pre>