<p><b>ringler@lanl.gov</b> 2010-08-06 13:14:48 -0600 (Fri, 06 Aug 2010)</p><p><br>
made namelist consistent with Registry.<br>
<br>
this version compiles and runs<br>
</p><hr noshade><pre><font color="gray">Modified: branches/dissipation/namelist.input.ocean
===================================================================
--- branches/dissipation/namelist.input.ocean        2010-08-06 17:44:48 UTC (rev 468)
+++ branches/dissipation/namelist.input.ocean        2010-08-06 19:14:48 UTC (rev 469)
@@ -1,11 +1,10 @@
 &amp;sw_model
    config_test_case = 0
    config_time_integration = 'RK4'
-   config_dt = 60.0
-   config_ntimesteps = 1440000 
-   config_output_interval = 14400 
-   config_stats_interval = 1440 
-   config_visc  = 1.0e5
+   config_dt = 90.0
+   config_ntimesteps = 1920000
+   config_output_interval = 19200
+   config_stats_interval = 1920
 /
 
 &amp;io
@@ -16,30 +15,33 @@
 
 &amp;restart
    config_restart_interval = 115200
-   config_do_restart = .false.
-   config_restart_time = 1036800.0
+   config_do_restart = .fasle.
+   config_restart_time = 31104000
 /
 
 &amp;grid
-   config_vert_grid_type = 'zlevel'
-   config_rho0 = 1028
+   config_vert_grid_type = 'isopycnal'
+   config_rho0 = 1015
 /
 &amp;hmix
-   config_hor_diffusion  = 1.0e4
+   config_h_mom_eddy_visc2 = 0.0
+   config_h_mom_eddy_visc4 = 5.0e8
+   config_h_tracer_eddy_visc2 = 10.0
+   config_h_tracer_eddy_visc4 = 0.0
 /
 &amp;vmix
-   config_vert_visc_type  = 'tanh'
-   config_vert_diff_type  = 'tanh'
+   config_vert_visc_type  = 'const'
+   config_vert_diff_type  = 'const'
    config_vmixTanhViscMax = 2.5e-1
    config_vmixTanhViscMin = 1.0e-4
    config_vmixTanhDiffMax = 2.5e-2
    config_vmixTanhDiffMin = 1.0e-5
    config_vmixTanhZMid    = -100
    config_vmixTanhZWidth  = 100
-   config_vert_viscosity  = 2.5e-4
-   config_vert_diffusion  = 2.5e-5 
+   config_vert_viscosity  = 1.0e-4
+   config_vert_diffusion  = 1.0e-4
 /
 &amp;advection
-   config_hor_tracer_adv = 'upwind'
-   config_vert_tracer_adv = 'upwind'
+   config_hor_tracer_adv = 'centered'
+   config_vert_tracer_adv = 'centered'
 /

Modified: branches/dissipation/src/core_ocean/Registry
===================================================================
--- branches/dissipation/src/core_ocean/Registry        2010-08-06 17:44:48 UTC (rev 468)
+++ branches/dissipation/src/core_ocean/Registry        2010-08-06 19:14:48 UTC (rev 469)
@@ -7,10 +7,7 @@
 namelist integer   sw_model config_ntimesteps        7500
 namelist integer   sw_model config_output_interval   500
 namelist integer   sw_model config_stats_interval    100
-namelist real      hmix     config_h_mom_eddy_visc2     0.0
-namelist real      hmix     config_h_mom_eddy_visc4     0.0
-namelist real      hmix     config_h_tracer_eddy_visc2  0.0
-namelist real      hmix     config_h_tracer_eddy_visc4  0.0
+namelist logical   sw_model config_eden              false
 namelist character io       config_input_name        grid.nc
 namelist character io       config_output_name       output.nc
 namelist character io       config_restart_name      restart.nc
@@ -19,7 +16,10 @@
 namelist real      restart  config_restart_time      172800.0
 namelist character grid     config_vert_grid_type    isopycnal
 namelist real      grid     config_rho0              1028
-namelist real      hmix     config_hor_diffusion     2000.0
+namelist real      hmix     config_h_mom_eddy_visc2     0.0
+namelist real      hmix     config_h_mom_eddy_visc4     0.0
+namelist real      hmix     config_h_tracer_eddy_visc2  0.0
+namelist real      hmix     config_h_tracer_eddy_visc4  0.0
 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
@@ -33,7 +33,6 @@
 namelist character advection  config_hor_tracer_adv  'centered'
 namelist character advection  config_vert_tracer_adv 'centered'
 
-
 #
 # dim  type  name_in_file  name_in_code
 #
@@ -127,11 +126,14 @@
 
 # Diagnostic fields: only written to output
 var real    v ( nVertLevels nEdges Time ) o v - -
+var real    uEden ( nVertLevels nEdges Time ) o uEden - -
 var real    divergence ( nVertLevels nCells Time ) o divergence - -
 var real    vorticity ( nVertLevels nVertices Time ) o vorticity - -
 var real    pv_edge ( nVertLevels nEdges Time ) o pv_edge - -
 var real    h_edge ( nVertLevels nEdges Time ) o h_edge - -
+var real    h_vertex ( nVertLevels nVertices Time ) o h_vertex - -
 var real    ke ( nVertLevels nCells Time ) o ke - -
+var real    keEden ( nVertLevels nCells Time ) o keEden - -
 var real    ke_edge ( nVertLevels nEdges Time ) o ke_edge - -
 var real    pv_vertex ( nVertLevels nVertices Time ) o pv_vertex - -
 var real    pv_cell ( nVertLevels nCells Time ) o pv_cell - -
@@ -140,6 +142,11 @@
 var real    uReconstructZ ( nVertLevels nCells Time ) o uReconstructZ - -
 var real    uReconstructZonal ( nVertLevels nCells Time ) o uReconstructZonal - -
 var real    uReconstructMeridional ( nVertLevels nCells Time ) o uReconstructMeridional - -
+var real    uStressX ( nVertLevels nCells Time ) o uStressX - -
+var real    uStressY ( nVertLevels nCells Time ) o uStressY - -
+var real    uStressZ ( nVertLevels nCells Time ) o uStressZ - -
+var real    uStressZonal ( nVertLevels nCells Time ) o uStressZonal - -
+var real    uStressMeridional ( nVertLevels nCells Time ) o uStressMeridional - -
 var real    zMid ( nVertLevels nCells Time ) o zMid - -
 var real    zTop ( nVertLevelsP1 nCells Time ) o zTop - -
 var real    zMidEdge ( nVertLevels nEdges Time ) o zMidEdge - -

Modified: branches/dissipation/src/core_ocean/module_time_integration.F
===================================================================
--- branches/dissipation/src/core_ocean/module_time_integration.F        2010-08-06 17:44:48 UTC (rev 468)
+++ branches/dissipation/src/core_ocean/module_time_integration.F        2010-08-06 19:14:48 UTC (rev 469)
@@ -676,13 +676,14 @@
         u,h,wTop, h_edge, zMid, zTop
       real (kind=RKIND), dimension(:,:,:), pointer :: &amp;
         tracers, tend_tr
+      integer, dimension(:,:), pointer :: boundaryEdge
       type (dm_info) :: dminfo
 
       integer, dimension(:), pointer :: nEdgesOnCell, nEdgesOnEdge
       integer, dimension(:,:), pointer :: cellsOnEdge
       real (kind=RKIND), dimension(:), pointer :: &amp;
         zTopZLevel 
-      real (kind=RKIND), dimension(:,:), allocatable:: fluxVertTop, tracerTop
+      real (kind=RKIND), dimension(:,:), allocatable:: fluxVertTop, tracerTop, boundaryMask
       real (kind=RKIND), dimension(:,:,:), allocatable::tr_flux, tr_div, delsq_tracer
 
       real (kind=RKIND), dimension(:), allocatable:: vertDiffTop
@@ -702,11 +703,13 @@
       dvEdge            =&gt; grid % dvEdge % array
       dcEdge            =&gt; grid % dcEdge % array
       zTopZLevel        =&gt; grid % zTopZLevel % array
+      boundaryEdge      =&gt; grid % boundaryEdge % array
 
       nEdges      = grid % nEdges
       nCells      = grid % nCells
       nVertLevels = grid % nVertLevels
 
+
       h_tracer_eddy_visc2 = config_h_tracer_eddy_visc2
       h_tracer_eddy_visc4 = config_h_tracer_eddy_visc4
 
@@ -812,9 +815,12 @@
       if ( h_tracer_eddy_visc2 &gt; 0.0 ) then
 
 
-      !
-      ! mask
-      !
+         !
+         ! compute a boundary mask to enforce insulating boundary conditions in the horizontal
+         !
+         allocate(boundaryMask(nVertLevels, nEdges+1))
+         boundaryMask = 1.0
+         where(boundaryEdge.eq.1) boundaryMask=0.0
 
 
          do iEdge=1,grid % nEdges
@@ -826,7 +832,7 @@
             do k=1,grid % nVertLevels
               do iTracer=1,num_tracers
                  tracer_turb_flux = h_tracer_eddy_visc2*(tracers(iTracer,k,cell2) - tracers(iTracer,k,cell1))/dcEdge(iEdge)
-                 flux = dvEdge (iEdge) * h_edge(k,iEdge) * tracer_turb_flux
+                 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
@@ -834,10 +840,19 @@
 
          end do
 
+        deallocate(boundaryMask)
+
       end if
 
       if ( h_tracer_eddy_visc4 &gt; 0.0 ) then
 
+         !
+         ! compute a boundary mask to enforce insulating boundary conditions in the horizontal
+         !
+         allocate(boundaryMask(nVertLevels, nEdges+1))
+         boundaryMask = 1.0
+         where(boundaryEdge.eq.1) boundaryMask=0.0
+
          allocate(delsq_tracer(num_tracers,nVertLevels, nCells+1))
 
          delsq_tracer(:,:,:) = 0.
@@ -848,8 +863,10 @@
 
             do k=1,grid % nVertLevels
               do iTracer=1,num_tracers
-                 delsq_tracer(iTracer,k,cell1) = delsq_tracer(iTracer,k,cell1) + dvEdge(iEdge)*h_edge(k,iEdge)*(tracers(iTracer,k,cell2) - tracers(iTracer,k,cell1))/dcEdge(iEdge)
-                 delsq_tracer(iTracer,k,cell2) = delsq_tracer(iTracer,k,cell2) - dvEdge(iEdge)*h_edge(k,iEdge)*(tracers(iTracer,k,cell2) - tracers(iTracer,k,cell1))/dcEdge(iEdge)
+                 delsq_tracer(iTracer,k,cell1) = delsq_tracer(iTracer,k,cell1) &amp;
+                                                 + dvEdge(iEdge)*h_edge(k,iEdge)*(tracers(iTracer,k,cell2) - tracers(iTracer,k,cell1))/dcEdge(iEdge) * boundaryMask(k,iEdge)
+                 delsq_tracer(iTracer,k,cell2) = delsq_tracer(iTracer,k,cell2) &amp;
+                                                 - dvEdge(iEdge)*h_edge(k,iEdge)*(tracers(iTracer,k,cell2) - tracers(iTracer,k,cell1))/dcEdge(iEdge) * boundaryMask(k,iEdge)
               end do
             end do
 
@@ -875,8 +892,8 @@
                tracer_turb_flux = h_tracer_eddy_visc4*(delsq_tracer(iTracer,k,cell2) - delsq_tracer(iTracer,k,cell1))/dcEdge(iEdge)
                flux = dvEdge (iEdge) * tracer_turb_flux
 
-               tend_tr(iTracer,k,cell1) = tend_tr(iTracer,k,cell1) - flux * invAreaCell1
-               tend_tr(iTracer,k,cell2) = tend_tr(iTracer,k,cell2) + flux * invAreaCell2
+               tend_tr(iTracer,k,cell1) = tend_tr(iTracer,k,cell1) - flux * invAreaCell1 * boundaryMask(k,iEdge)
+               tend_tr(iTracer,k,cell2) = tend_tr(iTracer,k,cell2) + flux * invAreaCell2 * boundaryMask(k,iEdge)
 
             end do
             enddo

</font>
</pre>