English version is here.
ブシネスク流体プリミティブ方程式系モデル
BPmodel は ブシネスク流体プリミティブ方程式系の数値解を求めるためのシンプルなモデルです.
放射過程にはニュートン加熱冷却を用いています. プログラムは Fortran90 で記述されています.
水平方向の離散化にはスペクトル法を, 鉛直方向には中央差分法を, 時間方向には4次のルンゲクッタ法を
用いています.
方程式や数値モデルの詳細に関しては, 開発者 山本博基の
修士論文付録B を参照のこと.
依存ライブラリ
ソースコード
-
BPM2D.f90
- 自転軸対称2次元版.
- BPM2D-stiff.f90
- 自転軸対称2次元 硬い方程式版.
水平拡散が強い場合に用いる.
- module_BPM2D.f90
- BPM2D.f90用のモジュール.
- wrap_lj.f90
- LJPACK (ISPACKの一部) のラッパー. BPM2D*.f90で用いる.
- BPM3D_omp.f90
- OpenMP対応3次元版.
- module_BPM3D_omp.f90
- BPM3D_omp.f90用のモジュール.
- wrap_sj.f90
- SJPACK (ISPACKの一部) のラッパー. BPM3D_omp.f90で用いる.
- DataConversion-sj.f90
- BPM3D_omp.f90の出力データ(スペクトルデータ)をグリッドデータに変換するプログラム.
使用方法
-
上記の依存ライブラリをインストールする.
- ソースコードをひとつのディレクトリにコピーする.
-
自転軸対称2次元版: BPM2D.f90, module_BPM2D.f90, wrap_lj.f90.
- 自転軸対称2次元 硬い方程式版: BPM2D-stiff.f90, module_BPM2D.f90, wrap_lj.f90.
- 3次元版: BPM3D_omp.f90, module_BPM3D_omp.f90, wrap_sj.f90.
- 必要であれば module*.f90 を修正する (パラメータ設定).
- BPM2D*.f90 または BPM3D_omp.f90 を依存ライブラリをリンクしてコンパイルする.
- 生成された a.out を実行する.
更新履歴
SPACK更新(0.90)に伴い, ISPACK/SJPACK, LJACK を利用したプログラムに変更しました. これにより, (特に3次元モデルで)実行速度が2.8 〜 5.2倍程度向上しました.
また, OpenMPを利用した並列化と可読性重視を念頭にコードを見直し, 2次元・3次元各モデルは モデル本体(BPM*.f90), モジュール(module_BPM*.f90), ラッパー(wrap_*j.f90) の3部構成になりました. モデル本体のコードからモジュール・ラッパーをインクルードしてます.
使用上の注意
これらのソースコードは洗練されておらず, 無駄が多数あります.
パラメータ等の変更は直接ソースコードを書き換えて下さい. 最低限のコメント文はいれたつもりです.
本プログラムは研究・教育目的に限り, 自由に使用・改変して構いません. ただし, 本プログラムで利用しているライブラリのライセンス等にも留意して下さい.
本プログラムをもとにした研究成果を発表する場合, 本プログラムを再配布したい場合は下記までご一報下さい.
山本 博基:hiroki (at) kugi.kyoto-u.ac.jp