Tools/analysis.exe
monitor システムによって出力されたデータファイルを解析するためのプログラム。 平均値、分布関数、時間相関関数、自由エネルギー等を統一的に扱う(予定)。 具体的にはネームリストで解析方法を指定し、それぞれの解析プログラムに分岐させることを想定している。 monitor システムはバージョンによって出力が変わることが予想されるが、バージョン情報を使用することによりできる限り対応する。
コマンドライン入力
./analysis.exe nmlfile files…
nmlfile: ネームリストファイル
files: 解析されるファイル。ワイルドカードの使用も可。
解析されるファイルを複数個指定する場合、同じ形式である必要がある。これらのデータは別のサンプルとみなされて統計平均される。
Namelist
ネームリストファイルでは、全体制御に関わる &analysis と各解析用のネームリスト(methodで指定する名前と同じもの。)の2種類を指定する。
&analysis
skip: 初めに読み飛ばす行数(default:0)。
interval: ここで指定された行数刻みでファイルを読み込む(default:1)。
method: 解析手法の選択(必須)。各種解析用のネームリスト名と同名の文字列(大文字)を指定すること。
各種ネームリストの説明
&average
平均値及び分散の計算に使用するネームリスト。
ncolumn: 計算に使用する列の番号。
&tcf
時間相関関数の計算に使用するネームリスト。
Acolumn, Bcolumn: ここで指定した列の間の時間相関関数 <A(t)B> を計算する。
maxdata: 相関を取る最大のデータ数
file: 計算結果の出力先
プログラム構造
プログラム構造は、monitor system や spcoord system と同様に
のようになっている。
新たに解析機能を追加する際には、抽象構造体 analysis_core_struct の拡張構造体として各解析プログラムを作成し、 analysis_struct 中にポインタの分岐を記述する(ソース内の analysis_xxx_struct の部分を参照)。 拡張構造体 (analysis_xxx_struct) には、
- subroutine init(unit,nfile,monitor_info): 初期設定、ネームリスト読み込み
- unit: ネームリストの装置番号
- nfile: データファイルの数
- monitor_info(:): 各ファイルのモニターのネームリストの情報
- character(len=80) function looptype(): ループのタイプを返す関数(後述)
- subroutine read(unit,ifile): データの読み取り、計算処理
- unit: データファイルの装置番号
- ifile: データファイルの番号
- subroutine next(): 次のファイル or ステップに移動する際の処理
- subroutine write(): 最終処理、データの出力
の5つのサブルーチンを用意する必要がある。
looptype 関数は、複数個のファイルを読み込んで各行(データ)の統計処理をする場合の処理の順番を制御する。 2 つの値をとり、それぞれ
のように処理される。一般に step_first の方がファイルの読み込みが速いため、特別の用途でない限り step_first を使う。
備考
現在の analysis の仕様では、複数の解析手続きを一度に行うことはできない。そのような場合、入力のネームリストファイルを別々に用意して、analysis.exe の実行をそれぞれに行う。
