<p><b>dwj07@fsu.edu</b> 2011-08-30 14:37:08 -0600 (Tue, 30 Aug 2011)</p><p><br>
        Fixing a bug in HmixVelDel4 module.<br>
<br>
        Also fusing some loops, and replacing divisions with multiplications.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/ocean_projects/performance/mpas/src/core_ocean/module_OcnHmixVelDel4.F
===================================================================
--- branches/ocean_projects/performance/mpas/src/core_ocean/module_OcnHmixVelDel4.F        2011-08-30 20:18:32 UTC (rev 966)
+++ branches/ocean_projects/performance/mpas/src/core_ocean/module_OcnHmixVelDel4.F        2011-08-30 20:37:08 UTC (rev 967)
@@ -112,7 +112,8 @@
          nVertLevels                  ! array sizes
 
       real (kind=RKIND) :: &amp;
-         invArea1, invArea2,         &amp;! reciprocal of cell areas
+         invAreaCell1, invAreaCell2,      &amp;! reciprocal of cell areas
+         invAreaTri1, invAreaTri2,        &amp;! reciprocal of triangle areas
          invLength1, invLength2,     &amp;! reciprocal of dv and dc edge
          flux                         ! flux across edge
 
@@ -174,6 +175,10 @@
       !
       !-----------------------------------------------------------------
 
+      delsq_u(:,:) = 0.d0
+      delsq_vorticity(:,:) = 0.0
+      delsq_divergence(:,:) = 0.d0
+
       do iEdge=1,nEdges
          cell1 = cellsOnEdge(1,iEdge)
          cell2 = cellsOnEdge(2,iEdge)
@@ -192,51 +197,37 @@
                     vorticity(k,vertex1)) * invLength2
 
          end do
-         do k=maxLevelEdgeTop(iEdge)+1,nVertLevels
-            delsq_u(:,:) = 0.d0
-         end do
-
       end do
 
-      !***
-      !*** vorticity using </font>
<font color="red">abla^2 u
-      !***
 
-      delsq_vorticity(:,:) = 0.0
-
       do iEdge=1,nEdges
-
          vertex1 = verticesOnEdge(1,iEdge)
          vertex2 = verticesOnEdge(2,iEdge)
-         invArea1 = 1.d0 / areaTriangle(vertex1)
-         invArea2 = 1.d0 / areaTriangle(vertex2)
+         invAreaTri1 = 1.d0 / areaTriangle(vertex1)
+         invAreaTri2 = 1.d0 / areaTriangle(vertex2)
 
+         cell1 = cellsOnEdge(1,iEdge)
+         cell2 = cellsOnEdge(2,iEdge)
+         invAreaCell1 = 1.d0 / areaCell(cell1)
+         invAreaCell2 = 1.d0 / areaCell(cell2)
+
          do k=1,maxLevelEdgeTop(iEdge)
+            !***
+            !*** vorticity using </font>
<font color="red">abla^2 u
+            !***
             delsq_vorticity(k,vertex1) = delsq_vorticity(k,vertex1) &amp;
-               - dcEdge(iEdge) * delsq_u(k,iEdge) * invArea1
+               - dcEdge(iEdge) * delsq_u(k,iEdge) * invAreaTri1
             delsq_vorticity(k,vertex2) = delsq_vorticity(k,vertex2) &amp;
-               + dcEdge(iEdge) * delsq_u(k,iEdge) * invArea2
-         end do
-      end do
+               + dcEdge(iEdge) * delsq_u(k,iEdge) * invAreaTri2
 
-      !***
-      !*** Divergence using </font>
<font color="red">abla^2 u
-      !***
 
-      delsq_divergence(:,:) = 0.d0
-
-      do iEdge=1,nEdges
-
-         cell1 = cellsOnEdge(1,iEdge)
-         cell2 = cellsOnEdge(2,iEdge)
-         invArea1 = 1.d0 / areaCell(cell1)
-         invArea2 = 1.d0 / areaCell(cell2)
-
-         do k=1,maxLevelEdgeTop(iEdge)
+           !***
+           !*** Divergence using </font>
<font color="red">abla^2 u
+           !***
            delsq_divergence(k,cell1) = delsq_divergence(k,cell1) &amp;
-                + delsq_u(k,iEdge)*dvEdge(iEdge)*invArea1
+                + delsq_u(k,iEdge)*dvEdge(iEdge)*invAreaCell1
            delsq_divergence(k,cell2) = delsq_divergence(k,cell2) &amp;
-                - delsq_u(k,iEdge)*dvEdge(iEdge)*invArea2
+                - delsq_u(k,iEdge)*dvEdge(iEdge)*invAreaCell2
          end do
       end do
 

</font>
</pre>