123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #
- # Laurent Brodeau
- #
- # November 2013
- import sys
- import numpy as nmp
- import math
- ########################
- # SIGMA DENSITY STUFFS #
- ########################
- rsigma_dense = 27.8
- zrau0 = 1000.
- rt0 = 273.16
- grav = 9.8 # gravity
- def sigma0(XT, XS):
- #--------------------------------------------------------------------
- # *** FUNCTION sigma0 ***
- #
- # ** Purpose : Compute the in situ density (ratio rho/rau0) and the
- # potential volumic mass (Kg/m3) from potential temperature
- # and salinity fields using an equation of state defined
- # through the namelist parameter neos.
- #
- # ** Method : Jackett and McDougall (1994) equation of state.
- # The in situ density is computed directly as a function of
- # potential temperature relative to the surface (the opa t
- # variable), salt and pressure (assuming no pressure variation
- # along geopotential surfaces, i.e. the pressure p in decibars
- # is approximated by the depth in meters.
- # prd(t,s,p) = ( rho(t,s,p) - rau0 ) / rau0
- # rhop(t,s) = rho(t,s,0)
- # with pressure p decibars
- # potential temperature t deg celsius
- # salinity s psu
- # reference volumic mass rau0 kg/m**3
- # in situ volumic mass rho kg/m**3
- # in situ density anomalie prd no units
- #
- #----------------------------------------------------------------------
- Vshape = nmp.shape(XT)
- nsize = nmp.size(XT) ; # number of elements in array
- nbdim = len(Vshape) ; # number of dimensions...
-
- if nmp.shape(XS) != Vshape:
- print 'ERROR in sigma0.lb_ocean_orca1: XT and XS dont have the same shape!'
- sys.exit(0)
- zr1 = nmp.zeros(nsize); zr1.shape = Vshape
- zr2 = nmp.zeros(nsize); zr2.shape = Vshape
- zr3 = nmp.zeros(nsize); zr3.shape = Vshape
- zr4 = nmp.zeros(nsize); zr4.shape = Vshape
-
- # compute volumic mass pure water at atm pressure
- zr1 = ( ( ( ( 6.536332e-9*XT -1.120083e-6 )*XT + 1.001685e-4)*XT - 9.095290e-3 )*XT + 6.793952e-2 )*XT + 999.842594
- # seawater volumic mass atm pressure
- zr2 = ( ( ( 5.3875e-9*XT-8.2467e-7 )*XT + 7.6438e-5 )*XT - 4.0899e-3 ) *XT + 0.824493
- zr3 = ( -1.6546e-6*XT+1.0227e-4 )*XT - 5.72466e-3
- zr4 = 4.8314e-4
-
- # potential volumic mass (reference to the surface)
- return ( zr4*XS + zr3*nmp.sqrt(nmp.abs(XS)) + zr2 ) *XS + zr1 - zrau0
|