<p><b>mpetersen@lanl.gov</b> 2012-10-25 14:24:32 -0600 (Thu, 25 Oct 2012)</p><p>branch commit, restart_reproducibility: merge trunk to branch (Leith closure).<br>
</p><hr noshade><pre><font color="gray">Modified: branches/ocean_projects/restart_reproducibility/namelist.input.ocean
===================================================================
--- branches/ocean_projects/restart_reproducibility/namelist.input.ocean        2012-10-25 20:12:22 UTC (rev 2267)
+++ branches/ocean_projects/restart_reproducibility/namelist.input.ocean        2012-10-25 20:24:32 UTC (rev 2268)
@@ -62,6 +62,12 @@
    config_h_tracer_eddy_diff2 = 1.0e5
    config_h_tracer_eddy_diff4 = 0.0
 /
+&amp;hmix_leith
+   config_use_leith_del2 = .false.
+   config_leith_parameter = 1.0
+   config_leith_dx = 15000.0
+   config_leith_visc2_max = 2.5e3
+/
 &amp;vmix
    config_vert_visc_type  = 'const'
    config_vert_diff_type  = 'const'

Modified: branches/ocean_projects/restart_reproducibility/src/core_ocean/Makefile
===================================================================
--- branches/ocean_projects/restart_reproducibility/src/core_ocean/Makefile        2012-10-25 20:12:22 UTC (rev 2267)
+++ branches/ocean_projects/restart_reproducibility/src/core_ocean/Makefile        2012-10-25 20:24:32 UTC (rev 2268)
@@ -10,6 +10,7 @@
            mpas_ocn_vel_vadv.o \
            mpas_ocn_vel_hmix.o \
            mpas_ocn_vel_hmix_del2.o \
+           mpas_ocn_vel_hmix_leith.o \
            mpas_ocn_vel_hmix_del4.o \
            mpas_ocn_vel_forcing.o \
            mpas_ocn_vel_forcing_windstress.o \
@@ -87,10 +88,12 @@
 
 mpas_ocn_vel_vadv.o:
 
-mpas_ocn_vel_hmix.o: mpas_ocn_vel_hmix_del2.o mpas_ocn_vel_hmix_del4.o
+mpas_ocn_vel_hmix.o: mpas_ocn_vel_hmix_del2.o mpas_ocn_vel_hmix_leith.o mpas_ocn_vel_hmix_del4.o
 
 mpas_ocn_vel_hmix_del2.o:
 
+mpas_ocn_vel_hmix_leith.o:
+
 mpas_ocn_vel_hmix_del4.o:
 
 mpas_ocn_vel_forcing.o: mpas_ocn_vel_forcing_windstress.o mpas_ocn_vel_forcing_bottomdrag.o mpas_ocn_vel_forcing_rayleigh.o
@@ -179,6 +182,7 @@
                                           mpas_ocn_vel_vadv.o \
                                           mpas_ocn_vel_hmix.o \
                                           mpas_ocn_vel_hmix_del2.o \
+                                          mpas_ocn_vel_hmix_leith.o \
                                           mpas_ocn_vel_hmix_del4.o \
                                           mpas_ocn_vel_forcing.o \
                                           mpas_ocn_vel_forcing_windstress.o \

Modified: branches/ocean_projects/restart_reproducibility/src/core_ocean/Registry
===================================================================
--- branches/ocean_projects/restart_reproducibility/src/core_ocean/Registry        2012-10-25 20:12:22 UTC (rev 2267)
+++ branches/ocean_projects/restart_reproducibility/src/core_ocean/Registry        2012-10-25 20:24:32 UTC (rev 2268)
@@ -63,6 +63,10 @@
 namelist logical   hmix     config_rayleigh_friction    false
 namelist real      hmix     config_rayleigh_damping_coeff 0.0
 namelist real      hmix     config_apvm_scale_factor      0.0
+namelist logical   hmix_leith  config_use_leith_del2         false
+namelist real      hmix_leith  config_leith_parameter        0.0
+namelist real      hmix_leith  config_leith_dx               0.0
+namelist real      hmix_leith  config_leith_visc2_max      1000000.0
 namelist character vmix     config_vert_visc_type       const
 namelist character vmix     config_vert_diff_type       const
 namelist logical   vmix     config_implicit_vertical_mix  true
@@ -235,7 +239,7 @@
 var persistent real    tend_tracer1 ( nVertLevels nCells Time ) 1 - tracer1 tend tracers testing
 
 % state variables for Split Explicit timesplitting
-var persistent real   uBtr ( nEdges Time )         2 -  uBtr state - -
+var persistent real   uBtr ( nEdges Time )         2 ir uBtr state - -
 var persistent real   ssh ( nCells Time )          2 o  ssh state - - 
 var persistent real   uBtrSubcycle ( nEdges Time ) 2 -  uBtrSubcycle state - -
 var persistent real   sshSubcycle ( nCells Time )  2 -  sshSubcycle state - - 
@@ -281,6 +285,7 @@
 var persistent real    pressure ( nVertLevels nCells Time ) 2 - pressure state - -
 var persistent real    wTop ( nVertLevelsP1 nCells Time ) 2 - wTop state - -
 var persistent real    rhoDisplaced ( nVertLevels nCells Time ) 2 - rhoDisplaced state - -
+var persistent real    viscosity ( nVertLevels nEdges Time ) 2 o viscosity state - -
 
 % Other diagnostic variables: neither read nor written to any files
 var persistent real    vh ( nVertLevels nEdges Time ) 2 - vh state - -

Modified: branches/ocean_projects/restart_reproducibility/src/core_ocean/mpas_ocn_vel_hmix.F
===================================================================
--- branches/ocean_projects/restart_reproducibility/src/core_ocean/mpas_ocn_vel_hmix.F        2012-10-25 20:12:22 UTC (rev 2267)
+++ branches/ocean_projects/restart_reproducibility/src/core_ocean/mpas_ocn_vel_hmix.F        2012-10-25 20:24:32 UTC (rev 2268)
@@ -20,6 +20,7 @@
    use mpas_configure
    use mpas_timer
    use ocn_vel_hmix_del2
+   use ocn_vel_hmix_leith
    use ocn_vel_hmix_del4
 
    implicit none
@@ -47,7 +48,7 @@
    !
    !--------------------------------------------------------------------
 
-   type (timer_node), pointer :: del2Timer, del4Timer
+   type (timer_node), pointer :: del2Timer, leithTimer, del4Timer
 
 
 !***********************************************************************
@@ -72,7 +73,7 @@
 !
 !-----------------------------------------------------------------------
 
-   subroutine ocn_vel_hmix_tend(grid, divergence, vorticity, tend, err)!{{{
+   subroutine ocn_vel_hmix_tend(grid, divergence, vorticity, viscosity, tend, err)!{{{
 
       !-----------------------------------------------------------------
       !
@@ -98,6 +99,9 @@
       real (kind=RKIND), dimension(:,:), intent(inout) :: &amp;
          tend          !&lt; Input/Output: velocity tendency
 
+      real (kind=RKIND), dimension(:,:), intent(inout) :: &amp;
+         viscosity     !&lt; Input: viscosity
+
       !-----------------------------------------------------------------
       !
       ! output variables
@@ -112,7 +116,7 @@
       !
       !-----------------------------------------------------------------
 
-      integer :: err1, err2
+      integer :: err1, err2, err3
 
       !-----------------------------------------------------------------
       !
@@ -122,14 +126,21 @@
       !
       !-----------------------------------------------------------------
 
+      viscosity = 0.0
+
       call mpas_timer_start(&quot;del2&quot;, .false., del2Timer)
-      call ocn_vel_hmix_del2_tend(grid, divergence, vorticity, tend, err1)
+      call ocn_vel_hmix_del2_tend(grid, divergence, vorticity, viscosity, tend, err1)
       call mpas_timer_stop(&quot;del2&quot;, del2Timer)
+
+      call mpas_timer_start(&quot;leith&quot;, .false., leithTimer)
+      call ocn_vel_hmix_leith_tend(grid, divergence, vorticity, viscosity, tend, err2)
+      call mpas_timer_stop(&quot;leith&quot;, leithTimer)
+
       call mpas_timer_start(&quot;del4&quot;, .false., del4Timer)
-      call ocn_vel_hmix_del4_tend(grid, divergence, vorticity, tend, err2)
+      call ocn_vel_hmix_del4_tend(grid, divergence, vorticity, tend, err3)
       call mpas_timer_stop(&quot;del4&quot;, del4Timer)
 
-      err = ior(err1, err2)
+      err = ior(ior(err1, err2),err3)
 
    !--------------------------------------------------------------------
 
@@ -163,12 +174,13 @@
 
       integer, intent(out) :: err !&lt; Output: error flag
 
-      integer :: err1, err2
+      integer :: err1, err2, err3
 
       call ocn_vel_hmix_del2_init(err1)
-      call ocn_vel_hmix_del4_init(err2)
+      call ocn_vel_hmix_leith_init(err2)
+      call ocn_vel_hmix_del4_init(err3)
 
-      err = ior(err1, err2)
+      err = ior(ior(err1, err2),err3)
 
    !--------------------------------------------------------------------
 

Modified: branches/ocean_projects/restart_reproducibility/src/core_ocean/mpas_ocn_vel_hmix_del2.F
===================================================================
--- branches/ocean_projects/restart_reproducibility/src/core_ocean/mpas_ocn_vel_hmix_del2.F        2012-10-25 20:12:22 UTC (rev 2267)
+++ branches/ocean_projects/restart_reproducibility/src/core_ocean/mpas_ocn_vel_hmix_del2.F        2012-10-25 20:24:32 UTC (rev 2268)
@@ -70,7 +70,7 @@
 !
 !-----------------------------------------------------------------------
 
-   subroutine ocn_vel_hmix_del2_tend(grid, divergence, vorticity, tend, err)!{{{
+   subroutine ocn_vel_hmix_del2_tend(grid, divergence, vorticity, viscosity, tend, err)!{{{
 
       !-----------------------------------------------------------------
       !
@@ -96,6 +96,8 @@
       real (kind=RKIND), dimension(:,:), intent(inout) :: &amp;
          tend             !&lt; Input/Output: velocity tendency
 
+      real (kind=RKIND), dimension(:,:), intent(inout) :: &amp;
+         viscosity       !&lt; Input: viscosity
 
       !-----------------------------------------------------------------
       !
@@ -111,12 +113,11 @@
       !
       !-----------------------------------------------------------------
 
-      integer :: iEdge, nEdgesSolve, cell1, cell2, vertex1, vertex2
-      integer :: k
+      integer :: iEdge, nEdgesSolve, cell1, cell2, vertex1, vertex2, k
       integer, dimension(:), pointer :: maxLevelEdgeTop
       integer, dimension(:,:), pointer :: cellsOnEdge, verticesOnEdge, edgeMask
 
-      real (kind=RKIND) :: u_diffusion, invLength1, invLength2
+      real (kind=RKIND) :: u_diffusion, invLength1, invLength2, visc2
       real (kind=RKIND), dimension(:), pointer :: meshScalingDel2, &amp;
               dcEdge, dvEdge
 
@@ -158,10 +159,12 @@
                           -viscVortCoef &amp;
                           *( vorticity(k,vertex2) - vorticity(k,vertex1) ) * invLength2
 
-            u_diffusion = meshScalingDel2(iEdge) * eddyVisc2 * u_diffusion
+            visc2 = meshScalingDel2(iEdge) * eddyVisc2
 
-            tend(k,iEdge) = tend(k,iEdge) + edgeMask(k, iEdge) * u_diffusion
+            tend(k,iEdge) = tend(k,iEdge) + edgeMask(k, iEdge) * visc2 * u_diffusion
 
+            viscosity(k,iEdge) = viscosity(k,iEdge) + visc2
+
          end do
       end do
 

</font>
</pre>