<p><b>ringler@lanl.gov</b> 2011-11-03 17:08:22 -0600 (Thu, 03 Nov 2011)</p><p><br>
adding option to compute KE as a blend of KE@centers and KE@vertices<br>
<br>
adding option to scale del2 and del4 mixing of vorticity to be different than mixing on divergence<br>
</p><hr noshade><pre><font color="gray">Modified: trunk/mpas/src/core_ocean/Registry
===================================================================
--- trunk/mpas/src/core_ocean/Registry        2011-11-03 23:02:45 UTC (rev 1164)
+++ trunk/mpas/src/core_ocean/Registry        2011-11-03 23:08:22 UTC (rev 1165)
@@ -42,6 +42,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
@@ -222,6 +225,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: trunk/mpas/src/core_ocean/mpas_ocn_tendency.F
===================================================================
--- trunk/mpas/src/core_ocean/mpas_ocn_tendency.F        2011-11-03 23:02:45 UTC (rev 1164)
+++ trunk/mpas/src/core_ocean/mpas_ocn_tendency.F        2011-11-03 23:08:22 UTC (rev 1165)
@@ -620,7 +620,7 @@
         weightsOnEdge, kiteAreasOnVertex, h_edge, h, u, v, w, pressure,&amp;
         circulation, vorticity, ke, ke_edge, MontPot, wTop, &amp;
         pv_edge, pv_vertex, pv_cell, gradPVn, gradPVt, divergence, &amp;
-        rho, temperature, salinity
+        rho, temperature, salinity, kev, kevc
       real (kind=RKIND), dimension(:,:,:), pointer :: tracers
       real (kind=RKIND), dimension(:), allocatable:: pTop
       real (kind=RKIND), dimension(:,:), allocatable:: div_u
@@ -648,6 +648,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
@@ -880,6 +882,41 @@
       enddo
 
       !
+      ! 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 v (tangential) velocities
       !
       v(:,:) = 0.0

Modified: trunk/mpas/src/core_ocean/mpas_ocn_vel_hmix_del2.F
===================================================================
--- trunk/mpas/src/core_ocean/mpas_ocn_vel_hmix_del2.F        2011-11-03 23:02:45 UTC (rev 1164)
+++ trunk/mpas/src/core_ocean/mpas_ocn_vel_hmix_del2.F        2011-11-03 23:08:22 UTC (rev 1165)
@@ -206,7 +206,7 @@
 
 
       if (config_visc_vorticity_term) then
-         viscVortCoef = 1.0
+         viscVortCoef = config_visc_vorticity_visc2_scale
       else
          viscVortCoef = 0.0
       endif

Modified: trunk/mpas/src/core_ocean/mpas_ocn_vel_hmix_del4.F
===================================================================
--- trunk/mpas/src/core_ocean/mpas_ocn_vel_hmix_del4.F        2011-11-03 23:02:45 UTC (rev 1164)
+++ trunk/mpas/src/core_ocean/mpas_ocn_vel_hmix_del4.F        2011-11-03 23:08:22 UTC (rev 1165)
@@ -281,7 +281,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

</font>
</pre>