<p><b>mpetersen@lanl.gov</b> 2013-02-06 11:43:40 -0700 (Wed, 06 Feb 2013)</p><p>Branch commit, diagnistics_revision.  Added computation of Brunt-Vaisala frequency.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/ocean_projects/diagnostics_revision/src/core_ocean/Registry
===================================================================
--- branches/ocean_projects/diagnostics_revision/src/core_ocean/Registry        2013-02-06 18:11:51 UTC (rev 2446)
+++ branches/ocean_projects/diagnostics_revision/src/core_ocean/Registry        2013-02-06 18:43:40 UTC (rev 2447)
@@ -335,6 +335,7 @@
 var persistent real    wTop ( nVertLevelsP1 nCells Time ) 2 - wTop state - -
 var persistent real    vertVelocityTop ( nVertLevelsP1 nCells Time ) 2 o vertVelocityTop state - -
 var persistent real    rhoDisplaced ( nVertLevels nCells Time ) 2 - rhoDisplaced state - -
+var persistent real    BruntVaisalaFreqTop ( nVertLevels nCells Time ) 2 o BruntVaisalaFreqTop state - -
 var persistent real    viscosity ( nVertLevels nEdges Time ) 2 o viscosity state - -
 
 % Other diagnostic variables: neither read nor written to any files

Modified: branches/ocean_projects/diagnostics_revision/src/core_ocean/mpas_ocn_diagnostics.F
===================================================================
--- branches/ocean_projects/diagnostics_revision/src/core_ocean/mpas_ocn_diagnostics.F        2013-02-06 18:11:51 UTC (rev 2446)
+++ branches/ocean_projects/diagnostics_revision/src/core_ocean/mpas_ocn_diagnostics.F        2013-02-06 18:43:40 UTC (rev 2447)
@@ -92,7 +92,7 @@
         verticesOnCell, edgeSignOnVertex, edgeSignOnCell, edgesOnCell
 
       real (kind=RKIND) :: d2fdx2_cell1, d2fdx2_cell2, coef_3rd_order, r_tmp, &amp;
-        invAreaCell1, invAreaCell2, invAreaTri1, invAreaTri2, invLength, h_vertex
+        invAreaCell1, invAreaCell2, invAreaTri1, invAreaTri2, invLength, h_vertex, coef
 
       real (kind=RKIND), dimension(:), allocatable:: pTop, div_hu
 
@@ -102,7 +102,8 @@
         weightsOnEdge, kiteAreasOnVertex, h_edge, h, u, v, pressure,&amp;
         circulation, vorticity, ke, ke_edge, MontPot, wTop, zMid, &amp;
         Vor_edge, Vor_vertex, Vor_cell, gradVor_n, gradVor_t, divergence, &amp;
-        rho, temperature, salinity, kev, kevc, uBolusGM, uTransport, vertVelocityTop
+        rho, rhoDisplaced, temperature, salinity, kev, kevc, uBolusGM, uTransport, &amp;
+        vertVelocityTop, BruntVaisalaFreqTop
       real (kind=RKIND), dimension(:,:,:), pointer :: tracers, deriv_two
       character :: c1*6
 
@@ -125,12 +126,14 @@
       gradVor_n   =&gt; s % gradVor_n % array
       gradVor_t   =&gt; s % gradVor_t % array
       rho         =&gt; s % rho % array
+      rhoDisplaced=&gt; s % rhoDisplaced % array
       MontPot     =&gt; s % MontPot % array
       pressure    =&gt; s % pressure % array
       zMid        =&gt; s % zMid % array
       ssh         =&gt; s % ssh % array
       tracers     =&gt; s % tracers % array
       vertVelocityTop =&gt; s % vertVelocityTop % array
+      BruntVaisalaFreqTop =&gt; s % BruntVaisalaFreqTop % array
 
       weightsOnEdge     =&gt; grid % weightsOnEdge % array
       kiteAreasOnVertex =&gt; grid % kiteAreasOnVertex % array
@@ -216,7 +219,7 @@
 
       allocate(div_hu(nVertLevels))
       do iCell = 1, nCells
-         div_hu(:) = 0.0_RKIND
+         div_hu(:) = 0.0
          invAreaCell1 = 1.0 / areaCell(iCell)
          do i = 1, nEdgesOnCell(iCell)
             iEdge = edgesOnCell(i, iCell)
@@ -374,9 +377,13 @@
       ! For zlevel, calculate in-situ density
       if (config_vert_coord_movement.ne.'isopycnal') then
          call mpas_timer_start(&quot;equation of state&quot;, .false., diagEOSTimer)
+
+         ! compute in-place density
          call ocn_equation_of_state_rho(s, grid, 0, 'relative', err)
-      ! mrp 110324 In order to visualize rhoDisplaced, include the following
+
+         ! compute rhoDisplaced, the potential density referenced to the top layer
          call ocn_equation_of_state_rho(s, grid, 1, 'relative', err)
+
          call mpas_timer_stop(&quot;equation of state&quot;, diagEOSTimer)
       endif
 
@@ -444,6 +451,18 @@
       endif
 
       !
+      ! Brunt-Vaisala frequency
+      !
+      coef = -gravity/config_rho0
+      do iCell=1,nCells
+         BruntVaisalaFreqTop(1,iCell) = 0.0
+         do k=2,maxLevelCell(iCell)
+            BruntVaisalaFreqTop(k,iCell) = coef * (rhoDisplaced(k-1,iCell) - rhoDisplaced(k,iCell)) &amp; 
+              / (zMid(k-1,iCell) - zMid(k,iCell))
+          end do
+      end do
+
+      !
       ! Sea Surface Height
       !
       do iCell=1,nCells
@@ -555,7 +574,7 @@
 
       if (config_vert_coord_movement.eq.'isopycnal') then
         ! set vertical transport to zero in isopycnal case
-        wTop=0.0_RKIND
+        wTop=0.0
         return
       end if
 
@@ -567,10 +586,10 @@
       !
 
       do iCell=1,nCells
-        div_hu(:) = 0.0_RKIND
-        div_hu_btr = 0.0_RKIND
-        hSum = 0.0_RKIND
-        invAreaCell = 1.0_RKIND / areaCell(iCell)
+        div_hu(:) = 0.0
+        div_hu_btr = 0.0
+        hSum = 0.0
+        invAreaCell = 1.0 / areaCell(iCell)
 
         do i = 1, nEdgesOnCell(iCell)
           iEdge = edgesOnCell(i, iCell)
@@ -592,8 +611,8 @@
         end if
 
         ! Vertical transport through layer interface at top and bottom is zero.
-        wTop(1,iCell) = 0.0_RKIND
-        wTop(maxLevelCell(iCell)+1,iCell) = 0.0_RKIND
+        wTop(1,iCell) = 0.0
+        wTop(maxLevelCell(iCell)+1,iCell) = 0.0
         do k=maxLevelCell(iCell),2,-1
            wTop(k,iCell) = wTop(k+1,iCell) - div_hu(k) - h_tend_col(k)
         end do

</font>
</pre>