<p><b>dwj07@fsu.edu</b> 2011-10-25 15:01:33 -0600 (Tue, 25 Oct 2011)</p><p><br>
        -- BRANCH COMMIT --<br>
<br>
        Some small optimizations on thickness advection modules.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_thick_hadv.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_thick_hadv.F        2011-10-25 20:37:08 UTC (rev 1135)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_thick_hadv.F        2011-10-25 21:01:33 UTC (rev 1136)
@@ -107,7 +107,7 @@
       integer, dimension(:), pointer :: maxLevelEdgeTop
       integer, dimension(:,:), pointer :: cellsOnEdge
 
-      real (kind=RKIND) :: flux
+      real (kind=RKIND) :: flux, invAreaCell1, invAreaCell2
       real (kind=RKIND), dimension(:), pointer :: dvEdge, areaCell
 
       !-----------------------------------------------------------------
@@ -129,37 +129,38 @@
       dvEdge =&gt; grid % dvEdge % array
       areaCell =&gt; grid % areaCell % array
 
+      !dwj: 10/25/2011 - Need to explore isopycnal vs zlevel flags
       if (config_vert_grid_type.eq.'isopycnal') then
  
          do iEdge=1,nEdges
             cell1 = cellsOnEdge(1,iEdge)
             cell2 = cellsOnEdge(2,iEdge)
+
+            invAreaCell1 = 1.0 / areaCell(cell1)
+            invAreaCell2 = 1.0 / areaCell(cell2)
+
             do k=1,nVertLevels
                flux = u(k,iEdge) * dvEdge(iEdge) * h_edge(k,iEdge)
-               tend(k,cell1) = tend(k,cell1) - flux
-               tend(k,cell2) = tend(k,cell2) + flux
+               tend(k,cell1) = tend(k,cell1) - flux * invAreaCell1
+               tend(k,cell2) = tend(k,cell2) + flux * invAreaCell2
             end do
          end do
-         do iCell=1,nCells
-            do k=1,nVertLevels
-               tend(k,iCell) = tend(k,iCell) / areaCell(iCell)
-            end do
-         end do
 
       elseif (config_vert_grid_type.eq.'zlevel') then
 
          do iEdge=1,nEdges
             cell1 = cellsOnEdge(1,iEdge)
             cell2 = cellsOnEdge(2,iEdge)
+
+            invAreaCell1 = 1.0 / areaCell(cell1)
+            invAreaCell2 = 1.0 / areaCell(cell2)
+
             do k=1,min(1,maxLevelEdgeTop(iEdge))
                flux = u(k,iEdge) * dvEdge(iEdge) * h_edge(k,iEdge)
-               tend(k,cell1) = tend(k,cell1) - flux
-               tend(k,cell2) = tend(k,cell2) + flux
+               tend(k,cell1) = tend(k,cell1) - flux * invAreaCell1
+               tend(k,cell2) = tend(k,cell2) + flux * invAreaCell2
             end do
          end do
-         do iCell=1,nCells
-           tend(1,iCell) = tend(1,iCell) / areaCell(iCell)
-         end do
 
       endif ! config_vert_grid_type
 

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_thick_vadv.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_thick_vadv.F        2011-10-25 20:37:08 UTC (rev 1135)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_thick_vadv.F        2011-10-25 21:01:33 UTC (rev 1136)
@@ -112,6 +112,7 @@
 
       nCells = grid % nCells
 
+      ! dwj 10/25/2011 - Need to explore isopycnal vs zlevel flags
       if (config_vert_grid_type.eq.'zlevel') then
         do iCell=1,nCells
            tend(1,iCell) =   tend(1,iCell) + wTop(2,iCell)

</font>
</pre>