SRIMfit
サンプル紹介Update Log :2020 12/10 ver 3.01.04 E5Aサンプルを分冊として削除
2018.10/22 ver 3.01.03 E5A05_Range比較, 06_IC_Range解析, E5A07_Espc比較 追加
2018.10/11 ver 3.01.02 sr_eg_AdIn.xlsm 追記
2017.06/22 ver 3.01.00 C言語用Utility 追加
2017.06/22 ver 3.00.02 srOut2Ws.xlsm 追加
2017.06/14 ver 3.00.01 E5A04_E_LET_Rプロット.xlsx 追加
2017.05/27 ver.3.00 マクロとWS分離に伴う変更。
2017.03/21 ver.2.12 ver.211 から転記。関数リストなど追加。

2020/12/10 (v3.01.04)

SRIMfit サンプル紹介

1

SRIMfit サンプル紹介
目 次・ ユーティリティー
・ サンプルファイル

・ Debug 用•

マクロ付きファイルを実行する時に、と表示された時は、「有効化」 をクリックして、進んでください。

2020/12/10 (v3.01.04)

SRIMfit サンプル紹介

2ユーティリティー紹介

ユーティリティーの紹介● Util ｓｒOut2Ws フォルダー
srOut2Ws.xlsm(マクロ入りファイルです)

Txt変換実行 ： SRIM-2013 Stopping/Range Table の Output テキストファイルを読み込んで、SRIMfit 用の WS形式に変換するマクロです。
今まで手動にてコピペしていた作業を、マクロで自動化しました。
Csv変換実行 ： 同じく、SRIM-2013 の Output を、空白区切りCSV形式ファイルとして Excel Book に多数読み込んでいる場合、そのBook 中全ての Csvシートを WS 形式に一括変換します。
● Util Cプログラム用 フォルダー
R(E) LET(E)配列生成.xlsx
E R LET配列生成 ： C言語用に、Range( E ), LET( E ) static 配列を自動生成するシートです。
C++関数(例) :2020/12/10 (v3.01.04)計算されたシートを、テキスト形式で保存して、C プログラムに組み込んで使うときの、関数例です。

SRIMfit サンプル紹介

3ユーティリティー紹介

File名：

srOut2Ws.xlsm

Sheet名：Txt変換実行

SRIM-2013 の Stopping/Range Table の計算結果テキストファイル を読み込んで、SRIMfit 用の WS に変換するマクロです。今まで手動にてコピペしていた作業を、マクロで自動化しました。

① 開始を押す② SRIM Output を選択

マクロの動作は単純です。
[Txt変換実行] シートから、変換したい SRIMout.txt を指定して実行ボタンを押すと、[ _雛形ws_ ] シート を 雛形にして、[Uranium in Gold] のような新規WSに変換してくれます。
※詳しい解説は、ユーザーマニアル：WSを追加する をご参照ください。

2020/12/10 (v3.01.04)

SRIMfit サンプル紹介

4ユーティリティー紹介

File名：

srOut2Ws.xlsm (続き)Sheet名：Csv変換実行

SRIM-2013 で Stopping / Range Table 計算で出力された SRIMout.txt を空白区切りCSV形式ファイルとして Excel Book に多数読み込んでいる場合に便利なマクロです。
例えば、~¥SRIMout ¥ SRIMout_核種.xlsx のように。そのBook にある全ての Csvシートを一括変換します。

① 開始を押す② SRIMout_*.xlsx を選択

マクロの動作は、前述の [Txt変換実行]シートと同じです。

マクロが起動し変換が開始され、新しい WS に値が記入され、グラフが成長して行きます。

Rang や Straggling の単位 A, μm, mm は、自動的に μmに統一 して変換してくれます。

※詳しい解説は、ユーザーマニアル：WSを追加する をご参照ください。

2020/12/10 (v3.01.04)

SRIMfit サンプル紹介

5ユーティリティー紹介

File名： R(E) LET(E)配列生成.xlsx

Sheet名：E R LET配列生成

C言語用に、Range( E ), LET( E ) static 配列を自動生成するシートです。
計算されたシートを、テキスト形式で保存して、ご自分の C プログラムに組み込んでご利用ください。

 E = Eu[ ix ] は、共通配列です。
このエネルギー刻みに従って、以下の E2R[ ix ], E2L[ ix ] 配列を生成します。

 Beam, Target, LETunit を指定すると、
E2R_Beam_Targ [ ]  srE2Range()
E2L_Beam_Targ [ ]  srE2LETt()のテーブルを作ります。

2020/12/10 (v3.01.04)

SRIMfit サンプル紹介

6ユーティリティー紹介

File名： R(E) LET(E)配列生成.xlsx (続き)Sheet名：C++関数例

生成した E = Eu( ix ), R( ix ), LET( ix ) 配列を読み取って、E2RNG( E ), E2LET( E ), RNG2E( R ), Enew( E ), Eold( E ) を計算する関数例です。
単に SRIMfit.xlsm のマクロ関数と同じ動作を、C言語で記述した単純なものです。
コメント表記のみC++用になっていますが、普通のCでも動きます。

sample_cpp に、プログラムファイルを入れました。

2020/12/10 (v3.01.04)

SRIMfit サンプル紹介

7

サンプル紹介

サンプルワークシートの紹介● example 動作確認用 フォルダー_Install フォルダーにも、同じワークシートがあります。SRIMfit の基本動作確認用です。

sr_eg_AddIn.xlsm = 3_Install後_動作確認.xlsm と同じモノです。
eg11マクロ情報： マクロ情報の表示。MySRIMwbに登録されているシートの一覧表。

eg12MySRwb確認 ： 登録されている MySRIMwb シートの内容表示。
eg21： 物質 通過 「後」 のエネルギー計算の例。

eg22： 物質 通過 「前」 のエネルギー計算の例。

2020/12/10 (v3.01.04)

SRIMfit サンプル紹介

8サンプル紹介

File名： sr_eg_AddIn.xlsm = 3_Install後_動作確認.xlsm と同じモノ

Sheet名： eg11マクロ情報

SRIMfit が マクロファイルとして動作している情報 を表示するシートです。
マクロ情報関数のチュートリアルです。インストールされている MySRIMws の一覧などが表示されます。
また、MySRIMwb.xlsx を「一時的に切り替える」ことができます。

 AddIn ディレクトリ
 現在の SRIMwb
 WSの総数

 WS名の一覧表

ボタンを押すと、ファイル選択メニューが表示されます。
デフォルトでインストールされている
MySRIMwb.xlsx （SRIMfit.xlamと同じフォルダーにある）の代わりに、 「一時的に切替えるSRIMwb」を選択してください。
切替が完了すると、srMcrWBname() 以下の表示が、選択された SRIMwb の内容に変化します。

ボタンを押すと、デフォルトの MySRIMwb に戻せます。

2020/12/10 (v3.01.04)

SRIMfit サンプル紹介

9サンプル紹介

File名：

sr_eg_AddIn.xlsx (続き)Sheet名：eg12MySRIMwb確認

SRIMfit が読み込んでいる MySRIMwb.xlsx の内容を確認するシートです。
WS情報関数、WS検索関数などのチュートリアルです。
この確認シートでは、MySRIMwbに記述した値を、ほぼそのまま表示することで、インストールされているシート内容の確認を行うことができます。

 ココに、WS名を入力して WSを切り替えます。

2020/12/10 (v3.01.04)

SRIMfit サンプル紹介

10

サンプル紹介

File名：

sr_eg_AddIn.xlsx (続き)Sheet名：eg21

物質 通過 「後」 のエネルギー計算の例です。
40Arビームが、Si, Al, Air, Kapton を通過する場合のエネルギー変化を計算するシートです。
固体物質通過後の計算には srEnew() 関数、気体物質通過後の計算には srEnewGas() 関数を用いています。

2020/12/10 (v3.01.04)

SRIMfit サンプル紹介

11

サンプル紹介

File名：

sr_eg_AddIn.xlsx (続き)Sheet名：eg22

物質 通過 「前」 のエネルギー計算の例です。
84Krビームが、Au, Kapton, Mylar, PLシンチ, エネルギー減衰板(Al), 空気を通過してから、試験サンプル(Si) に照射される場合を考えます。
サンプルの 100μm深さで LET=14 になるようにしたいとします。
その時、元のビームエネルギー(加速器からのビームエネルギー）は、いくつである必要がありますか？
といった問題を計算するためのエクセルシートです。
物質通過 「前」 のエネルギー計算にはsrEold(), srEoldGas() 関数を用意してあります。

2020/12/10 (v3.01.04)

SRIMfit サンプル紹介

12

Debugサンプル

Debug 用ワークシートの紹介● example デバッグ用 フォルダー[ 興味のある方のみ ]作者がデバッグ用に使っているシートです。
わかりずらいですが、sr*()関数の詳細動作を確認するためのシートです。
sr_dbg1_AddIn.xlsx

沢山あるシートの中から、有用なものだけ紹介します。

dbg11,13 ： srE2Rng() や srEnew() デバッグ。MySRIMwb の「直線近似」の度合いを図示。
dbg21～ ： 各種組合せ関数 デバッグ。どのような場合にエラーになるかをテストできます。
sr_dbg2_AddIn.xlsx

MySRIMws のデバッグ用です。

dbg11： 複数のシートを比較して、MySRIMws をデバッグするのに便利です。

dbg12： 複数のシートで LETを比較。LET単位を変換して表示。

2020/12/10 (v3.01.04)

SRIMfit サンプル紹介

13

サンプル紹介

File名：

sr_dbg1_AddIn.xlsx

Sheet名：dbg10

関数デバッグシート： Table Search 関数 の 内部動作確認
sr*() 関数は、MySRIMwb の数値表を読み込んで、２点間の直線近似で値を求めていますが、その内挿計算は正しいかを検算しています。
内挿点とその前後±２点のグラフを見ることで、SRIM-2013計算のE-binning の細かさが適当かを判断してください。

2020/12/10 (v3.01.04)

SRIMfit サンプル紹介

14

サンプル紹介

File名：

sr_dbg1_AddIn.xlsx

Sheet名：dbg11

関数デバッグシート： srE2Rng() srRng2E() 関数 の 内部動作確認
この２つの関数は、srEnew() srEold() など各種の組合せ関数の基本となる関数です。
内挿点とその前後±２点のグラフを見ることで、SRIM-2013計算のE-binning の細かさが適当かを判断してください。

2020/12/10 (v3.01.04)

SRIMfit サンプル紹介

15

サンプル紹介

File名：

sr_dbg1_AddIn.xlsx

Sheet名：dbg12

関数デバッグシート： srLET2E* 関数 の 内部動作確認
この関数のように、dE/dX 数値表を検索する方向 ( E-high側 | -low側から検索）を指定する場合、引数の指定値(LET値) によっては、解が無い場合 があります。
グラフを見ながら、各々の WS によって、どのような場合に戻り値がエラーになっているかを確認できます。

この場合、srLETn2E( )Nuclear Stopping逆引き関数
では、E-low E-high 両側から検索しても→ 解ありですが、
srLETe2E( )Electric Stopping 逆引き
srLETt2E( )Total Stopping 逆引き
では、
E-high 側から検索すると→ 解なし #N/A を返す∵ Emax Range Over で表の範囲外という状況が理解して頂けると思います。

2020/12/10 (v3.01.04)

SRIMfit サンプル紹介

16

サンプル紹介

File名：

sr_dbg1_AddIn.xlsx

Sheet名：dbg21

関数デバッグシート： srEnew( ) 関数 の 内部動作確認
この関数は、E2Rng() → Rng2E() 関数を呼び出して、数値表を２度引き：正引き・逆引き します。
その内部動作を、デバッグ関数を用いてシミュレートしています。
E vs Range 曲線は、単調関数で変化も穏やかですので、Enew() や Eold() 計算などをRange→E 変換の単純な直線内挿近似で代用しても、かなり良い結果が得られます。

2020/12/10 (v3.01.04)

SRIMfit サンプル紹介

17

サンプル紹介

File名：

sr_dbg1_AddIn.xlsx

関数デバッグシート：

Sheet名：組合せ関数 の 内部動作確認

例えば dbg24例) srEnew_eq_Th()

組合せ関数の中には、関数名だけからでは、関数の仕様を理解できない かもしれません。
関数のネーミングが下手ですみません。
表形式にして、その動作を説明しながら、デバッグ環境を作っておきました。

この例の場合、Eu11 <= 0 というエラー条件が発生したので、戻り値が #N/A になっています。
エラーが発生する条件を、表にまとめてありますので、試してみてください。

2020/12/10 (v3.01.04)

SRIMfit サンプル紹介

18

サンプル紹介

File名：

sr_dbg1_AddIn.xlsx

関数デバッグシート：

Sheet名：dbg30

組合せ関数 srDE{u|t}_eq_Eold() の 内部動作確認

この関数では、数値表検索を行う過程で E vs (Th通過時の) dE 計算 を繰り返しながら解を求めます。
その計算過程が理解できるように、広い E 範囲 での E vs dE グラフを作って説明しています。

2020/12/10 (v3.01.04)

SRIMfit サンプル紹介

19

サンプル紹介

File名：

sr_dbg1_AddIn.xlsx

関数デバッグシート：

Sheet名：dbg31

組合せ関数 srDEu_eq_Eold() の 内部動作確認

この関数では、数値表検索を行う過程で E vs (Th通過時の) dE 計算 を繰り返しながら解を求めるのですが、 その過程で誤差が生じます。
検索過程において随時算出される E vs dE グラフ に於いては、正しく直線近似の内挿が行われているのですが、２つのWSで指定されている 核種vs標的 の E vs Range テーブルの細かさ具合によっては、この誤差が回避できません。 という事を了解して頂けるかなぁ。。

誤差が生じます。

随時算出している E vs dE 値前後±２点 をプロット。
直線内挿近似は正しく行われているのですが…
2020/12/10 (v3.01.04)

SRIMfit サンプル紹介

20サンプル紹介

File名：

sr_dbg2_AddIn.xlsx

MySRIMwb デバッグシート：

Sheet名：dbg21

複数シートの比較

このシートでは、 照射物(Material ) を同じにしておいて、ビーム核種を変えた場合の比較グラフを表示します。
このシートを修正すれば、 同じビームで、複数の照射物の比較も簡単にできます。

ビーム核種をだんだん重くしてた場合、・グラフの順番が間違っていないか？
・交差してないか？などのチェックをする為です。

2020/12/10 (v3.01.04)

SRIMfit サンプル紹介

21

サンプル紹介

File名：

sr_dbg2_AddIn.xlsx

MySRIMwb デバッグシート：

Sheet名：dbg22

複数シート比較 LET単位変換

10種類迄の ビーム核種 vs 照射物(Material ) について、 LET値 (dE/dX) を比較するグラフ。
縦軸 LET値 の単位変換機能付き。

 ココを変えると、縦軸の単位が変わります。

縦軸 = MeV/(mg/cm2) : UnitID=02020/12/10 (v3.01.04)

縦軸 = keV/μm: UnitID=2

SRIMfit サンプル紹介

22