<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, &
- 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,&
circulation, vorticity, ke, ke_edge, MontPot, wTop, zMid, &
Vor_edge, Vor_vertex, Vor_cell, gradVor_n, gradVor_t, divergence, &
- rho, temperature, salinity, kev, kevc, uBolusGM, uTransport, vertVelocityTop
+ rho, rhoDisplaced, temperature, salinity, kev, kevc, uBolusGM, uTransport, &
+ vertVelocityTop, BruntVaisalaFreqTop
real (kind=RKIND), dimension(:,:,:), pointer :: tracers, deriv_two
character :: c1*6
@@ -125,12 +126,14 @@
gradVor_n => s % gradVor_n % array
gradVor_t => s % gradVor_t % array
rho => s % rho % array
+ rhoDisplaced=> s % rhoDisplaced % array
MontPot => s % MontPot % array
pressure => s % pressure % array
zMid => s % zMid % array
ssh => s % ssh % array
tracers => s % tracers % array
vertVelocityTop => s % vertVelocityTop % array
+ BruntVaisalaFreqTop => s % BruntVaisalaFreqTop % array
weightsOnEdge => grid % weightsOnEdge % array
kiteAreasOnVertex => 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("equation of state", .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("equation of state", 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)) &
+ / (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>