Cactus GRコード
Cactusを使った,オリジナル数値計算コードの作成例
2002/10/30 update
Cactusコードの紹介は,別のページに.
Cactusコードのプログラミング方法へのコメントは,別のページに.
Contents
- 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がサポートするものを使う.
- サポートしている内容
真貝が作ったthorns
thorn名 用途 status #0 GR/GRmain 基幹となるスケジューラ/flat時空の定義 必須 Available #0 GR/Riemann 曲率計算,ADM拘束条件計算 必須 Available #1a GR/initialWave 初期条件 linear wave/Teukolsky wave option (初期条件) Available #1b GR/initialNS 初期条件 中性子星 option (初期条件) N/A #2a GR/evolveADMeq 時間発展 ADM/adjusted ADM option (発展方程式) Available #2b GR/evolveLinADMeq 時間発展 linearized ADM/linearized adjusted ADM option (発展方程式) 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
- 計算実例
(作成中)
- 現在の課題
(作成中)
Go back to the top page of or
My current Email address is