R2D2を使い始めるには¶
ディレクトリ構造の準備¶
R2D2は公開していないので、各自 R2D2.zip
のようなファイルを受け取るはずである。研究を実施する際には、以下のようなディレクトリ構造を構成することを推奨する。
project_name/
├─ run/
│ ├─ d001/
│ ├─ d002/
│ ├─ d003/
│ ├─ ...
│
├─ py/
└─ idl/
pyには R2D2_py をクローンしてきたもの、idlには R2D2_idl をクローンしてきたものを配置する。ここは名前が変わっても問題ない。python(py) とidlのどちらかを使えば解析は可能である(両方ダウンロードする必要はない)。
堀田から受け取った R2D2.zip
ファイルをそれぞれ run/
ディレクトリの d001
と名前を変えて配置する。新しい設定で計算する際は d002
, d003
とコピーしていくのが良いであろう。
R2D2ディレクトリの中は以下のようなディレクトリ構造を持つ。ファイル出力もプリプロセッサで制御しているため、指定によっては、 data/
以下の構造は変更される。
R2D2/
├─ F90_deps.py
├─ Makefile
├─ README.md
├─ gen_time.py
├─ copy_caseid.py
├─ data/
│ ├─ param/
│ │ ├─ nd.dac
│ │ ├─ back.dac
│ │ ├─ params.dac
│ │ └─ xyz.dac
│ │
│ ├─ qq/
│ │ ├─ qq.dac.e
│ │ ├─ qq.dac.o
│ │ ├─ qq.dac.00000000
│ │ ├─ qq.dac.00000001
│ │ ├─ ...
│ │
│ ├─ tau/
│ │ ├─ qq.dac.00000000
│ │ ├─ qq.dac.00000001
│ │ ├─ ...
│ │
│ ├─ remap/
│ │ ├─ remap_info.dac
│ │ ├─ qq/
│ │ │ ├─ qq.dac.00000000.00000000
│ │ │ ├─ qq.dac.00000001.00000000
│ │ │ ├─ ...
│ │ │
│ │ └─ vl/
│ │ ├─ c.dac
│ │ ├─ vla.dac.00000000
│ │ ├─ vla.dac.00000001
│ │ ├─ vla.dac.00000002
│ │ ├─ ...
│ │
│ ├─ slice/
│ │ ├─ qqx.dac.00000000.000000000
│ │ ├─ ...
│ │ ├─ qqy.dac.00000000.000000000
│ │ ├─ ...
│ │ ├─ qqz.dac.00000000.000000000
│ │ ├─ ...
│ │
│ └─ time/
│ ├─ mhd/
│ │ ├─ t.dac.00000000
│ │ ├─ t.dac.00000001
│ │ ├─ ...
│ │
│ └─ tau/
│ ├─ t.dac.00000000
│ ├─ t.dac.00000001
│ ├─ ...
│
├─ input_data/
├─ make/
├─ sh/
└─ src/
├─ all/
└─ include/
それぞれのファイル、ディレクトリの簡単な説明は以下に示す。
F90_deps.py
make/Makefile
生成のためのpythonスクリプト。Fortranコードの依存性を調べて、make/R2D2.deps
に出力する。新しいプログラムを作成したときはpython F90_deps.py
として
make/R2D2.deps
を更新する。
Makefile
makeをするときに
make
ディクレクトリに移動する為のファイル。編集する必要はない。編集すべきMakefile
はmake/Makefile
に配置してある。
README.md
GitHubに表示する為の説明ファイル。情報が古くなっている可能性があるので、
README.md
を見るよりは、このウェブページの情報を参照されたい。
gen_time.py
他のモデルから計算結果をもらったときにdataディレクトリや時間のファイルを生成する為のpythonスクリプト
copy_caseid.py
ディレクトリを変えて続きの計算を行うためのスクリプト
data/
fortranプログラムを実行した後に、データが保存されるディレクトリ。fortranプログラムを実行すると自動的に生成される。
data/param/
基本的な計算設定パラメタを出力する為のディレクトリ
data/qq/
チェックポイントのための3次元データを出力するためのディレクトリ
data/remap/
解析のためのリマッピングをしたあとのデータを格納するディレクトリ
data/remap/qq/
計算データをリマッピングして扱いやすくした三次元データを格納するディレクトリ。単精度で出力。解析には主にこのデータを使う。
data/remap/vl/
計算実行中の解析データを格納するディレクトリ
data/slice/
slice_def.F90
で定義したスライスデータを格納するディレクトリ
data/time/
出力した時間を記録したファイルを格納するディレクトリ。3次元データの出力の時間を記録する
mhd
と光学的厚さ一定の場所の出力の時間を記録するtau
のディレクトリがある。data/time/mhd/
MHD量のアウトプットの時間データ
data/time/tau/
光学的厚さ一定の面アウトプットの時間データ
input_data/
プリプロセスで用意したデータの格納ディレクトリ
make/
Makefile
が配置してあるディレクトリ。make
によって生成されたファイルもここに格納される
sh/
スーパーコンピュータでのジョブ投入のためのシェルスクリプトを格納するディレクトリ
src/
ソースファイルを格納するディレクトリ
all/
メインのソースファイルを格納するディレクトリ
include/
includeファイルを格納するディレクトリ
コンパイル¶
コンパイルはR2D2のディクレトリで
make
とするのみである。使う計算機によって設定が違うので make/Makfile
を編集する必要がある。
このファイルの1行目に
SERVER=FUGAKU
などと書いてある部分がある。計算機に応じてこの部分を書き換える。 それぞれ以下のような対応になっている。すでに使用できない計算機については説明しない。
XC
: CfCA XC50FX
: 名大不老FUGAKU
: 富岳
以下、堀田の個人環境なので、使用は推奨されない。どうしても個人の環境で使いたい時は堀田まで相談されたい。
LOCAL
: UbuntuのGCCintel
: ローカル環境のIntelコンパイラMAC
: MacのGCC
初期条件¶
初期条件は、 src/all/model_init.F90
で設定している。基本的な光球計算などは、鉛直速度にランダムな値を入れて計算を始めている。
追加条件¶
ある程度計算を行った後に、続きの計算として少し設定を変えたい場合の手続きを示す。 例えば、磁場なしの熱対流計算を行った後に、磁場を加える場合などに有効である。
run/d001
での計算を run/d002
に移す場合について説明する。
run/d001
の下に copy_caseid.py
というスクリプトがあるのでそれを実行する(なければ堀田からもらう)
python copy_caseid.py
実行すると
Q1. Input destination caseid for copy, like d001
と質問されるので、データを移す先のcaseidを d002
などと入力する。
次に
Q2. Input time step for copy, like 10 or end
と質問されるので、移動したいデータの時間ステップを 10
などと入力する。
チェックポイントのデータはデフォルトでは、10回に一回しか出力していないので注意すること。
また、現在行った計算の最後の時間ステップのデータを移動したい時は 10
などの代わりに
end
と入力する。
するとプログラム・データのコピーが始まる。すでに移動先(今回場合は d002
に data
ディレクトリがある場合は、コピーが始まらないので、削除してからコピーすること)。
また、コピーが終わると移動先の data/cont_log.txt
に元データの情報が記載してある。
データをコピーした後に、磁場などを付け加えたい時は src/all/model_add.F90
を編集する.
do k = 1,nzg
do j = 1,nyg
do i = 1,nxg
qq(5,i,j,k) = qq(5,i,j,k) + 200.d0
qq(6,i,j,k) = qq(6,i,j,k)
qq(7,i,j,k) = qq(7,i,j,k)
enddo
enddo
enddo
などと書いてある。この例では鉛直磁場に200 Gが足されている。次に src/all/io.F90
を編集する。中ほどに
! add something
time00 = 0.d0
if(ns == 0 .and. nd == 0) then
!if(ns == 0) then
!call model_sunspot
!call model_fe_pff
!call model_add
endif
と書かれている部分があるので、 call model_add
の部分のコメントアウトを外す。 ns
は現在の計算のステップ数(続きの計算では引き継がれない)、 nd
は計算全体のデータアウトプット回数(続きの計算で引き継がれる)。この二つの変数が0の時は、計算の一番はじめもしくは、データを引き継いだ時のみなので、その時のみ追加条件が発動する。
スーパーコンピュータでのシェルスクリプト¶
いくつかのスーパーコンピュータでジョブを投入するためのシェルスクリプトも sh
ディレクトリに用意している。
使用コア数などを変えたい時は、それぞれのスーパーコンピュータの使用説明書などを参照すること。
今後使うことのできるものだけをあげる。
fx.sh
: 名大FX100ofp.sh
: Oakforest-PACSxc.sh
: CfCA XC50fg.sh
: 富岳
初期条件データを受け取った場合¶
熱対流が統計的定常に達するまでは非常に時間がかかるために、この計算が非常に困難になる。そのため、堀田がデータを提供することがある。堀田は data
ディレクトリを丸ごと提供する。
このディレクトリに cont_log.txt
というファイルがあるので、そこに示されている計算設定の情報を見て同じようになるように計算を設定する。
このディレクトリを書く実行のディレクトリの配下におき、実行すると続きの計算が始まる。
最終更新日:2024年09月04日