入出力¶
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
にして、計算が終了した作業フォルダを削除してください。