大気水圏科学セクション

Warning: Use of undefined constant php - assumed 'php' (this will throw an Error in a future version of PHP) in /home/jpgu/jpgu.org/public_html/www2.jpgu.org/wp-content/themes/F-themes/single.php on line 6

Pythonで海面フラックス計算

2022年6月 川合義美

Pythonで海面フラックスを計算します。

Python版は、COARE3.5のプログラム(Edson et al. 2013)しか公開されていないようです。

Warm layerを考慮するオプションも無いようです。

COARE3.0や3.6、またはWarm layerオプションを使いたい方は、MATLABまたはOctaveを使いましょう(「MATLAB/Octaveで海面フラックス計算」「GNU Octaveをインストール」参照)。

(Pythonからoct2pyでmファイルのプログラムを呼び出すという手もあります:「Pythonで中立密度を計算」参照)

 

① 以下のウェブサイトから、pyCOARE-1.1.zipをダウンロードして解凍します。

主要な論文のPDFファイルもここに入っています。

https://github.com/noaa-psd/pyCOARE/releases/tag/v1.1

あるいは

ftp://ftp1.esrl.noaa.gov/BLO/Air-Sea/bulkalg/cor3_5/python

(こちらは圧縮されておらず、論文のファイルは含まれていません)

 

② まず、テストデータで動作確認します。

coare35vn.pyの533行目付近の

path = ‘/Volume/MyPassport/pyCOARE_NOAA’

を path = ‘ ‘ にします(あるいはcoare35vn.pyのあるディレクトリのパスを指定)。

 

③ テストデータで動作確認します。次のコマンドを打つとテストデータを読み込んで結果を出力します。

> run coare35vn.py

そのままでcoare35vn.pyを走らせると恐らくエラーが出ます。

テストデータ(test_35_data.txt)で1行毎に空の行が入っているためです。

util.pyの中で定義されている関数load_txt_fileに1行加えます。

util.pyの45行目付近

for jj in range(cols):

の前に、以下のコマンドを加えるとエラーを回避できます。

if len(fields) <= 1: continue

 

④ test_35_output_py_082020.txtというファイルに計算値が出力されます。

前からusr (摩擦速度), tau (風応力), hsb (顕熱フラックス), hlb (潜熱フラックス), hbb (浮力フラックス), … です。普通はこれら先頭から5つくらいしか要らないと思います。出力データの詳しい説明はプログラム中に記載されています。

 

⑤ ここまで出来たら任意の入力データを与えてフラックス計算ができます。パスが通っている場合には、

> import coare35vn

だけで関数を使うことができます。パスが通っていないとエラーが出ます。その場合には、

> import sys

> sys.path.append(‘ディレクトリのパス’)

> import coare35vn

としましょう。

 

⑥ 次のコマンドでフラックスの計算結果が配列fluxに出力されます。出力の内容は④と同じです。風速、気温、湿度、海面水温だけ与えてそれ以外はデフォルトの値を使う場合には、

> flux = coare35vn.coare35vn(u, t, rh, ts)

それ以外の引数も自分で制御したい場合には、

> flux = coare35vn.coare35vn(u, t, rh, ts, P, Rs, Rl, zu=zu, zt=zt, zq=zq, lat=lat, zi=zi, rain=rain, cp=cp, sigH=sigH, jcool=jcool)

とします。

u, t, rh, ts はベクトルで与えます。

rain は数値のベクトル、もしくはNoneを与えます。

P, Rs, Rl, lat, zi, cp, sigH はベクトルでもスカラーでもいいようです。

zu, zt, zq はスカラーで与えます。

 

入力変数:

u: 高度zu (m)における海上風速 (m/s)

t: 高度zt (m)における海上気温 (°C)

rh: 高度zq (m)における相対湿度 (%)

ts: 海面水温 (°C)

P: 海面気圧 (hPa) デフォルト: 1015 hPa

Rs: 下向き短波放射 (W/m2) デフォルト: 150 W/m2

Rl: 下向き長波放射 (W/m2) デフォルト: 370 W/m2

zu: 海上風速を観測した高度 (m) デフォルト: 18 m

zt: 海上気温を観測した高度 (m) デフォルト: 18 m

zq: 相対湿度を観測した高度 (m) デフォルト: 18 m

lat: 緯度 (°N) デフォルト: 45 °N

zi: 大気境界層の高度 (m) デフォルト: 600 m

rain: 降水量 (mm/hr) デフォルト: None

cp: 波浪の位相速度 (m/s) デフォルト: None

sigH: 有義波高 (m) デフォルト: None

jcool: Skin layerの影響を考慮したい場合は1(デフォルト), 考慮したくない場合は0