lsq_latt2.py 入力ファイル書式
概要
lsq_latt2.py の入力ファイルの書式を説明する。
基本構造
1ジョブ分の構造は次のとおり。
1行目: タイトル
2行目: LS LE1 LE2 LE3 LE4 LE5 IW IO IP
3行目: wavelength radius
4行目以降: 反射データの繰り返し
データ終了行
プログラム終了行
最小構成の例
最小構成例は次のとおり。
BaZrO3
6 0 0 0 0 0 2 4 1
1.54180 0.0
1 0 0 21.224
1 1 0 30.179
1 1 1 37.155
2 0 0 43.151
1000 0 0 0
0
各行の意味
1行目: タイトル
任意の文字列1行。マニュアルでは79文字以内。
2行目: コントロールデータ
整数9個をスペースまたはカンマで区切って書く。
LS LE1 LE2 LE3 LE4 LE5 IW IO IP
LS: 結晶系1: triclinic
2: monoclinic (b)
3: monoclinic (c)
4: orthorhombic
5: tetragonal
6: cubic
7: trigonal
8: hexagonal
LE1〜LE5: 系統誤差項の有無LE1:(π/2 - θ) tan(π/2 - θ)LE2:sin^2 2θLE3:sin^2 2θ (1/sinθ + 1/θ)LE4,LE5: 任意の系統誤差関数
IW: 重みの与え方0:
w / sin^2 2θ1:
1 / (sin 2θ · σ(θ))^22:
13:
w4:
1 / σ(θ)^2
IO: データ内容1:
θ2:
sin θ3: 円筒カメラ座標値
(x, z)4:
2θ5:
d_hkl6: TEM写真のスポット間隔
IP:マニュアルでは常に0を書くと説明されている。 ただし実例では
1が使われており、Python コード中では実質未使用である。
3行目: 波長データ
wavelength radius
wavelength: X線波長radius: カメラ半径
IO != 3 の場合、radius は無関係なので 0.0 でよい。
4行目以降: 基本データ
h k l data [z] [sigma_or_weight]
ここで
h k l: 回折指数data:IOに対応する観測値z:IO = 3のときのみ必要sigma_or_weight:IW != 2のとき必要
ただし、実装では追加データの読み方が 別行 になっている。 したがって、実際に現行コードへ与える書式としては次のように考えるのが安全である。
IO = 4, IW = 2 の場合
h k l 2theta
IO = 3 の場合
h k l x
z
IW = 0, 1, 3, 4 の場合
h k l data
sigma_or_weight
IO = 3 かつ IW != 2 の場合
h k l x
z
sigma_or_weight
データ終了行
10000 0 0 0
また、2000 の場合は波長データから繰り返す。
1000 0 0 0
実用上の推奨は次のとおり。
通常のデータ終了:
1000 0 0 0別波長データへ続く:
2000 0 0 0
プログラム終了行
データ終了後に整数1個を書く。
0: 終了1: 次のタイトルへ進む
実データの解釈
例えば BZ.K は次の意味になる。
BaZrO3
6 0 0 0 0 0 2 4 1
1.54180 0.0
1 0 0 21.224
1 1 0 30.179
1 1 1 37.155
2 0 0 43.151
1000 0 0 0
0
すなわち
cubic
系統誤差なし
等重み
観測値は
2θ [deg]波長
1.54180 Å4本の回折線
(100), (110), (111), (200)データ終了
プログラム終了
実用テンプレート
現行コードに与える実用テンプレートは次の形がよい。
TITLE
LS LE1 LE2 LE3 LE4 LE5 IW IO IP
WAVELENGTH RADIUS
h k l DATA
[Z if IO=3]
[SIGMA_OR_WEIGHT if IW!=2]
h k l DATA
[Z if IO=3]
[SIGMA_OR_WEIGHT if IW!=2]
...
1000 0 0 0
0
補足
複数波長を続ける場合は
1000の代わりに2000 0 0 0を置く。その直後に再び
WAVELENGTH RADIUS行を置く。