0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MacでHYSPLITを動かす:インストールから流跡線の描画まで

0
Posted at

この記事はGPT-6 Astraによって執筆されました

「ある場所に到着した空気が、どこから来たのか」を調べたいときに使えるのが、NOAAの HYSPLIT です。

この記事では、MacでHYSPLITを導入し、付属データで流跡線を計算して、ブラウザで結果を見るまでを紹介します。後半では、自分の解析に使うときの設定と注意点も整理します。

今回の環境

以下は、2026年10月28日に動作確認した環境です。今回の記事作成時にも、保存済みの計算ログと出力を確認しています。

項目 環境
OS macOS 27.0.1
CPU Apple Silicon
HYSPLIT 5.4.2・Intel x86_64版
実行環境 Rosetta 2
操作方法 ターミナル
確認済み 流跡線計算、濃度計算、HTML形式の描画

GUIの操作は今回の検証対象に含めていません。

本記事はIntel版をRosetta 2で実行する手順です。Appleは、汎用的なRosettaの提供をmacOS 27までと案内しています。macOS 28以降では、同じ手順で使えるとは限りません。Apple公式案内

1. HYSPLITで何ができる?

HYSPLITでは、気象データを使って空気塊の移動経路や物質の輸送・拡散を計算できます。

計算 調べたいことの例
前方流跡線 この場所の空気は、この先どこへ移動するか
後方流跡線 この場所に到着した空気は、どこを通ってきたか
拡散・濃度計算 放出された物質が、どの範囲へ広がるか

Web版もありますが、条件を変えた反復計算にはローカル環境が便利です。HYSPLIT公式サイト

2. HYSPLITをインストールする

本体をダウンロードする

HYSPLIT公式サイトから、Mac用の配布ページへ進みます。登録が必要な配布物は、案内に沿って登録してから取得します。

今回使用したファイルは次のものです。

hysplit_R_v5.4.2_x86.dmg

DMGを開き、付属インストーラの案内に従って導入します。公式チュートリアルでは、ホームディレクトリ下の hysplit への配置が説明されています。Mac版の導入手順

以降のコマンドでは、設置場所を変数に入れて使います。

# 自分の設置場所に合わせる
export HYSPLIT_HOME="$HOME/hysplit"

# 実行ファイルを確認
ls "$HYSPLIT_HOME/exec/hyts_std"
file "$HYSPLIT_HOME/exec/hyts_std"

今回の環境では、file の結果は次のとおりでした。

Mach-O 64-bit executable x86_64

Apple SiliconでIntel版を使う場合はRosetta 2を入れる

Rosetta 2が未導入なら、ターミナルで次を実行し、画面の案内に従います。

softwareupdate --install-rosetta

Rosettaはバックグラウンドで動くため、導入後に毎回起動する必要はありません。AppleのRosetta導入手順

GUIは必須?

HYSPLITはコマンドラインだけでも計算できます。

GUIを使う場合はTcl/Tkが必要ですが、本記事の計算・描画手順では使用しません。HTML内のSVGとして出力すれば、結果はブラウザで表示できます。公式Macチュートリアル

3. まずは付属サンプルを動かす

最初は自分の気象データを用意せず、付属サンプルで動作確認します。

基本的な流れは次のとおりです。

CONTROLで条件を指定
        ↓
hyts_stdで計算
        ↓
tdumpに経路を出力
        ↓
trajplotで描画

作業ディレクトリを作る

付属の working を直接変更せず、新しい作業ディレクトリへ必要なファイルをコピーします。

以下は同じターミナルで順番に実行してください。

# 実行するたびに別の作業ディレクトリを作る
RUN_DIR=$(mktemp -d "$HYSPLIT_HOME/run_traj.XXXXXX")

cp "$HYSPLIT_HOME/working/sample_traj" "$RUN_DIR/CONTROL"
cp "$HYSPLIT_HOME/working/oct1618.BIN" "$RUN_DIR/"

cd "$RUN_DIR"

sample_traj は計算条件のひな型、oct1618.BIN は付属の気象データです。

流跡線を計算する

"$HYSPLIT_HOME/exec/hyts_std" > run.log 2>&1

# 計算直後に終了コードを確認
echo $?

# ログと出力を確認
tail -n 10 run.log
ls -lh tdump

今回の正常終了ログには、次の表示がありました。

Percent complete: 100.0
Complete Hysplit

このサンプルは、北緯40度・西経90度の3高度から、12時間先までの流跡線を計算します。

終了コードが 0 であることに加え、tdump が作られていることも確認します。エラーや警告がある場合は、run.log、MESSAGE、生成されていれば WARNING を読みます。

ブラウザで結果を見る

"$HYSPLIT_HOME/exec/trajplot" \
  -itdump \
  -otrajectory.html \
  +g1 \
  -j"$HYSPLIT_HOME/graphics/arlmap" \
  > plot.log 2>&1

open trajectory.html

+g1 は、この検証環境でHTML/SVG出力に使用した指定です。

計算プログラムと描画プログラムが分かれているため、図だけ調整したい場合は trajplot を再実行できます。

4. CONTROLファイルを読む

付属サンプルの CONTROL は次の内容です。

00 00 00 00
3
40.0 -90.0   10.0
40.0 -90.0  500.0
40.0 -90.0 1000.0
12
0
10000.0
1
./
oct1618.BIN
./
tdump

行の順番に意味があるので、説明コメントをファイル内に書き足さず、以下の表と見比べてください。

内容 意味
00 00 00 00 開始日時を気象データから決める
3 開始位置の数
40.0 -90.0 10.0 など 緯度・経度・開始高度
12 計算時間。正なら前方、負なら後方
0 気象データの鉛直速度を使う
10000.0 モデル内部の上端高度。単位はm AGL
1 使用する気象データファイル数
./ と oct1618.BIN 気象データのディレクトリとファイル名
./ と tdump 出力先ディレクトリとファイル名

日時は UTC、緯度は南緯が負、経度は西経が負です。開始高度は、標準設定ではモデル地表からの高さです。CONTROLの公式仕様

5. 後方流跡線を計算するには?

後方流跡線では、計算時間を負にします。

例えば、5日前まで遡る場合は次の指定です。

-120

このとき、指定する位置と日時は「空気が到着した場所・時刻」に相当します。

ただし、計算時間の符号だけ変えれば、どんな日時でも計算できるわけではありません。到着時刻から遡る期間をカバーする気象データが必要です。

例えば、2003年8月1日00 UTCに到着する空気を10日前まで遡るなら、7月のデータも必要になります。月をまたぐ場合は、必要なファイルを CONTROL に列挙します。

付属の oct1618.BIN はサンプル期間用なので、任意の研究期間には使えません。

6. 高度の指定で迷ったら:AGLとMSL

山岳域や南極内陸で特に注意したいのが、高度の基準です。

略称 意味
AGL 地表からの高さ
MSL 平均海面を基準とする高度

標準設定で開始高度を 500 と書くと、モデル地表から500 m上を意味します。

気象データの地形は格子で表現されているため、実際の観測地点の標高と一致するとは限りません。

開始高度を海抜高度で与えたい場合は、作業ディレクトリの SETUP.CFG に次の設定を入れます。

&SETUP
 KMSL=1,
/

ここで、開始高度の基準と出力高度の基準は別の設定です。

設定 意味
KMSL=0 開始高度をAGLで指定
KMSL=1 開始高度をMSLで指定
KAGL=1 流跡線の高度をAGLで出力
KAGL=0 流跡線の高度をMSLで出力

開始高度をMSLにしただけでは、出力高度もMSLになるわけではありません。 高度を比較する際は、両方の設定を確認します。SETUP.CFGの公式仕様

7. 自分の気象データを使う

研究用の計算では、対象期間と領域に合った、HYSPLIT用の気象データを用意します。

今回のプロジェクトでは、次の2種類を使用しました。

データ 処理
NCEP/NCAR Reanalysis HYSPLIT用のARL形式データを使用
ERA5 GRIBを取得して、ARL形式へ変換

ERA5を使った今回の処理は、次の流れです。

CDSからERA5を取得
        ↓
ARL形式へ変換
        ↓
CONTROLにファイルを指定
        ↓
流跡線を計算

今回の実行例は1度格子にしたERA5を使用しています。元の0.25度格子を保つ処理も準備されていますが、そちらは未実行です。

気象データを変更すると、水平・鉛直解像度や地形表現も変わります。同じ地点・開始高度を指定しても、同じ経路になるとは限りません。

8. Macでつまずいたところ

実行時に警告が出る・プロセスが終了する

今回の導入では、ダウンロードされたファイルの隔離属性 com.apple.quarantine が原因で、実行が停止する問題がありました。

属性は次のように確認できます。

xattr "$HYSPLIT_HOME/exec/hyts_std"

今回の環境では、NOAAから取得した配布物であることを確認したうえで、HYSPLIT本体のフォルダに限定して属性を解除しました。

xattr -dr com.apple.quarantine "$HYSPLIT_HOME"

このコマンドを使う場合は、HYSPLIT_HOME が確認済みのHYSPLIT本体を指していることを確かめてください。

なお、終了コード 137 だけでは、隔離属性が原因とは断定できません。実際の警告表示や属性も合わせて確認します。

気象データが見つからない

CONTROL の ./ は、計算を実行しているディレクトリを意味します。

pwd
cat CONTROL
ls -lh oct1618.BIN

慣れるまでは、計算ごとに作業ディレクトリを作り、そこで実行すると管理しやすくなります。

図はできたが、途中で経路が終わっている

図が表示できても、指定した時間まで計算できているとは限りません。

tail -n 10 tdump

各流跡線が目的の経過時間まで到達しているか確認します。途中で止まっている場合は、気象データの期間・領域、モデル上端、診断ログを確認してください。

9. 研究で使うときに保存しておくもの

計算結果と一緒に、条件とログも残しておくと再現しやすくなります。

計算ごとのディレクトリ/
├── CONTROL
├── SETUP.CFG
├── run.log
├── MESSAGE
├── tdump
├── plot.log
└── trajectory.html

さらに、使用した気象データの名前、期間、解像度、HYSPLITのバージョンを記録します。

後方流跡線は、空気の移動経路を調べる手がかりです。例えば経路が海上を通っていても、その場所で水蒸気を取り込んだことまで、経路だけで判断することはできません。目的に応じて、湿度などの変化や、開始時刻・高度を変えた結果も併せて検討します。

まずは付属サンプルで「計算できる」「描画できる」を確かめ、その後に対象期間の気象データへ進むと、問題を切り分けやすくなります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?