<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 @@
&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
/
&io
@@ -16,30 +15,33 @@
&restart
config_restart_interval = 115200
- config_do_restart = .false.
- config_restart_time = 1036800.0
+ config_do_restart = .fasle.
+ config_restart_time = 31104000
/
&grid
- config_vert_grid_type = 'zlevel'
- config_rho0 = 1028
+ config_vert_grid_type = 'isopycnal'
+ config_rho0 = 1015
/
&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
/
&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
/
&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 :: &
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 :: &
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 => grid % dvEdge % array
dcEdge => grid % dcEdge % array
zTopZLevel => grid % zTopZLevel % array
+ boundaryEdge => 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 > 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 > 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) &
+ + 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) &
+ - 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>