<p><b>dwj07@fsu.edu</b> 2011-11-04 09:18:54 -0600 (Fri, 04 Nov 2011)</p><p><br>
        -- BRANCH COMMIT --<br>
<br>
        Merging current trunk to performance branch.<br>
</p><hr noshade><pre><font color="gray">
Property changes on: branches/ocean_projects/performance
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/ocean_projects/imp_vert_mix_mrp:754-986
/branches/ocean_projects/split_explicit_timestepping:1044-1097
/branches/ocean_projects/vert_adv_mrp:704-745
/branches/source_renaming:1082-1113
/branches/time_manager:924-962
   + /branches/ocean_projects/imp_vert_mix_mrp:754-986
/branches/ocean_projects/split_explicit_mrp:1134-1138
/branches/ocean_projects/split_explicit_timestepping:1044-1097
/branches/ocean_projects/vert_adv_mrp:704-745
/branches/source_renaming:1082-1113
/branches/time_manager:924-962
/trunk/mpas:1115-1168

Modified: branches/ocean_projects/performance/Makefile
===================================================================
--- branches/ocean_projects/performance/Makefile        2011-11-04 14:29:54 UTC (rev 1168)
+++ branches/ocean_projects/performance/Makefile        2011-11-04 15:18:54 UTC (rev 1169)
@@ -1,6 +1,7 @@
 #MODEL_FORMULATION = -DNCAR_FORMULATION
 MODEL_FORMULATION = -DLANL_FORMULATION
 
+# This flag must be off for nersc hopper:
 FILE_OFFSET = -DOFFSET64BIT
 
 #########################
@@ -56,6 +57,18 @@
         &quot;CORE = $(CORE)&quot; \
         &quot;CPPFLAGS = -DRKIND=8 $(MODEL_FORMULATION) -D_MPI -DUNDERSCORE $(FILE_OFFSET) $(ZOLTAN_DEFINE)&quot; )
 
+pgi-nersc:
+        ( make all \
+        &quot;FC = ftn&quot; \
+        &quot;CC = cc&quot; \
+        &quot;SFC = ftn&quot; \
+        &quot;SCC = cc&quot; \
+        &quot;FFLAGS = -r8 -O3 -byteswapio -Mfree&quot; \
+        &quot;CFLAGS = -O3&quot; \
+        &quot;LDFLAGS = -O3&quot; \
+        &quot;CORE = $(CORE)&quot; \
+        &quot;CPPFLAGS = -DRKIND=8 $(MODEL_FORMULATION) -D_MPI -DUNDERSCORE $(FILE_OFFSET) $(ZOLTAN_DEFINE)&quot; )
+
 pgi-llnl:
         ( make all \
         &quot;FC = mpipgf90&quot; \
@@ -178,7 +191,42 @@
         &quot;CORE = $(CORE)&quot; \
         &quot;CPPFLAGS = -DRKIND=8 $(MODEL_FORMULATION) -DUNDERSCORE $(FILE_OFFSET) $(ZOLTAN_DEFINE)&quot; )
 
+pathscale-nersc:
+        ( make all \
+        &quot;FC = ftn&quot; \
+        &quot;CC = cc&quot; \
+        &quot;SFC = ftn&quot; \
+        &quot;SCC = cc&quot; \
+        &quot;FFLAGS = -r8 -O3 -freeform -extend-source&quot; \
+        &quot;CFLAGS = -O3&quot; \
+        &quot;LDFLAGS = -O3&quot; \
+        &quot;CORE = $(CORE)&quot; \
+        &quot;CPPFLAGS = -DRKIND=8 $(MODEL_FORMULATION) -D_MPI -DUNDERSCORE $(FILE_OFFSET) $(ZOLTAN_DEFINE)&quot; )
 
+cray-nersc:
+        ( make all \
+        &quot;FC = ftn&quot; \
+        &quot;CC = cc&quot; \
+        &quot;SFC = ftn&quot; \
+        &quot;SCC = cc&quot; \
+        &quot;FFLAGS = -default64 -O3 -f free&quot; \
+        &quot;CFLAGS = -O3&quot; \
+        &quot;LDFLAGS = -O3&quot; \
+        &quot;CORE = $(CORE)&quot; \
+        &quot;CPPFLAGS = -DRKIND=8 $(MODEL_FORMULATION) -D_MPI -DUNDERSCORE $(FILE_OFFSET) $(ZOLTAN_DEFINE)&quot; )
+
+intel-nersc:
+        ( make all \
+        &quot;FC = ftn&quot; \
+        &quot;CC = cc&quot; \
+        &quot;SFC = ftn&quot; \
+        &quot;SCC = cc&quot; \
+        &quot;FFLAGS = -real-size 64 -O3 -FR&quot; \
+        &quot;CFLAGS = -O3&quot; \
+        &quot;LDFLAGS = -O3&quot; \
+        &quot;CORE = $(CORE)&quot; \
+        &quot;CPPFLAGS = -DRKIND=8 $(MODEL_FORMULATION) -D_MPI -DUNDERSCORE $(FILE_OFFSET) $(ZOLTAN_DEFINE)&quot; )
+
 CPPINCLUDES = -I../inc -I$(NETCDF)/include -I$(PAPI)/include
 FCINCLUDES = -I../inc -I$(NETCDF)/include -I$(PAPI)/include
 LIBS = -L$(NETCDF)/lib -lnetcdf $(PAPILIBS)

Modified: branches/ocean_projects/performance/namelist.input.ocean
===================================================================
--- branches/ocean_projects/performance/namelist.input.ocean        2011-11-04 14:29:54 UTC (rev 1168)
+++ branches/ocean_projects/performance/namelist.input.ocean        2011-11-04 15:18:54 UTC (rev 1169)
@@ -1,10 +1,10 @@
 &amp;sw_model
-   config_test_case = 5
-   config_time_integration = 'RK4'
+   config_test_case = 0
+   config_time_integration = 'split_explicit'
    config_rk_filter_btr_mode = .false.
    config_dt = 10.0
    config_start_time = '0000-01-01_00:00:00'
-   config_run_duration = '-000_00:30:00'
+   config_run_duration = '2000_00:00:00'
    config_stats_interval = 1920
 /
 &amp;io
@@ -19,7 +19,7 @@
    config_restart_interval = '120_00:00:00'
 /
 &amp;grid
-   config_vert_grid_type = 'isopycnal'
+   config_vert_grid_type = 'zlevel'
    config_rho0 = 1000
 /
 &amp;split_explicit_ts

Modified: branches/ocean_projects/performance/namelist.input.sw
===================================================================
--- branches/ocean_projects/performance/namelist.input.sw        2011-11-04 14:29:54 UTC (rev 1168)
+++ branches/ocean_projects/performance/namelist.input.sw        2011-11-04 15:18:54 UTC (rev 1169)
@@ -1,9 +1,9 @@
 &amp;sw_model
    config_test_case = 5
    config_time_integration = 'RK4'
-   config_dt = 200.0
+   config_dt = 172.8
    config_start_time = '0000-01-01_00:00:00'
-   config_run_duration = '00_05:00:00'
+   config_run_duration = '15_00:00:00'
    config_stats_interval = 0
    config_h_ScaleWithMesh = .false.
    config_h_mom_eddy_visc2  = 0.0
@@ -23,7 +23,7 @@
    config_input_name = 'grid.nc'
    config_output_name = 'output.nc'
    config_restart_name = 'restart.nc'
-   config_output_interval = '0_01:00:00'
+   config_output_interval = '1_00:00:00'
    config_frames_per_outfile = 0
 /
 


Property changes on: branches/ocean_projects/performance/src
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/ocean_projects/imp_vert_mix_mrp/src:754-986
/branches/ocean_projects/split_explicit_timestepping/src:1044-1097
/branches/ocean_projects/vert_adv_mrp/src:704-745
/branches/source_renaming/src:1082-1113
/branches/time_manager/src:924-962
/trunk/mpas/src:1109-1139
   + /branches/ocean_projects/imp_vert_mix_mrp/src:754-986
/branches/ocean_projects/split_explicit_timestepping/src:1044-1097
/branches/ocean_projects/vert_adv_mrp/src:704-745
/branches/source_renaming/src:1082-1113
/branches/time_manager/src:924-962
/trunk/mpas/src:1109-1168

Modified: branches/ocean_projects/performance/src/core_hyd_atmos/mpas_atmh_mpas_core.F
===================================================================
--- branches/ocean_projects/performance/src/core_hyd_atmos/mpas_atmh_mpas_core.F        2011-11-04 14:29:54 UTC (rev 1168)
+++ branches/ocean_projects/performance/src/core_hyd_atmos/mpas_atmh_mpas_core.F        2011-11-04 15:18:54 UTC (rev 1169)
@@ -4,7 +4,6 @@
    use mpas_timekeeping
 
    type (io_output_object) :: restart_obj
-   integer :: restart_frame
 
    integer :: current_outfile_frames
 
@@ -48,7 +47,6 @@
          block =&gt; block % next
       end do
 
-      restart_frame = 1
       current_outfile_frames = 0
 
    end subroutine mpas_core_init
@@ -108,9 +106,11 @@
 
          if (mpas_is_alarm_ringing(clock, restartAlarmID, ierr=ierr)) then
             call mpas_reset_clock_alarm(clock, restartAlarmID, ierr=ierr)
-            if (restart_frame == 1) call mpas_output_state_init(restart_obj, domain, &quot;RESTART&quot;)
-            call mpas_output_state_for_domain(restart_obj, domain, restart_frame)
-            restart_frame = restart_frame + 1
+
+            ! Write one restart time per file
+            call mpas_output_state_init(restart_obj, domain, &quot;RESTART&quot;, trim(timeStamp))
+            call mpas_output_state_for_domain(restart_obj, domain, 1)
+            call mpas_output_state_finalize(restart_obj, domain % dminfo)
          end if
 
       end do
@@ -124,12 +124,9 @@
    
       implicit none
   
+      type (domain_type), intent(inout) :: domain 
       integer :: ierr
  
-      type (domain_type), intent(inout) :: domain 
-
-      if (restart_frame &gt; 1) call mpas_output_state_finalize(restart_obj, domain % dminfo)
-
       call mpas_destroy_clock(clock, ierr)
 
    end subroutine mpas_core_finalize

Modified: branches/ocean_projects/performance/src/core_ocean/Registry
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/Registry        2011-11-04 14:29:54 UTC (rev 1168)
+++ branches/ocean_projects/performance/src/core_ocean/Registry        2011-11-04 15:18:54 UTC (rev 1169)
@@ -43,6 +43,9 @@
 namelist real      hmix     config_h_mom_eddy_visc2     0.0
 namelist real      hmix     config_h_mom_eddy_visc4     0.0
 namelist logical   hmix     config_visc_vorticity_term true
+namelist real      hmix     config_visc_vorticity_visc2_scale 1.0
+namelist real      hmix     config_visc_vorticity_visc4_scale 1.0
+namelist logical   hmix     config_include_KE_vertex false
 namelist real      hmix     config_h_tracer_eddy_diff2  0.0
 namelist real      hmix     config_h_tracer_eddy_diff4  0.0
 namelist real      hmix     config_apvm_upwinding       0.5
@@ -226,6 +229,8 @@
 var persistent real    h_edge ( nVertLevels nEdges Time ) 2 - h_edge state - -
 var persistent real    h_vertex ( nVertLevels nVertices Time ) 2 - h_vertex state - -
 var persistent real    ke ( nVertLevels nCells Time ) 2 o ke state - -
+var persistent real    kev ( nVertLevels nVertices Time ) 2 o kev state - -
+var persistent real    kevc ( nVertLevels nCells Time ) 2 o kevc state - -
 var persistent real    ke_edge ( nVertLevels nEdges Time ) 2 - ke_edge state - -
 var persistent real    pv_vertex ( nVertLevels nVertices Time ) 2 - pv_vertex state - -
 var persistent real    pv_cell ( nVertLevels nCells Time ) 2 - pv_cell state - -

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-11-04 14:29:54 UTC (rev 1168)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_mpas_core.F        2011-11-04 15:18:54 UTC (rev 1169)
@@ -26,7 +26,6 @@
    use ocn_vmix
 
    type (io_output_object) :: restart_obj
-   integer :: restart_frame
 
    integer :: current_outfile_frames
 
@@ -84,7 +83,7 @@
       call ocn_equation_of_state_init(err_tmp)
       err = err .or. err_tmp
 
-      if(err) then
+      if(err.eq.1) then
           call mpas_dmpar_abort(dminfo)
       endif
 
@@ -136,7 +135,6 @@
 !         call ocn_write_output_frame(output_obj, output_frame, domain)
       endif
 
-      restart_frame = 1
       current_outfile_frames = 0
 
    end subroutine mpas_core_init!}}}
@@ -334,9 +332,11 @@
 
          if (mpas_is_alarm_ringing(clock, restartAlarmID, ierr=ierr)) then
             call mpas_reset_clock_alarm(clock, restartAlarmID, ierr=ierr)
-            if (restart_frame == 1) call mpas_output_state_init(restart_obj, domain, &quot;RESTART&quot;)
-            call mpas_output_state_for_domain(restart_obj, domain, restart_frame)
-            restart_frame = restart_frame + 1
+
+            ! Write one restart time per file
+            call mpas_output_state_init(restart_obj, domain, &quot;RESTART&quot;, trim(timeStamp))
+            call mpas_output_state_for_domain(restart_obj, domain, 1)
+            call mpas_output_state_finalize(restart_obj, domain % dminfo)
          end if
 
       end do
@@ -755,12 +755,9 @@
    
       implicit none
 
+      type (domain_type), intent(inout) :: domain 
       integer :: ierr
 
-      type (domain_type), intent(inout) :: domain 
-
-      if (restart_frame &gt; 1) call mpas_output_state_finalize(restart_obj, domain % dminfo)
-
       call mpas_destroy_clock(clock, ierr)
 
    end subroutine mpas_core_finalize!}}}

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tendency.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tendency.F        2011-11-04 14:29:54 UTC (rev 1168)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_tendency.F        2011-11-04 15:18:54 UTC (rev 1169)
@@ -434,8 +434,12 @@
       real (kind=RKIND), dimension(:,:), pointer :: &amp;
         weightsOnEdge, kiteAreasOnVertex, h_edge, h, u, v, pressure,&amp;
         circulation, vorticity, ke, ke_edge, MontPot, &amp;
-        pv_edge, pv_vertex, pv_cell, gradPVn, gradPVt, divergence, rho
+        pv_edge, pv_vertex, pv_cell, gradPVn, gradPVt, divergence, &amp;
+                rho, temperature, salinity, kev, kevc
       real (kind=RKIND), dimension(:,:,:), pointer :: tracers, deriv_two
+      real (kind=RKIND), dimension(:), allocatable:: pTop
+      real (kind=RKIND), dimension(:,:), allocatable:: div_u
+      character :: c1*6
 
       h           =&gt; s % h % array
       u           =&gt; s % u % array
@@ -445,6 +449,8 @@
       vorticity   =&gt; s % vorticity % array
       divergence  =&gt; s % divergence % array
       ke          =&gt; s % ke % array
+      kev         =&gt; s % kev % array
+      kevc        =&gt; s % kevc % array
       ke_edge     =&gt; s % ke_edge % array
       pv_edge     =&gt; s % pv_edge % array
       pv_vertex   =&gt; s % pv_vertex % array
@@ -642,6 +648,41 @@
       end do
 
       !
+      ! Compute kinetic energy in each vertex
+      !
+      kev(:,:) = 0.0; kevc(:,:) = 0.0
+      do iEdge=1,nEdges
+         do k=1,nVertLevels
+            kev(k,verticesOnEdge(1,iEdge)) = kev(k,verticesOnEdge(1,iEdge)) + dcEdge(iEdge) * dvEdge(iEdge) * u(k,iEdge)**2
+            kev(k,verticesOnEdge(2,iEdge)) = kev(k,verticesOnEdge(2,iEdge)) + dcEdge(iEdge) * dvEdge(iEdge) * u(k,iEdge)**2
+         end do
+      end do
+      do iVertex = 1,nVertices
+         do k=1,nVertLevels
+           kev(k,iVertex) = kev(k,iVertex) / areaTriangle(iVertex) / 4.0
+         enddo
+      enddo
+      do iVertex = 1, nVertices
+       do i=1,grid % vertexDegree
+         iCell = cellsOnVertex(i,iVertex)
+         do k=1,nVertLevels
+           kevc(k,iCell) = kevc(k,iCell) + kiteAreasOnVertex(i, iVertex) * kev(k, iVertex) / areaCell(iCell)
+         enddo
+       enddo
+      enddo
+
+      !
+      ! Compute kinetic energy in each cell by blending ke and kevc
+      !
+      if(config_include_KE_vertex) then
+      do iCell=1,nCells
+         do k=1,nVertLevels
+            ke(k,iCell) = 5.0/8.0*ke(k,iCell) + 3.0/8.0*kevc(k,iCell)
+         end do
+      end do
+      endif
+
+      !
       ! Compute ke on cell edges at velocity locations for quadratic bottom drag. 
       !
       ! mrp 101025 efficiency note: we could get rid of ke_edge completely by 

Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_test_cases.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_test_cases.F        2011-11-04 14:29:54 UTC (rev 1168)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_test_cases.F        2011-11-04 15:18:54 UTC (rev 1169)
@@ -483,7 +483,7 @@
       real (kind=RKIND), intent(in) :: theta
 
       aa = 0.5 * w * (2.0 * omega + w) * cos(theta)**2.0 + &amp;
-          0.25 * K**2.0 * cos(theta)**(2.0*R) * ((R+1.0)*cos(theta)**2.0 + 2.0*R**2.0 - R - 2.0 - 2.0*R**2*cos(theta)**-2.0)
+          0.25 * K**2.0 * cos(theta)**(2.0*R) * ((R+1.0)*cos(theta)**2.0 + 2.0*R**2.0 - R - 2.0 - 2.0*R**2*cos(theta)**(-2.0))
 
    end function aa
 

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-11-04 14:29:54 UTC (rev 1168)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_hmix_del2.F        2011-11-04 15:18:54 UTC (rev 1169)
@@ -204,7 +204,7 @@
 
 
       if (config_visc_vorticity_term) then
-         viscVortCoef = 1.0
+         viscVortCoef = config_visc_vorticity_visc2_scale
       else
          viscVortCoef = 0.0
       endif

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-11-04 14:29:54 UTC (rev 1168)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_vel_hmix_del4.F        2011-11-04 15:18:54 UTC (rev 1169)
@@ -277,7 +277,7 @@
       hmixDel4On = .true.
       eddyVisc4 = config_h_mom_eddy_visc4
       if (config_visc_vorticity_term) then
-         viscVortCoef = 1.0
+         viscVortCoef = config_visc_vorticity_visc4_scale
       else
          viscVortCoef = 0.0
       endif

Modified: branches/ocean_projects/performance/src/core_sw/mpas_sw_mpas_core.F
===================================================================
--- branches/ocean_projects/performance/src/core_sw/mpas_sw_mpas_core.F        2011-11-04 14:29:54 UTC (rev 1168)
+++ branches/ocean_projects/performance/src/core_sw/mpas_sw_mpas_core.F        2011-11-04 15:18:54 UTC (rev 1169)
@@ -4,7 +4,6 @@
    use mpas_timekeeping
 
    type (io_output_object) :: restart_obj
-   integer :: restart_frame
    integer :: current_outfile_frames
 
    type (MPAS_Clock_type) :: clock
@@ -46,7 +45,6 @@
          block =&gt; block % next
       end do
 
-      restart_frame = 1
       current_outfile_frames = 0
 
    end subroutine mpas_core_init
@@ -200,9 +198,11 @@
 
          if (mpas_is_alarm_ringing(clock, restartAlarmID, ierr=ierr)) then
             call mpas_reset_clock_alarm(clock, restartAlarmID, ierr=ierr)
-            if (restart_frame == 1) call mpas_output_state_init(restart_obj, domain, &quot;RESTART&quot;)
-            call mpas_output_state_for_domain(restart_obj, domain, restart_frame)
-            restart_frame = restart_frame + 1
+
+            ! Write one restart time per file
+            call mpas_output_state_init(restart_obj, domain, &quot;RESTART&quot;, trim(timeStamp))
+            call mpas_output_state_for_domain(restart_obj, domain, 1)
+            call mpas_output_state_finalize(restart_obj, domain % dminfo)
          end if
 
       end do
@@ -337,14 +337,11 @@
    
       implicit none
 
+      type (domain_type), intent(inout) :: domain 
       integer :: ierr

+     call mpas_destroy_clock(clock, ierr)
 
-      type (domain_type), intent(inout) :: domain 
-
-      if (restart_frame &gt; 1) call mpas_output_state_finalize(restart_obj, domain % dminfo)
-
-      call mpas_destroy_clock(clock, ierr)
-
    end subroutine mpas_core_finalize
 
 

Modified: branches/ocean_projects/performance/src/framework/mpas_io_input.F
===================================================================
--- branches/ocean_projects/performance/src/framework/mpas_io_input.F        2011-11-04 14:29:54 UTC (rev 1168)
+++ branches/ocean_projects/performance/src/framework/mpas_io_input.F        2011-11-04 15:18:54 UTC (rev 1169)
@@ -128,9 +128,17 @@
       type (MPAS_TimeInterval_type) :: timeDiff
       type (MPAS_TimeInterval_type) :: minTimeDiff
       character(len=32) :: timeStamp
+      character(len=1024) :: filename
 
       if (config_do_restart) then
-         input_obj % filename = trim(config_restart_name)
+
+         ! this get followed by set is to ensure that the time is in standard format
+         call mpas_set_time(curr_time=startTime, dateTimeString=config_start_time)
+         call mpas_get_time(curr_time=startTime, dateTimeString=timeStamp)
+
+         call mpas_insert_string_suffix(trim(config_restart_name), timeStamp, filename)
+
+         input_obj % filename = trim(filename)
          input_obj % stream = STREAM_RESTART
       else
          input_obj % filename = trim(config_input_name)
@@ -772,6 +780,12 @@
                end if
             end do
 
+            ! require restart time to exactly match start time (this error should never be reached as we have by this point opened the restart file with a name containing the startTime)
+            if(sliceTime /= startTime) then
+               write(0,*) &quot;Error: restart file &quot;, filename, &quot; did not contain time &quot;, config_start_time
+               call mpas_dmpar_abort(domain % dminfo)
+            end if
+
             timeStamp = xtime % array(input_obj % time)
 
             deallocate(xtime % ioinfo)
@@ -1004,6 +1018,29 @@
    end subroutine mpas_input_state_for_domain
 
 
+   !CR:TODO: an identical subroutine is found in module_io_output - merge
+   subroutine mpas_insert_string_suffix(stream, suffix, filename)
+
+      implicit none
+
+      character (len=*), intent(in) :: stream
+      character (len=*), intent(in) :: suffix
+      character (len=*), intent(out) :: filename
+      integer :: length, i
+
+      filename = trim(stream) // '.' // trim(suffix)
+
+      length = len_trim(stream)
+      do i=length-1,1,-1
+         if(stream(i:i) == '.') then
+            filename = trim(stream(:i)) // trim(suffix) // trim(stream(i:))
+            exit
+         end if
+      end do
+
+   end subroutine mpas_insert_string_suffix
+
+
    subroutine mpas_read_and_distribute_fields(dminfo, input_obj, block, &amp;
                                      readCellsStart, readCellsCount, &amp;
                                      readEdgesStart, readEdgesCount, &amp;

Modified: branches/ocean_projects/performance/src/framework/mpas_io_output.F
===================================================================
--- branches/ocean_projects/performance/src/framework/mpas_io_output.F        2011-11-04 14:29:54 UTC (rev 1168)
+++ branches/ocean_projects/performance/src/framework/mpas_io_output.F        2011-11-04 15:18:54 UTC (rev 1169)
@@ -94,7 +94,12 @@
          output_obj % filename = trim(tempfilename)
          output_obj % stream = OUTPUT
       else if (trim(stream) == 'RESTART') then
-         output_obj % filename = trim(config_restart_name)
+         if(present(outputSuffix)) then
+            call mpas_insert_string_suffix(config_restart_name, outputSuffix, tempfilename)
+         else
+            tempfilename = config_restart_name
+         end if
+         output_obj % filename = trim(tempfilename)
          output_obj % stream = RESTART
       else if (trim(stream) == 'SFC') then
          ! Keep filename as whatever was set by the user

Modified: branches/ocean_projects/performance/src/framework/mpas_timekeeping.F
===================================================================
--- branches/ocean_projects/performance/src/framework/mpas_timekeeping.F        2011-11-04 14:29:54 UTC (rev 1168)
+++ branches/ocean_projects/performance/src/framework/mpas_timekeeping.F        2011-11-04 15:18:54 UTC (rev 1169)
@@ -615,7 +615,7 @@
       implicit none
       
       type (MPAS_Clock_type), intent(in) :: clock
-      type (MPAS_Alarm_type), pointer, intent(in) :: alarmPtr
+      type (MPAS_Alarm_type), pointer :: alarmPtr
       type (MPAS_TimeInterval_type), intent(in), optional :: interval
       integer, intent(out), optional :: ierr
       

Modified: branches/ocean_projects/performance/src/framework/mpas_timer.F
===================================================================
--- branches/ocean_projects/performance/src/framework/mpas_timer.F        2011-11-04 14:29:54 UTC (rev 1168)
+++ branches/ocean_projects/performance/src/framework/mpas_timer.F        2011-11-04 15:18:54 UTC (rev 1169)
@@ -33,7 +33,7 @@
         subroutine mpas_timer_start(timer_name, clear_timer, timer_ptr)!{{{
           character (len=*), intent (in) :: timer_name !&lt; Input: name of timer, stored as name of timer
           logical, optional, intent(in) :: clear_timer !&lt; Input: flag to clear timer
-          type (timer_node), optional, pointer, intent(out) :: timer_ptr !&lt; Output: pointer to store timer in module
+          type (timer_node), optional, pointer :: timer_ptr !&lt; Output: pointer to store timer in module
 
           logical :: timer_added, timer_found, string_equal, check_flag
           type (timer_node), pointer :: current, temp
@@ -151,7 +151,7 @@
        
         subroutine mpas_timer_stop(timer_name, timer_ptr)!{{{
           character (len=*), intent(in) :: timer_name !&lt; Input: name of timer to stop
-          type (timer_node), pointer, intent(in), optional :: timer_ptr !&lt; Input: pointer to timer, for stopping
+          type (timer_node), pointer, optional :: timer_ptr !&lt; Input: pointer to timer, for stopping
 
           type (timer_node), pointer :: current
           
@@ -219,8 +219,8 @@
         end subroutine mpas_timer_stop!}}}
 
         recursive subroutine mpas_timer_write(timer_ptr, total_ptr)!{{{
-          type (timer_node), pointer, intent(inout), optional :: timer_ptr
-          type (timer_node), pointer, intent(in), optional :: total_ptr
+          type (timer_node), pointer, optional :: timer_ptr
+          type (timer_node), pointer, optional :: total_ptr
           character (len=10) :: tname
 
           logical :: total_found, string_equals

</font>
</pre>