<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           =&gt; s % u % array
-      uBolus      =&gt; s % uBolus % array
-      uTransport  =&gt; 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         =&gt; s % uBolus % array
+      uBolusGM         =&gt; s % uBolusGM % array
       h_edge         =&gt; s % h_edge % array
       hEddyFlux      =&gt; 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(&quot;ocn_tend_h-horiz adv&quot;)
 
-      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(&quot;ocn_tend_h-horiz adv&quot;)
 
@@ -627,7 +622,7 @@
         weightsOnEdge, kiteAreasOnVertex, h_edge, h, u, v, w, pressure,&amp;
         circulation, vorticity, ke, ke_edge, MontPot, wTop, &amp;
         pv_edge, pv_vertex, pv_cell, gradPVn, gradPVt, divergence, &amp;
-        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           =&gt; s % h % array
       u           =&gt; s % u % array
-      uBolus      =&gt; s % uBolus % array
       uTransport  =&gt; s % uTransport % array
+      uBolusGM      =&gt; s % uBolusGM % array
       v           =&gt; s % v % array
       wTop        =&gt; s % wTop % array
       h_edge      =&gt; 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(&quot;ocn_diagnostic_solve&quot;)
 
    end subroutine ocn_diagnostic_solve!}}}

</font>
</pre>