階層的地球流体スペクトルモデル集 SPMODEL << Prev | Index| Next >>

6. まとめ

以上, 地球流体力学のための階層的スペクトルモデル集 SPMODEL の開発において考察実装した プログラムソースの可読性・可変性を高めるための プログラミング手法と書法について解説した. Fortran90 の配列演算機能とユーザ定義可能な配列を返す関数を 積極的に用いることで, 支配方程式の数学的表現に近い表現形をもつ プログラムソースコードを作成できる. 変数と関数に対して

(変数のデータ空間識別子)_(変数名) 
(出力データ空間識別子)_(機能)_(入力データ空間識別子)

という形の統一的な命名法を用いることで, テンソル計算での縮約表現に類似した表現形式をもった プログラムソースコードが作成される. 入出力データが定義されている空間が関数名からわかるので, 操作内容を読みとりやすくし, 同時に, プログラム間違いを減らすことが期待される. スペクトル法を利用するための定式化が隠蔽されているので, プログラムの時間発展計算部分においては, 支配方程式の形に近い形でソースコードを書き下すことができるのが 大きな利点である. 実際にいくつかの典型的な地球流体モデルをとりあげ, プログラム例と計算結果を紹介した.

配列を返す関数の入力と出力が定義されている空間を意識することを SPMODEL では命名法で扱った. これに対して, このような問題はプログラミング言語のレベルで 扱う方が確実であると考えるかもしれない. すなわち, オブジェクト指向プログラミングである. Fortran90 では構造体を定義できるので, 変数の種類毎に構造体を定義して対応する関数を定義すればよい. しかしながら, Fortran90 の言語機能はオブジェクト指向プログラミングを 行なうには中途半端な仕様である. 特に, サブクラスで定義した演算を上位クラスで継承することが簡単に 行なえず, すべて再定義しなければならないことが致命的である. そのためわれわれは Fortran90 でのプログラミングでは構造体を用いず, FORTRAN77 に対して強化された配列機能だけ利用することを勧める. 既存の FORTRAN77 で構築されたライブラリを Fortran90 の配列を返す関数で くるむだけで十分にその恩恵にあずかることができるだろう.

この SPMODEL で提案したプログラム手法と書法はスペクトル法に 限定されるものでなく, 例えば有限差分法に対しても適用可能である. 微分に対応する差分計算を配列を返す関数の形でくるんだものを用意することにより, 支配方程式に近い形でのプログラムを作成することができるだろう. SPMODEL のプログラム書法を発展させて, より広いモデル群に対する プログラムコーディングルールを現在取りまとめている ([13]).

これまで第1節で述べた 数式による理解から数値計算による理解のために必要な要素のうち, 「プログラムの可読性と可変性」について解決策を説明してきた. しかしながら, より重要なことは「計算結果の後処理と描画の簡便さ」である. この問題に対してわれわれは, 描画と後処理を意識した データ出力の形式の規約を提案し (gtool4 netCDF 規約[14]), その形式で出力するためのライブラリを開発している(補遺2). このライブラリを利用することで, 単に計算結果のデータだけでなく描画や後処理に必要となる格子点情報や 表題, パラメター設定等を付帯情報として一緒に出力することができる. 出力された gtool4 形式の netCDF データの可視化は 電脳 ruby プロジェクト(補遺3)で 開発されたGphys, gave 等のソフトウェアを用いることでおこなえる. 第5節で紹介した計算結果の 図はこれらのソフトを用いて作成したものである.

以上, 数値計算時代における理解の共有をはかるための我々の試みを紹介して きた. しかし, 地球や惑星の気象や気候を扱うためのより複雑で現実的な近 年のモデルにおいては, そもそも計算結果の理解を得ること自体が容易なこと ではなくなっている. 計算結果を理解するためには, より単純な枠組のモデ ルで得られている概念的理解との接続をはかることが必要とされるのだが, 気 象モデルや気候モデルの急速な発達と複雑化はそのような接続を困難にしてい る (シミュレーションと理解のギャップ問題[17]). 我々 は SPMODEL の枠組を, 単純で理想的な地球流体力学モデルからより複雑で現 実的なモデルへ拡張していくことで, ギャップを埋めることのできる計算思索 環境を用意することができるのではないかと期待している. 支配方程式から プログラムを作成するまでの労力が短縮されることで, 種々のモデルを作成維 持することが容易となる. プログラム内部の書法が統一されているため, 近似 のレベルの異なる複数のモデルを相互に比較しながらの数値実験が行ないやす くなるだろう. このような比較研究のための基礎となる階層的なモデル群は現 在作成の段階にあり, 単純な 1 次元モデルから 2 次元平面・チャネル領域・ 球面上の流体, さらには 3 次元球面プリミティブモデルと球殻ブシネスク流 体モデルがそろえられつつある([13]).


階層的地球流体スペクトルモデル集 SPMODEL << Prev | Index| Next >>