next up previous
Next: bcbr.F Up: The Proudman Oceanographic Laboratory Previous: barot.F

Subsections


bcalc.F


subroutine bcalc

Description

This subroutine calculates the ``potential" buoyancy ($b_{0}$) at all non-redundant points from temperature ($T$), salinity ($S$), acceleration due to gravity ($g$) and the reference density of seawater ($\rho_{0}=1027$kgm$^{-3}$, defined as row in parm_default. The buoyancy is defined by

\begin{displaymath}
b_{0} = \frac{g}{\rho_{0}} \left( \rho_{0} -
\rho \left( T, S, 0 \right) \right),
\end{displaymath}

where the density at a pressure of one standard atmosphere is (Gill, 1982 from UNESCO, 1981)

\begin{eqnarray*}
\rho \left( T, S, 0 \right) & = & 999.842594
+6.793952 \time...
...imes 10^{-6} T^{2} \right) \\
& & +4.8314 \times 10^{-4} S^{2}.
\end{eqnarray*}



If temperature and salinity are constant in space and time $b_{0}$ is set to zero. If density is used as a prognostic variable $b_{0}$ is set equal to the temperature.

Subroutine Arguments

none

Local variables

i, j, k local indices.
jcg global index.
ro1 $=\rho_{0}-999.842594$.
t temperature at location (k,i,j) ($^{\circ }$C).
s salinity at location (k,i,j) (psu).
bc intermediate variable used in density calculation.

Global variables changed

tmp, sal, b

Logical units

none

Order of Things

  1. Calculate the value of buoyancy.

Calls

none

Called By

b3dinit
baroc
bcalcP
bset
endstep
pgrad, pgrad_spline, pgrad_sigma

Options - Logical

no_tmp, no_sal - temperature/salinity constant in time and space.
progdens - true if density is a prognostic variable.

Options - Compiler

none

Known Issues

none

Reference

Gill, A.E., Atmosphere-Ocean Dynamics. International Geophysics Series, 30, p599, 1982.


subroutine bcalcP

Description

This subroutine adds the pressure term $b'$ onto the ``potential'' buoyancy $b_{0}$ calculated in bcalc. The resultant buoyancy $b = b_{0} + b'$ accounts for the variation of compressibility with temperature and salinity. This is used in the pressure gradient calculations.

The pressure term is given by

\begin{displaymath}
b' = \frac{g}{\rho_{0}} \left( \bar{\rho'}(Z)
-10^{4} \frac{p}{c^{2}} \left( 1.0-0.2\frac{p}{c^{2}} \right) \right),
\end{displaymath}

where, $\rho_{0}=1027$kgm$^{-3}$ is the reference density of seawater (defined as row in parm_default), $p$ (calculated in pgrad or pgrad_spline) is the pressure ($10^{4}$Nm$^{-2}$) relative to the sea surface and $\bar{\rho'}(Z) = -0.004564 Z$. The speed of sound, $c$, is approximated by

\begin{displaymath}
c = 1449.2+1.34\left( S-35.0 \right)+4.55T-0.045T^{2}
+0.00821p+15.0\times 10^{-9} p^{2},
\end{displaymath}

where $T$ is the temperature ($^{\circ }$C) and $S$ is the salinity (psu).

Subroutine Arguments

none

Local variables

i, j, k local indices.
jcg global index.
t temperature at location (k,i,j) ($^{\circ }$C).
s salinity at location (k,i,j) (psu).
p pressure at location (k,i,j) ($10^{4}$Nm$^{-2}$).
bp value of pressure term to add to the buoyancy.
c2 $=c^{2}$, where $c$ approximates the speed of sound.

Global variables changed

b

Logical units

none

Order of Things

  1. Calculate the pressure term correction to the buoyancy.

Calls

none

Called By

pgrad,pgrad_spline

Options - Logical

none

Options - Compiler

DEBUG, DEBUG_BCALC, DEBUG_MODEL - output variables for debugging.
SCOORD - use horizontally varying vertical coordinate.

Known Issues

Only for use with s-co-ordinates.


subroutine bcalcinit

Description

The subroutine calculates the value of $\bar{\rho'}(Z) = -0.004564 Z$, which is used by bcalcP and initialises the value of the sub-surface pressure relative to the sea surface. See pgrad for details of the calculation of the pressure.

Subroutine Arguments

none

Local variables

i, j, k local indices.
jcg global index.
zz the depth below the sea surface of a particular vertical level.
di intermediate variable used in the calculation of the sub-surface pressure.

Global variables changed

rowbar, pressure

Logical units

none

Order of Things

  1. Initialise rowbar to zero and then set to -0.004564 $\times$ depth below the sea surface at every sea point in the model domain.
  2. Initialise the sub-surface pressure array (= $-g\rho \times$ depth below the sea surface).
  3. Calculate the buoyancy (though a call to bcalc) and the buoyancy plus the pressure correction (through a call to bcalcP).
  4. Calculate the sub-surface pressure array, taking into account the affects of buoyancy.
  5. Reset the buoyancy using bcalc.

Calls

bcalc, bcalcP

Called By

b3dinit.F

Options - Logical

none

Options - Compiler

DEBUG - output variables for debugging.
SCOORD - use horizontally varying vertical coordinate.

Known Issues

Only for use with s-co-ordinates.


function bu(t,s,g,r0)

Description

This is a function version of the subroutine bcalc

Subroutine Arguments

T, S temperature and salinity
g gravity
r0 Reference density

Local variables

none

Logical units

none

Order of Things

  1. calculated buoyancy and returns

Options - Logical

no_tmp and no_sal turn off T and S calculation

Options - Compiler

none

Known Issues


next up previous
Next: bcbr.F Up: The Proudman Oceanographic Laboratory Previous: barot.F
The AMMP Project 2005-04-20