<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 :: &amp;
-        h_s, fVertex, fEdge, dvEdge, dcEdge, areaCell, areaTriangle
+        h_s, fVertex, fEdge, dvEdge, dcEdge, areaCell, areaTriangle, meshSpacing
       real (kind=RKIND), dimension(:,:), pointer :: &amp;
         u,h,wTop, h_edge
       real (kind=RKIND), dimension(:,:,:), pointer :: &amp;
@@ -742,8 +742,9 @@
       zTopZLevel        =&gt; grid % zTopZLevel % array
       boundaryEdge      =&gt; grid % boundaryEdge % array
       maxLevelCell      =&gt; grid % maxLevelCell % array
-      maxLevelEdgeTop      =&gt; grid % maxLevelEdgeTop % array
-      maxLevelVertexBot    =&gt; grid % maxLevelVertexBot % array
+      maxLevelEdgeTop   =&gt; grid % maxLevelEdgeTop % array
+      maxLevelVertexBot =&gt; grid % maxLevelVertexBot % array
+      meshSpacing       =&gt; grid % meshSpacing % array
 
       nEdges      = grid % nEdges
       nCells      = grid % nCells
@@ -963,9 +964,15 @@
                     *(  tracers(iTracer,k,cell2) &amp;
                       - 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) &amp;
                     * 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 &amp;
                      *(  delsq_tracer(iTracer,k,cell2)  &amp;
                        - 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) &amp; 

</font>
</pre>