<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,&
circulation, vorticity, ke, ke_edge, MontPot, wTop, &
pv_edge, pv_vertex, pv_cell, gradPVn, gradPVt, divergence, &
- 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 => s % vorticity % array
divergence => s % divergence % array
ke => s % ke % array
+ kev => s % kev % array
+ kevc => s % kevc % array
ke_edge => s % ke_edge % array
pv_edge => s % pv_edge % array
pv_vertex => 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>