研究室トップ / 真貝のトップ / サイトマップ

Cactus GRコード

Cactusを使った,オリジナル数値計算コードの作成例

2002/10/30 update

Cactusコードの紹介は,別のページに.
Cactusコードのプログラミング方法へのコメントは,別のページに.
Contents
  1. GRコード 開発concept
  2. サポートしている内容
  3. 新たなモジュール(thorn)を作成するときのいくつかの注意点
  4. 計算実例
  5. 現在の課題


  1. GRコード 開発concept

    私自身,自ら望んだわけではなかったが,在米中,何らかの形でCactusコードに関わることになり, それが現在に続いている.

    • Washington大学所属時のグループは, Cactus開発者グループ(Albert Einstein Instituteグループ,以下AEI)と密接な関係にあったので, AEIの作成した,CactusEinsteinをベースにして,コードを作成していた.
    • 続いてPennState大学に移ったときは,研究面ではむしろ競合するグループだったが,やはりCactusの基盤を 使って,独自にコード(コード名Maya,2000年当時)を作成していた. 彼らはすべてのコードを一つのthornに収める,という方針であった.

    AEIグループのCactusEinsteinは,5年以上の歴史を持つコードであり, CVSで簡単にダウンロードできるものの, 科学研究に使うには本質が見えにくいコードである. (まあ長年開発を続けていればコードが冗長になってしまうのは仕方が ないかもしれないが).どこに,何のツールがあるのかを把握するだけで, かなりの時間をとられてしまうし, 無駄なgrid functionを定義しなければならないので,メモリも食う. ちょっと変更しようと思ったときに,融通がなかなか利かないのである. また,AEIグループが実際に使っているコード(発展コードBSSNや,楕円型方程式solver BAM)は, 直接ダウンロードできないことも記しておく.

    これに対して,Mayaコード(非公開)は,Erik Schnetter氏が,一から作り上げたコードで, その意味で軽快である.しかし,コードの目的がブラックホールのexcisionであったために, 楕円型のサポートはないし,すべてが一つのthornに収められているために,他の用途には 使いにくいものだった.

    現在,私が開発している独自の数値コード(GRコード)は, 両グループのコード開発思想の中庸を取ったものである.

    • 全体をまとめるArrangement名をGRとし,GRコードと呼ぶ.
    • CactusEinsteinは使わずにコンパイルできるようにする.必要な部分はGR内に取り込む.
    • 曲率計算などはMayaのルーティンを用い,grid点ごとの計算に徹し,余計なGridFunctionは 一切定義しない.
    • どのステップで,どのプログラムがcallされるのかを明快にするために, GRmainという基幹となるthornを作り, すべてのsubroutineの起点となり,基本となるパラメータを把握できるようにする.
    • I/Oは,Cactusがサポートするものを使う.


  2. サポートしている内容

    真貝が作ったthorns
    thorn名 用途status
    #0 GR/GRmain 基幹となるスケジューラ/flat時空の定義必須Available
    #0 GR/Riemann 曲率計算,ADM拘束条件計算必須Available
    #1a GR/initialWave 初期条件 linear wave/Teukolsky waveoption (初期条件)Available
    #1b GR/initialNS 初期条件 中性子星option (初期条件)N/A
    #2a GR/evolveADMeq 時間発展 ADM/adjusted ADMoption (発展方程式)Available
    #2b GR/evolveLinADMeq 時間発展 linearized ADM/linearized adjusted ADMoption (発展方程式)Available
    #3 GR/solverIVP 初期条件問題 楕円型部分option (初期条件楕円型)N/A
    #3 GR/ellipticIF 楕円型solverへのインターフェース楕円型を解くなら必須Available
    #4 GR/lapseMaximal maximal slicing条件option(ゲージ条件楕円型)N/A

    この他に必要となる必須thorns (#0)

    # arrangement/thorn                # implements (inherits) [friend] {shares}
    ________________________________________________________________________
    #0   CactusBase/Boundary                # boundary (grid) [ ] { }
    #0   CactusBase/CartGrid3D              # grid ( ) [ ] {driver}
    #0   CactusBase/IOASCII                 # IOASCII (IO,hyperslab) [ ] {IO}
    #0   CactusBase/IOBasic                 # IOBasic (IO) [ ] {IO}
    #0   CactusBase/IOUtil                  # IO ( ) [ ] { }
    #0   CactusBase/Time                    # time ( ) [ ] { }
    #0   CactusPUGH/PUGH                    # driver (Cactus) [ ] {cactus}
    #0   CactusPUGH/PUGHReduce              # reduce (driver) [ ] { }
    #0   CactusPUGH/PUGHSlab                # Hyperslab (Driver) [ ] { }
    ________________________________________________________________________
    

    この他に必要となるかもしれない option thorns

    # arrangement/thorn                # implements (inherits) [friend] {shares}
    ________________________________________________________________________
    #N   AEIThorns/BAM_Elliptic             # BAM_Elliptic (ADMBase,StaticConformal,grid) [ ]{cactus,admbase,StaticConformal,grid,driver,ellbase}
    #N   AEIThorns/BAM_VecLap               # BAM_VecLap (ADMBase,staticconformal,coordgauge) [BAM_Elliptic] {admbase}
    #3   CactusElliptic/EllBase             # ellbase ( ) [ ] { }
    #3   CactusElliptic/EllSOR              # ellsor (ellbase,boundary) [ ] {ellbase}
    ________________________________________________________________________
    

    利用例
    目的 必要となるthornの組み合わせstatusパラメータファイル
    linear wave の時間発展をADM/adjusted ADMで行う #0 + #1a + #2a計算可evolveADMeq/gr_adm.par
    linear wave の時間発展をlinearized ADM/adjusted ADMで行う #0 + #1a + #2b計算可evolveLinADMeq/gr_linadm.par
    Brill wave の初期条件を用意する #0 + #1a + #3 開発中N/A



  3. 計算実例

    (作成中)


  4. 現在の課題

    (作成中)


Go back to the top page of or
My current Email address is