Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/TRHEPD_manybeam' into TRHEPD_man…
Browse files Browse the repository at this point in the history
…ybeam_with_limitation
  • Loading branch information
H-Iwamoto-research committed Nov 13, 2023
2 parents d4a2650 + b149b23 commit da11583
Show file tree
Hide file tree
Showing 2 changed files with 200 additions and 109 deletions.
194 changes: 128 additions & 66 deletions doc/ja/source/solver/sim-trhepd-rheed.rst
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,11 @@

[``solver``] セクション
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- ``run_scheme``

形式: string型。"subprocess"または"connect_so"のいずれかをとります。

説明: ソルバーとして使用するファイルを指定します。前者は ``surf.exe`` 、後者は ``surf.so`` を使用したいときに指定します。

- ``generate_rocking_curve``

形式: 真偽値 (default: false)

説明: ``RockingCurve.txt`` の生成をするかどうか
説明: ``RockingCurve_calculated.txt`` の生成をするかどうか。 ``RockingCurve_calculated.txt`` は作業ディレクトリ ``Log%%%_###`` の中に保存されます。このオプションが"true"であっても、 ``remove_work_dir`` ([``post``] セクション)が"true"であれば ``Log%%%_###`` は削除されてしまうため、注意してください。


[``config``] セクション(サブセクション)
Expand Down Expand Up @@ -65,30 +59,71 @@

説明: 表面構造のアウトプットファイル。

- ``calculated_first_line``

形式: 整数型 (default: 5)

説明: ソルバーにより計算された出力ファイルを読み込む範囲を指定するパラメータ。読み込む最初の行を指定。

- ``calculated_last_line``

形式: 整数型 (default: 5 + [``reference``] セクション(サブセクション)にて指定した実験データファイルの視写角数 - 1)

説明: ソルバーにより計算された出力ファイルを読み込む範囲を指定するパラメータ。読み込む最後の行を指定。

- ``calculated_info_line``

形式: 整数型 (default: 2)

説明: ソルバーにより計算された出力ファイルの行を指定するパラメータ。出力ファイル内に記されているglancing angle数やbeam数が記してある行を指定。

- ``cal_number``

形式: 整数型のリスト
形式: 整数型のリスト (default: []、設定必須)

説明: ソルバーにより計算された出力ファイルを読み込む範囲を指定するパラメータ。読み込む列を指定。複数指定が可能。
説明: ソルバーにより計算された出力ファイルを読み込む範囲を指定するパラメータ。読み込むデータ列を指定。複数指定が可能。設定した値は、後述の ``exp_number`` ([``reference``] セクション)の値とリストの長さを一致させる必要があります

[``post``] セクション(サブセクション)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- ``normalization``

形式: string型。"TOTAL"または"MAX"のいずれかをとります。 (default: "TOTAL")
形式: string型。"TOTAL"または"MANY_BEAM"のいずれかをとります。 (default: ""、設定必須)

説明: 実験・計算のデータベクトルの規格化の方法。全体の和で規格化するか最大値で規格化するかを指定します
説明: 実験・計算のデータベクトルの規格化の方法。"TOTAL"の場合、全体の和で規格化をします。ただし計算に使用するデータ列が1つのみ適用できる規格化方法なので、 ``cal_number`` ([``config``] セクション)および ``exp_number`` ([``reference``] セクション)で設定したリストの長さが1である必要が有ります。"MANY_BEAM"はデータ列が2つ以上であるときに利用できる規格化方法です。後述の ``weight_type`` によって規格化方法が変わります

- ``Rfactor_type``
**なお、 normalization="MAX" は廃止となりました。**

- ``weight_type``

形式: string型または ``None`` 。"calc"または"manual"のいずれかを設定する必要があります。 (default: ``None`` 、 ``normalization = "MANY_BEAM"`` としたとき設定必須)

形式: string型。"A"または"B"のいずれかをとります。 (default: "A")
説明: 目的関数値を計算するときの、データ列ごとの重みの計算方法を指定します。 :math:`n` をデータ列のindex( :math:`n = 1,2,3..` ) 、 :math:`m` を視射角のindexとして、計算データを :math:`v^{(n)} = (v^{(n)}_{1}, v^{(n)}_{2}, .. ,v^{(n)}_{m})` と表すとします。
"calc"とした場合、データ列ごとの重み :math:`w^{(n)}` は次の式で与えられます。 :math:`w^{(n)} = ( \sum_i^m v^{(n)}_{i} / \sum_j^n \sum_i^m v^{(j)}_i )^{2}.`
"manual"とした場合、オプション ``spot_weight`` を用いることで、ユーザーが重みを指定可能です。

説明: Rファクターの計算方法の指定。
実験・計算のデータベクトルを、それぞれ、:math:`u = (u_{1}, u_{2},...,u_{m})`,
:math:`v = (v_{1}, v_{2},...,v_{m})` と書いたとき、
"A"タイプを指定すると、Rファクター値は :math:`R = (\sum_i^m (u_{i}-v_{i})^{2})^{1/2}` で計算され、
"B"タイプを指定すると、Rファクター値は :math:`R = (\sum_i^m (u_{i}-v_{i})^{2})^{1/2}/( \sum_i^m u_{i}^2 + \sum_i^m v_{i}^2)` で計算されます。
- ``spot_weight``

形式: float型のリスト。 (default: [] 、 ``weight_type = "manual"`` としたとき設定必須)

説明: オプション ``weight_type`` を"manual"と設定した際に設定できます。
それ以外の指定では、このオプションは計算に反映されません。目的関数値を計算するときの、データ列ごとの重みを設定します。また、このオプションで指定された重みは総和が1になります。
例えば、[3,2,1]を指定すると、 :math:`w^{(1)}=1/2, w^{(2)}=1/3, w^{(3)}=1/6` となります。

- ``Rfactor_type``

形式: string型。"A"、"A2"または"B"のいずれかをとります。 (default: "A")

説明: 目的関数値の計算方法の指定。
実験・計算のデータベクトルを、それぞれ :math:`u^{(n)} = (u^{(n)}_{1}, u^{(n)}_{2},...,u^{(n)}_{m})`, :math:`v^{(n)} = (v^{(n)}_{1}, v^{(n)}_{2},...,v^{(n)}_{m})` と書くとします。
また、各データ列の重みを :math:`w^{(n)}` とします。:math:`n` はデータ列のindexです( :math:`n = 1,2,3..` )。
"A"タイプを指定すると、目的関数値は :math:`R = [ \sum_{j}^{n} w^{(j)} \{ \sum_{i}^{m} (u^{(j)}_{i}-v^{(j)}_{i})^{2} \} ]^{1/2}`
で計算されるRファクター値となります。
"A2"タイプを指定すると、目的関数値は :math:`R^{2} = \sum_{j}^{n} w^{(j)} \{ \sum_{i}^{m} (u^{(j)}_{i}-v^{(j)}_{i})^{2} \}`
で計算されるRファクターの二乗の値となります。
"B"タイプを指定すると、目的関数値は :math:`R = (\sum_{i}^{m} (u^{(1)}_{i}-v^{(1)}_{i})^{2})^{1/2}/( \sum_{i}^{m} (u^{(1)}_{i})^{2} + \sum_{i}^{m} (v^{(1)}_{i})^2)`
で計算されるRファクター値となります。
"B"タイプはデータ列が1つの実験・計算データを用いた実行( :math:`n=1` )のみ対応しています。

- ``omega``

Expand All @@ -100,7 +135,7 @@

形式: 真偽値 (default: false)

説明: R-factor を読み取った後に作業ディレクトリ ``Log%%%_###`` を削除するかどうか
説明: R-factor を読み取った後に作業ディレクトリ ``Log%%%_###`` を削除するかどうか。なお、 ``generate_rocking_curve`` ([``solver``] セクション) が"true"であっても、本オプションが"true"ならば ``Log%%%_###`` を削除します。


[``param``] セクション(サブセクション)
Expand All @@ -112,12 +147,6 @@

説明: ソルバーの入力ファイルを作成するための参照用テンプレートファイルで利用するプレースホルダーのリスト。これらの文字列が探索中のパラメータの値に置換されます。

- ``degree_max``

形式: 実数型 (default: 6.0)

説明: 最大角度(度単位)の指定

[``reference``] セクション(サブセクション)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Expand All @@ -127,18 +156,23 @@

説明: 実験データファイルへのパス。

- ``first``
- ``reference_first_line``

形式: 整数型 (default: 1)

説明: 実験データファイルを読み込む範囲を指定するパラメータ。実験ファイルを読み込む最初の行を指定。

- ``last``
- ``reference_last_line``

形式: 整数型 (default: 56)
形式: 整数型 (default: 実験データファイルの最後の行の行数)

説明: 実験データファイルを読み込む範囲を指定するパラメータ。実験ファイルを読み込む最後の行を指定。

- ``exp_number``

形式: 整数型のリスト (default: []、設定必須)

説明: 実験データファイルを読み込む範囲を指定するパラメータ。読み込むデータ列を指定。複数指定が可能。設定した値は、前述の ``cal_number`` ([``config``] セクション)の値とリストの長さを一致させる必要があります。

ソルバー用補助ファイル
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand All @@ -154,45 +188,45 @@
.. code-block::
2 ,NELMS, -------- Ge(001)-c4x2
32,1.0,0.1 ,Ge Z,da1,sap
32,1.2,0.15 ,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
32,1.2,0.15 ,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
9,4,0,0,2,1.7,-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.0, value_01, 1.00000, 5.231000 ,IELM(I),ocr(I),X(I),Y(I),Z(I
1, 1.0, value_02, 1.00000, 4.371000
2, 1.0, 1.50000, 1.50000, 3.596000
2, 1.0, 2.00000, 1.49751, 2.100000
2, 1.0, 1.00000, 1.50000, 2.000000
2, 1.0, 0.00000, 1.00000, 0.849425
2, 1.0, 2.00000, 1.00000, 0.809425
2, 1.0, 1.00997, 1.00000, 0.599425
1,1 ,(WDOM,I=1,NDOM)
この場合、 ``value_01``, ``value_02``, ``value_03`` が動かすパラメータとなります。
この場合、 ``value_01``, ``value_02`` が動かすパラメータとなります。


ターゲット参照ファイル
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

ターゲットにするデータが格納されたファイル ``experiment.txt`` を指定します。
第一列に角度、第二列に反射強度に重みをかけて計算した値が入ってます
以下、ファイルの例を指定します
第一列に角度、第二列以降に反射強度にコンボリューションを計算した値が入ってます
以下、ファイルの例を示します

.. code-block::
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
3.00000e-01 8.17149e-03 1.03057e-05 8.88164e-15 ...
4.00000e-01 1.13871e-02 4.01611e-05 2.23952e-13 ...
5.00000e-01 1.44044e-02 1.29668e-04 4.53633e-12 ...
6.00000e-01 1.68659e-02 3.49471e-04 7.38656e-11 ...
7.00000e-01 1.85375e-02 7.93037e-04 9.67719e-10 ...
8.00000e-01 1.93113e-02 1.52987e-03 1.02117e-08 ...
9.00000e-01 1.92590e-02 2.53448e-03 8.69136e-08 ...
1.00000e+00 1.86780e-02 3.64176e-03 5.97661e-07 ...
1.10000e+00 1.80255e-02 4.57932e-03 3.32760e-06 ...
1.20000e+00 1.77339e-02 5.07634e-03 1.50410e-05 ...
1.30000e+00 1.80264e-02 4.99008e-03 5.53791e-05 ...
...
Expand Down Expand Up @@ -222,21 +256,49 @@
output-filename :
surf-bulkP.s
``RockingCurve.txt``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
``RockingCurve_calculated.txt``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

``generate_rocking_curve`` ([``solver``] セクション) が"true"の場合のみ ``Log%%%%%_#####`` フォルダに出力されます。

ファイル冒頭には文頭に ``#`` が付いたヘッダーが記されます。ヘッダーには探索変数の値、目的関数値 ``f(x)`` オプションで指定した ``Rfactor_type`` ``normalization` ``weight_type`` ``cal_number`` 、オプションで指定またはプログラムが計算したデータ列ごとの重み ``spot_weight`` 、データ部分の列に何が記されているか( ``# 0 glanceing_angle`` など)が記されています。

``#`` が付いていない部分はデータ表記部分になります。1列目は視写角、2列目以降はデータ列ごとに強度が記しています。どのデータ列が記されているかはヘッダーの表記で確認できます。例えば

.. code-block::
# #0 glancing_angle
# #1 cal_number=1
# #2 cal_number=2
# #3 cal_number=4
との記載があれば、1列目は視写角、2列目は計算データファイルの1列目に相当する反射強度、3列目は計算データファイルの2列目に相当する反射強度、4列目は計算データファイルの4列目に相当する反射強度が記されていることがわかります。

また、各列の反射強度は各列の総和が1になるように規格化されています。目的関数値(R-factor及びR-factorの二乗)を算出する際は、データ列ごとの重み ``spot_weight`` を加味して計算されています。

``Log%%%%%_#####`` フォルダに出力されます。
1行目にヘッダ、2行目以降は角度、コンボリューションされた計算値・実験値、規格化された計算値・実験値と、生の計算値が順に出力されます。
以下、出力例です。

.. code-block::
#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
...
#value_01 = 0.00000 value_02 = 0.00000
#Rfactor_type = A
#normalization = MANY_BEAM
#weight_type = manual
#fx(x) = 0.03686180462340505
#cal_number = [1, 2, 4, 6, 8]
#spot_weight = [0.933 0.026 0.036 0.003 0.002]
#NOTICE : Intensities are NOT multiplied by spot_weight.
#The intensity I_(spot) for each spot is normalized as in the following equation.
#sum( I_(spot) ) = 1
#
# #0 glancing_angle
# #1 cal_number=1
# #2 cal_number=2
# #3 cal_number=4
# #4 cal_number=6
# #5 cal_number=8
0.30000 1.278160358686800e-02 1.378767858296659e-04 8.396046839668212e-14 1.342648818357391e-30 6.697979700048016e-53
0.40000 1.778953628930054e-02 5.281839702773564e-04 2.108814173486245e-12 2.467220122612354e-28 7.252675318478533e-50
0.50000 2.247181148723425e-02 1.671115124520428e-03 4.250758278908295e-11 3.632860054842994e-26 6.291667506376419e-47
...
Loading

0 comments on commit da11583

Please sign in to comment.