Pythonで中立密度を計算
2022年6月 川合義美
GSW (Gibbs SeaWater) Oceanographic Toolbox という、海水密度、力学高度、等々の海洋学で使う様々な量を計算できる非常に便利なtoolboxが無料で公開されています。https://www.teos-10.org/software.htm
Pythonを含め複数のプログラミング言語に対応していますが、「中立密度(neutral density)」(γn: Jacket and McDougall 1997, JPO)を求める関数はこのGSW Toolboxには入っていません。MATLAB版とFortran版のプログラムが別のところで公開されていますが、現在のところ、Python版は無いようです。
ここではPythonのパッケージoct2pyを使って、PythonからGNU octave(「GNU Octaveをインストール」参照)を呼び出してmファイルのプログラムを実行して計算するという方法を紹介します。※ ここではWindowsの場合のみ説明します。ご容赦ください。
① oct2pyをインストールします。
conda install -c conda-forge oct2py
または
pip install oct2py
② PATHを設定します。
コントロールパネル → システム → 詳細情報 → システムの詳細設定(あるいはウィンドウズキー + Pause/Breakキー) で 「システムのプロパティ」パネルを開きます。
詳細設定 → 環境変数 → 変数 Pathに
C:\Program Files\GNU Octave\Octave-6.4.0\mingw64\bin
を追加します。6.4.0という部分はバージョンの数字です。バージョンによって変わります。
③ MATLAB版のプログラムを取得します。
http://www.teos-10.org/preteos10_software/neutral_density.html からMATLAB版のプログラム(eos80_legacy_gamma_n.zip)をダウンロードして解凍します。
ディレクトリ eos80_legacy_gamma_n を
C:\Program Files\GNU Octave\Octave-6.4.0\mingw64\share\octave\6.4.0\m
に置きます。
④ Pythonからプログラムを呼び出します。
> from oct2py import octave
> nd = octave.eos80_legacy_gamma_n(sal, temp, prs, lon, lat)
により、中立密度ndが計算できます。sal, temp, prs はそれぞれ、実用塩分 (psu)、水温 (°C)、圧力 (dbar)です。lon, lat は経度、緯度です。