トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

NumRoom02 の履歴の現在との差分(No.1)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
*図1.10 剛体球による微分散乱断面積の分析 [#c72c50cb]
*図2.2 ラザフォード散乱の微分断面積 (教科書23ページ) [#fig202]

**概要 [#ff0f5bf7]
**概要 [#abst]

剛体球 (半径は指定可能) による散乱問題について、散乱角度 θ を指定したときの衝突径数 b, θ とその刻み幅 dθ を指定したときの b の変化量 |db|, およびそれらの積 b|db| を、θ の関数として出力するプログラムです。
原子番号 Z2 の粒子に、原子番号 Z1 の粒子が運動エネルギー T で入射したときの、ラザフォード散乱の微分断面積を計算するプログラムです。
**プログラムファイル [#prog]

**プログラムファイル [#w2fea9f4]
&ref(files/ruthscat.f,ruthscat.f); (ソースファイル)

&ref(files/hsphere.f,hsphere.f); (ソースファイル)
&ref(files/rscat.cnt,rscat.cnt); (入力ファイル)

&ref(files/hs.cnt,hs.cnt); (入力ファイル)
&ref(files/rscat.dat,rscat.dat); (計算結果)

&ref(files/hs.dat,hs.dat); (計算結果)
&ref(files/rscat.outlist,rscat.outlist); (標準出力ファイル)

&ref(files/hs.outlist,hs.outlist); (標準出力ファイル)
&ref(files/ruthscat.exe,ruthscat.exe); (実行形式ファイル: Windows7/10 64bit 版用)

&ref(files/hsphere.exe,hsphere.exe); (実行形式ファイル: Windows7/10 64bit 版用)

***実験データ [#exp]

&ref(files/exp22-1.dat, 186W@24.0MeV); [4]

&ref(files/exp22-2.dat, 195Pt@27.7MeV); [5]

&ref(files/exp22-3.dat, 208Pb@23.6MeV); [5]

※文献番号は教科書のものにあわせています。文献情報は[[ページ末尾>#reference]]に記載しています。
**実行方法 [#howtorun]

実行ファイル名を ruthscat.exe とします。コマンドプロンプトあるいはターミナルで

**実行方法 [#w4589cda]
 ruthscat.exe < rscat.cnt

実行ファイル名を hsphere.exe とします (違う名前のファイルを使用する場合は以下を適当に読み替えてください)。コマンドプロンプトあるいはターミナルで
とタイプして Enter キーを押せば、入力ファイル rscat.cnt の内容に従って計算が行われます。環境によっては

 hspere.exe < hs.cnt
 ./ruthscat.exe < ./rscat.cnt

とタイプして Enter キーを押せば、入力ファイル hs.cnt の内容に従って計算が行われます。環境によっては
とします。正常に終了したら、0 あるいは stop 0 とターミナルに表示されます。

 ./hspere.exe < ./hs.cnt
**入力ファイルの説明 [#input]

とします。作業ディレクトリは実行・入力ファイルを置いているところに変更 (指定) する必要があります。正常に終了したら、0 あるいは stop 0 とターミナルに表示されます。
**入力ファイルの説明 [#x66df997]

以下において、L* はファイルの *行目を指します。C* は桁数です。* は単一の数字あるいは数字の範囲を表します。たとえば L10 は「10行目」のことであり、C1-4 は「1桁目から4桁目まで」という意味です。

-L1~
表題 (C1-60)。標準出力またはターミナル上にそのまま書き出されます。C61 以降は無視されます。
-L2-L3~
プログラム中で使用する (OPEN の対象とする) ファイルの機番 (C2-4), ファイルの status (C6-13), ファイル名 (C16-65) を指定します。ファイル名はパス付きで指定することが可能です。サンプルでは 2つのファイルを指定していますが、機番およびファイルの重複がなければ、いくつ指定しても構いません。ただし機番として 5 を指定することは避けましょう。また、100 以上の機番を指定することはできません。C1 を空白以外にすると、その行の指定内容はスキップされます。
-L4~
機番として 100 以上または 0 よりも小さい値を指定することで、ファイル指定処理の終了を宣言します。
-L2-L4~
プログラム中で使用するファイルを指定する部分です。
-L5~
人間用の見出し。プログラム中では何の処理もされません。
人間用の見出しです。
-L6~
ユーザのコメント (C1-50)。C51 以降は無視されます。
-L7
剛体球の半径 (C1-10) を F 型の実数で指定します。
Z1, Z2, T を、それぞれ 10桁の F 型実数で指定します。
-L8~
人間用の見出し。プログラム中では何の処理もされません。
人間用の見出しです。
-L9~
計算結果を出力するファイル機番、角度の最小値、同最大値、同刻みを、それぞれ 10桁の F 型実数で指定します。機番は、プログラムの中で整数値 KIBO に変換されます。この機番のファイルが L2-3 (冒頭部) で指定されていれば、そのファイルに結果が出力され、指定されていない場合には、fort.[KIBO] というファイルが生成されます ([KIBO] には数字が入る)。角度に関する数値は、degree 単位で指定します。
計算結果を出力するファイル機番、角度の最小値、同最大値、同刻みを、それぞれ 10桁の F 型実数で指定します。角度に関する数値は、degree 単位で指定します。
-L10~
桁数を見やすくするための補助。プログラム中では何の処理もされません。
**出力の説明 [#fd6e7b42]
桁数を見やすくするための補助行です。

以下では、掲載している入力ファイル hs.cnt をそのまま用いた場合に生成されるファイル名に基づいて説明を行います。これらのファイル名は (入力ファイルの名前も)、ユーザが自由に書き換えることが可能です。計算内容を変更し、それ以前に作成したファイルを保持したい場合には、出力されるファイル名を変更しましょう。その際には、できるだけ計算内容が読みとれるようなファイル名にすることをお勧めします。
**出力の説明 [#output]

***hs.outlist [#y3c5559e]
***rscat.outlist [#outlist]

標準出力ファイル。計算内容が出力されます。意図した計算内容になっているか確認する癖をつけましょう。また、エラーが生じたときには、その内容が簡単に書き出されます。
標準出力ファイルです。

たとえば剛体球の半径に負の値を指定してみると、終了コード 1 で計算がストップします。このとき、hs.outlist には
***rscat.dat [#dat]

   -- ERROR IN INPUT --:
        HSRAD <= 0
左が散乱角 θ (単位: degree) で、右が微分断面積 dσ/dΩ (単位: mb/sr) です。rscat.cnt を用いて計算した結果 rscat.dat が、図2.2 の実線でプロットされているものです。

と表示されるはずです。ただし、あらゆる入力エラーに対してこのような表示がなされるわけではありません。入力パラメータを正しく指定する (物理的に意味のある数字を与える) ことは、基本的にはユーザの責任でなすべきことです。
**注意点と補足 [#note]

***hs.dat [#faf8c760]
-このプログラムの構造は、第1章で使用した hsphere と基本的に同じです。hsphere の説明と共通の部分は適当に省略しています。
-0° ではラザフォード散乱の微分断面積は発散します((0° 散乱における断面積の定義を見直せば発散は避けられますが、ここでは立ち入りません。教科書の付録 A を参照してください。))。プログラムでは、θ が 10^-10 よりも小さい場合には、θ = 10^-10 (単位: degree) として計算します。これは「0 の代わりに極めて小さな値を用いて発散を防ぐ」 という処理ですので、このとき、微分断面積の計算結果にはそれほど意味はありません (小さな値としてどういった数字を入れるかで答えが変わるから)。
**発展課題 [#exercise]

左から順に、散乱角 θ (単位: degree), b, |db|, b|db| が出力されます。hs.cnt を用いて計算した結果 hs.dat が、図1.10 にプロットされているものです。
+入力パラメータを変更し、図2.2 にプロットされている破線と点線の結果を算出してください。~
&color(green){(2017/06/05追記)}; 実験データもあわせてプロットし、計算結果と比較しましょう。
+公開しているプログラムでは、Z1 に負の値が代入されるとエラーになります。これと同様の処理を、Z2 と T に対しても行うようにしてください。
--ところで、Z1 あるいは Z2 が負のとき、エラーとする必要はあるのでしょうか?
+教科書の式は、座標原点にある標的粒子が入射粒子よりもはるかに重い状況を想定しています。入力データに対して、この仮定が成立しているかどうかを判定する処理を追加しましょう。たとえば Z2 が Z1 の 10倍よりも小さいとき、エラーを返すように書き換えてみてください (粒子の質量を入力していないので、ここでは原子番号を質量の指標として利用します)。
+トムソンのレーズンパン模型を模倣する計算を行い、微分断面積を求めてみましょう。具体的には、次のようにします。
--標的粒子を半径 1Å の球体とし、+Z2 e の電荷 (e は電気素量) が、球全体に一様に分布しているものとする。
--衝突径数が b のとき、標的粒子の正電荷のうち、半径 b の球体の内側にあるものだけが散乱に関与するものとする。すなわち、b ごとに Z2 が変化するものとし、ラザフォードの公式において Z2 --> Z2(b) と修正する。
--標的粒子内の電子の影響は、ラザフォード散乱と同様に無視する。

**注意点と補足 [#r94b2193]
**参考文献 [#reference]

このプログラムは、DO ループを利用して角度 θ を変化させ、θ ごとに b や |db| を解析的に計算し、ファイルに出力するという単純なものです。ただし、プログラム中で使用するファイル名の指定や、入力パラメータの与え方など、第2章以降で使用するプログラムでも使用する基本的な内容が含まれていますので、できればプログラムの中身を丁寧に見て、しっかりと習得してください。
[4] F. T. Baker, A. Scott, R. C. Styles, T. H. Kruse, K. Jones, and R. Suchannek, Nucl. Phys. ''A 351'', 63~
  (1981).

なお、ファイル名の指定は、井芹康統氏 (千葉経済短大) が作成されたサブルーチン FOPEN によって行っています。FOPEN を用いることで、計算の入出力に使用するファイル名を変更したい場合に、いちいちソースコードを書き換える必要がなくなります。FOPEN は、色々なケースに対して計算を繰り返すようなとき、絶大な威力を発揮します。
**発展課題 [#y02dbe1d]
[5] W. Karcz, I. Kluska and Z. Sanok, Acta Phys. Pol. ''B3'', 525 (1972).

-hs.dat に、微分断面積を追加してみましょう。もちろん正解は教科書の式(1.17)にあるとおりですが、出力されている b|db| から微分断面積を計算してみてください。
-角度の刻みを変えると |db| や b|db| は変化しますが、微分断面積は変化しないことを確認しましょう。
-反射角度を入力ファイルで与えて、その角度以上に粒子が散乱する断面積 (反射断面積) を計算する機能を追加してください。反射断面積は解析的に与えられますが、微分断面積を積分することでも得られます (教科書 p.12 を参照)。2つの方法で算出した反射断面積が一致することを確認してください。~
※数値積分については、第3章の数値計算で紹介するプログラムを必要に応じて参照してください。
**訂正・補足等 [#correction]

***&color(red){修正}; (2017/05/14) [#corr170514]
-THMIN の入力値が正しく反映されない問題を解消しました。 
-入力ファイルサンプルのコメント内容を書き換えました(結果に影響なし)。

***&color(red){修正}; (2017/06/05) [#corr170605]
-出力ファイルで角度の最大値の表記が誤って HTMAX となっていた問題を修正しました(数値データへの影響なし)。
-計算結果のファイルで断面積の単位表記が fm^2 となっていましたが、これを mb/sr に修正しました(数値データへの影響なし)。