<p><b>qchen3@fsu.edu</b> 2010-11-11 13:36:40 -0700 (Thu, 11 Nov 2010)</p><p>BRANCH COMMIT<br>
<br>
Last branch commit before merging back to trunk.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/swmodel_del4/namelist.input.sw
===================================================================
--- branches/swmodel_del4/namelist.input.sw        2010-11-10 19:14:40 UTC (rev 605)
+++ branches/swmodel_del4/namelist.input.sw        2010-11-11 20:36:40 UTC (rev 606)
@@ -13,10 +13,6 @@
config_tracer_adv_order = 2
config_positive_definite = .false.
config_monotonic = .false.
- config_thickness_adv_order = 2
- config_tracer_adv_order = 2
- config_positive_definite = .false.
- config_monotonic = .false.
/
&io
Modified: branches/swmodel_del4/src/core_hyd_atmos/Registry
===================================================================
--- branches/swmodel_del4/src/core_hyd_atmos/Registry        2010-11-10 19:14:40 UTC (rev 605)
+++ branches/swmodel_del4/src/core_hyd_atmos/Registry        2010-11-11 20:36:40 UTC (rev 606)
@@ -18,6 +18,7 @@
namelist logical sw_model config_positive_definite false
namelist logical sw_model config_monotonic true
namelist integer sw_model config_mp_physics 0
+namelist real sw_model config_apvm_upwinding 0.5
namelist integer dimensions config_nvertlevels 26
namelist character io config_input_name grid.nc
namelist character io config_output_name output.nc
Modified: branches/swmodel_del4/src/core_hyd_atmos/module_time_integration.F
===================================================================
--- branches/swmodel_del4/src/core_hyd_atmos/module_time_integration.F        2010-11-10 19:14:40 UTC (rev 605)
+++ branches/swmodel_del4/src/core_hyd_atmos/module_time_integration.F        2010-11-11 20:36:40 UTC (rev 606)
@@ -1988,7 +1988,7 @@
!
do iEdge = 1,nEdges
do k = 1,nVertLevels
- pv_edge(k,iEdge) = pv_edge(k,iEdge) - 0.5 * v(k,iEdge) * dt * gradPVt(k,iEdge)
+ pv_edge(k,iEdge) = pv_edge(k,iEdge) - config_apvm_upwinding * v(k,iEdge) * dt * gradPVt(k,iEdge)
end do
end do
@@ -2027,7 +2027,7 @@
!
do iEdge = 1,nEdges
do k = 1,nVertLevels
- pv_edge(k,iEdge) = pv_edge(k,iEdge) - 0.5 * u(k,iEdge) * dt * gradPVn(k,iEdge)
+ pv_edge(k,iEdge) = pv_edge(k,iEdge) - config_apvm_upwinding * u(k,iEdge) * dt * gradPVn(k,iEdge)
end do
end do
Modified: branches/swmodel_del4/src/core_ocean/Registry
===================================================================
--- branches/swmodel_del4/src/core_ocean/Registry        2010-11-10 19:14:40 UTC (rev 605)
+++ branches/swmodel_del4/src/core_ocean/Registry        2010-11-11 20:36:40 UTC (rev 606)
@@ -19,6 +19,7 @@
namelist real hmix config_h_mom_eddy_visc4 0.0
namelist real hmix config_h_tracer_eddy_diff2 0.0
namelist real hmix config_h_tracer_eddy_diff4 0.0
+namelist real hmix config_apvm_upwinding 0.5
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/swmodel_del4/src/core_ocean/module_time_integration.F
===================================================================
--- branches/swmodel_del4/src/core_ocean/module_time_integration.F        2010-11-10 19:14:40 UTC (rev 605)
+++ branches/swmodel_del4/src/core_ocean/module_time_integration.F        2010-11-11 20:36:40 UTC (rev 606)
@@ -611,7 +611,7 @@
! see POP Reference guide, section 3.4.4.
tend_u(nVertLevels,iEdge) = tend_u(nVertLevels,iEdge) &
- 1.0e-3*u(nVertLevels,iEdge) &
- *sqrt(2.0*ke_edge(nVertLevels,iEdge))
+ *sqrt(2.0*ke_edge(nVertLevels,iEdge))/h_edge(k,iEdge)
! old bottom drag, just linear friction
! du/dt = u/tau where tau=100 days.
@@ -1470,7 +1470,7 @@
!
do iEdge = 1,nEdges
do k = 1,nVertLevels
- pv_edge(k,iEdge) = pv_edge(k,iEdge) - 0.5 * v(k,iEdge) * dt * gradPVt(k,iEdge)
+ pv_edge(k,iEdge) = pv_edge(k,iEdge) - config_apvm_upwinding * v(k,iEdge) * dt * gradPVt(k,iEdge)
enddo
enddo
@@ -1510,7 +1510,7 @@
!
do iEdge = 1,nEdges
do k = 1,nVertLevels
- pv_edge(k,iEdge) = pv_edge(k,iEdge) - 0.5 * u(k,iEdge) * dt * gradPVn(k,iEdge)
+ pv_edge(k,iEdge) = pv_edge(k,iEdge) - config_apvm_upwinding * u(k,iEdge) * dt * gradPVn(k,iEdge)
enddo
enddo
Modified: branches/swmodel_del4/src/core_sw/Registry
===================================================================
--- branches/swmodel_del4/src/core_sw/Registry        2010-11-10 19:14:40 UTC (rev 605)
+++ branches/swmodel_del4/src/core_sw/Registry        2010-11-11 20:36:40 UTC (rev 606)
@@ -15,6 +15,7 @@
namelist integer sw_model config_tracer_adv_order 2
namelist logical sw_model config_positive_definite false
namelist logical sw_model config_monotonic false
+namelist real sw_model config_apvm_upwinding 0.5
namelist character io config_input_name grid.nc
namelist character io config_output_name output.nc
namelist character io config_restart_name restart.nc
Modified: branches/swmodel_del4/src/core_sw/module_time_integration.F
===================================================================
--- branches/swmodel_del4/src/core_sw/module_time_integration.F        2010-11-10 19:14:40 UTC (rev 605)
+++ branches/swmodel_del4/src/core_sw/module_time_integration.F        2010-11-11 20:36:40 UTC (rev 606)
@@ -1006,16 +1006,10 @@
!
circulation(:,:) = 0.0
do iEdge=1,nEdges
- if (verticesOnEdge(1,iEdge) <= nVertices) then
- do k=1,nVertLevels
- circulation(k,verticesOnEdge(1,iEdge)) = circulation(k,verticesOnEdge(1,iEdge)) - dcEdge(iEdge) * u(k,iEdge)
- end do
- end if
- if (verticesOnEdge(2,iEdge) <= nVertices) then
- do k=1,nVertLevels
- circulation(k,verticesOnEdge(2,iEdge)) = circulation(k,verticesOnEdge(2,iEdge)) + dcEdge(iEdge) * u(k,iEdge)
- end do
- end if
+ do k=1,nVertLevels
+ circulation(k,verticesOnEdge(1,iEdge)) = circulation(k,verticesOnEdge(1,iEdge)) - dcEdge(iEdge) * u(k,iEdge)
+ circulation(k,verticesOnEdge(2,iEdge)) = circulation(k,verticesOnEdge(2,iEdge)) + dcEdge(iEdge) * u(k,iEdge)
+ end do
end do
do iVertex=1,nVertices
do k=1,nVertLevels
@@ -1072,11 +1066,9 @@
do iEdge = 1,nEdges
do i=1,nEdgesOnEdge(iEdge)
eoe = edgesOnEdge(i,iEdge)
- if (eoe <= nEdges) then
- do k = 1,nVertLevels
- v(k,iEdge) = v(k,iEdge) + weightsOnEdge(i,iEdge) * u(k, eoe)
- end do
- end if
+ do k = 1,nVertLevels
+ v(k,iEdge) = v(k,iEdge) + weightsOnEdge(i,iEdge) * u(k, eoe)
+ end do
end do
end do
@@ -1129,26 +1121,25 @@
!
! Compute pv at the edges
- ! ( this computes pv_edge at all edges bounding real cells and distance-1 ghost cells )
+ ! ( this computes pv_edge at all edges bounding real cells )
!
pv_edge(:,:) = 0.0
do iVertex = 1,nVertices
do i=1,grid % vertexDegree
- iEdge = edgesOnVertex(i,iVertex)
- if(iEdge <= nEdges) then
- do k=1,nVertLevels
+ iEdge = edgesOnVertex(i,iVertex)
+ do k=1,nVertLevels
pv_edge(k,iEdge) = pv_edge(k,iEdge) + 0.5 * pv_vertex(k,iVertex)
- enddo
- endif
+ end do
end do
end do
+
!
! Modify PV edge with upstream bias.
!
do iEdge = 1,nEdges
do k = 1,nVertLevels
- pv_edge(k,iEdge) = pv_edge(k,iEdge) - 0.5 * v(k,iEdge) * dt * gradPVt(k,iEdge)
+ pv_edge(k,iEdge) = pv_edge(k,iEdge) - config_apvm_upwinding * v(k,iEdge) * dt * gradPVt(k,iEdge)
enddo
enddo
@@ -1190,7 +1181,7 @@
!
do iEdge = 1,nEdges
do k = 1,nVertLevels
- pv_edge(k,iEdge) = pv_edge(k,iEdge) - 0.5 * u(k,iEdge) * dt * gradPVn(k,iEdge)
+ pv_edge(k,iEdge) = pv_edge(k,iEdge) - config_apvm_upwinding * u(k,iEdge) * dt * gradPVn(k,iEdge)
enddo
enddo
</font>
</pre>