近年, PCの低価格化, 高速化が進み, 数値モデルを用いた研究をお手軽に行えるようなりました.しかしながら, 数値モデルの構築は依然として難しいです. また, 数値実験によってシミュレートされた現象の物理的解釈のためには, より簡単なモデルによる実験と比較しなければならないこともあり, そのために必要な数値モデルの改変をスムーズに行うためには, モデルのコードが高い可読性を備えている必要があります.
可読性の高い数値モデルを構築するためにはどのようにしたらよいでしょうか. 高い可読性のために解決すべき問題点として, まず配列添え字が挙げられます. 気象モデルでは変数配列に3つの添え字がついていることが多いです.この3つの添え字は, 3次元空間でどの格子の値であるのかを表しています. この配列添え字は, たとえば DO ループを回す際に同じようなことを何度も記述する必要があり, 可動性を低くする一因となっていると考えられます. 次に考えられる問題点として, グリッド情報の管理が挙げられます. 気象モデルでは, 物理量を互い違いに配置する, いわゆる staggered grid がよく用いられます. よって一般に, 同じ添え字を持つ個々の変数は3次元空間で別々の位置に配置されることになります. 数値モデルをコーディングする際には, 常にそのことを考える必要があり, しばしばバグのすみかになってしまいます. ここで, 変数の添え字が3次元空間でどの位置の値を表しているのかという情報を「グリッド情報」と呼ぶことにします.
上記で挙げた問題点を解決すべく Fortran90 を用いて GMS(Grid Modeling System) の開発を進めています.その主な特徴は次の通りです. まず, 変数の値を記憶する配列と, グリッド情報からなるデータ構造をGMS変数として構造体を使って定義することにより, 変数自体に自分がどの位置に配置されているのかを含めることが可能となっています. 次に, GMS変数を返り値とする空間差分演算子, 空間平均演算子を定義することにより, 差分や平均の演算結果は半格子分ずれるという情報を返り値に含めることが可能となっています. 以上より, GMSを使ってコードを書くことで, 可読性の高いモデルをお手軽に構築することができます.