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

1. はじめに: 数式による理解から数値計算による理解へ

計算機が発達し身近になる以前では,「数式とその変形」が地球や惑星などでの 自然現象を物理的にとらえる上での主な理論的手段であった. 数式で表現されている物理法則を適応して対象を記述する支配方程式系を得, その振舞を理解するためには, これを解析的に手で解くほかなかった. 解ける範囲は決して広くはなかったが, その代わりに紙と鉛筆を用いて「数式とその変形」を再現することによって, 誰でも定式化から結果に至るまでの手順を追体験することが可能であり, 他人によって得られた理解を共有することは比較的容易にできた. 理論的考察の喜びともいうべき特性である.

計算機の発達した今日では支配方程式を数値的に解くことが普通である. このため解ける範囲は広がったが逆にその結果と理解を他者と 共有することが難しくなってしまった. 理論的考察の喜ぶべき特性が失われつつある. 数値モデルでなされた仕事を理解するべく 論文に揚げられている図だけをみて考えてみても, その仕事をなした人と同じレベルの理解を得るのは困難である. 当該数値計算を再現し, パラメターやモデルの設定を変えた実験を行うなどして, 著者が行なった理解に至る経験を 読者自身も積み重ねることが必要となるだろう. 理論的考察が伝統的に提供してきたような理解の共有を実現するためには, 「数式とその変形」において行われて来た追体験操作を 計算機上でも実行しなければならないのである. しかし, 数値計算を独立に追体験することは一般には容易ではない. 数値計算のためのモデルを最初から作るのは時間がかかりすぎるし, かといって, 出来合いのモデルをブラックボックスで走らせても, 何が起こっているのかがわからないため 結果の理解にはかならずしもつながらない.

このような状況に対応し数値計算時代における理解の共有をはかるべく, 我々は地球惑星流体力学の諸問題における標準的な数値実験を簡便に行なうための 一連のスペクトルモデル群の開発と整備を現在進めている (SPMODEL [1]). その設計においては,

  1. プログラムソースコードは誰でも見ることができて, 変更して使えなければならない
  2. プログラムソースコードは可読性が高く理解しやすくなければならず, 再構築し変形することが簡単にできればなおよい
  3. 計算結果の描画や後処理が簡単に行えなければならない,

という方針に重点を置いている.

以下本論文では, SPMODEL プロジェクトで用いられている ソースコードの可読性・可変性を特に意識した Fortran90 プログラミング手法と, SPMODEL での実際のモデル並びにその計算例のいくつかとを紹介する. まず第2節では プログラムソースコードの可読性・可変性を高めるために利用した Fortran90 で強化された配列機能である,

を説明する. 次の第3節では, スペクトル計算の FORTRAN77 ライブラリである ISPACK[2]の 各サブルーチンを Fortran90 の配列を返す関数でくるみ 格子点とスペクトル空間のデータ変換や空間微分などの基本的な配列を返す関数を 用意した SPMODEL ライブラリを紹介する. 第4節では SPMODEL のプログラミング手法を解説する. そこでは, SPMODEL ライブラリの配列を返す関数を利用することで もともとの支配方程式の形と対応のよいプログラムを自然に書くことができ, したがって可読性の高いプログラムソースコードを作成しやすくなっていることが 説明される. 第5節ではこれまでに構築された SPMODEL プログラムの 計算結果を紹介する. 最後に, 第6節にてわれわれの提案をまとめる.


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