ながれ 25(2006)485 − 486 485 䈀䈭䈏䉏䊙䊦䉼䊜䊂䉞䉝䈁㩷 㓏ጀ⊛ᵹࠬࡍࠢ࠻࡞ࡕ࠺࡞㓸 SPMODEL ੩ㇺᄢቇ ᢙℂ⸃ᨆ⎇ⓥᚲ ┻ ᐢ ⌀ ৻̐ ർᶏᄢቇ ℂቇ㒮 ዊ 㜞 ᱜ ༹ ੩ㇺᄢቇ ℂቇ⎇ⓥ⑼ ⍹ ጟ ৻ ർᶏᄢቇ ⅣႺ⑼ቇ⎇ⓥ㒮 ⍹ ᷰ ᱜ ᮸ ർᶏᄢቇ ℂቇ㒮 ᨋ ᵹ㔚⣖ᭉㇱ 52/1&'. 㐿⊒ࠣ࡞ࡊ 地球流体力学の諸問題における標準的な数値実験を簡便に行なうための一連のスペクトルモデル群を開発した. 設計においては, 可読性と可変性が高いプログラムソースコードであることに重点においている. Fortran90 で強 化された配列機能を活用し, 関数名に統一的な命名ルールを導入することにより, 支配方程式から容易に想像で きる表現をもったプログラムソースコードを構築することが可能となっている. SPMODEL: A Series of Hierarchical Spectral Models for Geophyiscal Fluid Dynamics Shin-ichi TAKEHIRO, Research Institute for Mathematical Sciences, Kyoto University Masatsugu ODAKA, Graduate School of Science, Hokkaido University Keiichi ISHIOKA, Graduate School of Science, Kyoto University Masaki ISHIWATARI, Faculty of Environmental Earth Science, Hokkaido University Yoshi-Yuki HAYASHI, Graduate School of Science, Hokkaido University SPMODEL Development Group, GFD Dennou Club (Received 25 January,2006; in revised form 28 August,2006) A series of spectral models which facilitate the execution of standard numerical experiments in geophysical fluid dynamics problems have been developed. Readability and modifiability of the program source codes are given priority in its design. The introduction of systematic function naming rules and the utilization of array-handling features enhanced by Fortran90 have permitted the program source codes to be written in a form that may be readily derived from the mathematical expressions of the original governing equations. (KEY WORDS): Fortran90, programing style, spectral model, geophysical fluid dynamics 計算機の発達した今日では支配方程式を数値的に解 われつつあると言えよう. 「数式とその変形」による理 くことが普通になってしまった. 紙と鉛筆による式変形 論的考察が伝統的に提供してきてくれたような理解の に頼らざるを得なかった時代に比べ解ける範囲は広がっ 共有を数値計算世界においても実現するためには, 「数 たが逆に計算結果とその理解を他者と共有することは 式とその変形」において行われてきた追体験操作を計算 難しくなってしまった. 理論的考察の喜ぶべき特性が失 ∗〒 606–8502 京都市左京区北白河追分町 takepiro@gfd-dennou.org † E-mail: 機上でも実行しなければならないのであるが, 数値計算 を独立に追体験することは一般にはやさしくない. このような状況に対応し, 数値計算時代における理解 486 階層的地球流体スペクトルモデル集 SPMODEL の共有をはかるべく, 我々は地球惑星流体力学の諸問題 do it=1,nt における標準的な数値実験を簡便に行なうための一連の e_Zeta = e_Zeta + dt * スペクトルモデル群の開発と整備を現在進めている (階 ( - e_g(g_e(e_Zeta) *g_e(e_Dx_e(e_zeta))) 層的地球流体力学スペクトルモデル集: Spmodel1) ). そ の設計においては, (1) プログラムソースコードは誰でも 見ることができて, 変更して使えなければならない, (2) プログラムソースコードは可読性が高く理解しやすく なければならず, 再構築し変形することが簡単にできれ ばなおよい, (3) 計算結果の描画や後処理が簡単に行え なければならない, という方針に重点を置いている. 本 論文では, SPMODEL で用いられている可読性・可変性 を特に意識した Fortran90 プログラミング手法と, それ による SPMODEL の実際のモデル, ならびにその計算 例のいくつかを紹介する. SPMODEL が積極的に利用しているのは Fortran90 で 強化された配列機能, すなわち, (1) 配列の要素を指定せ ずに各要素に対する計算を行えること (要素別演算), (2) 配列を返す関数が定義できること, である. この機能を 利用したスペクトル法による流体計算のための基本的 な関数を提供するライブラリが SPMODEL ライブラリ (spml) である. これらの関数群は, スペクトル計算のた めの既存 FORTRAN77 ライブラリである ISPACK2) の サブルーチン群を, 上記配列機能を利用してくるむこと により作成されたものである. ISPACK が提供していた 実空間とスペクトル空間との間の変換に加えて, 微分積 分計算をも関数として新たに追加している. さらに, 変数と関数に対して & & & - e_Dx_e(e_Dx_e(e_Dx_e(e_zeta))) ) enddo 接頭子 e_ や g_ は関数の出力や配列がそれぞれスペク トル空間や実空間で定義されていること, 接尾子 _e や _g は関数の引数となる配列がそれぞれスペクトル空間 や実空間で定義されていることを示す. e_g と g_e は spml ライブラリの 1 次元周期境界条件用モジュールの スペクトル正変換と逆変換関数, e_Dx_e は同じくスペ クトル空間で見た x 微分演算 (要すれば波数を掛ける) 関数である. KdV 方程式の他にも典型的な地球流体モ デルの例として β 平面の渦運動, 2 次元ベナール対流, 2 次元球面浅水系の山岳応答問題に対する SPMODEL で のプログラム例と実際の計算例とを提示した. SPMODEL では, 関数の入力と出力が定義されている 空間を意識することを命名法で扱った. これに対して, 変数の種類毎に構造体を定義し, 対応する関数を定義す るという扱い方の方が確実であると考えるかもしれな い. しかしながら, Fortran90 はオブジェクト指向プロ グラミングを行なうには仕様が不十分であり, 特に, 演 算のクラス継承が簡単ではないため, 演算をいちいち再 定義しなければならずプログラミング上致命的である. FORTRAN77 の既存資源を配列を返す関数としてくるむ 方法は現実的な対応として魅力的であると考えている. 気候モデルのような複雑なモデルにおいては, そもそ (変数のデータ空間識別子) (変数名) も計算結果の理解を得ること自体が容易なことではなく (出力データ空間識別子) (機能) (入力データ空間識別子) なっている. 計算結果を理解するためには, より単純な という形の統一的な命名法を用いることで, テンソル計 算での縮約表現に類似した表現形式をもったプログラ ムソースコードが作成される. 入出力データが定義され ている空間が関数名からわかるので, 操作内容を読みと りやすくし, 同時に, プログラム間違いを減らすことが 期待される. スペクトル法を利用するための定式化が隠 蔽されているので, プログラムの時間発展計算部分にお いては, 支配方程式の数学的表現に近い形を持つソース コードを書き下すことができるのが大きな利点である. SPMODEL プログラミングの例として KdV 方程式 ∂ζ ∂ζ ∂3ζ = −ζ − 3 ∂t ∂x ∂x (1) の場合を示しておこう. 非線形項はスペクトル変換法を 用いて計算する. フーリエ変換された時間発展方程式を, 簡単の為にオイラー法で積分することにすると, プログ ラムの時間積分の主要部分は次のように簡略に書き下 せる. 枠組のモデルで得られている概念的理解との接続をは かることが必要とされるのだが, 気候モデルの急速な発 達と複雑化はそのような接続を困難にしている (シミュ レーションと理解のギャップ問題 3) ). 我々は SPMODEL の枠組を, 単純で理想的な地球流体力学モデルからより 複雑で現実的なモデルへ拡張していくことで, ギャップ を埋めることのできる計算思索環境を用意することが できるのではないかと考えている. ࡽဇ૨ྂ 1) SPMODEL 開発グループ, 階層的地球流体力学スペ クトルモデル集 (SPMODEL), (地球流体電脳倶楽部 2005) http://www.gfd-dennou.org/library/spmodel/ . 2) 石岡 圭一, ispack–0.71, (地球流体電脳倶楽部 2005) http://www.gfd-dennou.org/library/ispack/ . 3) Held, I. M. : The gap between simulation and understanding in climate modeling, Bull. Amer. Meteor. Soc. 86 (2005) 1609–1614.
© Copyright 2024 Paperzz