spml レファレンスマニュアル

spml -- SPmodel (SPectral MODEL) Library は 流体運動をスペクトル法により数値計算するための Fortran90 関数を 提供するモジュール群である.

フーリエ変換, 球面調和函数変換, チェビシェフ変換などの スペクトル計算には石岡圭一氏による ISPACK Fortran77 ライブラリを用いている. spml では ISPACK の変換サブルーチンを Fortran90 の関数でくるみ, さらにいくつかの便利な微分・積分・境界値問題などのための関数や サブルーチンを追加している.

モデルからのデータ入出力と後処理のために, 豊田英司氏を中心に開発されている gtool4 Fortran90 Library を使うことを前提としている.

目次


主なモジュール一覧

モジュール名 機能
lumatirx LU 分解で連立方程式を解く
ae_module 1 次元周期境界条件での問題をフーリエ変換により解く(多層対応)
at_module 1 次元有限領域での問題をチェビシェフ変換により解く(多層対応)
ee_module 周期的境界条件を伴う 2 次元矩形領域の問題を 2 重フーリエ変換により解く
esc_module 2 次元水路領域での問題をフーリエ変換と sin, cos 変換により解く
et_module 2 次元水路領域での問題をフーリエ変換とチェビシェフ変換により解く
w_module 2 次元球面上の問題を球面調和函数変換により解く
wa_module 球面上の問題を球面調和函数変換により解く(多層対応). w_module の多層モデル版.
wt_module 3 次元球殻内の問題を球面調和函数変換とチェビシェフ変換により解く.


モジュール・関数・変数の名前と型について

各モジュール内の関数は (出力データ型)_(作用)_(入力データの型) なる形に 統一されている. 各データの型を表す記号を以下の表に示す. この関数に合わせて, 各変数を (データ型)_(名前) という形で定義すると, ちょうどテンソルの縮約のような気分でプログラムを書くことが出来る.

e_g : 格子点データからフーリエスペクトルへの変換.
e_Dx_e : フーリエスペクトルデータに対して X 微分を施す.
e_Temp = e_g(g_Temp) : 温度の格子点データをスペクトルデータに変換する.
g_V * g_e(e_Dx_e(e_Temp)) : v dT/dx の計算

接頭子 意味
e フーリエ変換 (exp) のスペクトルデータ
c コサイン変換 (cos) のスペクトルデータ
s サイン変換 (sin) のスペクトルデータ
w 球面調和函数変換 (Ynm) のスペクトルデータ
t チェビシェフ変換 (Tn) のスペクトルデータ
x,y,z 格子点データ(X, Y, Z あるいは 経度, 緯度, 動径/高度 など)
g 一般的な格子点データ
a 全ての種類


使い方

  1. プログラム中での指定方法

    Fortran90 プログラム中で use 文により使いたいモジュールを指定する.

                program hogehoge
                use ee_module
    	    ....
          
  2. プログラムのコンパイル・リンク

    spml モジュールを用いた Fortran90 プログラムをコンパイル・リンクするのためのスクリプト spmfrt が用意されている. プログラム hogehoge.f90 をコンパイルするには

              $ spmfrt hogehoge.f90
          
    とすれば良い.

デモプログラム

spml を用いたプログラムの例がデモの ディレクトリに用意されている. また, spmodel プロジェクトのページには, さまざまな地球流体用のモデルの例が置かれている. プログラムを作る上での参考にされたい.


関連リンク


地球流体電脳倶楽部 SPMODEL プロジェクト
spmodel@gfd-dennou.org

2002/08/24 作成 (竹広真一)