sim-trhepd-rheed
ソルバー¶
sim-trhepd-rheed
は `sim-trhepd-rheed`_ を用いて原子位置 \(x\) から回折 rocking curve を計算し、
実験で得られた rocking curve からの誤差を \(f(x)\) として返す Solver
です。
前準備¶
あらかじめ `sim-trhepd-rheed`_ をインストールしておく必要があります。
sim-trhepd-rheed の公式サイトからソースコードをダウンロード
sim-trhepd-rheed/src
に移動し、make
でbulk.exe
とsurf.exe
を作成
py2dmat
を実行する前にあらかじめ bulk.exe
を実行してバルクデータを作成しておきます。
surf.exe
は py2dmat
から呼び出されます。
入力パラメータ¶
solver
セクション中のサブセクション
config
, post
, param
, reference
を利用します。
[config
] セクション¶
surface_exec_file
形式: string型 (default: "surf.exe")
説明:
sim-trhepd-rheed
の表面反射ソルバーsurf.exe
へのパスsurface_input_file
形式: string型 (default: "surf.txt")
説明: 表面構造のインプットファイル。
bulk_output_file
形式: string型 (default: "bulkP.b")
説明: バルク構造のアウトプットファイル。
surface_output_file
形式: string型 (default: "surf-bulkP.s")
説明: 表面構造のアウトプットファイル。
calculated_first_line
形式: 整数型 (default: 5)
説明: ソルバーにより計算された出力ファイルを読み込む範囲を指定するパラメータ。読み込む最初の行を指定。
calculated_last_line
形式: 整数型 (default: 60)
説明: ソルバーにより計算された出力ファイルを読み込む範囲を指定するパラメータ。読み込む最後の行を指定。
row_number
形式: 整数型 (default: 8)
説明: ソルバーにより計算された出力ファイルを読み込む範囲を指定するパラメータ。読み込む列を指定。
[post
] セクション¶
normalization
形式: string型。"TOTAL"または"MAX"のいずれかをとります。 (default: "TOTAL")
説明: R値の規格化の方法。全体の和で規格化するか最大値で規格化するかを指定します。
Rfactor_type
形式: string型。"A"または"B"のいずれかをとります。 (default: "A")
説明: Rファクターの計算方法の指定。"A"だと通常の方法、"B"だとPendryのRファクターを計算します。
omega
形式: 実数型 (default: 0.5)
説明: コンボリューションの半値幅の指定。
[param
] セクション¶
string_list
形式: string型のリスト。長さはdimensionの値と一致させます。 (default: ["value_01", "value_02"])
説明: ソルバーの入力ファイルを作成するための参照用テンプレートファイルで利用するプレースホルダーのリスト。これらの文字列が探索中のパラメータの値に置換されます。
degree_max
形式: 実数型 (default: 6.0)
説明: 最大角度(度単位)の指定
[reference
] セクション¶
path
形式: string型 (default:
experiment.txt
)説明: 実験データファイルへのパス。
first
形式: 整数型 (default: 1)
説明: 実験データファイルを読み込む範囲を指定するパラメータ。実験ファイルを読み込む最初の行を指定。
last
形式: 整数型 (default: 56)
説明: 実験データファイルを読み込む範囲を指定するパラメータ。実験ファイルを読み込む最後の行を指定。
ソルバー用補助ファイル¶
入力テンプレートファイル¶
入力テンプレートファイル template.txt
は surf.exe
の入力ファイルを作成するためのテンプレートです。
動かすパラメータ(求めたい原子座標などの値)を「 value_*
」などの適当な文字列に置き換えます。
使用する文字列は入力ファイルの [solver]
- [param]
セクションにある、
string_list
で指定します。
以下、テンプレートの例を記載します。
2 ,NELMS, -------- Ge(001)-c4x2
32,1.0,0.1 ,Ge Z,da1,sap
0.6,0.6,0.6 ,BH(I),BK(I),BZ(I)
32,1.0,0.1 ,Ge Z,da1,sap
0.4,0.4,0.4 ,BH(I),BK(I),BZ(I)
9,4,0,0,2, 2.0,-0.5,0.5 ,NSGS,msa,msb,nsa,nsb,dthick,DXS,DYS
8 ,NATM
1, 1.0, 1.34502591 1 value_01 ,IELM(I),ocr(I),X(I),Y(I),Z(I)
1, 1.0, 0.752457792 1 value_02
2, 1.0, 1.480003343 1.465005851 value_03
2, 1.0, 2 1.497500418 2.281675
2, 1.0, 1 1.5 1.991675
2, 1.0, 0 1 0.847225
2, 1.0, 2 1 0.807225
2, 1.0, 1.009998328 1 0.597225
1,1 ,(WDOM,I=1,NDOM)
この場合、 value_01
, value_02
, value_03
が動かすパラメータとなります。
ターゲット参照ファイル¶
ターゲットにするデータが格納されたファイル experiment.txt
を指定します。
第一列に角度、第二列に反射強度に重みをかけて計算した値が入ってます。
以下、ファイルの例を指定します。
0.100000 0.002374995
0.200000 0.003614789
0.300000 0.005023215
0.400000 0.006504978
0.500000 0.007990674
0.600000 0.009441623
0.700000 0.010839445
0.800000 0.012174578
0.900000 0.013439485
1.000000 0.014625579
...
出力ファイル¶
sim-trhepd-rheed
では、 surf.exe
で出力されるファイルが、
ランクの番号が記載されたフォルダ下にある Log%%%%%
フォルダに一式出力されます。
ここでは、 py2dmat
で独自に出力するファイルについて説明します。
stdout
¶
surf.exe
が出力する標準出力が記載されています。
以下、出力例です。
bulk-filename (end=e) ? :
bulkP.b
structure-filename (end=e) ? :
surf.txt
output-filename :
surf-bulkP.s
RockingCurve.txt
¶
Log%%%%%
フォルダに出力されます。
1行目にヘッダ、2行目以降は角度、コンボリューションされた計算値・実験値、規格化された計算値・実験値と、生の計算値が順に出力されます。
以下、出力例です。
#degree convolution_I_calculated I_experiment convolution_I_calculated(normalized) I_experiment(normalized) I_calculated
0.1 0.0023816127859192407 0.002374995 0.004354402952499057 0.005364578226620574 0.001722
0.2 0.003626530149456865 0.003614789 0.006630537795012198 0.008164993342397588 0.003397
0.3 0.00504226607469267 0.005023215 0.009218987407498791 0.011346310125551366 0.005026
0.4 0.006533558304296079 0.006504978 0.011945579793136154 0.01469327865677437 0.006607
0.5 0.00803056955158873 0.007990674 0.014682628499657693 0.018049130948243314 0.008139
0.6 0.009493271317558538 0.009441623 0.017356947736613827 0.021326497600946535 0.00962
0.7 0.010899633015118851 0.010839445 0.019928258053867838 0.024483862338931763 0.01105
...