/地球流体セミナー /講演資料一覧 /2003-03-17/

ISPACK 解説

石岡 圭一(東大・数理科学)
2003 年 3 月 18 日
講演ビデオを見るには, 以下の各スライド画像をクリックし, 左上に表示される「ビデオ開始」をクリックしてください.
タイトルぺージ


目次
  1. ISPACK の概略と設計
  2. 球面スペクトル法の概要
  3. 球面調和関数変換のベクトル化
  4. 球面調和関数変換の省メモリ化
  5. 球面調和関数変換の回数の削減
  6. 時間積分法に関する工夫
  7. 参考文献


1. ISPACK の概略と設計

ISPACK パッケージリスト 1


ISPACK パッケージリスト 2


ISPACK の設計思想
  • 性能重視, コードの可読性よりもマニュアルを充実を優先


2. 球面スペクトル法の概要

球面調和関数展開 1


球面調和関数展開 2


展開係数に対する常微分方程式の決定


具体例: 球面上の 2 次元非発散オイラー方程式 1


具体例: 球面上の 2 次元非発散オイラー方程式 2


変換法


変換の手順


球面スペクトル法のよいところ


3. 球面調和関数変換のベクトル化

ルジャンドル陪関数変換


ルジャンドル陪関数変換に必要な計算量


変換のベクトル化
  • 自然な最内側 DO LOOP 変数は j (緯度方法の格子点)


最内側 DO LOOP 変数を j としたときの問題点と解決策
  • ベクトル長が稼げない
  • 正変換の計算が内積型 (A = A + B*C のくりかえし) となるため, 計算速度が低下する
  • 最内側 DO LOOP 変数を m (経度方向の波数) とする


配列の並び変え
  • ベクトル長を均等にするため, 展開係数を格納する配列を並び変える


三角形切断の場合


4. 球面調和関数変換の省メモリ化

ルジャンドル陪関数の格納に必要なメモリ
  • 使用する計算機によってはメモリ不足になる


省メモリ化の骨子:
  • 変換毎にルジャンドル陪関数を漸化式で計算する


省メモリ化の手順 1


省メモリ化の手順 2


省メモリ化の手順 3


5. 球面調和関数変換の回数の削減

平面上の 2 次元非発散流体の場合


球面上の 2 次元非発散流体の場合 1
  • 自然に考えると 5 回の変換が必要


球面上の 2 次元非発散流体の場合 2
  • 上手に式を変形してから考えると 4 回の変換で済む


球面上の浅水流体の場合 1


球面上の浅水流体の場合 2
  • 自然に考えると 9 回の変換が必要


6. 時間積分法に関する工夫

浅水系の問題
  • 重力波をきちんと解く必要がある


時間積分法に関する工夫 1
  • 球面調和関数によるスペクトル法は展開関数が重力波の固有モードに対応しているので, 差分法に比べ高精度の計算を安定に行うことができる
  • 問題を一般化する


時間積分法に関する工夫 2
  • 球面調和関数によるスペクトル法は展開関数が重力波の固有モードに対応しているので, 差分法に比べ高精度の計算を安定に行うことができる
  • 問題を一般化する


時間積分法に関する工夫 3


具体例: 4 次のルンゲ-クッタ法を用いた場合


参考文献


Odaka Masatsugu 2003-03-20