<p><b>dwj07@fsu.edu</b> 2011-10-03 11:04:59 -0600 (Mon, 03 Oct 2011)</p><p><br>
        -- BRANCH COMMIT --<br>
<br>
        Setting up basic timers. Need to add specific ones later.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_equation_of_state.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_equation_of_state.F        2011-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_equation_of_state.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -99,8 +99,6 @@
 
       if(.not.eosOn) return
 
-      call timer_start(&quot;ocn_equation_of_state_rho&quot;)
-
       tracers =&gt; s % tracers % array
       indexT = s % index_temperature
       indexS = s % index_salinity
@@ -122,8 +120,6 @@
 
       endif
 
-      call timer_stop(&quot;ocn_equation_of_state_rho&quot;)
-
    end subroutine ocn_equation_of_state_rho!}}}
 
 !***********************************************************************

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_equation_of_state_jm.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_equation_of_state_jm.F        2011-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_equation_of_state_jm.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -194,8 +194,6 @@
 
       err = 0
 
-      call timer_start(&quot;equation_of_state_jm&quot;)
-
       nCells      = grid % nCells
       maxLevelCell      =&gt; grid % maxLevelCell % array
       nVertLevels = grid % nVertLevels
@@ -309,8 +307,6 @@
 
    deallocate(pRefEOS,p,p2)
 
-   call timer_stop(&quot;equation_of_state_jm&quot;)
-
    end subroutine ocn_equation_of_state_jm_rho!}}}
 
 !***********************************************************************

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_equation_of_state_linear.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_equation_of_state_linear.F        2011-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_equation_of_state_linear.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -87,8 +87,6 @@
       integer :: nCells, iCell, k
       type (dm_info) :: dminfo
 
-      call timer_start(&quot;ocn_equation_of_state_linear&quot;)
-
       maxLevelCell      =&gt; grid % maxLevelCell % array
       nCells      = grid % nCells
 
@@ -103,8 +101,6 @@
          end do
       end do
 
-      call timer_stop(&quot;ocn_equation_of_state_linear&quot;)
-
    end subroutine ocn_equation_of_state_linear_rho!}}}
 
 !***********************************************************************

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_mpas_core.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_mpas_core.F        2011-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_mpas_core.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -293,9 +293,9 @@
          call MPAS_getTime(curr_time=currTime, dateTimeString=timeStamp, ierr=ierr)
          write(0,*) 'Doing timestep ', timeStamp
 
-         call timer_start(&quot;time integration&quot;)
+         call timer_start(&quot;mpas_timestep&quot;)
          call mpas_timestep(domain, itimestep, dt, timeStamp)
-         call timer_stop(&quot;time integration&quot;)
+         call timer_stop(&quot;mpas_timestep&quot;)
    
          ! Move time level 2 fields back into time level 1 for next time step
          call shift_time_levels_state(domain % blocklist % state)

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tendency.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tendency.F        2011-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tendency.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -131,8 +131,6 @@
       real (kind=RKIND), allocatable, dimension(:,:) :: delsq_u
       real (kind=RKIND), allocatable, dimension(:,:) :: delsq_circulation, delsq_vorticity
 
-      call timer_start(&quot;ocn_tend_h&quot;)
-
       h           =&gt; s % h % array
       u           =&gt; s % u % array
       v           =&gt; s % v % array
@@ -192,22 +190,13 @@
       !
       ! for z-level, only compute height tendency for top layer.
 
-      call timer_start(&quot;ocn_tend_h-horiz adv&quot;)
-
       call ocn_thick_hadv_tend(grid, u, h_edge, tend_h, err)
 
-      call timer_stop(&quot;ocn_tend_h-horiz adv&quot;)
-
       !
       ! height tendency: vertical advection term -d/dz(hw)
       !
       ! Vertical advection computed for top layer of a z grid only.
-      call timer_start(&quot;ocn_tend_h-vert adv&quot;)
-
       call ocn_thick_vadv_tend(grid, wtop, tend_h, err)
-
-      call timer_stop(&quot;ocn_tend_h-vert adv&quot;)
-      call timer_stop(&quot;ocn_tend_h&quot;)
    
    end subroutine ocn_tend_h!}}}
 
@@ -274,8 +263,6 @@
       real (kind=RKIND), dimension(:,:), pointer :: u_src
       real (kind=RKIND), parameter :: rho_ref = 1000.0
 
-      call timer_start(&quot;ocn_tend_u&quot;)
-
       h           =&gt; s % h % array
       u           =&gt; s % u % array
       v           =&gt; s % v % array
@@ -338,68 +325,43 @@
       ! velocity tendency: nonlinear Coriolis term and grad of kinetic energy
       !
 
-      call timer_start(&quot;ocn_tend_u-coriolis&quot;)
-
       call ocn_vel_coriolis_tend(grid, pv_edge, h_edge, u, ke, tend_u, err)
 
-      call timer_stop(&quot;ocn_tend_u-coriolis&quot;)
-
       !
       ! velocity tendency: vertical advection term -w du/dz
       !
-      call timer_start(&quot;ocn_tend_u-vert adv&quot;)
-
       call ocn_vel_vadv_tend(grid, u, wtop, tend_u, err)
 
-      call timer_stop(&quot;ocn_tend_u-vert adv&quot;)
-
       !
       ! velocity tendency: pressure gradient
       !
-      call timer_start(&quot;ocn_tend_u-pressure grad&quot;)
-
       if (config_vert_grid_type.eq.'isopycnal') then
           call ocn_vel_pressure_grad_tend(grid, MontPot, tend_u, err)
       elseif (config_vert_grid_type.eq.'zlevel') then
           call ocn_vel_pressure_grad_tend(grid, pressure, tend_u, err)
       end if
 
-      call timer_stop(&quot;ocn_tend_u-pressure grad&quot;)
-
       !
       ! velocity tendency: del2 dissipation, </font>
<font color="black">u_2 </font>
<font color="black">abla^2 u
       !   computed as </font>
<font color="black">u( </font>
<font color="black">abla divergence + k \times </font>
<font color="gray">abla vorticity )
       !   strictly only valid for config_h_mom_eddy_visc2 == constant
       !
-      call timer_start(&quot;ocn_tend_u-horiz mix&quot;)
-
       call ocn_vel_hmix_tend(grid, divergence, vorticity, tend_u, err)
 
-      call timer_stop(&quot;ocn_tend_u-horiz mix&quot;)
-
       !
       ! velocity tendency: forcing and bottom drag
       !
       ! mrp 101115 note: in order to include flux boundary conditions, we will need to 
       ! know the bottom edge with nonzero velocity and place the drag there.
 
-      call timer_start(&quot;ocn_tend_u-forcings&quot;)
-
       call ocn_vel_forcing_tend(grid, u, u_src, ke_edge, h_edge, tend_u, err)
 
-      call timer_stop(&quot;ocn_tend_u-forcings&quot;)
-
       !
       ! velocity tendency: vertical mixing d/dz( nu_v du/dz))
       !
       if (.not.config_implicit_vertical_mix) then
-          call timer_start(&quot;ocn_tend_u-explicit vert mix&quot;)
-
           call ocn_vel_vmix_tend_explicit(grid, u, h_edge, vertvisctopofedge, tend_u, err)
-
-          call timer_stop(&quot;ocn_tend_u-explicit vert mix&quot;)
       endif
-      call timer_stop(&quot;ocn_tend_u&quot;)
 
    end subroutine ocn_tend_u!}}}
 
@@ -465,8 +427,6 @@
       integer :: index_temperature, index_salinity, rrr
       real (kind=RKIND), dimension(:), pointer :: temperatureRestore, salinityRestore
 
-      call timer_start(&quot;ocn_tend_scalar&quot;)
-
       u           =&gt; s % u % array
       h           =&gt; s % h % array
       boundaryCell=&gt; grid % boundaryCell % array
@@ -515,32 +475,19 @@
       ! and then change maxLevelEdgeTop to maxLevelEdgeBot in the following section.
       ! tracer_edge at the boundary will also need to be defined for flux boundaries.
 
-      call timer_start(&quot;ocn_tend_scalar-horiz adv&quot;)
-
       call ocn_tracer_hadv_tend(grid, u, h_edge, tracers, tend_tr, err)
 
-      call timer_stop(&quot;ocn_tend_scalar-horiz adv&quot;)
-
-
       !
       ! tracer tendency: vertical advection term -d/dz( h \phi w)
       !
 
-      call timer_start(&quot;ocn_tend_scalar-vert adv&quot;)
-
       call ocn_tracer_vadv_tend(grid, wtop, tracers, tend_tr, err)
 
-      call timer_stop(&quot;ocn_tend_scalar-vert adv&quot;)
-
       !
       ! tracer tendency: del2 horizontal tracer diffusion, div(h \kappa_2 </font>
<font color="gray">abla \phi)
       !
-      call timer_start(&quot;ocn_tend_scalar-horiz diff&quot;)
-
       call ocn_tracer_hmix_tend(grid, h_edge, tracers, tend_tr, err)
 
-      call timer_stop(&quot;ocn_tend_scalar-horiz diff&quot;)
-
 ! mrp 110516 printing
 !print *, 'tend_tr 1',minval(tend_tr(3,1,1:nCells)),&amp;
 !                   maxval(tend_tr(3,1,1:nCells))
@@ -552,11 +499,7 @@
       ! tracer tendency: vertical diffusion h d/dz( \kappa_v d\phi/dz)
       !
       if (.not.config_implicit_vertical_mix) then
-         call timer_start(&quot;ocn_tend_scalar-explicit vert diff&quot;)
-
          call ocn_tracer_vmix_tend_explicit(grid, h, vertdifftopofcell, tracers, tend_tr, err)
-
-         call timer_stop(&quot;ocn_tend_scalar-explicit vert diff&quot;)
       endif
 
 ! mrp 110516 printing
@@ -567,14 +510,9 @@
       !
       ! add restoring to T and S in top model layer
       !
-      call timer_start(&quot;ocn_tend_scalar-restoring&quot;)
-
       call ocn_restoring_tend(grid, h, s%index_temperature, s%index_salinity, tracers, tend_tr, err)
 
-      call timer_stop(&quot;ocn_tend_scalar-restoring&quot;)
-
  10   format(2i8,10e20.10)
-      call timer_stop(&quot;ocn_tend_scalar&quot;)
 
    end subroutine ocn_tend_scalar!}}}
 
@@ -637,8 +575,6 @@
       real (kind=RKIND) :: coef_3rd_order
       real (kind=RKIND) :: r, h1, h2
 
-      call timer_start(&quot;ocn_diagnostic_solve&quot;)
-
       h           =&gt; s % h % array
       u           =&gt; s % u % array
       v           =&gt; s % v % array
@@ -702,16 +638,11 @@
 
       ! mrp 110516 efficiency note: For z-level, only do this on level 1.  h_edge for all
       ! lower levels is defined by hZlevel.
-
-      call timer_start(&quot;ocn_diagnostic_solve-hEdge&quot;)
-
       coef_3rd_order = 0.
       if (config_thickness_adv_order == 3) coef_3rd_order = 1.0
       if (config_thickness_adv_order == 3 .and. config_monotonic) coef_3rd_order = 0.25
 
       if (config_thickness_adv_order == 2) then
-          call timer_start(&quot;ocn_diagnostic_solve-hEdge 2&quot;)
-
          do iEdge=1,nEdges
             cell1 = cellsOnEdge(1,iEdge)
             cell2 = cellsOnEdge(2,iEdge)
@@ -719,11 +650,7 @@
                h_edge(k,iEdge) = 0.5 * (h(k,cell1) + h(k,cell2))
             end do
          end do
-          call timer_stop(&quot;ocn_diagnostic_solve-hEdge 2&quot;)
-
       else if (config_thickness_adv_order == 3) then
-          call timer_start(&quot;ocn_diagnostic_solve-hEdge 3&quot;)
-
          do iEdge=1,nEdges
             cell1 = cellsOnEdge(1,iEdge)
             cell2 = cellsOnEdge(2,iEdge)
@@ -769,11 +696,7 @@
 
             end do   ! do k
          end do         ! do iEdge
-
-          call timer_stop(&quot;ocn_diagnostic_solve-hEdge 3&quot;)
       else  if (config_thickness_adv_order == 4) then
-          call timer_start(&quot;ocn_diagnostic_solve-hEdge 4&quot;)
-
          do iEdge=1,nEdges
             cell1 = cellsOnEdge(1,iEdge)
             cell2 = cellsOnEdge(2,iEdge)
@@ -809,10 +732,7 @@
 
             end do   ! do k
          end do         ! do iEdge
-
-         call timer_stop(&quot;ocn_diagnostic_solve-hEdge 4&quot;)
       endif   ! if(config_thickness_adv_order == 2)
-      call timer_stop(&quot;ocn_diagnostic_solve-hEdge&quot;)
 
       !
       ! set the velocity and height at dummy address
@@ -1070,8 +990,6 @@
 
       call ocn_wtop(s,grid)
 
-      call timer_stop(&quot;ocn_diagnostic_solve&quot;)
-
    end subroutine ocn_diagnostic_solve!}}}
 
 !***********************************************************************
@@ -1121,8 +1039,6 @@
         maxLevelCell, maxLevelEdgeTop, maxLevelEdgeBot, &amp;
         maxLevelVertexBot,  maxLevelVertexTop
 
-        call timer_start(&quot;wTop&quot;)
-
       u           =&gt; s % u % array
       wTop        =&gt; s % wTop % array
 
@@ -1176,8 +1092,6 @@
 
       endif
 
-      call timer_stop(&quot;wTop&quot;)
-
    end subroutine ocn_wtop!}}}
 
 !***********************************************************************
@@ -1241,8 +1155,6 @@
       real (kind=RKIND), dimension(:,:), pointer :: u_src
       real (kind=RKIND), parameter :: rho_ref = 1000.0
 
-      call timer_start(&quot;ocn_fuperp&quot;)
-
       h           =&gt; s % h % array
       u           =&gt; s % u % array
       uBcl        =&gt; s % uBcl % array
@@ -1305,8 +1217,6 @@
          end do
       end do
 
-      call timer_stop(&quot;ocn_fuperp&quot;)
-
    end subroutine ocn_fuperp!}}}
 
 !***********************************************************************

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_time_integration.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_time_integration.F        2011-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_time_integration.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -112,6 +112,8 @@
 
       integer, intent(out) :: err
 
+      err = 0
+
       rk4On = .false.
       splitOn = .false.
 

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_time_integration_rk4.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_time_integration_rk4.F        2011-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_time_integration_rk4.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -93,7 +93,10 @@
       real (kind=RKIND), dimension(:), allocatable:: A,C,uTemp
       real (kind=RKIND), dimension(:,:), allocatable:: tracersTemp
 
+      call timer_start(&quot;rk4 timestep&quot;)
 
+      call timer_start(&quot;rk4 initialize&quot;)
+
       block =&gt; domain % blocklist
       call allocate_state(provis, &amp;
                           block % mesh % nCells, block % mesh % nEdges, block % mesh % maxEdges, block % mesh % maxEdges2, &amp;
@@ -133,14 +136,17 @@
       rk_substep_weights(4) = 0.
 
 
-      call timer_start(&quot;RK4-main loop&quot;)
+      call timer_stop(&quot;rk4 initialize&quot;)
+
+
       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       ! BEGIN RK loop 
       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+      call timer_start(&quot;rk4 main loop&quot;)
       do rk_step = 1, 4
 ! ---  update halos for diagnostic variables
 
-        call timer_start(&quot;RK4-diagnostic halo update&quot;)
+        call timer_start(&quot;rk4 diag halo update&quot;)
         block =&gt; domain % blocklist
         do while (associated(block))
            call dmpar_exch_halo_field2dReal(domain % dminfo, provis % pv_edge % array(:,:), &amp;
@@ -158,18 +164,25 @@
 
            block =&gt; block % next
         end do
-        call timer_stop(&quot;RK4-diagnostic halo update&quot;)
+        call timer_stop(&quot;rk4 diag halo update&quot;)
 
 ! ---  compute tendencies
 
-        call timer_start(&quot;RK4-tendency computations&quot;)
+        call timer_start(&quot;rk4 tendencies&quot;)
         block =&gt; domain % blocklist
         do while (associated(block))
            if (.not.config_implicit_vertical_mix) then
+              call timer_start(&quot;explicit vmix coefs&quot;)
               call ocn_vmix_coefs(block % mesh, provis, block % diagnostics, err)
+              call timer_stop(&quot;explicit vmix coefs&quot;)
            end if
+           call timer_start(&quot;rk4 h tend&quot;)
            call ocn_tend_h(block % tend, provis, block % diagnostics, block % mesh)
+           call timer_stop(&quot;rk4 h tend&quot;)
+
+           call timer_start(&quot;rk4 u tend&quot;)
            call ocn_tend_u(block % tend, provis, block % diagnostics, block % mesh)
+           call timer_stop(&quot;rk4 u tend&quot;)
 
            ! mrp 110718 filter btr mode out of u_tend
            ! still got h perturbations with just this alone.  Try to set uBtr=0 after full u computation
@@ -177,15 +190,20 @@
                call filter_btr_mode_tend_u(block % tend, provis, block % diagnostics, block % mesh)
            endif
 
+           call timer_start(&quot;rk4 tracer tend&quot;)
            call ocn_tend_scalar(block % tend, provis, block % diagnostics, block % mesh)
+           call timer_stop(&quot;rk4 tracer tend&quot;)
+
+           call timer_start(&quot;rk4 bdry edge&quot;)
            call enforce_boundaryEdge(block % tend, block % mesh)
+           call timer_stop(&quot;rk4 bdry edge&quot;)
            block =&gt; block % next
         end do
-        call timer_stop(&quot;RK4-tendency computations&quot;)
+        call timer_stop(&quot;rk4 tendencies&quot;)
 
 ! ---  update halos for prognostic variables
 
-        call timer_start(&quot;RK4-pronostic halo update&quot;)
+        call timer_start(&quot;rk4 prog halo update&quot;)
         block =&gt; domain % blocklist
         do while (associated(block))
            call dmpar_exch_halo_field2dReal(domain % dminfo, block % tend % u % array(:,:), &amp;
@@ -199,12 +217,12 @@
                                             block % parinfo % cellsToSend, block % parinfo % cellsToRecv)
            block =&gt; block % next
         end do
-        call timer_stop(&quot;RK4-pronostic halo update&quot;)
+        call timer_stop(&quot;rk4 prog halo update&quot;)
 
 ! ---  compute next substep state
 
-        call timer_start(&quot;RK4-update diagnostic variables&quot;)
         if (rk_step &lt; 4) then
+           call timer_start(&quot;rk4 next substep&quot;)
            block =&gt; domain % blocklist
            do while (associated(block))
 
@@ -227,18 +245,18 @@
                  provis % u % array(:,:) = block % state % time_levs(1) % state % u % array(:,:)
               end if
 
+              call timer_start(&quot;rk4 diag update&quot;)
               call ocn_diagnostic_solve(dt, provis, block % mesh)
+              call timer_stop(&quot;rk4 diag update&quot;)
 
               block =&gt; block % next
            end do
+           call timer_stop(&quot;rk4 next substep&quot;)
         end if
-        call timer_stop(&quot;RK4-update diagnostic variables&quot;)
 
-
-
 !--- accumulate update (for RK4)
 
-        call timer_start(&quot;RK4-RK4 accumulate update&quot;)
+        call timer_start(&quot;rk4 accumulate&quot;)
         block =&gt; domain % blocklist
         do while (associated(block))
            block % state % time_levs(2) % state % u % array(:,:) = block % state % time_levs(2) % state % u % array(:,:) &amp;
@@ -257,18 +275,18 @@
 
            block =&gt; block % next
         end do
-        call timer_stop(&quot;RK4-RK4 accumulate update&quot;)
+        call timer_stop(&quot;rk4 accumulate&quot;)
 
       end do
+      call timer_stop(&quot;rk4 main loop&quot;)
       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       ! END RK loop 
       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-      call timer_stop(&quot;RK4-main loop&quot;)
 
       !
       !  A little clean up at the end: decouple new scalar fields and compute diagnostics for new state
       !
-      call timer_start(&quot;RK4-cleaup phase&quot;)
+      call timer_start(&quot;rk4 finalize&quot;)
       block =&gt; domain % blocklist
       do while (associated(block))
 
@@ -294,16 +312,20 @@
          end do
 
          if (config_implicit_vertical_mix) then
-            call timer_start(&quot;RK4-implicit vert mix&quot;)
+            call timer_start(&quot;implicit vmix&quot;)
             allocate(A(nVertLevels),C(nVertLevels),uTemp(nVertLevels), &amp;
                tracersTemp(num_tracers,nVertLevels))
 
+            call timer_start(&quot;implicit vmix - coefs&quot;)
             call ocn_vmix_coefs(block % mesh, block % state % time_levs(2) % state, block % diagnostics, err)
+            call timer_stop(&quot;implicit vmix - coefs&quot;)
 
             !
             !  Implicit vertical solve for momentum
             !
+            call timer_start(&quot;implicit vmix - vel&quot;)
             call ocn_vel_vmix_tend_implicit(block % mesh, dt, ke_edge, vertvisctopofedge, h, h_edge, u, err)
+            call timer_stop(&quot;implicit vmix - vel&quot;)
 
           !  mrp 110718 filter btr mode out of u
            if (config_rk_filter_btr_mode) then
@@ -315,12 +337,13 @@
             !  Implicit vertical solve for tracers
             !
 
+            call timer_start(&quot;implicit vmix - tracers&quot;)
             call ocn_tracer_vmix_tend_implicit(block % mesh, dt, vertdifftopofcell, h, tracers, err)
+            call timer_stop(&quot;implicit vmix - tracers&quot;)
          end if
 
          ! mrp 110725 momentum decay term
          if (config_mom_decay) then
-             call timer_start(&quot;RK4-momentum decay&quot;)
 
             !
             !  Implicit solve for momentum decay
@@ -337,7 +360,6 @@
                end do
             end do
 
-            call timer_stop(&quot;RK4-momentum decay&quot;)
          end if
 
 
@@ -345,16 +367,21 @@
             block % state % time_levs(2) % state % u % array(:,:) = block % state % time_levs(1) % state % u % array(:,:)
          end if
 
+         call timer_start(&quot;implicit vmix - diag solve&quot;)
          call ocn_diagnostic_solve(dt, block % state % time_levs(2) % state, block % mesh)
+         call timer_stop(&quot;implicit vmix - diag solve&quot;)
 
          call reconstruct(block % state % time_levs(2) % state, block % mesh)
 
          block =&gt; block % next
+         call timer_stop(&quot;implicit vmix&quot;)
       end do
-      call timer_stop(&quot;RK4-cleaup phase&quot;)
 
       call deallocate_state(provis)
+      call timer_stop(&quot;rk4 finalize&quot;)
 
+      call timer_stop(&quot;rk4 timestep&quot;)
+
    end subroutine ocn_time_integrator_rk4!}}}
 
    subroutine filter_btr_mode_tend_u(tend, s, d, grid)!{{{
@@ -406,7 +433,6 @@
       real (kind=RKIND), dimension(:,:), pointer :: u_src
       real (kind=RKIND), parameter :: rho_ref = 1000.0
 
-      call timer_start(&quot;filter_btr_mode_tend_u&quot;)
 
       h           =&gt; s % h % array
       u           =&gt; s % u % array
@@ -478,8 +504,6 @@
 
            enddo ! iEdge
 
-      call timer_stop(&quot;filter_btr_mode_tend_u&quot;)
-
    end subroutine filter_btr_mode_tend_u!}}}
 
    subroutine filter_btr_mode_u(s, grid)!{{{
@@ -529,7 +553,6 @@
       real (kind=RKIND), dimension(:,:), pointer :: u_src
       real (kind=RKIND), parameter :: rho_ref = 1000.0
 
-      call timer_start(&quot;filter_btr_mode_u&quot;)
 
       h           =&gt; s % h % array
       u           =&gt; s % u % array
@@ -597,8 +620,6 @@
 
            enddo ! iEdge
 
-      call timer_stop(&quot;filter_btr_mode_u&quot;)
-
    end subroutine filter_btr_mode_u!}}}
 
    subroutine enforce_boundaryEdge(tend, grid)!{{{
@@ -621,7 +642,6 @@
       integer :: nCells, nEdges, nVertices, nVertLevels
       integer :: iEdge, k
 
-      call timer_start(&quot;enforce_boundaryEdge&quot;)
 
       nCells      = grid % nCells
       nEdges      = grid % nEdges
@@ -642,7 +662,6 @@
 
         enddo
        enddo
-      call timer_stop(&quot;enforce_boundaryEdge&quot;)
 
    end subroutine enforce_boundaryEdge!}}}
 

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_time_integration_split.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_time_integration_split.F        2011-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_time_integration_split.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -99,8 +99,6 @@
       real (kind=RKIND), dimension(:), allocatable:: A,C,uTemp, hNew
       real (kind=RKIND), dimension(:,:), allocatable:: tracersTemp
 
-      call timer_start(&quot;split_explicit_timestep&quot;)
-
       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       !
       !  Prep variables before first iteration
@@ -1141,8 +1139,6 @@
 
          block =&gt; block % next
       end do
-      call timer_stop(&quot;split_explicit_timestep&quot;)
-
    end subroutine ocn_time_integrator_split!}}}
 
    subroutine filter_btr_mode_tend_u(tend, s, d, grid)!{{{
@@ -1194,8 +1190,6 @@
       real (kind=RKIND), dimension(:,:), pointer :: u_src
       real (kind=RKIND), parameter :: rho_ref = 1000.0
 
-      call timer_start(&quot;filter_btr_mode_tend_u&quot;)
-
       h           =&gt; s % h % array
       u           =&gt; s % u % array
       v           =&gt; s % v % array
@@ -1266,8 +1260,6 @@
 
            enddo ! iEdge
 
-      call timer_stop(&quot;filter_btr_mode_tend_u&quot;)
-
    end subroutine filter_btr_mode_tend_u!}}}
 
    subroutine filter_btr_mode_u(s, grid)!{{{
@@ -1317,8 +1309,6 @@
       real (kind=RKIND), dimension(:,:), pointer :: u_src
       real (kind=RKIND), parameter :: rho_ref = 1000.0
 
-      call timer_start(&quot;filter_btr_mode_u&quot;)
-
       h           =&gt; s % h % array
       u           =&gt; s % u % array
       v           =&gt; s % v % array
@@ -1385,8 +1375,6 @@
 
            enddo ! iEdge
 
-      call timer_stop(&quot;filter_btr_mode_u&quot;)
-
    end subroutine filter_btr_mode_u!}}}
 
    subroutine enforce_boundaryEdge(tend, grid)!{{{
@@ -1409,8 +1397,6 @@
       integer :: nCells, nEdges, nVertices, nVertLevels
       integer :: iEdge, k
 
-      call timer_start(&quot;enforce_boundaryEdge&quot;)
-
       nCells      = grid % nCells
       nEdges      = grid % nEdges
       nVertices   = grid % nVertices
@@ -1430,7 +1416,6 @@
 
         enddo
        enddo
-      call timer_stop(&quot;enforce_boundaryEdge&quot;)
 
    end subroutine enforce_boundaryEdge!}}}
 

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_hadv2.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_hadv2.F        2011-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_hadv2.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -127,8 +127,6 @@
 
       if(.not.hadv2On) return
 
-      call timer_start(&quot;compute_scalar_tend-horiz adv 2&quot;)
-
       nEdges = grid % nEdges
       maxLevelEdgeTop =&gt; grid % maxLevelEdgeTop % array
       cellsOnEdge =&gt; grid % cellsOnEdge % array
@@ -149,7 +147,6 @@
          end do
       end do
 
-      call timer_stop(&quot;compute_scalar_tend-horiz adv 2&quot;)
    !--------------------------------------------------------------------
 
    end subroutine ocn_tracer_hadv2_tend!}}}

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_hadv3.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_hadv3.F        2011-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_hadv3.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -142,7 +142,6 @@
       areaCell =&gt; grid % areaCell % array
       deriv_two =&gt; grid % deriv_two % array
 
-      call timer_start(&quot;compute_scalar_tend-horiz adv 3&quot;)
       do iEdge=1,nEdges
          cell1 = cellsOnEdge(1,iEdge)
          cell2 = cellsOnEdge(2,iEdge)
@@ -194,7 +193,6 @@
             enddo
          end do
       end do
-      call timer_stop(&quot;compute_scalar_tend-horiz adv 3&quot;)
 
    !--------------------------------------------------------------------
 

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_hadv4.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_hadv4.F        2011-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_hadv4.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -139,8 +139,6 @@
       areaCell =&gt; grid % areaCell % array
       deriv_two =&gt; grid % deriv_two % array
 
-      call timer_start(&quot;compute_scalar_tend-horiz adv 4&quot;)
-
       do iEdge=1,nEdges
          cell1 = cellsOnEdge(1,iEdge)
          cell2 = cellsOnEdge(2,iEdge)
@@ -182,7 +180,6 @@
             enddo
          end do
       end do
-      call timer_stop(&quot;compute_scalar_tend-horiz adv 4&quot;)
 
    !--------------------------------------------------------------------
 

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_hmix_del2.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_hmix_del2.F        2011-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_hmix_del2.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -134,8 +134,6 @@
 
       if (.not.del2On) return
 
-      call timer_start(&quot;compute_scalar_tend-horiz diff 2&quot;)
-
       nEdges = grid % nEdges
       nVertLevels = grid % nVertLevels
       num_tracers = size(tracers, dim=1)
@@ -179,7 +177,6 @@
       end do
 
       deallocate(boundaryMask)
-      call timer_stop(&quot;compute_scalar_tend-horiz diff 2&quot;)
 
    !--------------------------------------------------------------------
 

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_hmix_del4.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_hmix_del4.F        2011-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_hmix_del4.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -135,8 +135,6 @@
 
       if (.not.Del4On) return
 
-      call timer_start(&quot;compute_scalar_tend-horiz diff 4&quot;)
-
       nEdges = grid % nEdges
       nCells = grid % nCells
       num_tracers = size(tracers, dim=1)
@@ -212,7 +210,6 @@
       end do
 
       deallocate(delsq_tracer)
-      call timer_stop(&quot;compute_scalar_tend-horiz diff 4&quot;)
    !--------------------------------------------------------------------
 
    end subroutine ocn_tracer_hmix_del4_tend!}}}

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_vadv_spline2.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_vadv_spline2.F        2011-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_vadv_spline2.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -125,8 +125,6 @@
       if(.not.spline2On) return
       ! Compute tracerTop using linear interpolation.
 
-      call timer_start(&quot;compute_scalar_tend-vert adv spline 2&quot;)
-
       nCells = grid % nCells
       nCellsSolve = grid % nCellsSolve
       nVertLevels = grid % nVertLevels
@@ -161,8 +159,6 @@
       end do
 
       deallocate(tracerTop)
-
-      call timer_stop(&quot;compute_scalar_tend-vert adv spline 2&quot;)
    !--------------------------------------------------------------------
 
    end subroutine ocn_tracer_vadv_spline2_tend!}}}

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_vadv_spline3.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_vadv_spline3.F        2011-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_vadv_spline3.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -129,8 +129,6 @@
       if(.not.spline3On) return
       ! Compute tracerTop using linear interpolation.
 
-      call timer_start(&quot;compute_scalar_tend-vert adv spline 3&quot;)
-
       nCells = grid % nCells
       nCellsSolve = grid % nCellsSolve
       nVertLevels = grid % nVertLevels
@@ -190,8 +188,6 @@
       deallocate(tracer2ndDer)
       deallocate(tracersIn,tracersOut, posZMidZLevel, posZTopZLevel)
       deallocate(tracerTop)
-
-      call timer_stop(&quot;compute_scalar_tend-vert adv spline 3&quot;)
    !--------------------------------------------------------------------
 
    end subroutine ocn_tracer_vadv_spline3_tend!}}}

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_vadv_stencil2.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_vadv_stencil2.F        2011-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_vadv_stencil2.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -124,9 +124,6 @@
 
       if(.not. stencil2On) return
 
-
-      call timer_start(&quot;compute_scalar_tend-vert adv stencil 2&quot;)
-
       nCells = grid % nCells
       nCellsSolve = grid % nCellsSolve
       num_tracers = size(tracers, 1)
@@ -158,8 +155,6 @@
       end do
 
       deallocate(tracerTop)
-      call timer_stop(&quot;compute_scalar_tend-vert adv stencil 2&quot;)
-
    !--------------------------------------------------------------------
 
    end subroutine ocn_tracer_vadv_stencil2_tend!}}}

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_vadv_stencil3.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_vadv_stencil3.F        2011-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_vadv_stencil3.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -134,8 +134,6 @@
       hRatioZLevelK =&gt; grid % hRatioZLevelK % array
       hRatioZLevelKm1 =&gt; grid % hRatioZLevelKm1 % array
 
-      call timer_start(&quot;compute_scalar_tend-vert adv stencil 3&quot;)
-
       allocate(tracerTop(num_tracers,nVertLevels+1,nCells))
 
       ! Compute tracerTop using 3rd order stencil.  This is the same
@@ -181,8 +179,6 @@
       end do
 
       deallocate(tracerTop)
-      call timer_stop(&quot;compute_scalar_tend-vert adv stencil 3&quot;)
-
    !--------------------------------------------------------------------
 
    end subroutine ocn_tracer_vadv_stencil3_tend!}}}

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_vadv_stencil4.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_vadv_stencil4.F        2011-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tracer_vadv_stencil4.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -126,8 +126,6 @@
 
       if(.not. Stencil4On) return
 
-      call timer_start(&quot;compute_scalar_tend-vert adv stencil 4&quot;)
-
       nCells = grid % nCells
       nCellsSolve = grid % nCellsSolve
       num_tracers = size(tracers, 1)
@@ -176,8 +174,6 @@
       end do
 
       deallocate(tracerTop)
-      call timer_stop(&quot;compute_scalar_tend-vert adv stencil 4&quot;)
-
    !--------------------------------------------------------------------
 
    end subroutine ocn_tracer_vadv_stencil4_tend!}}}

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-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_hmix_del2.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -131,8 +131,6 @@
       err = 0
 
       if(.not.hmixDel2On) return
-
-      call timer_start(&quot;compute_tend_u-horiz mix-del2&quot;)
       
       nEdgesSolve = grid % nEdgesSolve
       maxLevelEdgeTop =&gt; grid % maxLevelEdgeTop % array
@@ -165,8 +163,6 @@
          end do
       end do
 
-      call timer_stop(&quot;compute_tend_u-horiz mix-del2&quot;)
-
    !--------------------------------------------------------------------
 
    end subroutine ocn_vel_hmix_del2_tend!}}}

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_hmix_del4.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_hmix_del4.F        2011-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_hmix_del4.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -134,8 +134,6 @@
 
       if(.not.hmixDel4On) return
 
-      call timer_start(&quot;compute_tend-horiz mix-del4&quot;)
-
       nCells = grid % nCells
       nEdges = grid % nEdges
       nVertices = grid % nVertices
@@ -242,9 +240,6 @@
       deallocate(delsq_u)
       deallocate(delsq_circulation)
       deallocate(delsq_vorticity)
-
-      call timer_stop(&quot;compute_tend-horiz mix-del4&quot;)
-
    !--------------------------------------------------------------------
 
    end subroutine ocn_vel_hmix_del4_tend!}}}

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vmix.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vmix.F        2011-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vmix.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -199,8 +199,6 @@
 
       if(implicitOn) return
 
-      call timer_start(&quot;compute_tend_u-explicit vert mix&quot;)
-
       nEdgessolve = grid % nEdgesSolve
       nVertLevels = grid % nVertLevels
       maxLevelEdgeTop =&gt; grid % maxLevelEdgeTop % array
@@ -224,8 +222,6 @@
       end do
       deallocate(fluxVertTop)
 
-      call timer_stop(&quot;compute_tend_u-explicit vert mix&quot;)
-
    !--------------------------------------------------------------------
 
    end subroutine ocn_vel_vmix_tend_explicit!}}}
@@ -418,8 +414,6 @@
 
       if(implicitOn) return
 
-      call timer_start(&quot;compute_scalar_tend-explicit vert diff&quot;)
-
       nCellsSolve = grid % nCellsSolve
       nVertLevels = grid % nVertLevels
       num_tracers = size(tracers, dim=1)
@@ -455,8 +449,6 @@
       enddo ! iCell loop
       deallocate(fluxVertTop)
 
-      call timer_stop(&quot;compute_scalar_tend-explicit vert diff&quot;)
-
    !--------------------------------------------------------------------
 
    end subroutine ocn_tracer_vmix_tend_explicit!}}}
@@ -637,8 +629,6 @@
    real (KIND=RKIND) :: m
    integer i
 
-   call timer_start(&quot;tridiagonal_solve&quot;)

    ! Use work variables for b and r
    bTemp(1) = b(1)
    rTemp(1) = r(1)
@@ -656,8 +646,6 @@
       x(i) = (rTemp(i) - c(i)*x(i+1))/bTemp(i)
    end do
 
-   call timer_stop(&quot;tridiagonal_solve&quot;)

 end subroutine tridiagonal_solve!}}}
 
 subroutine tridiagonal_solve_mult(a,b,c,r,x,n,nDim,nSystems)!{{{
@@ -684,8 +672,6 @@
    real (KIND=RKIND) :: m
    integer i,j
 
-   call timer_start(&quot;tridiagonal_solve_mult&quot;)

    ! Use work variables for b and r
    bTemp(1) = b(1)
    do j = 1,nSystems
@@ -711,8 +697,6 @@
       end do
    end do
  
-   call timer_stop(&quot;tridiagonal_solve_mult&quot;)
-
 end subroutine tridiagonal_solve_mult!}}}
 
 !***********************************************************************

Modified: branches/ocean_projects/performance/src/driver/module_mpas_subdriver.F
===================================================================
--- branches/ocean_projects/performance/src/driver/module_mpas_subdriver.F        2011-09-30 23:01:16 UTC (rev 1051)
+++ branches/ocean_projects/performance/src/driver/module_mpas_subdriver.F        2011-10-03 17:04:59 UTC (rev 1052)
@@ -22,24 +22,19 @@
       call timer_start(&quot;total time&quot;)
       call timer_start(&quot;initialize&quot;)
 
-
       !
       ! Initialize infrastructure
       !
       call mpas_framework_init(dminfo, domain)
 
-
       call input_state_for_domain(domain)
 
-
       !
       ! Initialize core
       !
       call mpas_core_init(domain, timeStamp)
 
-      call timer_stop(&quot;initialize&quot;)
 
-
       !
       ! Set up output streams to be written to by the MPAS core
       !
@@ -51,15 +46,17 @@
          call output_state_init(output_obj, domain, &quot;OUTPUT&quot;)         
       end if
 
-
+      call timer_stop(&quot;initialize&quot;)
    end subroutine mpas_init
 
 
    subroutine mpas_run()
 
       implicit none
+      call timer_start(&quot;run&quot;)
 
       call mpas_core_run(domain, output_obj, output_frame)
+      call timer_stop(&quot;run&quot;)
 
    end subroutine mpas_run
 
@@ -68,6 +65,8 @@
    
       implicit none
 
+      call timer_start(&quot;finalize&quot;)
+
       !
       ! Finalize output streams
       !
@@ -79,6 +78,7 @@
       !
       call mpas_core_finalize(domain)
 
+      call timer_stop(&quot;finalize&quot;)
       call timer_stop(&quot;total time&quot;)
       call timer_write()
 

</font>
</pre>