This repository is deprecated in favor of https://github.com/TEOS-10/GSW-Python, both packages will install a gsw module that should be virtually identical to use. However, python-gsw is a pure python of the 48-terms equation, while GSW-Python is a c-wrapped alternative for the latest 72-term equation.

June 24, 2017 · View on GitHub

python gsw

This python module is being replaced by a new implementation: GSW-Python <https://github.com/TEOS-10/GSW-Python>__, introduced on April 22, 2017.

.. image:: http://img.shields.io/pypi/v/gsw.svg?style=flat :target: https://pypi.python.org/pypi/gsw :alt: Version_status .. image:: http://img.shields.io/travis/TEOS-10/python-gsw/master.svg?style=flat :target: https://travis-ci.org/TEOS-10/python-gsw :alt: Build_status .. image:: http://img.shields.io/badge/license-MIT-blue.svg?style=flat :target: https://github.com/TEOS-10/python-gsw/blob/master/LICENSE.txt :alt: license

Python implementation of the Thermodynamic Equation Of Seawater - 2010 (TEOS-10 <http://www.teos-10.org/>__)


This module is a Python alternative to the GSW-Matlab toolbox. The
table below shows some function names in the gibbs library and the
corresponding function names in the seawater library.

TEOS-10 vs. EOS-80
~~~~~~~~~~~~~~~~~~

+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| **Variable**                                                      | **SeaWater (EOS 80)**                                            | **Gibbs SeaWater (GSW TEOS 10)**                             |
+===================================================================+==================================================================+==============================================================+
| Absolute Salinity                                                 | NA                                                               | gsw.SA\_from\_SP(SP,p,long,lat)                              |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| Conservative Temperature                                          | NA                                                               | gsw.CT\_from\_t(SA,t,p)                                      |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| density (i.e. in situ density)                                    | sw.dens(SP,t,p)                                                  | gsw.rho\_CT(SA,CT,p), or gsw.rho(SA,t,p)                     |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| potential density                                                 | sw.pden(SP,t,p,pr)                                               | gsw.rho\_CT(SA,CT,pr)                                        |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| potential temperature                                             | sw.ptmp(SP,t,p,pr)                                               | gsw.pt\_from\_t(SA,t,p,pr)                                   |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| :math:`\sigma_0`, using :math:`\theta_o` = sw.ptmp(SP,t,p,0)      | sw.dens(SP, :math:`\theta_o`, 0) -1000 kg m\ :math:`^{-3}`       | gsw.sigma0\_CT(SA,CT)                                        |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| :math:`\sigma_2`, using :math:`\theta_2` = sw.ptmp(SP,t,p,2000)   | sw.dens(SP,\ :math:`\theta_2`, 2000) -1000 kg m\ :math:`^{-3}`   | gsw.sigma2\_CT(SA,CT)                                        |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| :math:`\sigma_4`, using :math:`\theta_4` = sw.ptmp(SP,t,p,2000)   | sw.dens(SP,\ :math:`\theta_4`, 4000) -1000 kg m\ :math:`^{-3}`   | gsw.sigma2\_CT(SA,CT)                                        |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| specific volume anomaly                                           | sw.svan(SP,t,p)                                                  | gsw.specvol\_anom\_CT(SA,CT,p)                               |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| dynamic height anomaly                                            | -sw.gpan(SP,t,p)                                                 | gsw.geo\_strf\_dyn\_height(SA,CT,p,delta\_p,interp\_style)   |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| geostrophic velocity                                              | sw.gvel(ga,lat,long)                                             | gsw.geostrophic\_velocity(geo\_str,long,lat,p)               |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| N\ :math:`^2`                                                     | sw.bfrq(SP,t,p,lat)                                              | gsw.Nsquared(SA,CT,p,lat)                                    |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| pressure from height (SW uses depth, not height)                  | sw.pres(-z,lat)                                                  | gsw.p\_from\_z(z,lat)                                        |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| height from pressure (SW outputs depth, not height)               | z = -sw.dpth(p,lat)                                              | gsw.z\_from\_p(p,lat)                                        |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| in situ temperature from pt                                       | sw.temp(SP,pt,p,pr)                                              | gsw.pt\_from\_t(SA,pt,pr,p)                                  |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| sound speed                                                       | sw.svel(SP,t,p)                                                  | gsw.sound\_speed(SA,t,p)                                     |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| isobaric heat capacity                                            | sw.cp(SP,t,p)                                                    | gsw.cp(SA,t,p)                                               |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| adiabatic lapse rate\*                                            | sw.adtg(SP,t,p)                                                  | gsw.adiabatic\_lapse\_rate(SA,t,p)                           |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| SP from cndr, (PSS 78)                                            | sw.salt(cndr,t,p)                                                | gsw.SP\_from\_cndr(cndr,t,p)                                 |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| cndr from SP, (PSS 78)                                            | sw.cndr(SP,t,p)                                                  | gsw.cndr\_from\_SP(SP,t,p)                                   |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| distance                                                          | sw.dist(lat,long,units)                                          | gsw.distance(long,lat,p)                                     |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| gravitational acceleration                                        | sw.g(lat,z)                                                      | gsw.grav(lat,p)                                              |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+
| Coriolis parameter                                                | sw.f(lat)                                                        | gsw.f(lat)                                                   |
+-------------------------------------------------------------------+------------------------------------------------------------------+--------------------------------------------------------------+

Note that the SW and GSW functions output the adiabatic lapse rate in
different units, being K (dbar):math:`^{-1}` and K Pa\ :math:`^{-1}`
respectively.

Authors
~~~~~~~

-  Bjørn Ådlandsvik
-  Eric Firing
-  Filipe Fernandes

Thanks
~~~~~~

-  Bjørn Ådlandsvik - Testing unit and several bug fixes.
-  Eric Firing - Support for masked arrays, re-write of *delta*\ SA.
-  Trevor J. McDougall (and all of SCOR/IAPSO WG127) for making
   available the Matlab version of this software.

Acknowledgments
~~~~~~~~~~~~~~~

-  SCOR/IAPSO WG127 for the original GSW-Matlab code.

Caveats
~~~~~~~

-  This python module is incomplete and should be used with caution.
-  The database used in ``_delta_SA`` comes from the GSW-Matlab
   version.