階層的地球流体スペクトルモデル集 SPMODEL

地球流体電脳倶楽部スペクトルモデルプロジェクトでは, 地球流体力学の研究や教育に使えるスペクトル法を用いたさまざまな数値モデルをそろえる活動を進めています.

ニュース(2022.06.03)

ISPACK ver.3 のリリースに合わせて SPMODEL ライブラリ(spml) の新規バージョン 2.0 を開発中です.

  • spml ver. 0.8.0 を利用する際は ISPACK ver.1 を用いてください. 加えて ISPACK ver.2 も同時に使うことができます.
  • ISPACK ver.3 を使いたい場合には spml ver. 2.0 を利用してください.
    • 開発中ですのでドキュメントやモジュールラインナップが不十分ですが, ソースファイルをhttps 経由での git で取得可能です.

      $ git clone https://dennou-k.gfd-dennou.org/library/spmodel/git_repos/spml.git
      $ cd spml
      $ git submodule update --init
      $ git checkout origin/spml/2.0
      $ ./autogen.sh
      $ ./configure ...
      $ make ; make check ; make install
    • configure の際は新しく導入されたオプション "--with-gt5config=..." を用いると便利です. gtool5 のコマンド gt5config の場所を指定してください. NetCDF とgtool5 の設定をかんたんに済ませることができます.
    • 関数やサブルーチンのインターフェースは spml 0.8.0 と(ほぼ)一緒にしてあるので, プログラムの変更が少なくてすみます.
    • ただし球面調和関数変換 w_*, wa_* などのモジュールはスペクトル成分の規格化と格納方法が違ってますのでご注意ください. 詳しくは ISPACK のマニュアルを参照してください.

ニュース(2014.01.29)

SPMODEL ライブラリ(spml) の新規バージョン 0.8.0 をリリースしました. 今回の更新/変更点は以下の通りです.

  • GNU Fortran (>= 4.7) のサポート
    • 全てのモジュールを GNU Fortran でコンパイル/実行可能となるように修正しました. (恐らく)後方互換性は維持されています.
  • configure の更新
    • automake と libtool を使用するように, configure を全面的に更新しました.
    • 詳細は INSTALL をご覧下さい.
  • 新規追加項目
    • 球面および球殻領域を解くためのモジュールの MPI 並列, sjpack 使用版.
      • w_mpi_module_sjpack, wa_mpi_module_sjpack, wq_mpi_module_sjpack, wt_mpi_module_sjpack, wtq_mpi_module_sjpack
  • バグ修正/その他の変更など
    • wtq_module_sjpack: チェビシェフータウ法の改良
    • w{q,t,tq}_module_mpi: QOperator の MPI 版の追加
    • w_module{,_sjpack}: w_StreamPotential2Vector, w_Vector2VorDiv, w_VectorCosLat2VorDiv の追加
    • wa_module{,_sjpack}: wa_StreamPotential2Vector, wa_Vector2VorDiv, wa_VectorCosLat2VorDiv の追加
    • w_mpi_module{,_sjpack}: w_StreamPotential2VectorMPI, w_Vector2VorDivMPI, w_VectorCosLat2VorDivMPI の追加
    • wa_mpi_module{,_sjpack}: wa_StreamPotential2VectorMPI, wa_Vector2VorDivMPI, wa_VectorCosLat2VorDivMPI の追加
    • {mpi,}spmfrt, {mpi,}spmconfig: 更新
    • wt_module{,_sjpack}: Interpolate_wt の Bug 修正
    • wq_module{,_sjpack}: AvrRad_r の Bug 修正
    • esc_module: argument/variable の Bug 修正

SPMODEL の目指すもの

SPMODEL では, 地球流体力学に登場するさまざまなレベルの近似方程式系の数値モデルを, 空間 1 次元モデルから 2 次元あるいは 3 次元モデルまで階層的に整備しています.

このような一連の数値モデルをそろえることで

  • 標準的あるいは重要な GFD のイラストレーションをたやすく再現できるようにしたい → 地球流体力学の理解と普及に役立てる
  • 数値計算による知見を研究者の間で共有したい → 従来の数式による理解から数値計算による理解へ
  • 一連のモデルの振舞の比較をスムーズに行いたい → より複雑なモデルの結果を理解するための道具

といったことを目指しています.

このため, 現在整備しようとしているモデルシリーズの基本方針では「可読性が高く理解しやすく, 変形しやすいこと」を最重点においています. 大名プログラマー主義(CPUは無限に速く, メモリとディスク容量は無限に大きいという環境の下で仕事をする) にしたがって, スピードはとりあえず犠牲にしても構わない, というスタンスです. しかしながらこのモデルシリーズをベースにすることで, 例えば最先端の大計算を行うに耐える高速なモデルの開発などが容易になることも期待しています.

SPMODEL のモデルでは, 格子点とスペクトル空間のデータ変換や空間微分などの基本的な配列関数からなる SPMODEL library (spml) を用いてます. Fortran90 の配列機能を生かしたこのライブラリの配列関数を用いることで, 時間発展方程式の時間変化項以外の部分を数式の形そのままにプログラミングすることができるようになってます. 支配方式の形をそのままプログラムソースに反映させられるのでプログラムの可読性を向上させることができます. また, spml の配列関数は入出力配列の性質が名前からわかるようにするべく統一的に命名法にしたがっているので, 関数の使い方が機械的になり, プログラムを修正することも容易に行えるようになっています.

SPMODEL のライブラリとサンプルプログラム自体が Fortran90 のプログラミング書法の一つの実験でもあります. 地球流体力学の問題に限らずさまざまな物理現象のスペクトル法による数値計算の一つのスタイルとして参考にして頂ければと思います.