この記事は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のバージョンを記録します。
後方流跡線は、空気の移動経路を調べる手がかりです。例えば経路が海上を通っていても、その場所で水蒸気を取り込んだことまで、経路だけで判断することはできません。目的に応じて、湿度などの変化や、開始時刻・高度を変えた結果も併せて検討します。
まずは付属サンプルで「計算できる」「描画できる」を確かめ、その後に対象期間の気象データへ進むと、問題を切り分けやすくなります。