<p><b>mpetersen@lanl.gov</b> 2011-10-26 09:31:54 -0600 (Wed, 26 Oct 2011)</p><p>Update trunk with bug fixes from the last week: Correct boundary update for RK4 KE and split explicit tracers.  These were merged from split_explicit_mrp branch<br>
</p><hr noshade><pre><font color="gray">
Property changes on: trunk/mpas
___________________________________________________________________
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

Modified: trunk/mpas/namelist.input.ocean
===================================================================
--- trunk/mpas/namelist.input.ocean        2011-10-26 15:28:36 UTC (rev 1138)
+++ trunk/mpas/namelist.input.ocean        2011-10-26 15:31:54 UTC (rev 1139)
@@ -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: trunk/mpas/src/core_ocean/Registry
===================================================================
--- trunk/mpas/src/core_ocean/Registry        2011-10-26 15:28:36 UTC (rev 1138)
+++ trunk/mpas/src/core_ocean/Registry        2011-10-26 15:31:54 UTC (rev 1139)
@@ -186,7 +186,7 @@
 # Prognostic variables: read from input, saved in restart, and written to output
 var persistent real    u ( nVertLevels nEdges Time ) 2 ir u state - -
 var persistent real    h ( nVertLevels nCells Time ) 2 ir h state - -
-var persistent real    rho ( nVertLevels nCells Time ) 2 ir rho state - -
+var persistent real    rho ( nVertLevels nCells Time ) 2 iro rho state - -
 var persistent real    temperature ( nVertLevels nCells Time ) 2 iro temperature state tracers dynamics
 var persistent real    salinity ( nVertLevels nCells Time ) 2 iro salinity state tracers dynamics
 var persistent real    tracer1 ( nVertLevels nCells Time ) 2 iro tracer1 state tracers testing
@@ -216,8 +216,8 @@
 
 # Diagnostic fields: only written to output
 var persistent real    v ( nVertLevels nEdges Time ) 2 - v state - -
-var persistent real    divergence ( nVertLevels nCells Time ) 2 - divergence state - -
-var persistent real    vorticity ( nVertLevels nVertices Time ) 2 - vorticity state - -
+var persistent real    divergence ( nVertLevels nCells Time ) 2 o divergence state - -
+var persistent real    vorticity ( nVertLevels nVertices Time ) 2 o vorticity state - -
 var persistent real    pv_edge ( nVertLevels nEdges Time ) 2 - pv_edge state - -
 var persistent real    h_edge ( nVertLevels nEdges Time ) 2 - h_edge state - -
 var persistent real    h_vertex ( nVertLevels nVertices Time ) 2 - h_vertex state - -
@@ -228,8 +228,8 @@
 var persistent real    uReconstructX ( nVertLevels nCells Time ) 2 - uReconstructX state - -
 var persistent real    uReconstructY ( nVertLevels nCells Time ) 2 - uReconstructY state - -
 var persistent real    uReconstructZ ( nVertLevels nCells Time ) 2 - uReconstructZ state - -
-var persistent real    uReconstructZonal ( nVertLevels nCells Time ) 2 - uReconstructZonal state - -
-var persistent real    uReconstructMeridional ( nVertLevels nCells Time ) 2 - uReconstructMeridional state - -
+var persistent real    uReconstructZonal ( nVertLevels nCells Time ) 2 o uReconstructZonal state - -
+var persistent real    uReconstructMeridional ( nVertLevels nCells Time ) 2 o uReconstructMeridional state - -
 var persistent real    MontPot ( nVertLevels nCells Time ) 2 - MontPot state - -
 var persistent real    pressure ( nVertLevels nCells Time ) 2 - pressure state - -
 var persistent real    wTop ( nVertLevelsP1 nCells Time ) 2 - wTop state - -

Modified: trunk/mpas/src/core_ocean/mpas_ocn_time_integration_rk4.F
===================================================================
--- trunk/mpas/src/core_ocean/mpas_ocn_time_integration_rk4.F        2011-10-26 15:28:36 UTC (rev 1138)
+++ trunk/mpas/src/core_ocean/mpas_ocn_time_integration_rk4.F        2011-10-26 15:31:54 UTC (rev 1139)
@@ -148,10 +148,10 @@
                                             block % parinfo % edgesToSend, block % parinfo % edgesToRecv)
 
            if (config_h_mom_eddy_visc4 &gt; 0.0) then
-              call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % state % time_levs(2) % state % divergence % array(:,:), &amp;
+              call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, provis % divergence % array(:,:), &amp;
                                                block % mesh % nVertLevels, block % mesh % nCells, &amp;
                                                block % parinfo % cellsToSend, block % parinfo % cellsToRecv)
-              call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % state % time_levs(2) % state % vorticity % array(:,:), &amp;
+              call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, provis % vorticity % array(:,:), &amp;
                                                block % mesh % nVertLevels, block % mesh % nVertices, &amp;
                                                block % parinfo % verticesToSend, block % parinfo % verticesToRecv)
            end if

Modified: trunk/mpas/src/core_ocean/mpas_ocn_time_integration_split.F
===================================================================
--- trunk/mpas/src/core_ocean/mpas_ocn_time_integration_split.F        2011-10-26 15:28:36 UTC (rev 1138)
+++ trunk/mpas/src/core_ocean/mpas_ocn_time_integration_split.F        2011-10-26 15:31:54 UTC (rev 1139)
@@ -963,20 +963,18 @@
            block =&gt; block % next
          end do
 
-        ! ---  update halos for prognostic variables
+        ! update halo for thicknes for unsplit only
+        if (trim(config_time_integration) == 'unsplit_explicit') then
+           block =&gt; domain % blocklist
+           do while (associated(block))
+              call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % tend % h % array(:,:), &amp;
+                                               block % mesh % nVertLevels, block % mesh % nCells, &amp;
+                                               block % parinfo % cellsToSend, block % parinfo % cellsToRecv)
+              block =&gt; block % next
+           end do
+        endif ! unsplit_explicit
 
-        block =&gt; domain % blocklist
-        do while (associated(block))
-           call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % tend % h % array(:,:), &amp;
-                                            block % mesh % nVertLevels, block % mesh % nCells, &amp;
-                                            block % parinfo % cellsToSend, block % parinfo % cellsToRecv)
-           call mpas_dmpar_exch_halo_field3d_real(domain % dminfo, block % tend % tracers % array(:,:,:), &amp;
-                                            block % tend % num_tracers, block % mesh % nVertLevels, block % mesh % nCells, &amp;
-                                            block % parinfo % cellsToSend, block % parinfo % cellsToRecv)
-           block =&gt; block % next
-        end do
 
-
         block =&gt; domain % blocklist
         do while (associated(block))
            allocate(hNew(block % mesh % nVertLevels))
@@ -1056,11 +1054,6 @@
              + block % state % time_levs(2) % state % uBcl % array(:,iEdge) 
            end do ! iEdge
 
-         ! mrp 110512  I really only need this to compute h_edge, density, pressure.
-         ! I can par this down later.
-         call ocn_diagnostic_solve(dt, block % state % time_levs(2) % state, block % mesh)

-
          elseif (split_explicit_step == config_n_ts_iter) then
 
            hNew(:) = block % mesh % hZLevel % array(:)
@@ -1086,6 +1079,30 @@
          block =&gt; block % next
        end do
 
+        ! Boundary update on tracers.  This is placed here, rather than 
+        ! on tend % tracers as in RK4, because I needed to update 
+        ! afterwards for the del4 diffusion operator.
+        block =&gt; domain % blocklist
+        do while (associated(block))
+           call mpas_dmpar_exch_halo_field3d_real(domain % dminfo, block % state % time_levs(2) % state % tracers % array(:,:,:), &amp;
+                                            block % tend % num_tracers, block % mesh % nVertLevels, block % mesh % nCells, &amp;
+                                            block % parinfo % cellsToSend, block % parinfo % cellsToRecv)
+           block =&gt; block % next
+        end do
+
+
+         if (split_explicit_step &lt; config_n_ts_iter) then
+            ! mrp 110512  I really only need this to compute h_edge, density, pressure.
+            ! I can par this down later.
+            block =&gt; domain % blocklist
+            do while (associated(block))
+
+               call ocn_diagnostic_solve(dt, block % state % time_levs(2) % state, block % mesh)
+
+               block =&gt; block % next
+            end do
+         endif
+
       end do  ! split_explicit_step = 1, config_n_ts_iter
       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       ! END large iteration loop 

</font>
</pre>