<p><b>qchen3@fsu.edu</b> 2010-11-10 12:14:40 -0700 (Wed, 10 Nov 2010)</p><p>BRANCH COMMIT<br>
<br>
1. In core_sw/module_time_integration.F, deallocate boundaryMask after the del4 calculation (pointed by Todd Ringler).<br>
<br>
2. In core_sw/module_time_integration.F, deleted the redundant variables h_mom_eddy_visc2, h_mom_eddy_visc4, h_tracer_eddy_diff2 and h_tracer_eddy_diff4, and use the corresponding variables from namelist or Registry directly (suggested by Mark Petersen).<br>
<br>
</p><hr noshade><pre><font color="gray">Modified: branches/swmodel_del4/src/core_sw/module_time_integration.F
===================================================================
--- branches/swmodel_del4/src/core_sw/module_time_integration.F        2010-11-09 18:01:32 UTC (rev 604)
+++ branches/swmodel_del4/src/core_sw/module_time_integration.F        2010-11-10 19:14:40 UTC (rev 605)
@@ -263,7 +263,7 @@
circulation, vorticity, ke, pv_edge, divergence, h_vertex
integer, dimension(:,:), pointer :: cellsOnEdge, cellsOnVertex, verticesOnEdge, edgesOnCell, edgesOnEdge, edgesOnVertex
integer, dimension(:), pointer :: nEdgesOnCell, nEdgesOnEdge
- real (kind=RKIND) :: r, u_diffusion, h_mom_eddy_visc2, h_mom_eddy_visc4
+ real (kind=RKIND) :: r, u_diffusion
real (kind=RKIND), allocatable, dimension(:,:) :: delsq_divergence
real (kind=RKIND), allocatable, dimension(:,:) :: delsq_u
@@ -308,10 +308,7 @@
nVertices = grid % nVertices
nVertLevels = grid % nVertLevels
- h_mom_eddy_visc2 = config_h_mom_eddy_visc2
- h_mom_eddy_visc4 = config_h_mom_eddy_visc4
-
!
! Compute height tendency for each cell
!
@@ -396,7 +393,7 @@
! Compute diffusion, computed as </font>
<font color="black">abla divergence - k \times </font>
<font color="gray">abla vorticity
! only valid for visc == constant
- if (h_mom_eddy_visc2 > 0.0) then
+ if (config_h_mom_eddy_visc2 > 0.0) then
do iEdge=1,grid % nEdgesSolve
cell1 = cellsOnEdge(1,iEdge)
cell2 = cellsOnEdge(2,iEdge)
@@ -406,7 +403,7 @@
do k=1,nVertLevels
u_diffusion = ( divergence(k,cell2) - divergence(k,cell1) ) / dcEdge(iEdge) &
-(vorticity(k,vertex2) - vorticity(k,vertex1) ) / dvEdge(iEdge)
- u_diffusion = h_mom_eddy_visc2 * u_diffusion
+ u_diffusion = config_h_mom_eddy_visc2 * u_diffusion
tend_u(k,iEdge) = tend_u(k,iEdge) + u_diffusion
end do
end do
@@ -418,7 +415,7 @@
! applied recursively.
! strictly only valid for h_mom_eddy_visc4 == constant
!
- if (h_mom_eddy_visc4 > 0.0) then
+ if (config_h_mom_eddy_visc4 > 0.0) then
allocate(delsq_divergence(nVertLevels, nCells+1))
allocate(delsq_u(nVertLevels, nEdges+1))
allocate(delsq_circulation(nVertLevels, nVertices+1))
@@ -494,7 +491,7 @@
-( delsq_vorticity(k,vertex2) &
- delsq_vorticity(k,vertex1) ) / dvEdge(iEdge)
- u_diffusion = h_mom_eddy_visc4 * u_diffusion
+ u_diffusion = config_h_mom_eddy_visc4 * u_diffusion
tend_u(k,iEdge) = tend_u(k,iEdge) - u_diffusion
end do
@@ -527,7 +524,7 @@
integer :: iCell, iEdge, k, iTracer, cell1, cell2, i
real (kind=RKIND) :: flux, tracer_edge, r
- real (kind=RKIND) :: h_tracer_eddy_diff2, h_tracer_eddy_diff4, invAreaCell1, invAreaCell2, tracer_turb_flux
+ real (kind=RKIND) :: invAreaCell1, invAreaCell2, tracer_turb_flux
integer, dimension(:,:), pointer :: boundaryEdge
real (kind=RKIND), dimension(:,:), allocatable :: boundaryMask
real (kind=RKIND), dimension(:,:,:), allocatable:: delsq_tracer
@@ -556,8 +553,6 @@
if (config_tracer_adv_order == 3) coef_3rd_order = 1.0
if (config_tracer_adv_order == 3 .and. config_monotonic) coef_3rd_order = 0.25
- h_tracer_eddy_diff2 = config_h_tracer_eddy_diff2
- h_tracer_eddy_diff4 = config_h_tracer_eddy_diff4
tracer_tend(:,:,:) = 0.0
@@ -689,7 +684,7 @@
!
! tracer tendency: del2 horizontal tracer diffusion, div(h \kappa_2 </font>
<font color="gray">abla \phi)
!
- if ( h_tracer_eddy_diff2 > 0.0 ) then
+ if ( config_h_tracer_eddy_diff2 > 0.0 ) then
!
! compute a boundary mask to enforce insulating boundary conditions in the horizontal
@@ -707,7 +702,7 @@
do k=1,grid % nVertLevels
do iTracer=1, grid % nTracers
! \kappa_2 </font>
<font color="red">abla \phi on edge
- tracer_turb_flux = h_tracer_eddy_diff2 &
+ tracer_turb_flux = config_h_tracer_eddy_diff2 &
*( tracers(iTracer,k,cell2) - tracers(iTracer,k,cell1)) / dcEdge(iEdge)
! div(h \kappa_2 </font>
<font color="gray">abla \phi) at cell center
@@ -727,7 +722,7 @@
! tracer tendency: del4 horizontal tracer diffusion, &
! div(h \kappa_4 </font>
<font color="black">abla [div(h </font>
<font color="gray">abla \phi)])
!
- if ( h_tracer_eddy_diff4 > 0.0 ) then
+ if ( config_h_tracer_eddy_diff4 > 0.0 ) then
!
! compute a boundary mask to enforce insulating boundary conditions in the horizontal
@@ -774,7 +769,7 @@
do k=1,grid % nVertLevels
do iTracer=1,grid % nTracers
- tracer_turb_flux = h_tracer_eddy_diff4 * (delsq_tracer(iTracer,k,cell2) - delsq_tracer(iTracer,k,cell1)) / dcEdge(iEdge)
+ tracer_turb_flux = config_h_tracer_eddy_diff4 * (delsq_tracer(iTracer,k,cell2) - delsq_tracer(iTracer,k,cell1)) / dcEdge(iEdge)
flux = dvEdge(iEdge) * tracer_turb_flux
tracer_tend(iTracer,k,cell1) = tracer_tend(iTracer,k,cell1) - flux * invAreaCell1 * boundaryMask(k,iEdge)
tracer_tend(iTracer,k,cell2) = tracer_tend(iTracer,k,cell2) + flux * invAreaCell2 * boundaryMask(k,iEdge)
@@ -784,6 +779,7 @@
end do
deallocate(delsq_tracer)
+ deallocate(boundaryMask)
end if
</font>
</pre>