sim-trhepd-rheed ソルバー

sim-trhepd-rheed`sim-trhepd-rheed`_ を用いて原子位置 \(x\) から回折 rocking curve を計算し、 実験で得られた rocking curve からの誤差を \(f(x)\) として返す Solver です。

前準備

あらかじめ `sim-trhepd-rheed`_ をインストールしておく必要があります。

  1. sim-trhepd-rheed の公式サイトからソースコードをダウンロード

  2. sim-trhepd-rheed/src に移動し、 makebulk.exesurf.exe を作成

py2dmat を実行する前にあらかじめ bulk.exe を実行してバルクデータを作成しておきます。 surf.exepy2dmat から呼び出されます。

入力パラメータ

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.txtsurf.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
...