<p><b>qchen3@fsu.edu</b> 2012-02-01 15:51:17 -0700 (Wed, 01 Feb 2012)</p><p>BRANCH COMMIT<br>
<br>
Rename uBolus as uBolusGM;<br>
Now the GM module will only produce uBolusGM if called, and uTransport is computed <br>
in the diagnostic_solve routine.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/ocean_projects/gmvar/src/core_ocean/Registry
===================================================================
--- branches/ocean_projects/gmvar/src/core_ocean/Registry        2012-02-01 22:36:44 UTC (rev 1448)
+++ branches/ocean_projects/gmvar/src/core_ocean/Registry        2012-02-01 22:51:17 UTC (rev 1449)
@@ -219,13 +219,13 @@
# Diagnostic fields: only written to output
var persistent real v ( nVertLevels nEdges Time ) 2 - v state - -
-var persistent real uBolus ( nVertLevels nEdges Time ) 2 o uBolus state - -
-var persistent real uBolusX ( nVertLevels nEdges Time ) 2 o uBolusX state - -
-var persistent real uBolusY ( nVertLevels nEdges Time ) 2 o uBolusY state - -
-var persistent real uBolusZ ( nVertLevels nEdges Time ) 2 o uBolusZ state - -
-var persistent real uBolusZonal ( nVertLevels nEdges Time ) 2 o uBolusZonal state - -
-var persistent real uBolusMeridional ( nVertLevels nEdges Time ) 2 o uBolusMeridional state - -
var persistent real uTransport ( nVertLevels nEdges Time ) 2 o uTransport state - -
+var persistent real uBolusGM ( nVertLevels nEdges Time ) 2 o uBolusGM state - -
+var persistent real uBolusGMX ( nVertLevels nEdges Time ) 2 o uBolusGMX state - -
+var persistent real uBolusGMY ( nVertLevels nEdges Time ) 2 o uBolusGMY state - -
+var persistent real uBolusGMZ ( nVertLevels nEdges Time ) 2 o uBolusGMZ state - -
+var persistent real uBolusGMZonal ( nVertLevels nEdges Time ) 2 o uBolusGMZonal state - -
+var persistent real uBolusGMMeridional ( nVertLevels nEdges Time ) 2 o uBolusGMMeridional state - -
var persistent real hEddyFlux ( nVertLevels nEdges Time ) 2 o hEddyFlux state - -
var persistent real h_kappa ( nVertLevels nEdges Time ) 2 o h_kappa state - -
var persistent real h_kappa_q ( nVertLevels nEdges Time ) 2 o h_kappa_q state - -
Modified: branches/ocean_projects/gmvar/src/core_ocean/mpas_ocn_gm.F
===================================================================
--- branches/ocean_projects/gmvar/src/core_ocean/mpas_ocn_gm.F        2012-02-01 22:36:44 UTC (rev 1448)
+++ branches/ocean_projects/gmvar/src/core_ocean/mpas_ocn_gm.F        2012-02-01 22:51:17 UTC (rev 1449)
@@ -22,7 +22,7 @@
!
!--------------------------------------------------------------------
- public :: ocn_gm_compute_uTransport
+ public :: ocn_gm_compute_uBolus
!--------------------------------------------------------------------
!
@@ -32,34 +32,17 @@
contains
- subroutine ocn_gm_compute_uTransport(s, grid)
- implicit none
- type(state_type), intent(inout) :: s
- type(mesh_type), intent(in) :: grid
-
- real(kind=RKIND), dimension(:,:), pointer :: u, uBolus, uTransport
-
- u => s % u % array
- uBolus => s % uBolus % array
- uTransport => s % uTransport % array
-
- call ocn_gm_compute_uBolus(s, grid)
- uTransport(:,:) = u(:,:) + uBolus(:,:)
-
- end subroutine ocn_gm_compute_uTransport
-
-
subroutine ocn_gm_compute_uBolus(s, grid)
implicit none
type(state_type), intent(inout) :: s
type(mesh_type), intent(in) :: grid
- real(kind=RKIND), dimension(:,:), pointer :: uBolus, hEddyFlux, h_edge
+ real(kind=RKIND), dimension(:,:), pointer :: uBolusGM, hEddyFlux, h_edge
integer, dimension(:), pointer :: maxLevelEdgeTop
integer :: k, iEdge, nEdges
- uBolus => s % uBolus % array
+ uBolusGM => s % uBolusGM % array
h_edge => s % h_edge % array
hEddyFlux => s % hEddyFlux % array
@@ -71,12 +54,12 @@
if (config_vert_grid_type .EQ. 'z-level') then
! Nothing for now
- uBolus(:,:) = 0.0
+ uBolusGM(:,:) = 0.0
else if (config_vert_grid_type .EQ. 'isopycnal') then
do iEdge = 1, nEdges
do k = 1, maxLevelEdgeTop(iEdge)
- uBolus(k,iEdge) = hEddyFlux(k,iEdge)/h_edge(k,iEdge)
+ uBolusGM(k,iEdge) = hEddyFlux(k,iEdge)/h_edge(k,iEdge)
end do
end do
end if
Modified: branches/ocean_projects/gmvar/src/core_ocean/mpas_ocn_tendency.F
===================================================================
--- branches/ocean_projects/gmvar/src/core_ocean/mpas_ocn_tendency.F        2012-02-01 22:36:44 UTC (rev 1448)
+++ branches/ocean_projects/gmvar/src/core_ocean/mpas_ocn_tendency.F        2012-02-01 22:51:17 UTC (rev 1449)
@@ -196,12 +196,7 @@
call mpas_timer_start("ocn_tend_h-horiz adv")
- if (config_h_kappa .GE. epsilon(1d0)) then
- call ocn_gm_compute_uTransport(s, grid)
- call ocn_thick_hadv_tend(grid, uTransport, h_edge, tend_h, err)
- else
- call ocn_thick_hadv_tend(grid, u, h_edge, tend_h, err)
- end if
+ call ocn_thick_hadv_tend(grid, uTransport, h_edge, tend_h, err)
call mpas_timer_stop("ocn_tend_h-horiz adv")
@@ -627,7 +622,7 @@
weightsOnEdge, kiteAreasOnVertex, h_edge, h, u, v, w, pressure,&
circulation, vorticity, ke, ke_edge, MontPot, wTop, &
pv_edge, pv_vertex, pv_cell, gradPVn, gradPVt, divergence, &
- rho, temperature, salinity, kev, kevc, uBolus, uTransport
+ rho, temperature, salinity, kev, kevc, uBolusGM, uTransport
real (kind=RKIND), dimension(:,:,:), pointer :: tracers
real (kind=RKIND), dimension(:), allocatable:: pTop
real (kind=RKIND), dimension(:,:), allocatable:: div_u
@@ -648,8 +643,8 @@
h => s % h % array
u => s % u % array
- uBolus => s % uBolus % array
uTransport => s % uTransport % array
+ uBolusGM => s % uBolusGM % array
v => s % v % array
wTop => s % wTop % array
h_edge => s % h_edge % array
@@ -1117,6 +1112,13 @@
call ocn_wtop(s,grid)
+ uTransport(:,:) = u(:,:)
+ ! Apply the GM closure as a bolus velocity
+ if(config_h_kappa .GE. epsilon(0D0)) then
+ call ocn_gm_compute_uBolus(s,grid)
+ uTransport(:,:) = uTransport(:,:) + uBolusGM(:,:)
+ end if
+
call mpas_timer_stop("ocn_diagnostic_solve")
end subroutine ocn_diagnostic_solve!}}}
</font>
</pre>