<p><b>dwj07@fsu.edu</b> 2011-10-27 15:01:20 -0600 (Thu, 27 Oct 2011)</p><p><br>
        -- BRANCH COMMIT --<br>
<br>
        Adding some optimizations.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_coriolis.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_coriolis.F        2011-10-27 18:44:03 UTC (rev 1154)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_coriolis.F        2011-10-27 21:01:20 UTC (rev 1155)
@@ -112,7 +112,7 @@
 
       integer :: j, k
       integer :: cell1, cell2, nEdgesSolve, iEdge, eoe
-      real (kind=RKIND) :: workpv, q
+      real (kind=RKIND) :: workpv, q, invLength
 
       err = 0
 
@@ -131,6 +131,8 @@
          cell1 = cellsOnEdge(1,iEdge)
          cell2 = cellsOnEdge(2,iEdge)
 
+         invLength = 1.0 / dcEdge(iEdgE)
+
          do k=1,maxLevelEdgeTop(iEdge)
 
             q = 0.0
@@ -140,7 +142,7 @@
                q = q + weightsOnEdge(j,iEdge) * u(k,eoe) * workpv * h_edge(k,eoe) 
             end do
 
-           tend(k,iEdge) = tend(k,iEdge) + edgeMask(k, iEdge) * (q - (   ke(k,cell2) - ke(k,cell1) ) / dcEdge(iEdge))
+           tend(k,iEdge) = tend(k,iEdge) + edgeMask(k, iEdge) * (q - (   ke(k,cell2) - ke(k,cell1) ) * invLength )
 
          end do
       end do

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_forcing_bottomdrag.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_forcing_bottomdrag.F        2011-10-27 18:44:03 UTC (rev 1154)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_forcing_bottomdrag.F        2011-10-27 21:01:20 UTC (rev 1155)
@@ -42,7 +42,7 @@
    !
    !--------------------------------------------------------------------
 
-   logical :: bottomDragOn
+   integer :: bottomDragOn
    real (kind=RKIND) :: bottomDragCoef
 
 
@@ -182,10 +182,10 @@
 
       err = 0
 
-      bottomDragOn = .false.
+      bottomDragOn = 0
 
       if (.not.config_implicit_vertical_mix) then
-          bottomDragOn = .true.
+          bottomDragOn = 1
           bottomDragCoef = config_bottom_drag_coeff
       endif
 

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_forcing_windstress.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_forcing_windstress.F        2011-10-27 18:44:03 UTC (rev 1154)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_forcing_windstress.F        2011-10-27 21:01:20 UTC (rev 1155)
@@ -42,7 +42,7 @@
    !
    !--------------------------------------------------------------------
 
-   logical :: windStressOn
+   integer :: windStressOn
    real (kind=RKIND) :: rho_ref
 
 
@@ -171,13 +171,11 @@
 
       integer, intent(out) :: err !&lt; Output: error flag
 
-
-      windStressOn = .true.
+      windStressOn = 1
       rho_ref = 1000.0
 
       err = 0
 
-
    !--------------------------------------------------------------------
 
    end subroutine ocn_vel_forcing_windstress_init!}}}

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_hmix_del2.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_hmix_del2.F        2011-10-27 18:44:03 UTC (rev 1154)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_hmix_del2.F        2011-10-27 21:01:20 UTC (rev 1155)
@@ -42,8 +42,7 @@
    !
    !--------------------------------------------------------------------
 
-   logical :: &amp;
-      hmixDel2On         !&lt; local flag to determine whether del2 chosen
+   integer ::  hmixDel2On  !&lt; integer flag to determine whether del2 chosen
 
    real (kind=RKIND) :: &amp;
       eddyVisc2,        &amp;!&lt; base eddy diffusivity for Laplacian
@@ -117,7 +116,7 @@
       integer, dimension(:), pointer :: maxLevelEdgeTop
       integer, dimension(:,:), pointer :: cellsOnEdge, verticesOnEdge, edgeMask
 
-      real (kind=RKIND) :: u_diffusion
+      real (kind=RKIND) :: u_diffusion, invLength1, invLength2
       real (kind=RKIND), dimension(:), pointer :: meshScalingDel2, &amp;
               dcEdge, dvEdge
 
@@ -146,15 +145,18 @@
          vertex1 = verticesOnEdge(1,iEdge)
          vertex2 = verticesOnEdge(2,iEdge)
 
+         invLength1 = 1.0 / dcEdge(iEdge)
+         invLength2 = 1.0 / dvEdge(iEdge)
+
          do k=1,maxLevelEdgeTop(iEdge)
 
             ! Here -( vorticity(k,vertex2) - vorticity(k,vertex1) ) / dvEdge(iEdge)
             ! is - </font>
<font color="black">abla vorticity pointing from vertex 2 to vertex 1, or equivalently 
             !    + k \times </font>
<font color="gray">abla vorticity pointing from cell1 to cell2.
 
-            u_diffusion = ( divergence(k,cell2)  - divergence(k,cell1) ) / dcEdge(iEdge)  &amp;
+            u_diffusion = ( divergence(k,cell2)  - divergence(k,cell1) ) * invLength1 &amp;
                           -viscVortCoef &amp;
-                          *( vorticity(k,vertex2) - vorticity(k,vertex1) ) / dvEdge(iEdge)
+                          *( vorticity(k,vertex2) - vorticity(k,vertex1) ) * invLength2
 
             u_diffusion = meshScalingDel2(iEdge) * eddyVisc2 * u_diffusion
 
@@ -194,10 +196,10 @@
 
    err = 0
 
-   hmixDel2On = .false.
+   hmixDel2On = 0
 
    if ( config_h_mom_eddy_visc2 &gt; 0.0 ) then
-      hmixDel2On = .true.
+      hmixDel2On = 1
       eddyVisc2 = config_h_mom_eddy_visc2
 
 

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_pressure_grad.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_pressure_grad.F        2011-10-27 18:44:03 UTC (rev 1154)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_pressure_grad.F        2011-10-27 21:01:20 UTC (rev 1155)
@@ -106,6 +106,7 @@
       integer, dimension(:,:), pointer :: cellsOnEdge, edgeMask
 
       real (kind=RKIND), dimension(:), pointer :: dcEdge
+      real (kind=RKIND) :: invdcEdge
 
       err = 0
 
@@ -115,28 +116,20 @@
       dcEdge =&gt; grid % dcEdge % array
       edgeMask =&gt; grid % edgeMask % array
 
-!     dwj: 10/25/2011 - Need to explore isopycnal vs zlevel flags
-      if (config_vert_grid_type.eq.'isopycnal') then
-        do iEdge=1,nEdgesSolve
-          cell1 = cellsOnEdge(1,iEdge)
-          cell2 = cellsOnEdge(2,iEdge)
-          do k=1,maxLevelEdgeTop(iEdge)
-             tend(k,iEdge) = tend(k,iEdge) - edgeMask(k, iEdge) * ((pressure(k,cell2) - pressure(k,cell1))/dcEdge(iEdge))
-           end do
-        enddo
-      elseif (config_vert_grid_type.eq.'zlevel') then
-        do iEdge=1,nEdgesSolve
-          cell1 = cellsOnEdge(1,iEdge)
-          cell2 = cellsOnEdge(2,iEdge)
-          do k=1,maxLevelEdgeTop(iEdge)
+!    dwj: 10/25/2011 - Need to explore isopycnal vs zlevel flags
+     do iEdge=1,nEdgesSolve
+       cell1 = cellsOnEdge(1,iEdge)
+       cell2 = cellsOnEdge(2,iEdge)
 
-            tend(k,iEdge) = tend(k,iEdge) - edgeMask(k,iEdge) * rho0Inv*(  pressure(k,cell2) - pressure(k,cell1) )/dcEdge(iEdge)
-          end do
+       invdcEdge = 1.0 / dcEdge(iEdge)
+       do k=1,maxLevelEdgeTop(iEdge)
 
-        enddo
-      endif
+         tend(k,iEdge) = tend(k,iEdge) - edgeMask(k,iEdge) * rho0Inv*(  pressure(k,cell2) - pressure(k,cell1) ) * invdcEdge
+       end do
 
+     enddo
 
+
    !--------------------------------------------------------------------
 
    end subroutine ocn_vel_pressure_grad_tend!}}}

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_vadv.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_vadv.F        2011-10-27 18:44:03 UTC (rev 1154)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_vadv.F        2011-10-27 21:01:20 UTC (rev 1155)
@@ -43,7 +43,7 @@
    !
    !--------------------------------------------------------------------
 
-   logical :: velVadvOn
+   integer :: velVadvOn
 
 
 !***********************************************************************
@@ -177,10 +177,10 @@
       integer, intent(out) :: err !&lt; Output: error flag
 
       err = 0
-      velVadvOn = .false.
+      velVadvOn = 0
 
       if (config_vert_grid_type.eq.'zlevel') then
-          velVadvOn = .true.
+          velVadvOn = 1
       end if
 
    !--------------------------------------------------------------------

</font>
</pre>