<p><b>ringler@lanl.gov</b> 2010-12-04 12:42:05 -0700 (Sat, 04 Dec 2010)</p><p><br>
scale viscosity by L^4 for del4 operator<br>
<br>
add option to scale diffusivity by L^2 and L^4 for del2 and del4 operators, respectively<br>
</p><hr noshade><pre><font color="gray">Modified: branches/ocean_projects/workspace_tdr/src/core_ocean/Registry
===================================================================
--- branches/ocean_projects/workspace_tdr/src/core_ocean/Registry        2010-11-30 18:36:00 UTC (rev 635)
+++ branches/ocean_projects/workspace_tdr/src/core_ocean/Registry        2010-12-04 19:42:05 UTC (rev 636)
@@ -23,6 +23,7 @@
namelist real hmix config_h_tracer_eddy_diff4 0.0
namelist real hmix config_apvm_upwinding 0.5
namelist logical hmix config_scaleVisc false
+namelist logical hmix config_scaleDiff false
namelist character vmix config_vert_visc_type const
namelist character vmix config_vert_diff_type const
namelist real vmix config_vert_viscosity 2.5e-4
Modified: branches/ocean_projects/workspace_tdr/src/core_ocean/module_time_integration.F
===================================================================
--- branches/ocean_projects/workspace_tdr/src/core_ocean/module_time_integration.F        2010-11-30 18:36:00 UTC (rev 635)
+++ branches/ocean_projects/workspace_tdr/src/core_ocean/module_time_integration.F        2010-12-04 19:42:05 UTC (rev 636)
@@ -563,7 +563,7 @@
- delsq_vorticity(k,vertex1) ) / dvEdge(iEdge)
if(config_scaleVisc) then
- u_diffusion = u_diffusion*0.5*(meshSpacing(cell1)+meshSpacing(cell2))**3
+ u_diffusion = u_diffusion*0.5*(meshSpacing(cell1)+meshSpacing(cell2))**4
endif
tend_u(k,iEdge) = tend_u(k,iEdge) - config_h_mom_eddy_visc4 * u_diffusion
@@ -704,7 +704,7 @@
real (kind=RKIND) :: invAreaCell1, invAreaCell2, tracer_turb_flux
real (kind=RKIND) :: flux, tracer_edge, r
real (kind=RKIND), dimension(:), pointer :: &
- h_s, fVertex, fEdge, dvEdge, dcEdge, areaCell, areaTriangle
+ h_s, fVertex, fEdge, dvEdge, dcEdge, areaCell, areaTriangle, meshSpacing
real (kind=RKIND), dimension(:,:), pointer :: &
u,h,wTop, h_edge
real (kind=RKIND), dimension(:,:,:), pointer :: &
@@ -742,8 +742,9 @@
zTopZLevel => grid % zTopZLevel % array
boundaryEdge => grid % boundaryEdge % array
maxLevelCell => grid % maxLevelCell % array
- maxLevelEdgeTop => grid % maxLevelEdgeTop % array
- maxLevelVertexBot => grid % maxLevelVertexBot % array
+ maxLevelEdgeTop => grid % maxLevelEdgeTop % array
+ maxLevelVertexBot => grid % maxLevelVertexBot % array
+ meshSpacing => grid % meshSpacing % array
nEdges = grid % nEdges
nCells = grid % nCells
@@ -963,9 +964,15 @@
*( tracers(iTracer,k,cell2) &
- tracers(iTracer,k,cell1))/dcEdge(iEdge)
+ ! scale diffusion
+ if(config_scaleDiff) then
+ tracer_turb_flux = tracer_turb_flux * 0.5*(meshSpacing(cell1)+meshSpacing(cell2))**2
+ endif
+
! div(h \kappa_2 </font>
<font color="gray">abla \phi) at cell center
flux = dvEdge (iEdge) * h_edge(k,iEdge) &
* tracer_turb_flux * boundaryMask(k, iEdge)
+
tend_tr(iTracer,k,cell1) = tend_tr(iTracer,k,cell1) + flux * invAreaCell1
tend_tr(iTracer,k,cell2) = tend_tr(iTracer,k,cell2) - flux * invAreaCell2
end do
@@ -1035,6 +1042,12 @@
tracer_turb_flux = config_h_tracer_eddy_diff4 &
*( delsq_tracer(iTracer,k,cell2) &
- delsq_tracer(iTracer,k,cell1))/dcEdge(iEdge)
+
+ ! scale diffusion
+ if(config_scaleDiff) then
+ tracer_turb_flux = tracer_turb_flux * 0.5*(meshSpacing(cell1)+meshSpacing(cell2))**4
+ endif
+
flux = dvEdge (iEdge) * tracer_turb_flux
tend_tr(iTracer,k,cell1) = tend_tr(iTracer,k,cell1) &
</font>
</pre>