<p><b>mpetersen@lanl.gov</b> 2011-08-18 17:07:37 -0600 (Thu, 18 Aug 2011)</p><p>Added flag to turn off vorticity part of del2 and del4 operators.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/ocean_projects/timesplitting_mrp/namelist.input.ocean
===================================================================
--- branches/ocean_projects/timesplitting_mrp/namelist.input.ocean        2011-08-18 22:46:58 UTC (rev 948)
+++ branches/ocean_projects/timesplitting_mrp/namelist.input.ocean        2011-08-18 23:07:37 UTC (rev 949)
@@ -35,6 +35,7 @@
&hmix
config_h_mom_eddy_visc2 = 1.0e5
config_h_mom_eddy_visc4 = 0.0
+ config_visc_vorticity_term = .true.
config_h_tracer_eddy_diff2 = 1.0e4
config_h_tracer_eddy_diff4 = 0.0
config_mom_decay = .false.
Modified: branches/ocean_projects/timesplitting_mrp/src/core_ocean/Registry
===================================================================
--- branches/ocean_projects/timesplitting_mrp/src/core_ocean/Registry        2011-08-18 22:46:58 UTC (rev 948)
+++ branches/ocean_projects/timesplitting_mrp/src/core_ocean/Registry        2011-08-18 23:07:37 UTC (rev 949)
@@ -32,6 +32,7 @@
namelist logical sw_model config_h_ScaleWithMesh false
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_h_tracer_eddy_diff2 0.0
namelist real hmix config_h_tracer_eddy_diff4 0.0
namelist real hmix config_apvm_upwinding 0.5
Modified: branches/ocean_projects/timesplitting_mrp/src/core_ocean/module_time_integration.F
===================================================================
--- branches/ocean_projects/timesplitting_mrp/src/core_ocean/module_time_integration.F        2011-08-18 22:46:58 UTC (rev 948)
+++ branches/ocean_projects/timesplitting_mrp/src/core_ocean/module_time_integration.F        2011-08-18 23:07:37 UTC (rev 949)
@@ -835,8 +835,12 @@
block => block % next
end do ! block
-! mrp 110801
-! compute btr_divergence and btr_vorticity for del2(u_btr)
+! mrp 110801 begin
+! This whole section, bounded by 'mrp 110801', may be deleted later if it is found
+! that barotropic del2 is not useful.
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Barotropic subcycle: compute btr_divergence and btr_vorticity for del2(u_btr)
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
block => domain % blocklist
do while (associated(block))
block % state % time_levs(1) % state % u_diffusionBtr % array(:) = 0.0
@@ -907,14 +911,9 @@
end if
block => block % next
end do ! block
+! mrp 110801 end
-
-
-
-
-
-
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Barotropic subcycle: Final solve for velocity. Iterate for Coriolis term.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -1680,7 +1679,7 @@
integer :: nCells, nEdges, nVertices, nVertLevels, nEdgesSolve
real (kind=RKIND) :: flux, vorticity_abs, h_vertex, workpv, q, &
- upstream_bias, wTopEdge, rho0Inv, r
+ upstream_bias, wTopEdge, rho0Inv, r, visc_vorticity_coef
real (kind=RKIND), dimension(:), pointer :: &
h_s, fVertex, fEdge, dvEdge, dcEdge, areaCell, areaTriangle, &
zMidZLevel, zTopZLevel, meshScalingDel2, meshScalingDel4
@@ -1848,6 +1847,12 @@
! computed as </font>
<font color="black">u( </font>
<font color="black">abla divergence + k \times </font>
<font color="gray">abla vorticity )
! strictly only valid for config_h_mom_eddy_visc2 == constant
!
+ if (config_visc_vorticity_term) then
+ visc_vorticity_coef = 1.0
+ else
+ visc_vorticity_coef = 0.0
+ endif
+
if ( config_h_mom_eddy_visc2 > 0.0 ) then
do iEdge=1,grid % nEdgesSolve
cell1 = cellsOnEdge(1,iEdge)
@@ -1861,13 +1866,10 @@
! is - </font>
<font color="black">abla vorticity pointing from vertex 2 to vertex 1, or equivalently
! + k \times </font>
<font color="gray">abla vorticity pointing from cell1 to cell2.
-! mrp 110816 orig
-! u_diffusion = ( divergence(k,cell2) - divergence(k,cell1) ) / dcEdge(iEdge) &
-! -( vorticity(k,vertex2) - vorticity(k,vertex1) ) / dvEdge(iEdge)
-! mrp 110816 remove vorticity
- u_diffusion = ( divergence(k,cell2) - divergence(k,cell1) ) / dcEdge(iEdge) ! &
-! -( vorticity(k,vertex2) - vorticity(k,vertex1) ) / dvEdge(iEdge)
-! mrp 110816 end
+ u_diffusion = ( divergence(k,cell2) - divergence(k,cell1) ) / dcEdge(iEdge) &
+ -visc_vorticity_coef &
+ *( vorticity(k,vertex2) - vorticity(k,vertex1) ) / dvEdge(iEdge)
+
u_diffusion = meshScalingDel2(iEdge) * config_h_mom_eddy_visc2 * u_diffusion
tend_u(k,iEdge) = tend_u(k,iEdge) + u_diffusion
@@ -1900,15 +1902,10 @@
do k=1,maxLevelEdgeTop(iEdge)
-! mrp 110816 orig
-! delsq_u(k,iEdge) = &
-! ( divergence(k,cell2) - divergence(k,cell1) ) / dcEdge(iEdge) &
-! -( vorticity(k,vertex2) - vorticity(k,vertex1)) / dvEdge(iEdge)
-! mrp 110816 remove vort
delsq_u(k,iEdge) = &
- ( divergence(k,cell2) - divergence(k,cell1) ) / dcEdge(iEdge) ! &
-! -( vorticity(k,vertex2) - vorticity(k,vertex1)) / dvEdge(iEdge)
-! mrp 110816 end
+ ( divergence(k,cell2) - divergence(k,cell1) ) / dcEdge(iEdge) &
+ -visc_vorticity_coef &
+ *( vorticity(k,vertex2) - vorticity(k,vertex1)) / dvEdge(iEdge)
end do
end do
@@ -1964,17 +1961,11 @@
( divergence(k,cell2) - divergence(k,cell1) ) / dcEdge(iEdge) &
-( vorticity(k,vertex2) - vorticity(k,vertex1)) / dvEdge(iEdge)
-! mrp 110816 orig
-! u_diffusion = ( delsq_divergence(k,cell2) &
-! - delsq_divergence(k,cell1) ) / dcEdge(iEdge) &
-! -( delsq_vorticity(k,vertex2) &
-! - delsq_vorticity(k,vertex1) ) / dvEdge(iEdge)
-! mrp 110816 remove vort
u_diffusion = ( delsq_divergence(k,cell2) &
- - delsq_divergence(k,cell1) ) / dcEdge(iEdge) ! &
-! -( delsq_vorticity(k,vertex2) &
-! - delsq_vorticity(k,vertex1) ) / dvEdge(iEdge)
-! mrp 110816 end
+ - delsq_divergence(k,cell1) ) / dcEdge(iEdge) &
+ -visc_vorticity_coef &
+ *( delsq_vorticity(k,vertex2) &
+ - delsq_vorticity(k,vertex1) ) / dvEdge(iEdge)
u_diffusion = meshScalingDel4(iEdge) * config_h_mom_eddy_visc4 * u_diffusion
</font>
</pre>