<p><b>croesch@ucar.edu</b> 2011-12-15 15:44:25 -0700 (Thu, 15 Dec 2011)</p><p>BRANCH COMMIT<br>
<br>
Update exchange lists in mpas_atm_time_integration and mpas_atmphys_todynamics, merge trunk updates into halo branch<br>
<br>
_M   .<br>
M    src/core_init_nhyd_atmos/mpas_init_atm_test_cases.F<br>
M    src/core_init_nhyd_atmos/Registry<br>
M    src/core_sw/mpas_sw_time_integration.F<br>
M    src/core_atmos_physics/mpas_atmphys_date_time.F<br>
M    src/core_atmos_physics/mpas_atmphys_init.F<br>
M    src/core_atmos_physics/mpas_atmphys_driver_lsm.F<br>
M    src/core_atmos_physics/mpas_atmphys_todynamics.F<br>
M    src/core_atmos_physics/mpas_atmphys_landuse.F<br>
M    src/core_nhyd_atmos/mpas_atm_time_integration.F<br>
M    src/core_nhyd_atmos/Registry<br>
M    src/core_ocean/mpas_ocn_tracer_hmix_del4.F<br>
M    src/core_ocean/mpas_ocn_tracer_vadv_stencil.F<br>
M    src/core_ocean/mpas_ocn_vel_hmix_del4.F<br>
M    src/core_ocean/mpas_ocn_tracer_vadv_stencil2.F<br>
M    src/core_ocean/mpas_ocn_tracer_vadv_stencil3.F<br>
M    src/core_ocean/mpas_ocn_tracer_vadv_stencil4.F<br>
M    src/core_ocean/Registry<br>
M    src/core_ocean/mpas_ocn_tracer_vadv_spline2.F<br>
M    src/core_ocean/mpas_ocn_tracer_vadv_spline3.F<br>
M    src/core_ocean/mpas_ocn_vel_vadv.F<br>
M    src/core_ocean/mpas_ocn_tracer_vadv_spline.F<br>
</p><hr noshade><pre><font color="gray">
Property changes on: branches/halo
___________________________________________________________________
Modified: svn:mergeinfo
   - /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
   + /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:1193-1257

Modified: branches/halo/src/core_atmos_physics/mpas_atmphys_date_time.F
===================================================================
--- branches/halo/src/core_atmos_physics/mpas_atmphys_date_time.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_atmos_physics/mpas_atmphys_date_time.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -3,8 +3,7 @@
 
  implicit none
  private
- public:: get_current_date,       &amp;
-          get_julgmt,             &amp;
+ public:: get_julgmt,             &amp;
           monthly_interp_to_date, &amp;
           monthly_min_max
 
@@ -13,17 +12,6 @@
  contains
 
 !=============================================================================================
- subroutine get_current_date
-!=============================================================================================
-
-!temporary subroutine to provide the date at which the forecast begins.right now, that date is
-!hard-wired. This will change when the time manager is in place.
-
- current_date = '2010-10-23_00'
-
- end subroutine get_current_date
-
-!=============================================================================================
  subroutine get_julgmt(date_str,julyr,julday,gmt)
 !=============================================================================================
 

Modified: branches/halo/src/core_atmos_physics/mpas_atmphys_driver_lsm.F
===================================================================
--- branches/halo/src/core_atmos_physics/mpas_atmphys_driver_lsm.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_atmos_physics/mpas_atmphys_driver_lsm.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -18,10 +18,10 @@
           deallocate_lsm, &amp;
           driver_lsm
  
- logical,parameter:: rdxmaxalb = .true.  !use snow albedo from geogrid;false use table values
- logical,parameter:: myj       = .false. !true if using Mellor-Yamada PBL scheme.
- logical,parameter:: frpcpn    = .false.
- logical,parameter:: rdlai2d   = .false.
+ logical,parameter:: rdmaxalb = .false. !use snow albedo from geogrid;false use table values
+ logical,parameter:: myj      = .false. !true if using Mellor-Yamada PBL scheme.
+ logical,parameter:: frpcpn   = .false.
+ logical,parameter:: rdlai2d  = .false.
 
 !urban physics: since MPAS does not plan to run the urban physics option, the two options
 !below are defined locally:

Modified: branches/halo/src/core_atmos_physics/mpas_atmphys_init.F
===================================================================
--- branches/halo/src/core_atmos_physics/mpas_atmphys_init.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_atmos_physics/mpas_atmphys_init.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -73,8 +73,7 @@
 
 !initialization of global surface properties. set here for now, but may be moved when time
 !manager is implemented:
- if(.not. config_do_restart) &amp;
-    call landuse_init_forMPAS(dminfo,julday,mesh,diag_physics,sfc_input)
+ call landuse_init_forMPAS(dminfo,julday,mesh,diag_physics,sfc_input)
 
 !initialization of parameterized deep convective processes:
  if(config_conv_deep_scheme .ne. 'off') &amp;

Modified: branches/halo/src/core_atmos_physics/mpas_atmphys_landuse.F
===================================================================
--- branches/halo/src/core_atmos_physics/mpas_atmphys_landuse.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_atmos_physics/mpas_atmphys_landuse.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -6,7 +6,8 @@
  module mpas_atmphys_landuse
  use mpas_configure,only: input_landuse_data, &amp;
                           config_sfc_albedo,  &amp;
-                          config_frac_seaice
+                          config_frac_seaice, &amp;
+                          config_do_restart
  use mpas_dmpar
  use mpas_grid_types
 
@@ -184,6 +185,11 @@
  DM_BCAST_MACRO(scfx)
  write(0,*) '--- isice   =',isice
  write(0,*) '--- iswater =',iswater
+ if(config_do_restart) then
+    write(0,*) '--- config_do_restart =', config_do_restart
+    write(0,*) '--- skip the end of landuse_init_forMPAS'
+    return
+ endif
 
 !defines the surface properties over the entire domain:
  do iCell = 1, nCells

Modified: branches/halo/src/core_atmos_physics/mpas_atmphys_todynamics.F
===================================================================
--- branches/halo/src/core_atmos_physics/mpas_atmphys_todynamics.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_atmos_physics/mpas_atmphys_todynamics.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -12,7 +12,7 @@
  contains
  
 !=============================================================================================
- subroutine physics_addtend(dminfo,cellsToSend,cellsToRecv,mesh,state,diag,tend, &amp;
+ subroutine physics_addtend(dminfo,parinfo,mesh,state,diag,tend, &amp;
                             tend_physics,mass,mass_edge)
 !=============================================================================================
 
@@ -20,7 +20,7 @@
 !----------------
  type(dm_info), intent(in):: dminfo
  type(mesh_type),intent(in):: mesh
- type(exchange_list),pointer:: cellsToSend,cellsToRecv
+ type(parallel_info),pointer:: parinfo
 
  type(state_type),intent(in):: state
  type(diag_type),intent(in):: diag
@@ -90,7 +90,7 @@
  if(config_pbl_scheme .ne. 'off') then
     allocate(rublten_Edge(nVertLevels,nEdges))
     rublten_Edge(:,:) = 0.
-    call tend_toEdges(dminfo,CellsToSend,CellsToRecv,mesh,rublten,rvblten,rublten_Edge)
+    call tend_toEdges(dminfo,parinfo,mesh,rublten,rvblten,rublten_Edge)
     do i = 1, nEdgesSolve
     do k  = 1, nVertLevels
        tend_u(k,i)=tend_u(k,i)+rublten_Edge(k,i)*mass_edge(k,i)
@@ -184,14 +184,14 @@
  end subroutine  physics_addtend
 
 !=============================================================================================
- subroutine tend_toEdges(dminfo,cellsToSend,cellsToRecv,mesh,Ux_tend,Uy_tend,U_tend)
+ subroutine tend_toEdges(dminfo,parinfo,mesh,Ux_tend,Uy_tend,U_tend)
 !=============================================================================================
 
 !input arguments:
 !----------------
  type(dm_info),intent(in):: dminfo
  type(mesh_type),intent(in):: mesh
- type(exchange_list),intent(in),pointer:: cellsToSend,cellsToRecv
+ type(parallel_info),pointer:: parinfo
 
  real(kind=RKIND),intent(in),dimension(:,:):: Ux_tend,Uy_tend 
 
@@ -232,9 +232,9 @@
  enddo
 
  call mpas_dmpar_exch_halo_field2d_real( &amp;
-            dminfo,Ux_tend_halo,nVertLevels,nCells,cellsToSend,cellsToRecv)
+            dminfo,Ux_tend_halo,nVertLevels,nCells,parinfo % halo1CellsToSend,parinfo % halo1CellsToRecv)
  call mpas_dmpar_exch_halo_field2d_real( &amp;
-            dminfo,Uy_tend_halo,nVertLevels,nCells,cellsToSend,cellsToRecv)
+            dminfo,Uy_tend_halo,nVertLevels,nCells,parinfo % halo1CellsToSend,parinfo % halo1CellsToRecv)
 
  U_tend(:,:) = 0.0
  do iCell = 1, nCells

Modified: branches/halo/src/core_init_nhyd_atmos/Registry
===================================================================
--- branches/halo/src/core_init_nhyd_atmos/Registry        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_init_nhyd_atmos/Registry        2011-12-15 22:44:25 UTC (rev 1258)
@@ -110,7 +110,7 @@
 var persistent real    fEdge ( nEdges ) 0 io fEdge mesh - -
 var persistent real    fVertex ( nVertices ) 0 io fVertex mesh - -
  
-var persistent real    densityFunction ( nCells ) 0 iro densityFunction mesh - -
+var persistent real    meshDensity ( nCells ) 0 iro meshDensity mesh - -
 
 # some solver scalar coefficients
 

Modified: branches/halo/src/core_init_nhyd_atmos/mpas_init_atm_test_cases.F
===================================================================
--- branches/halo/src/core_init_nhyd_atmos/mpas_init_atm_test_cases.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_init_nhyd_atmos/mpas_init_atm_test_cases.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -2069,7 +2069,7 @@
       real (kind=RKIND), dimension(:,:), pointer :: sorted_arr
 
       real(kind=RKIND), dimension(:), pointer :: hs, hs1
-      real(kind=RKIND) :: hm, zh, dzmin, dzmina, dzminf, sm
+      real(kind=RKIND) :: hm, zh, dzmin, dzmina, dzmina_global, dzminf, sm
       integer :: nsmterrain, kz, sfc_k
       logical :: hybrid, smooth
 
@@ -3045,10 +3045,11 @@
 
              !  dzmina = minval(hs(:)-hx(k-1,:))
                dzmina = minval(zw(k)+ah(k)*hs(:)-zw(k-1)-ah(k-1)*hx(k-1,:))
+               call mpas_dmpar_min_real(dminfo, dzmina, dzmina_global)
              !  write(0,*) ' k,i, dzmina, dzmin, zw(k)-zw(k-1) ', k,i, dzmina, dzmin, zw(k)-zw(k-1)
-               if (dzmina &gt;= dzmin*(zw(k)-zw(k-1))) then
+               if (dzmina_global &gt;= dzmin*(zw(k)-zw(k-1))) then
                   hx(k,:)=hs(:)
-                  dzminf = dzmina
+                  dzminf = dzmina_global
                else
                   exit
                end if

Modified: branches/halo/src/core_nhyd_atmos/Registry
===================================================================
--- branches/halo/src/core_nhyd_atmos/Registry        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_nhyd_atmos/Registry        2011-12-15 22:44:25 UTC (rev 1258)
@@ -121,7 +121,7 @@
 var persistent real    fEdge ( nEdges ) 0 iro fEdge mesh - -
 var persistent real    fVertex ( nVertices ) 0 iro fVertex mesh - -
 
-var persistent real    densityFunction ( nCells ) 0 iro meshDensity mesh - -
+var persistent real    meshDensity ( nCells ) 0 iro meshDensity mesh - -
 var persistent real    meshScalingDel2 ( nEdges ) 0 ro meshScalingDel2 mesh - -
 var persistent real    meshScalingDel4 ( nEdges ) 0 ro meshScalingDel4 mesh - -
 

Modified: branches/halo/src/core_nhyd_atmos/mpas_atm_time_integration.F
===================================================================
--- branches/halo/src/core_nhyd_atmos/mpas_atm_time_integration.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_nhyd_atmos/mpas_atm_time_integration.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -190,7 +190,7 @@
         if (debug) write(0,*) ' add physics tendencies '
         block =&gt; domain % blocklist
         do while (associated(block))
-           call physics_addtend( domain % dminfo , block % parinfo % allCellsToSend, block % parinfo % allCellsToRecv, &amp;
+           call physics_addtend( domain % dminfo , block % parinfo, &amp;
                         block % mesh , block % state % time_levs(2) % state, block % diag, block % tend, &amp;
                         block % tend_physics , block % state % time_levs(2) % state % rho_zz % array(:,:), &amp;
                         block % diag % rho_edge % array(:,:) )
@@ -206,7 +206,7 @@
 
          block =&gt; domain % blocklist
          do while (associated(block))
-! tend_u
+! tend_u  ! WCS_halo_opt_1 - only own-cell edges (include own-cell perimeter)
             call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % tend % u % array(:,:), &amp;
                                              block % mesh % nVertLevels, block % mesh % nEdges, &amp;
                                              block % parinfo % ownCellBoundedEdgesToSend, block % parinfo % ownCellBoundedEdgesToRecv)
@@ -240,7 +240,9 @@
 
             block =&gt; domain % blocklist
             do while (associated(block))
-! rtheta_pp
+! rtheta_pp   ! WCS_halo_opt_1 - just first halo row
+              ! WCS_halo_opt_2 - communicate this only if (small_step &lt; number_sub_steps(rk_step))
+              ! we pick up the 2-halo-row communication after the acoustic step is complete in the next step
                call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % diag % rtheta_pp % array(:,:), &amp;
                                                 block % mesh % nVertLevels, block % mesh % nCells, &amp;
                                                 block % parinfo % halo1CellsToSend, block % parinfo % halo1CellsToRecv)
@@ -275,16 +277,16 @@
             call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % diag % rho_pp % array(:,:), &amp;
                                              block % mesh % nVertLevels, block % mesh % nCells, &amp;
                                              block % parinfo % allCellsToSend, block % parinfo % allCellsToRecv)
+
+            ! the second layer of halo cells must be exchanged before calling atm_recover_large_step_variables
+            call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % diag % rtheta_pp % array(:,:), &amp;
+                                                block % mesh % nVertLevels, block % mesh % nCells, &amp;
+                                                block % parinfo % halo2CellsToSend, block % parinfo % halo2CellsToRecv)
+
             block =&gt; block % next
          end do
 
          block =&gt; domain % blocklist
-
-         ! the second layer of halo cells must be exchanged before calling atm_recover_large_step_variables
-         call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % diag % rtheta_pp % array(:,:), &amp;
-                                                block % mesh % nVertLevels, block % mesh % nCells, &amp;
-                                                block % parinfo % halo2CellsToSend, block % parinfo % halo2CellsToRecv)
-
          do while (associated(block))
             call atm_recover_large_step_variables( block % state % time_levs(2) % state,                 &amp;
                                                block % diag, block % tend, block % mesh,                 &amp;
@@ -325,7 +327,7 @@
                                           block % state % time_levs(1) % state, block % state % time_levs(2) % state, &amp;
                                           block % diag, &amp;
                                           block % mesh, rk_timestep(rk_step), rk_step, 3,             &amp;
-                                          domain % dminfo, block % parinfo % allCellsToSend, block % parinfo % allCellsToRecv )
+                                          domain % dminfo, block % parinfo )
             end if
             block =&gt; block % next
          end do
@@ -385,9 +387,13 @@
 !  ****  this will always be needed - perhaps we can cover this with compute_solve_diagnostics
 
 ! scalars
-            call mpas_dmpar_exch_halo_field3d_real(domain % dminfo, block % state % time_levs(2) % state % scalars % array(:,:,:), &amp;
-                                             block % state % time_levs(2) % state % num_scalars, block % mesh % nVertLevels, block % mesh % nCells, &amp;
-                                             block % parinfo % allCellsToSend, block % parinfo % allCellsToRecv)
+! WCS_halo_opt_2 - communicate this only if (rk_step &lt; 3) (this is not needed for micro, and scalars get communicated beginning of next timestep)
+
+            if(rk_step &lt; 3) then
+               call mpas_dmpar_exch_halo_field3d_real(domain % dminfo, block % state % time_levs(2) % state % scalars % array(:,:,:), &amp;
+                                                block % state % time_levs(2) % state % num_scalars, block % mesh % nVertLevels, block % mesh % nCells, &amp;
+                                                block % parinfo % allCellsToSend, block % parinfo % allCellsToRecv)
+            end if
             block =&gt; block % next
          end do
 
@@ -1414,7 +1420,7 @@
 
 !---------------------------
 
-   subroutine atm_advance_scalars_mono( tend, s_old, s_new, diag, grid, dt, rk_step, rk_order, dminfo, cellsToSend, cellsToRecv)
+   subroutine atm_advance_scalars_mono( tend, s_old, s_new, diag, grid, dt, rk_step, rk_order, dminfo, parinfo)
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
    !
    ! Input: s - current model state
@@ -1431,7 +1437,7 @@
 
       integer, intent(in) :: rk_step, rk_order
       type (dm_info), intent(in) :: dminfo
-      type (exchange_list), pointer :: cellsToSend, cellsToRecv
+      type (parallel_info), pointer :: parinfo
 
 
       integer :: i, iCell, iEdge, k, iScalar, cell1, cell2
@@ -1543,7 +1549,7 @@
                                         s_old % num_scalars,  &amp;
                                         grid % nVertLevels,   &amp;
                                         grid % nCells,        &amp;
-                                        cellsToSend, cellsToRecv )
+                                        parinfo % allCellsToSend, parinfo % allCellsToRecv )
 
       !
       ! Runge Kutta integration, so we compute fluxes from scalar_new values, update starts from scalar_old
@@ -1714,16 +1720,18 @@
 !
 !  communicate scale factors here
 !
+! WCS_halo_opt_2 - communicate only first halo row in these next two exchanges
+!
       call mpas_dmpar_exch_halo_field2d_real( dminfo,               &amp;
                                         scale_in(:,:),        &amp;
                                         grid % nVertLevels,   &amp;
                                         grid % nCells,        &amp;
-                                        cellsToSend, cellsToRecv )
+                                        parinfo % halo1CellsToSend, parinfo % halo1CellsToRecv )
       call mpas_dmpar_exch_halo_field2d_real( dminfo,               &amp;
                                         scale_out(:,:),       &amp;
                                         grid % nVertLevels,   &amp;
                                         grid % nCells,        &amp;
-                                        cellsToSend, cellsToRecv )
+                                        parinfo % halo1CellsToSend, parinfo % halo1CellsToRecv )
 !
 !  rescale the fluxes
 !

Modified: branches/halo/src/core_ocean/Registry
===================================================================
--- branches/halo/src/core_ocean/Registry        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/Registry        2011-12-15 22:44:25 UTC (rev 1258)
@@ -193,7 +193,6 @@
 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
-var persistent real    tracer2 ( nVertLevels nCells Time ) 2 iro tracer2 state tracers testing
 
 # Tendency variables: neither read nor written to any files
 var persistent real    tend_u ( nVertLevels nEdges Time ) 1 - u tend - -
@@ -202,7 +201,6 @@
 var persistent real    tend_temperature ( nVertLevels nCells Time ) 1 - temperature tend tracers dynamics
 var persistent real    tend_salinity ( nVertLevels nCells Time ) 1 - salinity tend tracers dynamics
 var persistent real    tend_tracer1 ( nVertLevels nCells Time ) 1 - tracer1 tend tracers testing
-var persistent real    tend_tracer2 ( nVertLevels nCells Time ) 1 - tracer2 tend tracers testing
 
 # state variables for Split Explicit timesplitting
 var persistent real   uBtr ( nEdges Time )         2 -  uBtr state - -

Modified: branches/halo/src/core_ocean/mpas_ocn_tracer_hmix_del4.F
===================================================================
--- branches/halo/src/core_ocean/mpas_ocn_tracer_hmix_del4.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/mpas_ocn_tracer_hmix_del4.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -212,6 +212,7 @@
       end do
 
       deallocate(delsq_tracer)
+      deallocate(boundaryMask)
       call mpas_timer_stop(&quot;compute_scalar_tend-horiz diff 4&quot;)
    !--------------------------------------------------------------------
 

Modified: branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_spline.F
===================================================================
--- branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_spline.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_spline.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -163,6 +163,8 @@
 
       integer :: err1, err2
 
+      err = 0
+
       splineOn = .false.
 
       if(config_vert_tracer_adv.eq.'spline') then

Modified: branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_spline2.F
===================================================================
--- branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_spline2.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_spline2.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -139,6 +139,7 @@
       allocate(tracerTop(num_tracers,nVertLevels+1,nCells))
 
       do iCell=1,nCellsSolve 
+         tracerTop(:,1,iCell) = tracers(:,1,iCell) 
          do k=2,maxLevelCell(iCell)
             do iTracer=1,num_tracers
                ! Note hRatio on the k side is multiplied by tracer at k-1
@@ -148,6 +149,7 @@
                   + hRatioZLevelKm1(k)*tracers(iTracer,k  ,iCell)
             end do
          end do
+         tracerTop(:,maxLevelCell(iCell)+1,iCell) = tracers(:,maxLevelCell(iCell),iCell)
       end do
 
       do iCell=1,nCellsSolve 

Modified: branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_spline3.F
===================================================================
--- branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_spline3.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_spline3.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -172,8 +172,9 @@
                posZMidZLevel, tracersIn, tracer2ndDer, maxLevelCell(iCell), &amp;
                posZTopZLevel, tracersOut, maxLevelCell(iCell)-1 )
 
+            tracerTop(itracer,1,iCell) = tracers(iTracer,1,iCell)
             tracerTop(iTracer,2:maxLevelCell(iCell),iCell) = tracersOut(1:maxLevelCell(iCell)-1)
-
+            tracerTop(itracer,maxLevelCell(iCell)+1,iCell) = tracers(iTracer,maxLevelCell(iCell),iCell)
          end do
       end do
 

Modified: branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil.F
===================================================================
--- branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -126,8 +126,8 @@
       if(.not. stencilOn) return
 
       call ocn_tracer_vadv_stencil2_tend(grid, wTop, tracers, tend, err1)
-      call ocn_tracer_vadv_stencil3_tend(grid, wTop, tracers, tend, err1)
-      call ocn_tracer_vadv_stencil4_tend(grid, wTop, tracers, tend, err1)
+      call ocn_tracer_vadv_stencil3_tend(grid, wTop, tracers, tend, err2)
+      call ocn_tracer_vadv_stencil4_tend(grid, wTop, tracers, tend, err3)
 
       err = ior(err1, ior(err2, err3))
 

Modified: branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil2.F
===================================================================
--- branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil2.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil2.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -138,6 +138,7 @@
       ! Compute tracerTop using centered stencil, a simple average.
 
       do iCell=1,nCellsSolve 
+         tracerTop(:,1,iCell) = tracers(:,1,iCell)
          do k=2,maxLevelCell(iCell)
             do iTracer=1,num_tracers
                tracerTop(iTracer,k,iCell) = &amp;
@@ -145,6 +146,7 @@
                    +tracers(iTracer,k  ,iCell))/2.0
             end do
          end do
+        tracerTop(:,maxLevelCell(iCell)+1,iCell) = tracers(:,maxLevelCell(iCell),iCell)
       end do
 
       do iCell=1,nCellsSolve 

Modified: branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil3.F
===================================================================
--- branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil3.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil3.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -145,6 +145,7 @@
       ! namelist, if desired.
       flux3Coef = 1.0
       do iCell=1,nCellsSolve 
+         tracerTop(:,1,iCell) = tracers(:,1,iCell)
          k=2
          do iTracer=1,num_tracers
            tracerTop(iTracer,k,iCell) = &amp;
@@ -168,6 +169,7 @@
                    hRatioZLevelK(k)  *tracers(iTracer,k-1,iCell) &amp;
                  + hRatioZLevelKm1(k)*tracers(iTracer,k  ,iCell)
             end do
+        tracerTop(:,maxLevelCell(iCell)+1,iCell) = tracers(:,maxLevelCell(iCell),iCell)
       end do
 
       do iCell=1,nCellsSolve 

Modified: branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil4.F
===================================================================
--- branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil4.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/mpas_ocn_tracer_vadv_stencil4.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -141,6 +141,7 @@
       ! Compute tracerTop using 4rd order stencil [-1 7 7 -1]
 
       do iCell=1,nCellsSolve 
+         tracerTop(:,1,iCell) = tracers(:,1,iCell)
          k=2
             do iTracer=1,num_tracers
               tracerTop(iTracer,k,iCell) = &amp;
@@ -163,6 +164,7 @@
                    hRatioZLevelK(k)  *tracers(iTracer,k-1,iCell) &amp;
                  + hRatioZLevelKm1(k)*tracers(iTracer,k  ,iCell)
             end do
+        tracerTop(:,maxLevelCell(iCell)+1,iCell) = tracers(:,maxLevelCell(iCell),iCell)
       end do
 
       do iCell=1,nCellsSolve 

Modified: branches/halo/src/core_ocean/mpas_ocn_vel_hmix_del4.F
===================================================================
--- branches/halo/src/core_ocean/mpas_ocn_vel_hmix_del4.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/mpas_ocn_vel_hmix_del4.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -157,6 +157,9 @@
       allocate(delsq_vorticity(nVertLevels, nVertices+1))
 
       delsq_u(:,:) = 0.0
+      delsq_circulation(:,:) = 0.0
+      delsq_vorticity(:,:) = 0.0
+      delsq_divergence(:,:) = 0.0
 
       ! Compute </font>
<font color="black">abla^2 u = </font>
<font color="black">abla divergence + k \times </font>
<font color="gray">abla vorticity
       do iEdge=1,grid % nEdges
@@ -176,7 +179,6 @@
       end do
 
       ! vorticity using </font>
<font color="gray">abla^2 u
-      delsq_circulation(:,:) = 0.0
       do iEdge=1,nEdges
          vertex1 = verticesOnEdge(1,iEdge)
          vertex2 = verticesOnEdge(2,iEdge)
@@ -195,7 +197,6 @@
       end do
 
       ! Divergence using </font>
<font color="gray">abla^2 u
-      delsq_divergence(:,:) = 0.0
       do iEdge=1,nEdges
          cell1 = cellsOnEdge(1,iEdge)
          cell2 = cellsOnEdge(2,iEdge)

Modified: branches/halo/src/core_ocean/mpas_ocn_vel_vadv.F
===================================================================
--- branches/halo/src/core_ocean/mpas_ocn_vel_vadv.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_ocean/mpas_ocn_vel_vadv.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -123,7 +123,7 @@
       zMidZLevel =&gt; grid % zMidZLevel % array
 
       allocate(w_dudzTopEdge(nVertLevels+1))
-      w_dudzTopEdge(1) = 0.0
+      w_dudzTopEdge = 0.0
       do iEdge=1,nEdgesSolve
         cell1 = cellsOnEdge(1,iEdge)
         cell2 = cellsOnEdge(2,iEdge)

Modified: branches/halo/src/core_sw/mpas_sw_time_integration.F
===================================================================
--- branches/halo/src/core_sw/mpas_sw_time_integration.F        2011-12-15 05:14:11 UTC (rev 1257)
+++ branches/halo/src/core_sw/mpas_sw_time_integration.F        2011-12-15 22:44:25 UTC (rev 1258)
@@ -123,10 +123,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

</font>
</pre>