Excel で SRIM-2013 の Range, LET, 僞 計算 ( SRIMfit )
SRIMfit とは?
● SRIMfit は、重イオンビームの物質中での Range や LET, 僞 計算を、
Microsoft Excel で行うためのマクロ関数ライブラリーです。
● SRIM-2013コードで計算したデータシートを参照しながら、あるビームエネルギー:E における
Range(E), LET(E) の値を、補間計算で返します。
● Excel の AddIn マクロ関数 ですので、 Excel 標準関数と同じく、
ご自分の Excel表計算の中で、数式として利用できます。
SRIMfit の構造
SRIMfit は Excelが管理する AddInフォルダーに常駐し、 ユーザーからの関数呼出しに返答します。 常駐モジュールは、マクロ関数定義をしている AddInコード部と、 関数計算で参照される SRIMデータブック部 の2つから成ります。
● ユーザーブック.xlsx マクロ無しブックです
ユーザーが作成する Excelシートからは、AddIn関数として呼び出します。
SRIMfitの関数名は、頭2文字が sr * ( ) で始まります。
関数呼び出しの引数で、参照する ワークシート名 (WS名) を指定します。
● SRIMfit.xlam AddInマクロ形式ブックです
マクロ関数群を VisualBasicで記述した SRIMfit の本体です。
現 version では、約 80 種類の関数 を用意してあります。
MS-Office のシステム AddInフォルダー に入れておきます。
● MySRIMwb.xlsx マクロ無しブックです
SRIMコードで計算した、E - Range - LET 数値表のデータベースです。
これも、AddIn フォルダーに入れておき、SRIMfit.xlam から随時参照されます。
このファイルは、ユーザーが準備して下さい。
デフォルトでは、理研での実験に用いるデータベースを提供してあります。
SRIM-2013コード が出力する 「Stopping/Range Table」を コピペ して簡単に作成できます。
「ビーム核種 vs 照射物材質」ごとに SRIMで計算した結果を1枚のWS名シートとして、
1つワークブックファイルに纏めて格納しておきます。
自分で必要な枚数だけ自由に拡張できます。
ユーザー インターフェイス
ユーザー定義の AddIn関数 として手軽に使えるように、 関数のヘルプメッセージを用意しました。
エクセル表の空白のセルに移動し「関数の挿入(fx) 」をクリックしてみてください。 「関数の分類」をクリックして表示されるリストの一番下に、SRIMfit が表示されます。 例えば srEnew 関数を選ぶと、その引数などの説明が表示されます。
マクロ関数一覧
ユーザー定義 AddIn関数は、約 80 種類あります。
● ユーザーが準備したデータベース(MySRIMwb.xlsx)を検索する関数
● 組合せ関数: Range関数から、物質通過前後のエネルギー計算など
● その他: 単位変換、Gas気圧・温度換算など
詳しくは、
ユーザーマニアル
の SRIMfit関数一覧 をご覧ください。
重イオン物理屋向けの説明
SRIMfit 製作の経緯
重イオンビーム照射を大気圧環境下で行う場合、常々
「重イオンのエネルギー損失(僞)計算コード」のお世話になります。
真空中のビームエネルギーは、加速器の加速パラメータや分析電磁石の磁場の値などから
ほぼ正確に知ることができます。ところが、真空切り膜を通してビームを大気中に取り出した後では、
正確なエネルギーを実測しようと思うと、かなり面倒です。
こういった場合、真空切り膜の厚さを実測しておき、後は
僞計算コードを用いて算出したエネルギー値を "採用" することになります。
重イオン用の僞計算コードは世の中に幾つかありますが、
理研RIBF施設にいるRIビーム核物理屋の多くは
LISE++コード
に含まれている僞計算を用いています。
一方、材料照射屋さんは
SRIMコード
を用いている方が多いようです。
ここで、両コードが算出する僞計算の差異を議論するつもりはございませんが、
照射実験を遂行する上で、一貫して同じ僞計算コードを使いたい場合があります。
例えば、大気中に設置したビームエネルギー検出器のエネルギー較正を行ってから、
実際の照射条件に於ける様々な物質を通過した後のビームエネルギーを見積もる時などです。
エネルギー較正に "自信" を持つために、時には結構込み入った計算を何度も繰り返すことがあります。
そんな時は、僞計算が Excel表で出来ると便利です。
そこで我々は、材料照射屋さんに合わせる立場から
「SRIMで僞計算をするExcel用マクロ (SRIMfit)」
を自作して使っていますので以下に紹介します。
その内容は極単純で、SRIMで算出した「Stopping/Range Table」を、
Excelシートに貼り付けておき、そのテーブルを内挿するマクロ関数を用意しただけです。
ビームのエネルギー(E)から、飛程(Range)を内挿する関数 E2Range( E ) や
その逆引き関数 Range2E( R ) を用意しました。これらを組み合わせることで、
物質通過前後のエネルギー: Eold(通過前), Enew(通過後) などの
便利な計算ができるようにしてあります。
SRIMfit が目指したもの
SRIM-2013コードは、様々な複合材質(compound material)に対する Stopping Power 計算
が可能な点が優れているので、イオン注入の分野などで広く用いられています。
またモンテカルロ法によるイオンの輸送計算コード(
TRIM
)も整備されています。
しかし残念なことに、Excel関数などのインターフェースはないようです。
(どなたかご存知でしたら教えてください)
一方、RIビームを含む多様な核種のビーム について用いられている LISE++コードには、
Excelのインターフェース
LISE for Excel
も用意されています。
例)= StoppingPower( Zbeam, Abeam, Ebeam, Ztarget, ElossModel )
の様に、ビームの Z, A 番号と、エネルギー、照射物質の Z 番号 だけを指定すれば
Stopping Power ( dE/dX )の計算ができます。
しかしながら、SRIMのように、様々な複合材についての dE/dX 計算をする場合は、
複合材毎に専用のStoppingPower()関数を用意するなどの工夫が必要でしょう。
私の場合、上記「製作の経緯」でも述べたように、モンテカルロ計算で分布関数を求める必要もなく、
単に Range や LET, 僞 の中心値だけで議論するような用途として、
Excel版 SRIM関数 が欲しかった訳です。
そこで、SRIMfitの設計では、なるべく単純で使いやすい関数記述で済ませられるように工夫をしました。
関数を呼び出す度に、複合材の元素組成や構成比率をいちいち指定するのは煩雑で、
また計算のオーバーロードも大きくなります。
そこで SRIMfit では、「ビーム核種 vs 照射物材質」で計算済みの「ワークシート名」のみを指定
することで、これを回避しています。
SRIMfitは万能ではありません。
予め自分で SRIM 計算を行い、その Outputファイルを自分で Excelシートに張り付ける
準備作業が必要です。
しかしながら、このデータベースを1度作っておけば、単純な関数記述で、
SRIM計算がエクセル関数としていつでも手軽に使えるようになります。
● ビーム vs 照射物 の組み合わせが何通りか決まっているが、
● パラメータを代えながら、複雑な計算を繰り返したい
という場合に、この SRIMfit がお役に立つと思います。