SRIMfit
ユーザーマニアルUpdate Log :2018.10/22 ver 3.01.03 WS追加を整理改訂。
2018.10/11 ver 3.01.02 関数リスト等誤植修正。srMcrWBdir()追加。WS一時切替追記。
2018.09/03 ver 3.01.00 後半部を、技術メモ として分離。
2018.06/27 ver 3.00.02 srOut2Ws, Csv2Ws の説明追加
2017.06/01 ver.3.00 マクロとWS分離に伴う変更。関数リスト追加。
2017.03/21 ver.2.12 ver.211 から転記。関数リストなど追加。

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

1

SRIMfit ユーザーマニアル
目 次⚫ SRIMfit とは⚫ SRIMfit の User I/F⚫ SRIM データブック ( MySRIMwb.xlsx ) について
⚫ SRIMfit の 関数について⚫ 関数一覧(1)⚫ 関数一覧(2a) 組合せ関数⚫ 関数一覧(2b) 組合せ関数Gas用⚫ MySRIMwb に ＷＳ を追加する⚫ MySRIMwb を一時的に切り替える⚫ 更新経歴2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

2

SRIMfit とは
SRIM コードで、エネルギー損失(⊿E) など を計算をするための自作の Excelシート用マクロ関数群 です。

ご存知の様に、SRIMコード (The Stopping and Range of Ions in Matter)
Author: James F. Ziegler氏、 J.P.Biersack氏 最新版 SRIM-2013 ref) SR01
は、イオン注入の分野などで広く用いられている有名な計算コードです。
TRIMコードと合わせるとシミュレーションも可能な便利なコードです。
その基本となっている部分は、Stopping / Range Tables 計算で、指定した物質中 に入射される 指定したイオン核種 について
イオンエネルギー(E) vs 阻止能(dE/dX), 飛程(Range), Stragglingという数値表を出力してくれます。
残念ながら計算のプログラム本体は公開されていないようです。
SRIMと同じ計算が、 Excel シート上で出来たら便利です。
そこで この SRIMfit マクロ集 を自作して使っていますので紹介します。
マクロの内容は極単純です。 SRIMで算出した「Stopping/Range Table」を、
Excelシートに数値テーブルとして貼り付けておき、そのテーブルを読み込んで内挿計算を行うマクロ関数群です。 SRIMコードに手を加えるような、新しい事は何もしておりません。単に忠実に SRIMの出力結果を直線近似で内挿するだけです。
例えば、ビームのエネルギー(E)から、阻止能(dE/dX；LET) を内挿する関数 E2LET() と、その逆引き関数 LET2E()
飛程(Range)を内挿する関数 E2Rng() と、その逆引き関数 Rng2E()などを用意してあります。単純なマクロ関数だけですが、これらを組み合わせることで、かなり便利な計算シートが作れます。
尚、SRIMfit は万能ではありません。
前述の様に、 ビーム核種 vs 標的材質 の組み合わせ毎に自分で SRIM 計算を行い、その Output ファイルを自分で Excelシートに張り付ける作業が必要です。
しかしながら、このデータベースを１度作っておけば、SRIM計算がエクセル関数として
いつでも手軽に使えるようになります。
● SRIM-2013 の計算結果で統一させたRangeや⊿E 計算がしたい● ビーム vs 標的 の組み合わせが何通りか決まっているが、● パラメータを代えながら何度も再計算したいという場合に、この SRIMfit がお役に立つと思います。是非お試し下さい。
Download Home Page :http://ribf.riken.jp/sisetu-kyoyo/Tips/SRIMfit/index.html
理研・仁科センター・RIBF施設共用促進事業のページをご参照ください。

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

3

SRIMfit の User I/F
SRIMfit は、SRIMデータシートをアクセスするための関数群を、ユーザーに提供します。
MS-Office システムAddInフォルダー
もしくは、ユーザーAddIn フォルダー

ユーザーDocument
フォルダー
ユーザーブック.xlｓｘ
func. call

SRIMfit. xlam
AddIn 本体MySRIMwb. xlsx
SRIMデータブック参照= srEnew( WS名 , params )sr**()

マクロ関数群

WS名 =srim40Ar_Si

SRIMデータシート群

ユーザーが作成する [ ユーザーブック.xlsx ] からは、AddIn関数として呼び出します。
SRIMfitの関数名は、頭２文字が sr * () で始まります。 関数呼び出しのパラメータ(引数)で参照する ワークシート名 (WS名: SRIMデータの種類) を指定します。
AddInマクロ本体である [ SRIMfit .xlam ] は、同じ AddIn フォルダーにある
SRIMデータブック [ MySRIMwb .xlsx ] を参照して計算し、関数の戻り値を返します。
SRIMfit の起動
ユーザーブック.xlsx を開くタイミングごとに、エクセルシステムが自動的に AddIn マクロを起動してくれます。 何もせずにすぐに使える組み込み関数として提供されます。
sr*( ) 関数の動作
１つの関数が呼び出されるたびに、引数として与えられた WS名 に相当する
SRIMデータブック内の参照シートを切り替えます。WSはデータベースの役割をします。
sr*()関数は、シート内の数値表を読込み、２点間の直線近似で内挿補間計算 を行います。

MySRIMwb .xlsx は、 SRIM-2013 が出力した 数値表データベース です
MySRIMwb. xlsx は、ユーザーが準備して下さい。
デフォルトでは、理研での実験用に用いるデータベースを提供してあります。
SRIM-2013 が出力する 「Stopping/Range Table」 を コピペ して、簡単に作ることができます。
「ビーム核種 vs 標的材質」 ごとに SRIMで計算した結果を、１枚のWS名シートとして格納しておきます。 自分で必要な枚数だけ自由に拡張できます。
（注） Excel ファイル拡張子の分類について* .xlsm マクロ付きブック* .xlam .xlsm を AddInマクロ形式 で保存したもの* .xlsx
マクロ無しブック2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

4

SRIM データブック ( MySRIMwb.xlsx ) について
SRIMfit 計算の基礎となる、SRIMデータブック (MySRIMwb.xldx) には、
SRIM-2013 が出力した 数値表が、複数枚のデータシートとして格納されています。

SRIMデータシートの例
シート名 = srim40Ar_Si

各シート内の黄色ハッチ部分は、 SRIM-2013 が出力した「Stopping/Range Table」 の数値をコピペしてある部分です。その他の部分は、これらの数値表の単位[MeV や μm等]を揃えて、
sr*() 関数が読み込みやすくした変換表です。
この様に、 [ビーム核種 vs 標的材質] の組み合わせ毎に、自分で必要な枚数だけ
WorkSheet(WS)表 を用意しておきます。WS表の枚数は自由に拡張できます。
SRIMfit は、WS表の内容を書き換えません。計算に必要なデータベースとして読込むだけです。

新しいWorkSheet表 を追加したい場合は、→ 【MySRIMwb に ＷＳ を追加する】
を参照してください。
という事は、「何もSRIM-2013のOutputに限らないのでは？」 と気付かれた方もいらっしゃるでしょう。
その通りです。この表形式さえ同じなら、何コードの計算結果でも、内挿近似してくれるだけのマクロ関数I/Fを提供しているのが、SRIMfit です。「SRIM Like Output Fit」 を短縮して SRIMfit と呼んでいます。
ご自分用の MyCODEfit を作ってみたり、他のEnergy_Range計算コードで算出した数値表と比較するためのmycode40Ar_si シートを作ってみたり などの利用方法も可能と思われます。

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

5

SRIMfit の 関数について
SRIMfit 組み込み関数の名前。
sr** ( ) のように、頭文字２文字が sr で始まる関数名に統一してあります。
関数のヘルプメッセージ
エクセル表の空白のセルに移動し、「関数の挿入（fx) 」 をクリックしてみてください。
「関数の分類」をクリックして表示されるリストの一番下に、SRIMfit が表示されます。
例えば srEnew 関数を選ぶと、その引数などの説明が表示されます。

ほとんどの関数には、その引数として、参照すべき WorkSheet表の名前 (WS名) を指定します。

SRIMfit 関数の単位系について
Energy は、[MeV/u] です。
Range と Straggling は、 [μm] です。
Thick 厚さ指定は、[μm] です。 Gas の場合は [mm] です。
LET (dE/dX) は、[MeV/(mg/cm2)] を標準 としています (Uid=0)
単位系変換について
Energy は、Range と Straggling は、Thick 厚さ指定は、LET (dE/dX) を、

以下のような手法で変換して下さい[MeV/u] = [MeV] / srInfoIonA()[mg] = srum2mg ( [μm] ) [μm] = srmg2um ( [mg] )同上
SRIM-2013 がサポートする ８つの単位系 で求めるには・・・

LET関連関数の引数 Uid を指定します。

Uid (Unit ID) 番号表

LET の単位系変換の数値は、SRIMfit.xlsm の中の、それぞれの ワークシート (WS) に掲載してあります。
SRIM-2013 の Output から転記した値です。
2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

6関数一覧(1)

SRIMfit の 関数一覧 (1)以下と同じリストが、SRIMfit.xlsm のシートにも掲載してあります≪変数・戻り値 型≫
IInteger
D Double
B Boolean
S String
V Variant型 Excelエラーも返す≪変数名 表記≫WS S SRIMoutput WorkSheet名
E, Eu D Beam Energy [MeV/u]
Et D Beam Energy [MeV]
RD
Uid I

V 型関数のエラー戻り値#NUM!
xlErrNum 2036
#N/A
xlErrNA 2042

Range [μm]LET unit ID# 0..8

LET D
Th,Tum,Tmm D
Pa D
dgC D

通常[MeV/(mg/cm2)] Uid指定可
Thickness [μm] | [mm]Gas Pressure [Pa]Gas Temperature [degC]●

引数の値が不適当
表範囲外、計算中エラー≪Private変数名 表記≫ WS操作関連で主要なのもClm*
WS内の行番号
Row*
WS内の列番号MySRwbNow
ユーザーが指定した WorkBook
関数が参照中の Current
MySRwsNow
Sheet pointer関数が参照中の Current
WSnow
Sheet名前
Sheet切り替え毎に Sheetから読取られる値
IxE{min|max}, E{min|max}, R{min|max},
St{Lng|Ltr}{min|max}, SPfct()

よく使いそうな関数にマークを付けました。

カテゴリー

戻値型 関数名
引数名

関数の説明
戻値

型 引数の説明

戻値条件

理由など

マクロ起動・終了処理
Sub srMySRwb_open
MyFn
S MySRwb ファイル名

SRIMoutput WorkBook (MySRwb) Open処理
通常は Const MySRwbFn ="MySRIMwb.xlsx"を使用
Pathは、MySRwbDir= ThisWorkbook.Path としてある。

Sub srMySRwb_close

SRIMoutput WorkBook (MySRwb) Close処理

マクロ情報
S

srMcrVerSRIMfit version番号
Const SRIMfitVer の定義値

S

srMcrPathMySRwb の インストールPath
ThisWorkbook.Path を返す

S

srMcrWBname

現在の MySRwb の File NameMySRwbFnNow を返す

S

srMcrWBdir

現在の MySRwb の Directory PathMySRwbDirNow を返す

I

srMcrWScount

MySRwb に含まれる Sheet数

S()

srMcrWSlist

MySRwb に含まれる 全Sheet名 を 1Dim文字列配列で返す

Sub srMcr_WSlist

MySRwb に含まれる 全Sheet名一覧を作成

sToRngS S

一覧表先頭位置 例)"A10"

WS 非参照関数S

srElmNmZ●
I

2018/10/22(v3.01.03)

元素記号

元素番号 Z= 1..118

SRIMfit ユーザーマニアル

7関数一覧(1)カテゴリー

戻値型 関数名
引数名

型 引数の説明

関数の説明
戻値

戻値条件

理由など

WS情報(1) WSから直接読出し
S
I
IS

srInfoVer
WS

S

WS名

WSの SRIM version番号

srInfoIonZ
WS

S

WS名

srInfoIonA
WS

S

WS名

srInfoTrgName
WS
S

WS名

● WSの Beam Z ; 元素番号
● WSの Beam A ; 質量数● WSの Target 名称(短縮形で)S

srInfoTrgNameL
WS
S WS名

D

srInfoTrgDens
WS
S

WS名

WSの Target 名称(詳細名)● WSの Target 密度 [g/cm3]D

srInfoTrgDensA
WS
S WS名

WSの Target 密度 [atoms/cm3]D

srInfoBrgC
WS

WSの Bragg Correction in [%]

D
D
B

S

WS名

srInfoTrgPtbl
WS
S

WS名

srInfoTrgTtbl
WS
S

WS名

srInfoIsGas
WS
S

WS名

WS(GasTrg)の場合、SRIM計算時に用いたGas圧 [Pa]

WS(GasTrg)の場合、SRIM計算時に用いたGas温度 [℃]

WSが (GasTrg)の場合 TrueS

srInfoTgCmAtmNm
WS
S WS名
i
I
組成 行番号(1..8)

WSの Trg組成 原子名I

srInfoTgCmAtmNo
WS
S WS名
i
I
組成 行番号

WSの Trg組成 原子番号D

srInfoTgCmAtmPct
WS
S WS名
i
I
組成 行番号

WSの Trg組成 Atomic [%]D

srInfoTgCmMasPct
WS
S WS名
i
I
組成 行番号

WSの Trg組成 Mass [%]S

srInfoWScorded
WS
S WS名

WSの Corded情報

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

8関数一覧(1)カテゴリー

戻値型 関数名
引数名

関数の説明
戻値

型 引数の説明

戻値条件

理由など

単位変換
V,S srLETUNm
Uid

LET単位名I

Uid 番号(0..8, =0 基準) ; LET単位ID
番号

V,D srLETCnvF

D

D

WS

S

Uid

I

srum2mg
WS
um

S
D

WS名
Trg厚 [μm]srmg2um
WS
mg

S
D

WS名
Trg厚 [mg/cm2]

WS名
Uid 番号(0..8, =0 基準) ; LET単位ID
番号

#NUM!

Uid<0 | >8

Uid invalid

LET単位変換係数; [Uid=0 MeV/(mg/cm2)] に変換する為の係数#NUM!
Uid<0 | >8
Uid invalid● Trg厚 単位変換 [μm] --> [mg/cm2]
ｓｒInforTrgDens()を使用● Trg厚 単位変換 [mg/cm2] --> [μm]ｓｒInforTrgDens()を使用

WS情報(2) Table範囲
D
D
D
D
D
D
D
D

srMinE
WSS

WS名

WSの範囲 Beam Emin [MeV/u] ; エネルギー

srMaxE
WSS

WS名

srMinRng
WS

S

WS名

srMaxRng
WS

S

WS名

srMinStLng
WS
S

WS名

srMaxStLng
WS
S

WS名

srMinStLtr
WS

S

WS名

srMaxStLtr
WS
S

WS名

WSの範囲 Beam Emax [MeV/u] ; エネルギー

WSの範囲 Range min [μm] ; 飛程

WSの範囲 Range max [μm] ; 飛程

WSの範囲 Straggling Longitudinal min [μm] ; 飛程深さ方向幅

WSの範囲 Straggling Longitudinal max [μm] ; 飛程深さ方向幅

WSの範囲 Straggling Lateral min [μm] ; 飛程横方向幅

2018/10/22(v3.01.03)

WSの範囲 Straggling Lateral max [μm] ; 飛程横方向幅

SRIMfit ユーザーマニアル

9関数一覧(1)カテゴリー

戻値型 関数名
引数名

関数の説明
戻値

型 引数の説明

戻値条件

理由など

WS検索(1) E <-> LETe,n,t
V,D srE2LETe
WS
E

S
D

Uid

I

WS名
Beam E [MeV/u] 検索値
戻値 LET単位指定 ; Uid 番号(0..8=0基準)

V,D srE2LETn
WS
E

S
D

Uid

I

WS名
Beam E [MeV/u] 検索値
戻値 LET単位指定 ; Uid 番号(0..8=0基準)

WS検索 E -> LETe [Uid単位] ; Electric Stopping Power#NUM!
Uid<0 | >8
Uid invalid#N/A
EがWSの範囲外

WS検索 E -> LETn [Uid単位] ; Nuclear Stopping Power#NUM!
Uid<0 | >8
Uid invalid#N/A
EがWSの範囲外● WS検索 E -> LETt [Uid単位] ; Total= Nuclear+Electric Stopping PowerV,D srE2LETt
WS
E

S
D

Uid

I

WS名
Beam E [MeV/u] 検索値
戻値 LET単位指定 ; Uid 番号(0..8
=0基準)

#NUM!
#N/A

Uid<0 | >8

Uid invalid
EがWSの範囲外

LETの添え字 { e | n | t } は、それぞれ { electronic | nuclear | total = electric + nuclear } Stopping Power の意味です。
V,D srLETe2E
WS
Lt

S
D

Uid

I

Ehl

I

WS名
LETe [Uid] 検索値 Electric StPw
検索値 LET単位指定 ; Uid 番号(0..8 =0基準)
検索方向 ={+1|-1} ={Ehigh|Elow}側から検索

V,D srLETn2E
WS
Lt

S
D

Uid

I

Ehl

I

V,D srLETt2E
WS
Lt

S
D

Uid

I

Ehl

I

WS名
LETn [Uid] 検索値 Nuclear StPw
検索値 LET単位指定 ; Uid 番号(0..8 =0基準)
検索方向 ={+1|-1} ={Ehigh|Elow}側
から検索

WS検索 LETe -> E [MeV/u]#NUM!
Uid<0 | >8
#N/A

Uid invalid
LETeがWSの範囲外

WS検索 LETn -> E [MeV/u]#NUM!
Uid<0 | >8
#N/A

Uid invalid
LETnがWSの範囲外● WS検索 LETt -> E [MeV/u]

WS名
LETt [Uid] 検索値 Total StPw
検索値 LET単位指定 ; Uid 番号(0..8 =0基準)
検索方向 ={+1|-1} ={Ehigh|Elow}側
から検索

#NUM!
#N/A

Uid<0 | >8

Uid invalid
LETtがWSの範囲外

srLET2E() 関連関数について
LETの関数形が、Range や Straggling のものと異なり、単調増加関数ではない
ので、Energy が 高い側 or 低い側 から検索する様に、機能を分けてあります。
注） SRIMfit ver 2.* までは、これらの関数名は 機能ごとに次の様に分けてありました。
srLETe2El () srLETe2Eh () srLETn2El () srLETn2Eh () srLETt2El () srLETt2Eh ()互換性維持のため、これらの関数も使える様にしてあります(関数Helpは省略しました)。

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

10関数一覧(1)カテゴリー

戻値型 関数名
引数名

関数の説明
戻値

型 引数の説明

戻値条件

理由など

WS検索(1) E <-> LETe,n,t
V,D srMaxLETe
WS

S

Uid

I

WS名
検索値 LET単位指定 ; Uid 番号(0..8 =0基準)

V,D srMaxLETn
WS

S

Uid

I

WS名
検索値 LET単位指定 ; Uid 番号(0..8 =0基準)

D
D

WS検索 max LETn [Uid単位] ; Nuclear StPw
#NUM!
Uid<0 | >8
Uid invalid● WS検索 max LETt [Uid単位] ; Total= Electric+Nuclear StPw

V,D srMaxLETt

D

WS検索 max LETe [Uid単位] ; Electric StPw
#NUM!
Uid<0 | >8
Uid invalid

WS

S

Uid

I

WS名
検索値 LET単位指定 ; Uid 番号(0..8 =0基準)

srMaxLETe2E
WS
S

WS名

srMaxLETn2E
WS
S

WS名

srMaxLETt2E
WS
S

WS名

#NUM!

Uid<0 | >8

Uid invalid

WS検索 E [MeV/u] at max LETe ; Electric StPw

WS検索 E [MeV/u] at max LETn ; Nuclear StPw

● WS検索 E [MeV/u] at max LETt ; Total= Electric+Nuclear StPw

WS検索(2) E <-> Range
V,D srE2Rng
WS
E

S
D

WS名
Beam E [MeV/u] 検索値

#NUM!
#N/A
=0

E<0

E がWS範囲外 (>Emax)
E=0● WS検索 Rng ; 飛程 -> E [MeV/u]

V,D srRng2E
WS
Rng● WS検索 E -> Rng [μm] ; 飛程

S
D

WS名
Range [μm] 検索値

#NUM!
#N/A
=0

Rng<0
RngがWS範囲外 (>Rmax)
Rng=0

イオンのエネルギー(E) vs 飛程(Range) について、内挿 及び その逆引き 関数です。
これらの関数は、後述する 組合せ関数 sr*_eq_*() で多用されています。

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

11関数一覧(1)カテゴリー

戻値型 関数名
引数名

関数の説明
戻値

型 引数の説明

戻値条件

理由など

WS検索(3) E <-> Straggling
V,D srE2StLng
WS
E

S
D

WS名
Beam E [MeV/u] 検索値

WS検索 E -> Straggling Longitudinal [μm] ; 飛程深さ方向幅
#NUM!
E<0
#N/A
E がWS範囲外 (>Emax)
=0
E=0

S
D

WS名
Beam E [MeV/u] 検索値

WS検索 E -> Straggling Lateral [μm] ; 飛程横方向幅
#NUM!
E<0
#N/A
E がWS範囲外 (>Emax)
=0
E=0

S
D

WS名
Strag. Long. [μm] 検索値

WS検索 Straggling Longitudinal; 飛程深さ方向幅 -> E [MeV/u]#NUM!
Strg<0#N/A
Strg がWS範囲外 (>StLngmax)=0
Strg=0S
D

WS名Strag. Later. [μm] 検索値

WS検索 Straggling Lateral ; 飛程横方向幅 -> E [MeV/u]#NUM!
Strg<0#N/A
Strg がWS範囲外 (>StLngmax)=0
Strg=0V,D srE2StLtr
WS
E

V,D srStLng2E
WS
Strg

V,D srStLtr2E
WS
Strg

Gas Target 標準気圧・気温●

V,D srThkStd
WS
Pa
dgC

S
D
D

WS(GasTrg)名GasTrg 気圧 [Pa]GasTrg 気温 [℃]

GasTrg の《標準気体》への変換係数。 《標準気体》とは、SRIM
WS計算時に用た気圧：srInfoTrgPtbl()、気温：srInfoTrgTtbl()です。

#NUM!
WS<>GasWSがGasTrgでない#NUM!
Pa<0 | dgC<0K= (Pa/P0)*(273.15+T0)/(273.15+dgC)
標準値: P0= srInfoTrgPtbl(), T0= srInfoTrgTtbl() の時

SRIM における Gas 標的 の取り扱い について
Gas標的用関数の場合、引数に 気温 [℃] と 気圧 [Pa] を明示的に指定してください。
関数の中で、「ガス標的厚さの補正」 を行ってくれます。
基準としているガス標的の 《標準気体 》 気温T0 と 気圧P0 とは、
WS 毎 (Gas標的ごと) に記載してある次の値です。
T0 = Ttbl [℃] : srInfoTrgTtbl( WS ) で参照可能
P0 = Ptbl [Pa] : srInfoTrgPtbl( WS ) で参照可能
これらは、その ガス標的用 WS を記入した時に用いた SRIM-2013 の計算条件(仮定)です。
→ 詳しくは、【MySRIMwb に ＷＳ を追加する】 を参照してください。
Gas標的用関数 以外 の場合、例えば 飛程など[μm] の単位で “厚さ” を返す関数の場合、この ”厚さ” は “《標準気体》における厚さ” です。
実際の 気温T 気圧P での厚さに変換する時は、srThkStd() 関数が返す係数を乗除して下さい。
例） Thick [μm] @(P, T) = srE2Rng( WS, E ) / srThkStd( WS, P, T )2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

12関数一覧(1)カテゴリー

戻値型 関数名
引数名

関数の説明
戻値

型 引数の説明

戻値条件

理由など

Debug 用 public関数
S
S
V

V

V

srIxEmin
WS

S

WS名

get IxEmin

srIxEmax
WS

S

WS名

srE2Ix
WS
Ei

S
D

WS名
E [MeV/u]srVal2Ix
WS
Vc

S
D

Clm

I

WS名
Value
Clm# = 1..7 ; E, SPe, SPn, SPt, Rng,
StLng, StLtr

srIx2Val
WS
ixE

S
I

Clm

I

get IxEmax

WS名ixE
Clm# = 1..7 ; E, SPe, SPn, SPt, Rng,
StLng, StLtr

V,D() srIx2ValAry
WS
ixE

S
I

E -> ixE search using sr_E2Ix()#N/A
ts_errE

WS名ixE

Val -> ixE search using sr_Val2Ix()#N/A
ts_errV(ixE, Clm#) -> Value#N/A

ixE | Cim invalidixE -> Value(Clm=1..7) Double Array#N/AixE invalid

デバッグ用関数は、sr_dbg *.xlsx などで使う特殊関数です。
これらの関数は、WS表の内容を”生” で表示するためのものです。

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

13関数一覧(2a)SRIMfit の 関数一覧 (2a) 組合せ関数≪変数名 表記≫
WS1,WS2 S 比較するWS名
Eu D Beam Energy [MeV/u]
Et D Beam Energy [MeV]
dEu D Beam Energy Loss [MeV/u]
dEt D Beam Energy Loss [MeV]
Tum,Tmm D Thickness [μm] | [mm]
Pa D Gas Pressure [Pa]dgC D Gas Temperature [degC]≪_eq_関数で、戻値が err: #N/A になる場合≫
case-1) Eu10 > Emax
表範囲外
case-2) Eu11 < 0
Eu20 や Th2 が不定になる為
case-3) Et11 > Et20
Bm1の通過後Eが、Bm2 通過前の全E より大きい
case-5) dEt1 > Et20
Bm1のdEt が、Bm2 通過前の全E より大きい
case-8)
WS1 の Rng( E ) 表の範囲外
case-9)WS2 の Rng( E ) 表の範囲外
case-11)dEpeak search error
case-12) dEu2max < dEu1 解なし
case-14)dE2ixE search error

カテゴリー

戻値型 関数名
引数名

関数の説明
戻値

型 引数の説明

戻値条件

理由など

組合せ関数(2) equivalent E <-> Rng 計算
V,D srEnew
WS
Eu10
Th1

S
D
D

通過前

関数の
引数
戻値

WS名
Bm 通過前 E [MeV/u]
Trg 厚 [μm]●Trg厚 Th[μm] 通過後の Beam E [MeV/u] ; Enew
#NUM! Eu10<=0
Th1<0も許可#N/A -Th >Rmax=0
Eu10=0 | Th1>=Rng(Eu10)=Eu10 Th1=0=srEold(Eu11,Th1) Th1<0
Eold 計算と同等（等価計算式）

通過後

Eold Thick Enew
MeV/u μm MeV/u
WS1 Eu10
Th1
Eu11
引数 引数 引数 戻値

srEnew(WS,Eu10,Th1) {R10= srE2Rng(WS,Eu10)
if((R11= R10 - Th1)<=0) return( 0 )E11u= srRng2E(WS,R11)
return( E11u )}組合せ関数の説明では、参考の為、<等価計算式> を C言語 like に示しました。
VBA エディタで、それぞれの関数スクリプトをご覧になるとわかるように、
この等価計算式と同様な処理＋エラーハンドリング が記述されています。

●

V,D srEold
WS
Eu11
Th1

S
D
D
通過前

WS名
Bm 通過後 E [MeV/u]
Trg 厚 [μm]通過後Eold Thick Enew
MeV/u μm MeV/u
WS1 Eu10
Th1
Eu11
引数 戻値 引数 引数

Trg厚 Th[μm] 通過前の Beam E [MeV/u] ; Eold
#NUM! Eu11<=0 | Th1<0 不許可#N/A E1>=Emax=Eu11 Th1=0=srRng2E(Th1) Th1=0 & E11=0
srEold(WS,Eu11,Th1) {R11= srE2Rng(WS,Eu11)
R10= R11 + Th1
Eu10= srRng2E(WS,R10)
return( Eu10 )}標的のある厚さを 《通過後》 のエネルギー値 《 Enew 》
逆に標的のある厚さを 《通過前》 のエネルギー値 《 Eold 》を計算する関数です。 後述の様にGas標的版 (温度、気圧を指定) もあります。
これらの関数の使用例については、
example ¥ sr_eg_AddIn.xlsx の eg21, eg22 を参照してみてください。

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

14関数一覧(2a)カテゴリー

戻値型 関数名
引数名

関数の説明
戻値

型 引数の説明V,D srRng_eq_Eold
WS1
S
WS2
S
Eu10
D

WS名(1) 比較元
WS名(2) 比較先
Bm1 通過前 E [MeV/u]

●

引数
戻値

計算上の
前提条件
検索条件

V,D srEnew_eq_Th
WS1
S
WS2
S
Eu10
D
Th1
D

Eold
飛程
MeV/u μm
WS1 Eu10 Rng1
引数 引数
WS2 Eu20 Rng2
引数 戻値 =Rng1

Enew [MeV/u] が同等になる Trg2厚 [μm]
#NUM! Eu10<=0 | Th1<0#N/A Th1>=Rng(Eu10) case-2) Eu20不定の為#N/A case-1), -3), -8), -9)=0Th1=0∵ Eu20=Eu10

通過後Eold Thick Enew Enewt
MeV/u μm MeV/u MeV
WS1 Eu10
Th1
Eu11
Et11
引数 引数 引数
WS2 Eu20
Th2
Eu21
Et21
引数 =Eu10 戻値 =Eu11

V,D srEnewt_eq_Th
WS1
S
WS2
S
Eu10
D
Th1
D

2018/10/22(v3.01.03)

Th1
引数
Th2
戻値

srEnew_eq_Th(WS1,WS2,Eu10,Th1) {Eu11= srEnew(WS1,Eu10,Th1)
if(Eu11 <= 0) return( #N/A )Eu20= Eu10
R20= srE2Rng(WS2,Eu20)
Eu21= Eu11
R21= srE2Rng(WS2,Eu21)
Th2= R20 - R21
return( Th2 )}Enewt [MeV] が同等になる Trg2厚 [μm]
#NUM! Eu10<=0 | Th1<0#N/A Th1>=Rng(Eu10) case-2) Eu20不定の為#N/A case-1), -3), -8), -9)=0Th1=0∵ Eu20=Eu10

WS名(1) 比較元
WS名(2) 比較先
Bm1 通過前 E [MeV/u]
Trg1 厚 [μm]WS1 Eu10
引数 引数
WS2 Eu20
引数 =Eu10

Rng [μm] が同等になる Bm2 通過前のE [MeV/u] ; Eold
#NUM! Eu10<=0#N/A case-1), -9)

srRng_eq_Eold(WS1,WS2,Eu10) {R10= srE2Rng(WS1,Eu10)
R20=R10
Eu20= srRng2E(WS2,R20)
return( Eu20 )}WS名(1) 比較元
WS名(2) 比較先
Bm1 通過前 E [MeV/u]
Trg1 厚 [μm]
通過前

理由など

（等価計算式）

通過前

関数の

戻値条件

Eu11

Et11

Eu21

Et21
=Et11

srEnewt_eq_Th(WS1,WS2,Eu10,Th1) {A1= srInfoIonA(WS1)A2= srInfoIonA(WS2)
Eu11= srEnew(WS1,Eu10,Th1)
Et11= Eu11*A1
Eu20= Eu10
if(Et11 > Eu20*A2) return( #N/A )R20= srE2Rng(WS2,Eu20)
Et21= Et11
Eu21= Et21/A2
R21= srE2Rng(WS2,Eu21)
Th2= R20 - R21
return( Th2 )}SRIMfit ユーザーマニアル

15関数一覧(2a)計算例： sr_dbg1_AddIn.xslx : dbg24 シートより
srRng_eq_Eold()
Et10 MeV
40.0
WS(1) sr im40Ar _Si
Et20 MeV
82.7
WS(2) sr im197Au_Al

Ar- 40
Si
Eu10
Rng1
MeV/u
μm
1.0 - >
12.5
Au- 197
Al
Eu20
Rng2 = Rng1
0.42
<12.5

青字
の部分に入力
緑字、茶字 が、マクロ関数の戻り値
エラー
の理由表示
(表中の色分類）
パラメータ
前提条件
求める条件
関数戻り値

検算確認

=srRng_eq_Eold()
srE2Rng()で検算->

0.420 - >12.5

Sample フォルダーにある、デバッグ用シートを開いた例です。
組合せ関数の場合、その使い方や、エラー理由
が難しいので、これらのデバッグシートで確認
してみてください。

srEnew_eq_Th()
Eu11 = 0 不許可。Th2が不定の為。
=maxLET*Th1
maxLET [MeV/μm] @ Eu10 [MeV/u] R(Eu10)μm
max dEu1
max dEt1
21.9
4.06
107.3
5.559
1095.17
Au- 197
Si
Et10 [MeV]
Eu10
Th1
Eu11
Et11
dEu1
dEt1
1970.0
MeV/u
μm
MeV/u
MeV
MeV/u
MeV
WS(1) sr im197Au_Si
10.0 ->
50.0
->
4.687
923.435.313
1046.572
maxLET @ Eu20
R(Eu20)max dEu2
max dEt2
5.0
1.13
114.6
8.718
348.70Et20
Ar- 40Al
400.0 Eu20= Eu10
Th2
Eu21= Eu11
Et21
dEu2=dEu1
dEt2
WS(2) sr im40Ar _Al
10.0 ->
69.82
->
4.687
187.505.313
212.502=srEnew_eq_Th()

4.69E+00=srEnew()で検算

srEnewt_eq_Th()
maxLET [MeV/μm] @ Eu10 [MeV/u] R(Eu10)μm
21.9
4.06
107.3
Au- 197
Si
Et10 MeV
Eu10
Th1
1970.0MeV/u
μm
WS(1) sr im197Au_Si
10.0 - >50.0->
maxLET @ Eu20
R(Eu20)
5.0
1.13
114.6
Et20
Ar- 40Al
400.0 Eu20= Eu10
Th2
WS(2) sr im40Ar _Al
10.0 - >#N/A->=srEnewt_eq_Th()

Eu11 = 0 許可。Th2が一意に定まる為。
max dEu1
5.559
Et11>Et20
Eu11
Et11
dEu1
MeV/u
MeV
MeV/u
4.687
923.435.313
max dEu2#N/A
Eu21#VALUE!

Et21=Et11#VALUE!
#VALUE!
=srEnew()で検算

dEu2#VALUE!

max dEt1
1095.17dEt1
MeV
1046.572
max dEt2#N/A

Th1=50.0um だと、
エラー理由
Case-3) Et11>Et20
により、#N/A を返します。

dEt2#VALUE!

srEnewt_eq_Th()
maxLET [MeV/μm] @ Eu10 [MeV/u] R(Eu10)μm
21.9
4.06
107.3
Au- 197
Si
Et10 MeV
Eu10
Th1
1970.0MeV/u
μm
WS(1) sr im197Au_Si
10.0 - >100.0->
maxLET @ Eu20
R(Eu20)
5.0
1.13
114.6
Et20
Ar- 40Al
400.0 Eu20= Eu10
Th2
WS(2) sr im40Ar _Al
10.0 - >105.14->

Eu11 = 0 許可。Th2が一意に定まる為。
max dEu1
11.118
Eu11
MeV/u
0.160

max dEt1
2190.33

Et11
MeV
31.61

dEu1
MeV/u
9.840
max dEu2
13.128dEt1
MeV
1938.388
max dEt2
525.13Eu21
Et21=Et11
0.790
31.61

dEu2
9.210

dEt2
368.388=srEnewt_eq_Th()

Th1= 100.0um だと、エラー無く、解が求まります。

3.16E+01=srEnew()で検算

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

16

関数の

関数一覧(2a)

計算上の
前提条件
検索条件

引数
戻値
カテゴリー

戻値型 関数名
引数名

型 引数の説明V,D srEnew_eq_Eold
WS1
S
WS2
S
Eu10
D
Th1
D

WS名(1) 比較元
WS名(2) 比較先
Bm1 通過前 E [MeV/u]
Trg1 厚 [μm]

関数の説明
戻値

●

戻値条件

理由など

Enew [MeV/u] が同等になる Bm2 通過前のE [MeV/u] ; Eold
#NUM! Eu10<=0 | Th1<0#N/A Th1>=Rng(Eu10) case-2) Eu20不定の為#N/A case-1), -8), -9)=Eu11 Th1=0∵ Eu20=Eu21=Eu11=Eu10（等価計算式）通過前

srEnew_eq_Eold(WS1,WS2,Eu10,Th1) {Eu11= srEnew(WS1,Eu10,Th1)
if(Eu11 <= 0) return( #N/A )Th2= Th1
Eu21= Eu11
if(Eu21==0) Eu20= srRng2E(WS2,Th2)
else
Eu20= srEold(WS2,Eu21,Th2)
return( Eu20 )}通過後

Eold Thick Enew Enewt
MeV/u μm MeV/u MeV
WS1 Eu10
Th1
Eu11
Et11
引数 引数 引数
WS2 Eu20
Th2
Eu21
Et21
引数 戻値 =Th1 =Eu11

V,D srEnewt_eq_Eold
WS1
S WS名(1) 比較元
WS2
S WS名(2) 比較先Eu10
D Bm1 通過前 E [MeV/u]
Th1
D Trg1 厚 [μm]WS1 Eu10
引数 引数
WS2 Eu20
引数 戻値

Th1
引数
Th2
=Th1

2018/10/22(v3.01.03)

Eu11

Et11

Eu21

Et21
=Et11

●

Enewt [MeV] が同等になる Bm2 通過前のE [MeV/u] ; Eold
#NUM! Eu10<=0 | Th1<0#N/A Th1>=Rng(Eu10) case-2) Eu20不定の為#N/A case-1), -8), -9)=Eu11 Th1=0∵ Eu20=Eu21=Eu11=Eu10
srEnewt_eq_Eold(WS1,WS2,Eu10,Th1) {A1= srInfoIonA(WS1)A2= srInfoIonA(WS2)
Eu11= srEnew(WS1,Eu10,Th1)
Et11= Eu11*A1
Th2= Th1
Et21= Et11
if(Et21==0) Eu20= srRng2E(WS2,Th2)
else
Eu20= srEold(WS2,Eu21,Th2)
return( Eu20 )}SRIMfit ユーザーマニアル

17

関数の

関数一覧(2a)

計算上の
前提条件
検索条件

引数
戻値
カテゴリー

戻値型 関数名
引数名

V,D srDEu_eq_Th
S
S
D
D

WS1
WS2
Eu10
Th1

関数の説明
戻値

型 引数の説明
この関数は srEnew_eq_Th() と同等
WS名(1) 比較元
WS名(2) 比較先
Bm1 通過前 E [MeV/u]
Trg1 厚 [μm]

戻値条件

理由など

dEu [MeV/u] が同等になる Trg2厚 [μm]
#NUM! Eu10<=0 | Th1<0#N/A Th1>=Rng(Eu10) case-2) Eu20不定の為#N/A case-1), -3), -8), -9)=0Th1=0∵ Eu20=Eu10（等価計算式）

通過前

通過後

エネルギー損失

Eold Thick Enew Enewt dEu
dEt
MeV/u μm MeV/u MeV MeV/u MeV
WS1 Eu10
Th1
Eu11
Et11 dEu1 dEt1
引数 引数 引数
WS2 Eu20
Th2
Eu21
Et21 dEu2 dEt2
引数 =Eu10 戻値 =Eu11=dEu1

V,D srDEt_eq_Th
S
S
D
D

WS1
WS2
Eu10
Th1
WS1 Eu10
引数 引数
WS2 Eu20
引数 =Eu10

Th1
引数
Th2
戻値

2018/10/22(v3.01.03)

WS名(1) 比較元
WS名(2) 比較先
Bm1 通過前 E [MeV/u]
Trg1 厚 [μm]Eu11

Et11 dEu1

dEt1

Eu21

Et21 dEu2

dEt2
=dEt1

srDEu_eq_Th(WS1,WS2,Eu10,Th1) {Th2= srEnew_eq_Th(WS1,WS2,Eu10,Th1)
return( Th2 )}∵ Eu20=Eu10∴ dEu1=(Eu10-Eu11)=dEu2=(Eu10-Eu21)∴ Eu21=Eu11∴ ｓｒEnew_eq_Th()と同等● dEt [MeV] が同等になる Trg2厚 [μm]
#NUM!
#N/A
#N/A
=Eu11

Eu10<=0 | Th1<0
Th1>=Rng(Eu10) case-2) Eu20不定の為
case-1), -5), -8), -9)
Th1=0∵ Eu20=Eu10

srDEt_eq_Th(WS1,WS2,Eu10,Th1) {A1= srInfoIonA(WS1)A2= srInfoIonA(WS2)
Eu11= srEnew(WS1,Eu10,Th1)
dEt1= (Eu10-Eu11)*A1
Eu20= Eu10
R20= srE2Rng(WS2,Eu20)
dEt2= dEt1
dEu2= dEt2/A2
Eu21= Eu20 - dEu2
R21= srE2Rng(WS2,Eu21)
Th2= R20 - R21
return( Th2 )}SRIMfit ユーザーマニアル

18関数一覧(2a)計算例： sr_dbg1_AddIn.xslx : dbg24 シートより

青字の部分に入力
緑字、茶字 が、マクロ関数の戻り値
エラー
の理由表示

srEnew_eq_Eold()
maxLET [MeV/μm] @ Eu10 [MeV/u] R(Eu10)μm
84.1
9.14
30.4
Au- 197
Au
Et10 MeV
Eu10
Th1
1970.0MeV/u
μm
WS(1) sr im1 9 7 Au _Au
1 0 .0 - >5 .0->
maxLET @ Eu20
R(Eu20)
5.0
1.13
88.5
Et20 MeV
Ar- 40Al
329.2
Eu 2 0Th2=Th1
WS(2) sr im4 0 Ar _Al
8 .2 3->5.0->=srEnew_eq_Eold()

Eu11 = 0 不許可。Th2が不定の為。
max dEu1
2.133

max dEt1
420.27

Eu11
MeV/u
7.866

Et11
MeV
1549.54

dEu1
MeV/u
2.134
max dEu2
0.624

dEt1
MeV
420.458
max dEt2
24.97

Eu21=Eu11

Et21
314.63

dEu2
0.364

dEt2
14.551

7.866
7.87E+00=srEnew()で検算

srEnewt_eq_Eold()
maxLET [MeV/μm] @ Eu10 [MeV/u] R(Eu10)μm
5.0
1.13
114.6
Ar- 40Al
Et10 MeV
Eu10
Th1
400.0
MeV/u
μm
WS(1) sr im4 0 Ar _Al
1 0 .0 - >5 .0->
maxLET @ Eu20
R(Eu20)
84.1
9.14
15.7
Et20 MeV
Au- 197Au
758.3
Eu 2 0Th2=Th1
WS(2) sr im1 9 7 Au _Au
3 .8 5->5.0->

Eu11 = 0 許可。Th2が一意に定まる為。
max dEu1
0.624
Eu11
MeV/u
9.673

max dEt1
24.97

Et11
MeV
386.91

dEu1
MeV/u
0.327
max dEu2
2.133

dEt1
MeV
13.089max dEt2
420.27Eu21
Et21=Et11
1.964
386.91

dEu2
1.885

dEt2
371.392

max dEu1
8.533

max dEt1
1681.09

dEu1
MeV/u
8.145
max dEu2
11.913dEt1
MeV
1604.572
max dEt2
476.51

Et21
dEu2=dEu1
74.20
8.145

dEt2
325.801=srEnewt_eq_Eold()(表中の色分類）
パラメータ
前提条件
求める条件
関数戻り値

検算確認

Enew_eq_ とEnewt_eq_ の違いをご確認ください。

3.87E+02=srEnew()で検算

srDEu_eq_Th() srEnew_eq_Th() と同一関数。
maxLET [MeV/μm] @ Eu10 [MeV/u] R(Eu10)μm
84.1
9.14
30.4
Au- 197
Au
Et10 MeV
Eu10
Th1
1970.0MeV/u
μm
WS(1) sr im1 9 7 Au _Au
1 0 .0 - >2 0 .0->maxLET @ Eu20
R(Eu20)
4.3
1.13
130.5
Et20 MeV
Ar- 40Si
400.0 Eu20= Eu10
Th 2
WS(2) sr im4 0 Ar _Si
10.0 - >1 0 9 .9 8
->

Eu11
MeV/u
1.855

Et11
MeV
365.43

Eu21=Eu11
1.855=srDEu_eq_Th()

8.15E+00=srEnew()で検算同じビーム・厚さ条件でも、
DE_eq_ とDEt_eq_ では
エラーになる場合が異なります。

srDEｔ_eq_Th()
maxLET [MeV/μm] @ Eu10 [MeV/u] R(Eu10)μm
84.1
9.14
30.4
Au- 197
Au
Et10 MeV
Eu10
Th1
1970.0MeV/u
μm
WS(1) sr im1 9 7 Au _Au
1 0 .0 - >2 0 .0->maxLET @ Eu20
R(Eu20)
4.3
1.13
130.5
Et20 MeV
Ar- 40Si
400.0 Eu20= Eu10
Th 2
WS(2) sr im4 0 Ar _Si
10.0 - ># N/ A->max dEu1
8.533
Eu11
MeV/u
1.855

Eu21
#VALUE!

Et11
MeV
365.43

Et21#VALUE!

max dEt1
1681.09
dEt1 > Et2 0
dEu1
dEt1
MeV/u
MeV
8.145
1604.572
max dEu2
max dEt2
#N/A
#N/A
dEu2
#VALUE!

=srDEt_eq_Th()

dEt2=dEt1#VALUE!
#VALUE!

この場合、WS1側のdEt1 は、WS2側では、前提条件 Eu20=Eu10の為に、その入射エネルギーEt20
より大きくなり、(dEt1 > Et20 )
計算不能のエラーになります。

=srEnew()で検算

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

19

関数の

関数一覧(2a)

計算上の
前提条件
検索条件

引数
戻値
カテゴリー

戻値型 関数名
引数名

V,D srDEu_eq_Eold
WS1
S
WS2
S
Eu10
D
Th1
D
Ehl
通過前

関数の説明
戻値

型 引数の説明

I

戻値条件

理由など

dEu [MeV/u] が同等になる Bm2 通過前のE [MeV/u] ; Eold
WS名(1) 比較元#NUM! Eu10<=0 | Th1<0
WS名(2) 比較先
Th1>=Rng(Eu10) でも算出可能
Bm1 通過前 E [MeV/u]#N/A case-1), -8), -11), -12), -14)
Trg1 厚 [μm]注）戻値Eu20には誤差約数%あり。
検索方向 ={+1|-1} ={Ehigh|Elow}側かE vs. Rng でなく E vs. dE の直線補間の為。
ら検索（等価計算式）

通過後エネルギー損失

この関数の場合、単純な Rng(E) table search では解が求まらないので、随時 E vs dE 計算を行って解を探している。

Eold Thick Enew Enewt dEu
dEt
MeV/u μm MeV/u MeV MeV/u MeV
WS1 Eu10
Th1
Eu11
Et11 dEu1 dEt1
引数 引数 引数
WS2 Eu20
Th2
Eu21
Et21 dEu2 dEt2
引数 戻値 =Th1
=dEu1

srDEu_eq_Eold(WS1,WS2,Eu10,Th1) {Eu11= srEnew(WS1,Eu10,Th1)
dEu1= Eu10-Eu11
Th2= Th1
Eu20stop= srRng2E(WS2,Th2)~ sr_dEfpk(-1) : find dEu2 peak from Emax side ~~ -> then get dEu2pk & EdEu2pk ~if( dEu2pk > Eu20stop) {dEu2max= dEu2pk; EdEu2max= EdEu2pk}else{ dEu2max= EdEu2max= Eu20stop }if(dEu2max < dEu1) return( N/A ) : No Answer
if(dEu2max = dEu1) : Only One Answer
return( Eu20= EdEu2max )dEu2= dEu1
~ sr_dE2ixE() : find dEu2 for all Eu20 ~~ calculating Eu20 -> dEu2= Eu20 - Enew(Eu20,Th2) ~~ sr_dE2ip() : interpolation at found dEu2 ~~ using the calculated E vs dE=E-Enew() table ~Eu20 = interpolated value at found dEu2
return( Eu20 )}計算例： sr_dbg1_AddIn.xslx : dbg30 シートより
Elow 側の解 Eu20= 1.208 MeV/u ×印
Ehigh 側の解 Eu20= 6.839 MeV/u ×印
Dbg：組合せ関数系(３a) まとめ
sr*_eq_*() 関数のうちE<->Range の加減則で計算できないのでTable search している関数
notation: Et = Total Energy[MeV]
Eu = Energy per unit mass [MeV/u]

srDE{u|t}_eq_Eold()

青字の部分に入力
緑字、茶字 が、マクロ関数の戻り値
Er r /War n 等、メッセージ表示
計算条件判断 をしている箇所

検算確認
E2R(Eu10)μm
3.00

maxLET [MeV/μm] @Eu10

R2E(Th1)MeV/u
1.16
5.00
Ar- 40Au
Et10 MeV
Eu10
Th1
20.0
MeV/u
μm
WS(1) srim40Ar_Au
0.50 ->
5.00
maxLET [MeV/μm] @Eu20
R2E(Th2) = E20stop
9.5 @ Eu20=2.14
5.00
0.157
Et20 MeV
Kr- 84Si
574.4 Eu20_H
Th2=Th1
WS(2) srim84Kr_Si
6.839 ->
5.00
srDEu_eq_Eold(H,L)=
Eu20_LTh2=Th11.208 ->
5.00
14.1 @ Eu10=1.50

2018/10/22(v3.01.03)(表中の色分類）
パラメータ <- dbg31,32 で参照する
前提条件
求める条件
関数戻り値

->

->
->

just stop
0.00
Stopped
Eu11
MeV/u
0.000
just stop
0.000

0.00

stop dEu1
1.163

stop dEt1
46.53

dEu1
MeV/u

dEt1
MeV

Et11
MeV
0.00

0.500

20.000stop dEu2
0.157

stop dEt2
13.21

Et21
dEu2=dEu1
532.550.499
Et21
dEu2=dEu1
59.46
0.501

dEt2
41.893dEt2
42.0430.00

この関数の戻り値には- 数％程度の誤差が生じることがあります
誤差

->
->

Eu21
6.340
Eu21
0.708

SRIMfit ユーザーマニアル

dEu2/dEu1

0.997
dEu2/dEu1

1.001

20

関数の

引数
戻値

関数一覧(2a)

計算上の
前提条件
検索条件

カテゴリー

戻値型 関数名
引数名

通過前

戻値条件

理由など

● dEt [MeV] が同等になる Bm2 通過前のE [MeV/u] ; Eold
WS名(1) 比較元#NUM! Eu10<=0 | Th1<0
WS名(2) 比較先
Th1>=Rng(Eu10) でも算出可能
Bm1 通過前 E [MeV/u]#N/A case-1), -8), -11), -12), -14)
Trg1 厚 [μm]注）戻値Eu20には誤差約数%あり。
検索方向 ={+1|-1} ={Ehigh|Elow}側かE vs. Rng でなく E vs. dE の直線補間の為。
ら検索

V,D srDEt_eq_Eold
WS1
S
WS2
S
Eu10
D
Th1
D
Ehl

関数の説明
戻値

型 引数の説明I

通過後（等価計算式）
この関数の場合、単純な Rng(E) table search では解が求まらないので、随時 E vs dE 計算を行って解を探している。

エネルギー損失

Eold Thick Enew Enewt dEu
dEt
MeV/u μm MeV/u MeV MeV/u MeV
WS1 Eu10
Th1
Eu11
Et11 dEu1 dEt1
引数 引数 引数
WS2 Eu20
Th2
Eu21
Et21 dEu2 dEt2
引数 戻値 =Th1
=dEt1

srDEt_eq_Eold(WS1,WS2,Eu10,Th1) {A1= srInfoIonA(WS1)A2= srInfoIonA(WS2)
Eu11= srEnew(WS1,Eu10,Th1)
dEt1= (Eu10-Eu11)*A1
Th2= Th1
Eu20stop= srRng2E(WS2,Th2)~ sr_dEfpk(-1) : find dEu2 peak from Emax side ~~ -> then get dEu2pk & EdEu2pk ~if( dEu2pk > Eu20stop) {dEu2max= dEu2pk; EdEu2max= EdEu2pk}else{ dEu2max= EdEu2max= Eu20stop }dEt2max= dEu2max*A2
if(dEt2max < dEt1) return( N/A ) : No Answer
if(dEt2max = dEt1) : Only One Answer
return( Eu20= EdEu2max )dEt2= dEt1
dEu2= dEt2 / A2
~ sr_dE2ixE() : find dEu2 for all Eu20 ~~ calculating Eu20 -> dEu2= Eu20 - Enew(Eu20,Th2) ~~ sr_dE2ip() : interpolation at found dEu2 ~~ using the calculated E vs dE=E-Enew() table ~Eu20 = interpolated value at found dEu2
return( Et20 = Eu20*A2 )}計算例： sr_dbg1_AddIn.xslx : dbg30 シートより
Elow 側の解 Eu20= 0.285 MeV/u ×印
Ehigh 側の解 Eu20= 30.282 MeV/u ×印
srDE{u|t}_eq_Eold()

E2R(Eu10)μm
3 .0 0maxLET [MeV/μm] @Eu10

R2E(Th1)MeV/u
1 .1 6
5.00
Ar- 40Au
Et10 MeV
Eu10
Th1
20.0
MeV/u
μm
WS(1) srim40Ar_Au
0.50 - >5.00
maxLET [MeV/μm] @Eu20
R2E(Th2) = E20stop
9.5 @ Eu20=2.14
5.00
0.157
Et20 MeV
Kr- 84Si
574.4 Eu 2 0 _H
Th2=Th1
WS(2) srim84Kr_Si
6 .8 3 9 - >5.00
srDEu_eq_Eold(H,L)=
Eu 2 0 _L
Th2=Th1
1 .2 0 8 - >5.00
Eu 2 0 _H
Th2=Th1
srDEt_eq_Eold(H,L)=
3 0 .2 8 2 - >5.00
Eu 2 0 _L
Th2=Th1
0 .2 8 5 - >5.00
14.1 @ Eu10=1.50

->

->
->

just stop
0.00
Stoppe d
Eu11
MeV/u
0.000
just stop
0.000

0.00
Et11
MeV
0.00

stop dEu1
1.163

stop dEt1
46.53

dEu1
MeV/u

dEt1
MeV

0.500

20.000stop dEu2
0 .1 5 7

stop dEt2
1 3 .2 1

Et21
dEu2=dEu1
532.550.499
Et21
dEu2=dEu1
59.46
0.501
Et21
dEu2
2524.72
0.226
Et21
dEu2
3.91
0.238

dEt2
41.893dEt2
42.043dEt2=dEt1

0.00

この関数の戻り値には- 数％程度の誤差が生じることがあります
誤差

->
->
->
->

Eu21
6.340
Eu21
0.708
Eu21
30.056Eu21
0.047

dEu2/dEu1

0.997
dEu2/dEu1

1.001
dEt2/dEt1

19.0090.950

dEt2=dEt1

dEt2/dEt1

20.0091.000

前頁と同じパラメータの計算で、srDEu_eq_ と DEt_eq_ を比較しています。

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

21関数一覧(2b)SRIMfit の 関数一覧 (2b) 組合せ関数Gas用≪変数名 表記≫Tmm D Thickness [mm]
Pa D Gas Pressure [Pa]dgC D Gas Temperature [degC]
その他は _eq_() 関数と同じ。

≪_eq_関数で、戻値が err: #N/A になる場合≫#NUM! WS<>Gas
WSがGasTrgでない
その他は _eq_() 関数と同じ。

Gas用関数の場合、厚さ Th は [mm] 単位で指定 します。
更に、それぞれの気体の 気温 [degC] と 気圧 [Pa] も指定 してください。
それ以外は、Gas 用でない関数と、計算方法・結果は同じです。

組合せ関数(2) equivalent E <-> Rng 計算● GasTrg厚 Th[mm] 通過後の Beam E [MeV/u] ; Enew

V,D srEnewGas
WS
Eu10
Tmm1
Pa1
dgC1

S
D
D
D
D

WS(Gas)名Bm 通過前 E [MeV/u]
GasTrg 厚 [mm]GasTrg 気圧 [Pa]GasTrg 気温 [℃]#NUM! WS<>Gas
WSがGasTrgでない#NUM! Eu10<=0
Th1<0も許可#N/A -Th >Rmax=0
Eu10=0 | Th1>=Rng(Eu10)=Eu10 Th1=0=srEold(Eu11,Th1) Th1<0
Eold 計算と同等（等価計算式）

通過前

関数の

引数
戻値

通過後

Eold
Thick
MeV/u
mm
WS1 Eu10 Tmm1
引数 引数
引数

V,D srEoldGas
WS
Eu11
Tmm1
Pa1
dgC1

Pa
Pa1
引数

℃
dgC1
引数

● GasTrg厚 Th[mm] 通過前の Beam E [MeV/u] ; Eold
WS(Gas)名#NUM! WS<>Gas
WSがGasTrgでない
Bm 通過後 E [MeV/u]#NUM! Eu11<=0 | Th1<0 不許可
GasTrg 厚 [mm]#N/A E1>=Emax
GasTrg 気圧 [Pa]=Eu11 Th1=0
GasTrg 気温 [℃]=srRng2E(Th1*srThkStd(Pa1,dgC1)) Th1=0 & E11=0

S
D
D
D
D

通過前

Eold
MeV/u
WS1 Eu10
引数 戻値

Enew
MeV/u
Eu11
戻値

srEnewGas(WS,Eu10,Tmm1,Pa1,dgC1) {Th1= Tmm1 * 1000 * srThkStd(WS,Pa,dgC)
R10= srE2Rng(WS,Eu10)
if((R11= R10 - Th1)<=0) return( 0 )E11u= srRng2E(WS,R11)
return( E11u )
}

通過後

Thick
mm
Th1
引数

2018/10/22(v3.01.03)

Pa
Pa1
引数

℃
dgC1
引数

Enew
MeV/u
Eu11
引数

srEoldGas(WS,Eu10,Tmm1,Pa1,dgC1) {Th1= Tmm1 * 1000 * srThkStd(WS,Pa,dgC)
R11= srE2Rng(WS,Eu11)
R10= R11 + Th1
Eu10= srRng2E(WS,R10)
return( Eu10 )}SRIMfit ユーザーマニアル

22

関数の

関数一覧(2b)

計算上の
前提条件
検索条件

引数
戻値
カテゴリー

戻値型 関数名
引数名

関数の説明
戻値

型 引数の説明

戻値条件

理由など

V,D srRng_eq_Eold の Gas版はありません。 Rng[um] を [mm] に変換してください。
V,D srEnew_eq_ThGasWS1
S WS(Gas)名(1) 比較元WS2
S WS(Gas)名(2) 比較先Eu10
D Bm1 通過前 E [MeV/u]
Tmm1
D GasTrg1 厚 [mm]Pa1
D GasTrg1 気圧 [Pa]dgC1
D GasTrg1 気温 [℃]
Pa2
D GasTrg2 気圧 [Pa]dgC2
D GasTrg2 気温 [℃]
通過前

Eold
MeV/u
WS1 Eu10
引数 引数
WS2 Eu20
引数 =Eu10

Enew [MeV/u] が同等になる GasTrg2厚 [mm]#NUM! WS1,WS2<>Gas WS1,2がGasTrgでない#NUM! Eu10<=0 | Th1<0#N/A Th1>=Rng(Eu10) case-2) Eu20不定の為#N/A case-1), -3), -8), -9)=0Th1=0∵ Eu20=Eu10（等価計算式）

通過後

Thick
mm
Th1
引数
Th2
戻値

Pa
Pa1
引数
Pa2
引数

℃
dgC1
引数
dgC2
引数

Enew Enewt
MeV/u MeV
Eu11
Et11
Eu21
=Eu11

Et21

V,D srEnewt_eq_ThGasWS1
S WS(Gas)名(1) 比較元WS2
S WS(Gas)名(2) 比較先Eu10
D Bm1 通過前 E [MeV/u]
Tmm1
D GasTrg1 厚 [mm]Pa1
D GasTrg1 気圧 [Pa]dgC1
D GasTrg1 気温 [℃]
Pa2
D GasTrg2 気圧 [Pa]dgC2
D GasTrg2 気温 [℃]
WS1 Eu10
引数 引数
WS2 Eu20
引数 =Eu10

Th1
引数
Th2
戻値

2018/10/22(v3.01.03)

Pa1
引数
Pa2
引数

dgC1
引数
dgC2
引数

srEnew_eq_ThGas(WS1,WS2,Eu10,Tmm1,
Pa1,dgC1,Pa2,dgC2) {Th1= Tmm1 * 1000 * srThkStd(WS1,Pa1,dgC1)
Eu11= srEnew(WS1,Eu10,Th1)
if(Eu11 <= 0) return( #N/A )Eu20= Eu10
R20= srE2Rng(WS2,Eu20)
Eu21= Eu11
R21= srE2Rng(WS2,Eu21)
Th2= R20 - R21
Tmm2= Th2 / (1000 * srThkStd(WS2,Pa2,dgC2)）
return( Tmm2 )}Enewt [MeV] が同等になる GasTrg2厚 [mm]#NUM! WS1,WS2<>Gas WS1,2がGasTrgでない#NUM! Eu10<=0 | Th1<0#N/A Th1>=Rng(Eu10) case-2) Eu20不定の為#N/A case-1), -3), -8), -9)=0Th1=0∵ Eu20=Eu10

Eu11

Et11

Eu21

Et21
=Et11

srEnewt_eq_ThGas(WS1,WS2,Eu10,Tmm1,
Pa1,dgC1,Pa2,dgC2) {A1= srInfoIonA(WS1)A2= srInfoIonA(WS2)
Th1= Tmm1 * 1000 * srThkStd(WS1,Pa1,dgC1)
Eu11= srEnew(WS1,Eu10,Th1)
Et11= Eu11*A1
Eu20= Eu10
if(Et11 > Eu20*A2) return( #N/A )R20= srE2Rng(WS2,Eu20)
Et21= Et11
Eu21= Et21/A2
R21= srE2Rng(WS2,Eu21)
Th2= R20 - R21
Tmm2= Th2 / (1000 * srThkStd(WS2,Pa2,dgC2)）
return( Tmm2 )}SRIMfit ユーザーマニアル

23関数一覧(2b)計算例： sr_dbg1_AddIn.xslx : dbg25 シートより
Gas用 関数の計算例を示します。
厚さ Th は [mm] 単位で指定します。
更に、それぞれの気体の 気温 [degC] と 気圧 [Pa] も指定してください。
それ以外は、Gas 用でない関数と、計算方法・結果は同じです。

Dbg：組合せ関数系(2G)

青字の部分に入力sr*_eq_*() 関数の使い方と検算
緑字、茶字 が、マクロ関数の戻り値
ビーム違い、ターゲット材違いでも計算可
エラー
の理由表示
notation: Et = Total Energy[MeV] Eu = Energy per unit mass [MeV/u](表中の色分類）
パラメータ
前提条件
求める条件
関数戻り値

検算確認

SRIMの標準大気圧

srInfoTrgPtbl() srInfoTrgTtbl()
WS1
WS2

srEnew_eq_ThGas() ⊿Eが同じになる
Target(2) の厚さ[μm] を返します。
maxLET [MeV/mm] @ Eu10 [MeV/u] R(Eu10)mm
9.4
3.41
27.3
Xe- 132
Air
IsGas? =Et10 MeV
Eu10
Th1
Pa1
132.0
MeV/u
mm
Pa
WS(1) sr im1 3 2 Xe _Air
1 .0 - >2 6 .01 0 1 3 2 5 .0
maxLET @ Eu20
R(Eu20)
3.0
0.69
19.0
Et20 MeV
Ar- 40Air
IsGas? =40.0 Eu20= Eu10
Th 2
Pa2
WS(2) sr im4 0 Ar _Air
1.0 - >
1 7 .9 2
1 0 1 3 2 5 .0

TRUE
degC1
℃
2 0 .0

->

TRUE
degC2
2 0 .0

->

Eu11
MeV/u
0.015

Eu21= Eu11

=srEnew_eq_ThGas()

Pa0
degC0
10132520.0
1.0000 =srThkStd()
10132520.0
1.0000=maxLET*Th1
max dEu1
max dEt1
1.849
244.10

Et11
MeV
1.92

dEu1
MeV/u
0.985
max dEu2
1.357

dEt1
MeV
130.083
max dEt2
54.29

Et21

dEu2=dEu1
0.985

dEt2
39.419max dEu1
1.849

max dEt1
244.10

Et11
MeV
1.92

dEu1
MeV/u
0.985
max dEu2
1.208

dEt1
MeV
130.083
max dEt2
48.33

dEu2
0.952

dEt2
38.0830.015
0.58
1.45E-02=srEnewGas()で検算

srEnewt_eq_ThGas()
maxLET [MeV/mm] @ Eu10 [MeV/u] R(Eu10)mm
9.4
3.41
27.3
Xe- 132
Air
Et10 MeV
Eu10
Th1
132.0
MeV/u
mm
WS(1) sr im1 3 2 Xe _Air
1 .0 - >2 6 .0maxLET @ Eu20
R(Eu20)
3.0
0.69
19.0
Et20 MeV
Ar- 40Air
40.0 Eu20= Eu10
Th 2
WS(2) sr im4 0 Ar _Air
1.0 - >
1 5 .9 6

IsGas? =Pa1
Pa
1 0 1 3 2 5 .0

IsGas? =Pa2
1 0 1 3 2 5 .0

=srEnewt_eq_ThGas()

2018/10/22(v3.01.03)

TRUE
degC1
℃
2 0 .0

->

Eu11
MeV/u
0.015

TRUE
degC2
2 0 .0->Eu21
Et21=Et11
0.048
1.92

1.92E+00=srEnewGas()で検算

SRIMfit ユーザーマニアル

24関数一覧(2b)カテゴリー

戻値型 関数名
引数名

関数の説明
戻値

型 引数の説明V,D srEnew_eq_EoldGas
WS1
S WS(Gas)名(1) 比較元WS2
S WS(Gas)名(2) 比較先Eu10
D Bm1 通過前 E [MeV/u]
Tmm1
D GasTrg1 厚 [mm]Pa1
D GasTrg1 気圧 [Pa]dgC1
D GasTrg1 気温 [℃]
Pa2
D GasTrg2 気圧 [Pa]dgC2
D GasTrg2 気温 [℃]
通過前

Eold
MeV/u
WS1 Eu10
引数 引数
WS2 Eu20
引数 戻値

Pa
Pa1
引数
Pa2
引数

℃
dgC1
引数
dgC2
引数

（等価計算式）

Enew Enewt
MeV/u MeV
Eu11
Et11
Eu21
=Eu11

Et21

V,D srEnewt_eq_EoldGas
WS1
S WS(Gas)名(1) 比較元WS2
S WS(Gas)名(2) 比較先Eu10
D Bm1 通過前 E [MeV/u]
Tmm1
D GasTrg1 厚 [mm]Pa1
D GasTrg1 気圧 [Pa]dgC1
D GasTrg1 気温 [℃]
Pa2
D GasTrg2 気圧 [Pa]dgC2
D GasTrg2 気温 [℃]
WS1
引数
WS2
引数

Eu10
引数
Eu20
戻値

Th1
引数
Th2
=Th1

2018/10/22(v3.01.03)

Pa1
引数
Pa2
引数

dgC1
引数
dgC2
引数

理由など

Enew [MeV/u] が同等になる Bm2 通過前のE [MeV/u] ; Eold
#NUM! WS1,WS2<>Gas WS1,2がGasTrgでない#NUM! Eu10<=0 | Th1<0#N/A Th1>=Rng(Eu10) case-2) Eu20不定の為#N/A case-1), -8), -9)=Eu11 Th1=0∵ Eu20=Eu21=Eu11=Eu10

通過後

Thick
mm
Th1
引数
Th2
=Th1

戻値条件

srEnew_eq_EoldGas(WS1,WS2,Eu10,Tmm1,
Pa1,dgC1,Pa2,dgC2) {Th1= Tmm1 * 1000 * srThkStd(WS1,Pa1,dgC1)
Eu11= srEnew(WS1,Eu10,Th1)
if(Eu11 <= 0) return( #N/A )Th2= Tmm1* 1000 * srThkStd(WS2,Pa2,dgC2)
Eu21= Eu11
if(Eu21==0) Eu20= srRng2E(WS2,Th2)
else
Eu20= srEold(WS2,Eu21,Th2)
return( Eu20 )}Enewt [MeV] が同等になる Bm2 通過前のE [MeV/u] ; Eold
#NUM! WS1,WS2<>Gas WS1,2がGasTrgでない#NUM! Eu10<=0 | Th1<0#N/A Th1>=Rng(Eu10) case-2) Eu20不定の為#N/A case-1), -8), -9)=Eu11 Th1=0∵ Eu20=Eu21=Eu11=Eu10

Eu11

Et11

Eu21

Et21
=Et11

srEnewt_eq_EoldGas(WS1,WS2,Eu10,Tmm1,
Pa1,dgC1,Pa2,dgC2) {A1= srInfoIonA(WS1)A2= srInfoIonA(WS2)
Th1= Tmm1 * 1000 * srThkStd(WS1,Pa1,dgC1)
Eu11= srEnew(WS1,Eu10,Th1)
Et11= Eu11*A1
Th2= Tmm1* 1000 * srThkStd(WS2,Pa2,dgC2)
Et21= Et11
if(Et21==0) Eu20= srRng2E(WS2,Th2)
else
Eu20= srEold(WS2,Eu21,Th2)
return( Eu20 )}SRIMfit ユーザーマニアル

25関数一覧(2b)カテゴリー

戻値型 関数名
引数名

関数の説明
戻値

型 引数の説明V,D srDEu_eq_ThGas この関数は srEnew_eq_Th() と同等
WS1
S WS(Gas)名(1) 比較元WS2
S WS(Gas)名(2) 比較先Eu10
D Bm1 通過前 E [MeV/u]
Tmm1
D GasTrg1 厚 [mm]Pa1
D GasTrg1 気圧 [Pa]dgC1
D GasTrg1 気温 [℃]
Pa2
D GasTrg2 気圧 [Pa]dgC2
D GasTrg2 気温 [℃]
通過前

Eold
MeV/u
WS1 Eu10
引数 引数
WS2 Eu20
引数 =Eu10

通過後

Thick
mm
Th1
引数
Th2
戻値

Pa
Pa1
引数
Pa2
引数

℃
dgC1
引数
dgC2
引数

dEt
MeV
dEt1

Eu21
=Eu11

dEt2

V,D srDEt_eq_ThGasWS1
S WS(Gas)名(1) 比較元WS2
S WS(Gas)名(2) 比較先Eu10
D Bm1 通過前 E [MeV/u]
Tmm1
D GasTrg1 厚 [mm]Pa1
D GasTrg1 気圧 [Pa]dgC1
D GasTrg1 気温 [℃]
Pa2
D GasTrg2 気圧 [Pa]dgC2
D GasTrg2 気温 [℃]
WS1 Eu10
引数 引数
WS2 Eu20
引数 =Eu10

Th1
引数
Th2
戻値

Pa1
引数
Pa2
引数

2018/10/22(v3.01.03)

dgC1
引数
dgC2
引数

（等価計算式）

Enew Enewt
dEu
MeV/u MeV MeV/u
Eu11
Et11
dEu1
dEu2
=dEu1

理由など

dEu [MeV/u] が同等になる GasTrg2厚 [mm]#NUM! WS1,WS2<>Gas WS1,2がGasTrgでない#NUM! Eu10<=0 | Th1<0#N/A Th1>=Rng(Eu10) case-2) Eu20不定の為#N/A case-1), -3), -8), -9)=0Th1=0∵ Eu20=Eu10

エネルギー損失

Et21

戻値条件

srDEu_eq_ThGas(WS1,WS2,Eu10,Tmm1,
Pa1,dgC1,Pa2,dgC2) {Th2= srEnew_eq_ThGas(WS1,WS2,Eu10,Tmm1,
Pa1,dgC1,Pa2,dgC2) {return( Th2 )}∵ Eu20=Eu10∴ dEu1=(Eu10-Eu11)=dEu2=(Eu10-Eu21)∴ Eu21=Eu11∴ ｓｒEnew_eq_Th()と同等

dEt [MeV] が同等になる GasTrg2厚 [mm]#NUM! WS1,WS2<>Gas WS1,2がGasTrgでない#NUM! Eu10<=0 | Th1<0#N/A Th1>=Rng(Eu10) case-2) Eu20不定の為#N/A case-1), -5), -8), -9)=Eu11 Th1=0∵ Eu20=Eu10

Eu11

Et11

dEu1

dEt1

Eu21

Et21

dEu2

dEt2
=dEt1

srDEt_eq_ThGas(WS1,WS2,Eu10,Tmm1,
Pa1,dgC1,Pa2,dgC2) {A1= srInfoIonA(WS1)A2= srInfoIonA(WS2)
Th1= Tmm1 * 1000 * srThkStd(WS1,Pa1,dgC1)
Eu11= srEnew(WS1,Eu10,Th1)
dEt1= (Eu10-Eu11)*A1
Eu20= Eu10
R20= srE2Rng(WS2,Eu20)
dEt2= dEt1
dEu2= dEt2/A2
Eu21= Eu20 - dEu2
R21= srE2Rng(WS2,Eu21)
Th2= R20 - R21
Tmm2= Th2 / (1000 * srThkStd(WS2,Pa2,dgC2)）
return( Tmm2 )}SRIMfit ユーザーマニアル

26関数一覧(2b)カテゴリー

戻値型 関数名
引数名

関数の説明
戻値

型 引数の説明V,D srDEu_eq_EoldGas
WS1
S WS(Gas)名(1) 比較元WS2
S WS(Gas)名(2) 比較先Eu10
D Bm1 通過前 E [MeV/u]
Tmm1
D GasTrg1 厚 [mm]
Ehl

I

Pa1
dgC1
Pa2
dgC2

D
D
D
D

通過後

Thick
mm
Th1
引数
Th2
=Th1

理由など

dEu [MeV/u] が同等になる Bm2 通過前のE [MeV/u] ; Eold
#NUM! WS1,WS2<>Gas WS1,2がGasTrgでない#NUM! Eu10<=0 | Th1<0
Th1>=Rng(Eu10) でも算出可能#N/A case-1), -8), -11), -12), -14)

検索方向 ={+1|-1} ={Ehigh|Elow}側か注）戻値Eu20には誤差約数%あり。
ら検索
GasTrg1 気圧 [Pa]E vs. Rng でなく E vs. dE の直線補間の為。
GasTrg1 気温 [℃]
GasTrg2 気圧 [Pa]GasTrg2 気温 [℃]（等価計算式）

通過前

Eold
MeV/u
WS1 Eu10
引数 引数
WS2 Eu20
引数 戻値

戻値条件

Pa
Pa1
引数
Pa2
引数

℃
dgC1
引数
dgC2
引数

エネルギー損失

Enew Enewt
dEu
MeV/u MeV MeV/u
Eu11
Et11
dEu1

dEt
MeV
dEt1

Eu21

dEt2

Et21

dEu2
=dEu1

srDEu_eq_EoldGas(WS1,WS2,Eu10,Tmm1,
Pa1,dgC1,Pa2,dgC2) {Th1= Tmm1 * 1000 * srThkStd(WS1,Pa1,dgC1)
Eu11= srEnew(WS1,Eu10,Th1)
dEu1= Eu10-Eu11
Th2= Tmm1* 1000 * srThkStd(WS2,Pa2,dgC2)
Eu20stop= srRng2E(WS2,Th2)~ sr_dEfpk(-1) : find dEu2 peak from Emax side ~~ -> then get dEu2pk & EdEu2pk ~if( dEu2pk > Eu20stop) {dEu2max= dEu2pk; EdEu2max= EdEu2pk}else{ dEu2max= EdEu2max= Eu20stop }if(dEu2max < dEu1) return( N/A ) : No Answer
if(dEu2max = dEu1) : Only One Answer
return( Eu20= EdEu2max )dEu2= dEu1
~ sr_dE2ixE() : find dEu2 for all Eu20 ~~ calculating Eu20 -> dEu2= Eu20 - Enew(Eu20,Th2) ~~ sr_dE2ip() : interpolation at found dEu2 ~~ using the calculated E vs dE=E-Enew() table ~Eu20 = interpolated value at found dEu2
return( Eu20 )}この関数の戻り値には- 数％程度の誤差が生じることがあります

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

27関数一覧(2b)カテゴリー

戻値型 関数名
引数名

関数の説明
戻値

型 引数の説明V,D srDEt_eq_EoldGas
WS1
S WS(Gas)名(1) 比較元WS2
S WS(Gas)名(2) 比較先Eu10
D Bm1 通過前 E [MeV/u]
Tmm1
D GasTrg1 厚 [mm]
Ehl

I

Pa1
dgC1
Pa2
dgC2

D
D
D
D

通過後

Thick
mm
Th1
引数
Th2
=Th1

理由など

dEt [MeV] が同等になる Bm2 通過前のE [MeV/u] ; Eold
#NUM! WS1,WS2<>Gas WS1,2がGasTrgでない#NUM! Eu10<=0 | Th1<0
Th1>=Rng(Eu10) でも算出可能#N/A case-1), -8), -11), -12), -14)

検索方向 ={+1|-1} ={Ehigh|Elow}側か注）戻値Eu20には誤差約数%あり。
ら検索
GasTrg1 気圧 [Pa]E vs. Rng でなく E vs. dE の直線補間の為。
GasTrg1 気温 [℃]
GasTrg2 気圧 [Pa]GasTrg2 気温 [℃]（等価計算式）

通過前

Eold
MeV/u
WS1 Eu10
引数 引数
WS2 Eu20
引数 戻値

戻値条件

Pa
Pa1
引数
Pa2
引数

℃
dgC1
引数
dgC2
引数

エネルギー損失

Enew Enewt
dEu
MeV/u MeV MeV/u
Eu11
Et11
dEu1

dEt
MeV
dEt1

Eu21

dEt2
=dEt1

Et21

dEu2

srDEt_eq_EoldGas(WS1,WS2,Eu10,Tmm1,
Pa1,dgC1,Pa2,dgC2) {A1= srInfoIonA(WS1)A2= srInfoIonA(WS2)
Th1= Tmm1 * 1000 * srThkStd(WS1,Pa1,dgC1)
Eu11= srEnew(WS1,Eu10,Th1)
dEt1= (Eu10-Eu11)*A1
Th2= Tmm1* 1000 * srThkStd(WS2,Pa2,dgC2)
Eu20stop= srRng2E(WS2,Th2)~ sr_dEfpk(-1) : find dEu2 peak from Emax side ~~ -> then get dEu2pk & EdEu2pk ~if( dEu2pk > Eu20stop) {dEu2max= dEu2pk; EdEu2max= EdEu2pk}else{ dEu2max= EdEu2max= Eu20stop }dEt2max= dEu2max*A2
if(dEt2max < dEt1) return( N/A ) : No Answer
if(dEt2max = dEt1) : Only One Answer
return( Eu20= EdEu2max )dEt2= dEt1
dEu2= dEt2 / A2
~ sr_dE2ixE() : find dEu2 for all Eu20 ~~ calculating Eu20 -> dEu2= Eu20 - Enew(Eu20,Th2) ~~ sr_dE2ip() : interpolation at found dEu2 ~~ using the calculated E vs dE=E-Enew() table ~Eu20 = interpolated value at found dEu2
return( Et20 = Eu20*A2 )}この関数の戻り値には- 数％程度の誤差が生じることがあります

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

28

WSを追加する

MySRIMwb に ＷＳ を追加する
ここでは、ご自分の用途に合わせて WS を追加・削除する作業を説明します。

（１） MySRIMwb 加工手順
e.g.) SRIMwb_040Ar.xlsx

SRIM
2013

SRIMout.txt
Txt data①a copy & rename①b HPからdownload② table 作成

srOut2Ws.xlsm
New sheet

newSRIMwb.xlsx

MS-Office
System AddIn
FolderNew sheet⑥ Rename

macro
③ 読込み

MySRIMwb.xlsx④ シートコピー⑤ シート整理⑦ AddInフォルダーへ戻す

3_Install後_動作確認.xlsm
macro_Install folder

加工手順は次の通りです。
[準 備] ①a 又は ①b の方法で、 newSRIMwb.xlsx を準備しておきます。
Excel は 同名の MySRIMwb.xlsx を２つ同時に開けないので、別ファイル名で用意しておく必要があります。
[Step1] ② SRIM-2013 で Stopping/Range Table を計算します。
結果をテキスト形式で保存します ( これを SRIMout.txt と呼ぶことにします）[Step2] ③ ファイル変換ユーティリティー srOut2Ws.xlsm で、SRIMout.txt を読込み、WS形式に変換します。
[Step3] ④ 変換された WS を、newSRIMwb.xlsx に追加します。
⑤ 動作確認用シートを使って、newSRIMwb の内容を確認し、不要なシートの削除など、取捨選択をします。 そして、
⑥ ファイル名を MySRIMwb.xlsx に変更し、⑦ システム AddIn フォルダーへ戻します。

尚、SRIM-2013の使い方については、 『京大 Takaaki AOKI氏の SRIM Tutorial 』
http://sakura.nucleng.kyoto-u.ac.jp/~aoki/SRIM/index.html
が参考になると思います。ここに インストール方法や SR.exe の使い方が詳しく解説されています。

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

29

WSを追加する（２） ＷＳ作成上の注意
先ず、 SRIM データブック (MySRIMwb.xlsx) の決まり事 について、説明します。

• 追加するシートは、srOut2Ws.xlsm に入っている 雛形WSをコピーして生成します。
そして、セルの位置は絶対に変えないでください。
セルの行・列番号が変わってしまうと、sr*() 関数が誤動作します。
WSの書式まで変更したい方は、SRIMfit.xlsm の VBAコード の初めの方に定義してあるWork Sheet Structure 定数定義 の変更が必要となります。

• ご自分の使用目的に応じて、次のような枚数分だけ用意してください。
ＷＳ の枚数 = 照射するビーム核種数 ｘ 照射される標的材質の種類数
枚数制限はありません。Excelブックの仕様では、使用可能メモリーに依存で制限無しだそうです。
AddIn読み込み時は、Openのみ行い、シート内容の読込みはしません。

• シート名の命名規則 については、特に制限はありません。でも次の様にしておくと便利です。
WSの名前（例） ＝ srim40Ar_Si  Beam核種 + 標的材質名称
この様な規則にしておくと、後々アプリケーションを作る時に、参照すべきWS名文字列を
WSname = “srim” & Text( IonA,”0”) & srElmNm( IonZ ) & “_” & TargetNameのように関数式で記述できるので。

• ブック内での WSの順番 は、気にしなくて結構です。
sr*() 関数は、「シート名で参照」 します。大文字小文字・全角半角にご注意下さい。

• そして、これら複数枚のWSを格納した ブックファイルについては、
ブックファイルの名前 ＝ MySRIMwb.xlsx‘’の格納場所 ＝ SRIMfit.xlam をインストールしたフォルダー内と決めてあります。 この仕様を変更したい方は、 SRIMfit.xlsm の VBAコード の変更が必要です。
ＷＳの例 srim40Ar_Air シート

セル黄色
が SRIM-2013 が出力した数値のコピペです。
セル枠線有 には、数式が書いてある箇所があります。なるべく消さないでください。
これら以外のセルには、コメントなどを自由に記入して下さって結構です。
2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

30

WSを追加する（３） SRIM-2013 で計算する
ご自分の用途に合ったビーム核種 vs 標的材質の組み合わせで
Stopping/Range Table を計算して下さい。

SRIM-2013 を起動します。
Stopping / Range Table を選択します。
Ion : Mass [amu] の指定

Stopping / Range Table を計算して出力する画面です。

整数値で指定 します。 (加速器で照射するので)Ion Energy Range の指定
10eV/A ～ 1 GeV/A が良いでしょう。 強制ではありません(注1)。
入力数値の単位が [keV] ですので、例えば Ion Mass = 84 の場合は、Lowest : 10 eV * 84 = 0.84 [keV]
Highest : 1 GeV * 84 = 84,000,000 [keV]になります。
Ｔａｒｇｅｔ の指定
Target Description
Density [g/cm3]
Gas
Stopping Power unit の指定

詳しくは、SRIMマニアルで確認してください。
が、計算結果が出力される SRIMoutput.txt ファイルの名前になります。
必要なら適宜編集して下さい。
密度は自動設定されます。 が、ガスの場合は自分で要チェックです。
ガス標的の場合、チェックが入っていることを確認。
必ず MeV/(mg/cm2) を指定。 SRIMfitではこの単位系を仮定しています。
“Calculate Table” をクリックすると計算結果が表示され、Target Descriptionで指定したファイル名.txt に出力されます。
計算結果の保存先は、SRIM-2013がインストールされている場所の¥SRIM Outputs フォルダー です。
例) c:¥Program Files (x86)¥SRIM-2013-Prof¥SRIM Outputs（注1） この推奨値を代入すると、雛形ＷＳフォーマットに合った行サイズの計算結果 Output 表示

2018/10/22(v3.01.03)

SRIM Output が出力されます。雛形では 300 行までのグラフ表示にしてあります。
こんなに細かい必要は無い！ とか、もっと細かいステップで必要なE領域のみが良いという方は、変更して頂いても構いません。但し、 E 範囲は、・ なるべく低エネルギー側を省略しない事。ビーム停止領域の計算誤差が多くなります。
・ 高エネルギー側は、少なくとも 10MeV/u 以上まで。BraggPeakが十分入る事。
srMaxLET() 関連の関数が誤動作するので。

SRIMfit ユーザーマニアル

31

WSを追加する（４） srOut2Ws.xlsm で ＷＳに変換 する① srOut2Ws.xlsm を開き、“Txt変換実行” シートを表示させます。

~./util¥srOut2Wsにあります② SRIMoutput.txt ファイルの指定
先ほど作成した
Target Descriptionで指定したファイル名.txt
を選択します。

③ マクロが起動し変換が開始され、新しい WS に値が記入されて行きます。
Rang や Straggling の単位 A, μm, mm は、自動的に μmに統一 して変換してくれます。
変換には時間がかかります。左下のステータスバーに、処理行番号が表示されます。
④ 変換が完了すると、左のメッセージが表示されます。
OKをクリックして、変換作業が終了します。

⑤ WS名を適宜変更して下さい。
自動生成された WS名は、Target Descriptionで指定したファイル名 の頭 29文字になっています。
前述の WS名の命名規則 に従って、WS名を変更しておくことをお勧めします。
（注）・ このマクロファイルは、SRIMfit.xlsm がインストールされていなくても動作します。適宜コピーして使ってください。
・ このマクロファイルには、２つの機能 [Txt変換実行] と [Csv変換実行] があります。後者については (9)を参照。
・ [_雛形ws_] は、削除やシート名変更をしないでください。これを編集しても構いませんが、セルの位置は変えないでください。
・ マクロは、このファイルの 標準モジュール SrOut2Ws に記述してあります。プロテクトしてません。

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

32

WSを追加する（５） 変換後の 手動作業

① Target 名セル の修正
Target の short name, long name を適宜修正してください。
② Emin Emax セルの確認読込んだ E_LET_Range_Struggling 表の行数が正しいか確認。

①②③③ Gas標的の場合は、SRIM-2013計算で指定したガス密度に相当する、
ガス圧力 Ptbl セル、 ガス温度 Ttbl セル の値を入力。
詳しくは、後述の 『(8) Gas標的の場合』 を参照下さい。

④④ Corded セル の記入
参考の為、このWSシート 作成者のメモ を記入して下さい。
繰り返し 変換作業をする場合
複数の SRIMoutput.txt を変換したい場合は、（４）と（５）の作業を繰り返して下さい。
Txt変換実行マクロは、新しいWSを、WSリストの最後に追加して行きます。

（６） ＷＳの保存
変換して生成したWSを、お使いの MySRIMwb..xlsx ブックに追加 します。
WSのコピーは、通常のエクセル操作で行って下さい。
即ち、MySRIMwb.xlsx と ｓｒOut2Ws.xlsm の両方を開いて置き、手動操作にて
srOut2Ws 側の WS を、MySRIMwb 側へ、[シートの移動コピー] をします。
MySRIMwb.xlsx ブックの場所は、インストールガイドで説明 したように、管理者権限あり の場合： MS-OfficeシステムAddInフォルダー
においてあります。 この場所から、自分のワークフォルダーにコピーしてから、
シートコピーを行って下さい。(システムフォルダー中だと SRIMfitが openしているので)シートコピーが終わったら、元のシステムフォルダー中に、上書きコピーして下さい。

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

33

WSを追加する（７） ＷＳの確認.example¥動作確認用¥
sr_eg_AdIn.xlsm のeg11マクロ情報 シートを開いてみてください。
マクロ情報関数を用いてAddInとして認識されている
SRIMfit.xlam とMySRIMwb.xlsxの情報が表示されます。

同ファイルの
eg12MySRIMwb確認 シート
を開いて自分のWS名を入力
してみてください。
WS情報関数を用いてAddInとして認識されている
MySRIMwb.xlsxの情報が表示されます。
LET, Range グラフのLin – Lin 表示
Log – Log 表示
で、直線補間の具合を確認できます。

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

34

WSを追加する（８） Gas 標的 の場合
関数一覧の Gas用関数： sr*Gas() の仕様をご覧になると分かるように、
SRIMfit では、Gas関数の引数に、気温 [℃] と 気圧 [Pa] を明示的に指定し、その補正をする
ようにしてあります。
Gas標的の一例として、SRIM-2013 に組み込まれている 「空気：Air Dry」 について説明します。
[Compound Dictionary][Common Target Materials] でAir, Dry near sea level (ICRU-104)
を選択すると、空気の組成表 [注1] と 密度[注2]が自動入力され、Gas Tgt にチェックが入ります。

そして、SRIM Output には、「Target is a GAS」と表記されます。 この表記に従って、WS中にも Gas と記入して下さい。
Gas?

14 if Gas; Ptbl =15 if Gas; Ttbl =101325 Pa
20 degC

Gas
Atom== Target Composition ==Atom
Atomic Mass

さて、この[Compound Dictionary]を用いた場合の、
気圧 Ptbl= ? [Pa] 気圧 Ttbl= ? [degC]の数値ですが。。。

私の場合は、検討の結果 [注3] Ptbl=101325Pa , Ttbl = 20 degC を記入する事にしました。

[注1] 空気の組成は、SRIMの値で良さそうです。
Wikipedia 「空気」 にある 国際標準大気(1975年) とほぼ同じ値のようです。
詳しくは YourSRIMwb.xlsx の srim40Ar_Air シートの右端にコメントで書いてあります。

(次ページへ続く)

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

35

WSを追加する[注2] 密度について (特に Air, Dry の場合) は…、
SRIM-2013の内部で、どの様な扱いをしているのか、少し疑問があります。
そもそも、上図の Density 表示は 0.00163 [g/cm3] というかなり高密度(マイナス～57℃相当)になっています。
念のため、[Compound Dictionary]のデータファイル：
C:¥Program Files¥SRIM-2013-Prof¥Data¥Compound.dat  Text ファイルです。
を眺めてみると、*Air, Dry near sea level (ICRU-104) 0.00120484 O-23.2, N-75.5, Ar-1.3"%Air, Dry (ICRU-104)", .00120484, 4, 6, .000124, 8, .231781, 7, .755267, 18, .012827
0000 00000000 000 000$ corrected by H. Paul, Sept. 2004
つまり、ρ= 1.20484E-3 [g/cm3] と書いてあり、(以降の組成比の数字は SRIM画面と同じ)
これは国際標準大気(0℃ 1atm で 1.293E-3g/cm3) に近い値です。でもこの値を使っていないようです。
一方で、SRIM Home Page をいろいろ探したのですが、古いマニアルにはTRIM manual http://www.srim.org/SRIM/SRIM%2008.pdf の、
8-12 Stopping Powers for Ions in Gases に、The stopping of ions in gases is very dependent on the gas pressure. ～STP (0 C, 760 mm) ～ "TRIM always assumes a gas target is at STP.“と書いてありました。

[注3] さてでは、 密度 と 気温、気圧 には実際にどの値を使おうか… と迷ったのですが、次のような方針にすることにしました。
‘密度ρ’ は、 Compound.dat の値を尊重して 1.20484E-3 g/cm3 を使う。
‘気圧 P’ は、 1 atm = 101325 Pa を使う。
‘気温 t’ は、 0 ℃では、上記の ’密度’ と矛盾をきたすので、 次の式で決める。
即ち、Wikipedia 「空気」 にある 空気密度の式
ρ[g/cm3] = 1.293E-3 * P[atm] / (1 + t[℃]/273.15)に当てはめて、上記の ’密度’ になる様な 気温を求める事にしました。(srim40Ar_Airシート参照)
その結果が Ptbl=101325 Pa , Ttbl = 20.0 ℃ でしたので、この値をシート中に記してあります。
コメント） 以上の様に、SRIM-2013 の Gas標的(特にAir)の扱いは、私もまだよく理解できておりません。
空気以外のGas標的の場合でも、ご自分でよくご検討の上、Compound Tableを使うべきか、
それとも組成・密度・気温・気圧を手動で指定すべきか をご判断する事をお勧めします。

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

36

WSを追加する（９） Csvで読み込んだBookファイルの一括変換

SRIMout.txt を、空白区切りCSV形式ファイルとして
Excel Book に多数読み込んでいる場合に便利なマクロです。
そのBook (仮に SRIMcsvBook.xlsx と呼びます）にある全ての Csvシートを一括変換します。
SRIMcsvBook.xlsx の例は、.SRIMout の下にある
SRIMout_Beam名.xlsx などです。

① srOut2Ws.xlsm を開き、
“Csv変換実行” シートを表示させます。

② SRIMcsvBook.xlsx ファイルの指定
CSV を読み込んである Excel book を選択します。

③ SRIMcsvBook.xlsx 内の全シートが変換されます
変換には時間がかかります。変換中に他のシートをクリックするなどのシート切替をしないでください。
④ WS名を適宜変更して下さい。
自動生成された WS名は、SRIMcsvBook.xlsx の各シート名になっています。
前述の WS名の命名規則 に従って、WS名を変更しておくことをお勧めします。

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

37

MySRIMwb を 一時的に切り替える
次のシートにある ボタン を押すと、MySRIMwb を一時的に切り替えることができます。
（SRIMfit_サンプル紹介 から転記)
File名： sr_eg_AddIn.xlsm = 3_Install後_動作確認.xlsm と同じモノ

Sheet名： eg11マクロ情報

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

 WS名の一覧表

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

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

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

38

更新履歴
ver. 3.01.02 → 3.01.03 の変更点
• Excel 97-2003 まで動作可能(になった筈です)
Application.Version <= “11.0”で判断し、 Excel97-2003 の場合は MySRIMwb.xlsx ではなく、
MySRIMwb.xls を Openすることにしました。
Excel-2000+WinXP の古い環境までは動作確認しました。 Excel-97は未確認。
• SRIMfit.xlam に、英語版関数説明リスト FuncListE も加えました。

ver. 3.01.00 → 3.01.02 の変更点••••

Win/Mac 共通で動作可能になりました。 Application.PathSeparator 使用。
Excel-2003 まで動作可能になりました。 #IF VBA7で、Application.MacroOptions部を条件compile.
MySRIMwb を途中変更可能にしました。 Sub srMySRwb_open() を呼んで下さい。
関数 srMcrWBdir() を追加。 英語版の関数リストを追加。

未) Excel for Mac では、関数の登録はOK。でも、関数Helpメッセージの登録ができません。何故だろう？

ver. 3.00 → 3.01.00 の変更点••••

自動インストーラー VBscript を加えました。
HP を刷新しました。マニアル類も整理しました。
SRIMfit マクロ本体は ver 3.00 のママ、E5Aexp は ver 1.32 に更新
Utility に、最近の部分Updateをまとめました。
Out2Ws, LET_R plot, C言語用 Enew(),Eold()

過去ログ. 1 SRIMfit_Read_me.txtに掲載

以上です。
SRIMfit が、どなたかの実験のお役に立てれば幸甚です。
理研・仁科加速器センター・産業チーム
問合せ先 ： ｓ ｉ ｓ ｅ ｔ ｓ ｕ－ｋ ｙ ｏ ｙ ｏ ＠ ribf.riken.jp
スパムメール防止のため全角となっております。半角で入力し直してお送りください。
素人が作っているフリープログラムですので、様々な環境での動作保証は致しかねます。
予めご了承ください。
免責 ： このマクロを使用したことで発生したいかなる損害についても、作者は一切責任を負わないものとします。

2018/10/22(v3.01.03)

SRIMfit ユーザーマニアル

39