入出力¶
odatse-XAFS モジュールは FEFF を用いて原子位置 \(x\) からスペクトルを計算し、実験で得られたXAFSスペクトルからの誤差を \(f(x)\) として返す Solver です。
この章では、入力パラメータおよび入力データと出力データについて説明します。
入力パラメータは Info クラスの solver の項目が該当します。TOMLファイルを入力として与える場合は、 [solver] セクションに記述します。dict 形式でパラメータを作成する場合は solver キー以下に入れ子の dict 形式でデータを用意します。以下では、TOML形式でパラメータ項目を説明します。
入力データは、ターゲットとする参照データと、FEFF の入力ファイルのテンプレートです。
出力データは、FEFF の feff85L が出力する結果およびログファイルです。以下の節で内容を示します。
入力パラメータ¶
solver セクションとセクション中のサブセクション
config, param, reference を利用します。
[solver] セクション¶
dimension形式: 整数型
説明: パラメータの次元数を指定します。solver セクションまたは base セクションに記述する必要があり、両方指定した場合は solverセクションの値が優先されます。
string_listの要素数と一致している必要があります。
[solver.config] セクション¶
feff_exec_file形式: string型 (default: "feff8.5L")
説明:
FEFFソルバーへのパスを指定します。feff_input_file形式: string型 (default: "feff.inp")
説明: FEFFソルバーの入力ファイルのファイル名を指定します。
feff85Lの場合はfeff.inp固定です。feff_output_file形式: string型 (default: "chi.dat")
説明: FEFFの出力ファイルのうち、X線吸収スペクトルデータのファイル名を指定します。
feff85Lの場合はchi.dat固定です。feff_template_file形式: string型 (default: "template.txt")
説明: FEFF入力ファイルのテンプレートのファイル名を指定します。
remove_work_dir形式: bool型 (default: false)
説明: FEFF の出力ファイルを削除するかどうかを指定します。
use_tmpdir形式: bool型 (default: false)
説明: FEFF の出力ファイルの書き出し先として /tmp (または TMPDIR 環境変数で指定するディレクトリ) 内の一時的なディレクトリを使用するかどうかを指定します。
[solver.param] セクション¶
string_list形式: string型のリスト (default: ["value_01", "value_02"])
説明: ソルバーの入力ファイルを作成するための参照用テンプレートファイルで利用するプレースホルダーのリスト。リストの要素数は
dimensionの値と一致する必要があります。これらの文字列が探索中のパラメータの値に置換されます。polarization_list形式: string型の3要素のリスト
説明: ソルバーの入力ファイル用のテンプレートファイル内で偏光ベクトルの成分のプレースホルダーとして使用する文字列のリスト。これらの文字列が偏光ベクトルの各要素に置換されます。
polarization形式: 3要素からなる float 型のリストのリスト
説明: 偏光ベクトルのリストを指定します。
calculated_first_k形式: float型
説明: FEFFによる計算値と測定データとの比較を行う波数の範囲について下端を指定します。
calculated_last_k形式: float型
説明: FEFFによる計算値と測定データとの比較を行う波数の範囲について上端を指定します。
k_range形式: float型のリスト
説明: FEFFによる計算値と測定データとの比較を行う波数の範囲を [下端, 上端] の形式のリストとして指定します。
calculated_first_k,calculated_last_kによる指定とは排他的で、どちらかの形式で範囲を指定する必要があります。
[solver.reference] セクション¶
path_epsilon形式: string型
説明: 実験データファイルへのパスを指定します。
ソルバー用補助ファイル¶
入力テンプレートファイル¶
入力テンプレートファイル template.txt は surf.exe の入力ファイルを作成するためのテンプレートです。
動かすパラメータ(求めたい原子座標などの値)を value_* などの文字列に置き換えます。
使用する文字列は入力ファイルの [solver.param] セクションにある string_list で指定します。
偏光ベクトルの要素についても同様に polarization_* などの文字列に置き換え、使用する文字列を [solver.param] セクションの polarization_list に指定します。
以下、テンプレートの例を記載します。
* This feff.inp file generated by ATOMS, version 2.50
* ATOMS written by and copyright (c) Bruce Ravel, 1992-1999
* -- * -- * -- * -- * -- * -- * -- * -- * -- * -- * -- * -- * -- * -- *
* total mu = 725.4 cm^-1, delta mu = 610.0 cm^-1
* specific gravity = 12.006, cluster contains 55 atoms.
* -- * -- * -- * -- * -- * -- * -- * -- * -- * -- * -- * -- * -- * -- *
* mcmaster corrections: 0.00020 ang^2 and 0.770E-07 ang^4
* -- * -- * -- * -- * -- * -- * -- * -- * -- * -- * -- * -- * -- * -- *
TITLE Sample_data
EDGE K
S02 1.0
* pot xsph fms paths genfmt ff2chi
CONTROL 1 1 1 1 1 1
PRINT 0 0 0 0 0 0
* r_scf [ l_scf n_scf ca ]
*SCF 6.05142 0 15 0.1
EXAFS 20
RPATH 6
* kmax [ delta_k delta_e ]
*XANES 4.0 0.07 0.5
* r_fms [ l_fms ]
*FMS 6.05142 0
*
*RPATH 0.10000
* emin emax resolution
*LDOS -20 20 0.1
POTENTIALS
* ipot z [ label l_scmt l_fms stoichiometry ]
0 28 Ni
1 16 S
2 8 O
NLEG 2
*CRITERIA 4.00 2.50
*DEBYE 300.00 340.00
* CORRECTION 4.50 0.5
* RMULTIPLIER 1.00
* ION 0 0.2
* ION 1 0.2
* ixc [ Vr Vi ]
EXCHANGE 0 -5 0
SIG2 0.0016
POLARIZATION polarization_01 polarization_02 polarization_03
ATOMS
0.0000 0.0000 0.0000 0 Ni
value_01 value_02 value_03 1 S
1.1400 1.2800 0.9700 2 O
この場合、 value_01, value_02, value_03 が動かすパラメータ、 polarization_01, polarization_02, polarization_03 が偏光ベクトルの要素になります。
FEFF 入力ファイルの書式については FEFF のマニュアルを参照してください。
ターゲット参照ファイル¶
ターゲットとする測定データが格納されたファイルを [solver.reference] セクションの path_epsilon に指定します。ファイルの書式は、
第一列に波数、第二列以降はスペクトル強度と不確かさの組が偏光方向ごとに格納されています。最初の2行はヘッダです。
以下、ファイルの例を示します。
k c(k)_E[001]
(Ni09sum000-004k e(k)_E[001] Ni11sum000-004k_sum140521_E1 e(k)_E[1-10] Ni13dd_sum000-004k_d140617_t e(k)_E[110]
3.5 -0.02335000 0.006999908 -0.04765000 0.007511923 -0.04365000 0.007200607
3.55 -0.01203000 0.009141367 -0.03033000 0.010077591 -0.03322000 0.009255752
3.6 -0.00198000 0.008535745 -0.02501000 0.008242841 -0.02414000 0.007907668
...
出力ファイル¶
odatse-XAFS では、 feff85L により出力されるファイルが、
ランクの番号が記載されたフォルダ下にある Log%%%%%_##### フォルダ以下の call_01, call_02, call_03 ディレクトリに一式出力されます。
(use_tmpdir が True の場合は、/tmp または TMPDIR 環境変数で指定する一時ディレクトリ内に書き出されます。)
%%%%% はアルゴリズムの反復回数 step (例:モンテカルロステップ数)、
##### はアルゴリズムにおけるグループの番号 set (例:モンテカルロにおけるレプリカ番号)、
call_01... は偏光方向ごとの個別のラベルです。
大規模計算ではこれらのフォルダの数が多くなり、計算機のストレージの制限に抵触する場合があります。
そのような場合には、 solver.config.remove_work_dir パラメータを true にして、計算が終了した作業フォルダを削除してください。