中性子の基本的性質¶
もういろいろとめんどくさくなってきたからまとめておく. 計算ミスがあったら教えてください. あと原則,冷中性子を対象とした計算であることに留意すること.
とりあえず基本定数をまとめると
from math import pow, sqrt, pi, exp
from scipy import constants as phys
import handcalcs.render
%%render
#Parameters
e = phys.e*1e19 # $\times 10^{19}$ [c]
c = phys.c*1e-8 # $\times 10^{-8}$ [m/s]
m = phys.m_n*phys.c**2/phys.e*1e-6 # MeV
h = phys.h/phys.e *1e15 # $\times 10^{-15}$ []
k_B = phys.k * 1e23 # $\times 10^{-23}$ []
N_A = phys.N_A*1e-23 # $\times 10^{23}$ [$\rm /m^3$]
# unify dimensions
e = phys.e # c
h = phys.h/e # eV
hbar = phys.hbar/e # eV
c = phys.c # m/s
m = phys.m_n*c**2/e # eV/c/c
k_B = phys.k #
N_A = phys.N_A
波長,エネルギー,温度,速度の換算¶
ある運動エネルギー $E$ を持った中性子は $$ E = \frac{\hbar^2 k^2}{2m} = \frac{h^2}{2m\lambda^2} = \frac{1}{2}mv^2 = k_BT $$ で書けるから,ある波長$\lambda$の時のエネルギーと温度は
%%render
lamb = 0.18e-9 # m
E = h**2/(2.*(m/c**2)*lamb**2)*1e3 #meV
T = E*1e-3/(k_B/e) #K
ある波長の中性子の速度$v$は $$ \lambda = \frac{h}{mv} $$ だから
import sympy
sympy.init_printing()
sympy.var('lamb, v')
sympy.Eq(lamb, h/(m/c/c)*1e9/v)
となる.
しれっと中性子エネルギーと温度の換算をしたが,実際のところ中性子の温度分布はボルツマン分布に従った幅のある分布を持っているため,温度とエネルギーは1対1で決めることはできない. 上記計算で求めた温度は平均値に相当.
TOF法¶
パルス中性子源で用いられるtof(time of fright)と対応させるには,小学生の時習った$v = L/\rm TOF$を使えばいいから
sympy.var('lamb, TOF, L')
sympy.Eq(lamb, (h/(m/c/c)*1e9 /L)*TOF)
ちなみにこの395.6という数字,よく使うから覚えといた方がいいかもしれない.
余談だが波長を表す係数にlambda
を用いずlamb
と書く理由は、pythonによってlambda
という関数が定義されているから変数名として扱えない、といった背景がある。
頑張ったら使えるんだろうけど、面倒くさいのでご愛嬌ということで
数密度の計算¶
数密度は,密度$\rho$, 原子量$M$, アボガドロ数$N_A$を用いて $$ N = \frac{\rho}{M}N_A $$ で書ける.
Niの場合,
%%render
#Parameters
rho_Ni = 8.908 #g/cm^3
M_Ni = 58.6934 #g/mol
N_Ni = rho_Ni/M_Ni*N_A*1e6*1e-28 #1e28/m^3
有効ポテンシャルは $$ U = \frac{2\pi\hbar^2}{m}bN $$ であるから,
%%render
# Parameters
b_Ni = 10.3 #fm
U_Ni = (2*pi*hbar**2)/(m/c**2) * (b_Ni*1e-15)*N_Ni * 1e9 #neV
化合物の場合¶
化合物の場合、有効ポテンシャルは $$ U = \frac{2\pi\hbar^2}{m}\sum_i b_iN_i $$
と書ける。
つまり各元素の数密度がわかればいい。
化合物の数密度は
$$
N_i = \frac{\rho_\mathrm{tot}}{M_i}N_A\times \mathrm{wt\%}_i
$$
化合物の場合、物質量と散乱長は組成式$A_xB_yC_z$から
$$
M_\mathrm{tot} = xM_A + yM_B + zM_C
$$ $$
b_\mathrm{tot} = xb_A + yb_B + zb_C
$$
と書ける。多分高校の化学の教科書に載ってる
この時の有効ポテンシャルは
$$
U = \frac{2\pi\hbar^2}{m}b_\mathrm{tot} \frac{\rho_\mathrm{tot}}{M_\mathrm{tot}}N_A
$$
適当に$\mathrm{SiO_2}$の場合を考える
#rho_Si = 2.329 #g/cm^3
M_Si = 28.0855 # g/mol
#rho_O = 1.429 #g/L
M_O = 15.9994 # g/mol
M_SiO2 = M_O*2 + M_Si
rho_SiO2 = 2.648 #g/cm^3
#rho_SiO2 = 2.2 #g/cm^3
N_SiO2 = rho_SiO2/M_SiO2*N_A*1e6
print("N_SiO2 =", N_SiO2,"kg/mol")
N_SiO2 = 2.654042525664775e+28 kg/mol
%%render
N_SiO2 #/m^3
b_Si = 4.1491e-15 #m
b_O = 5.803e-15 #m
b_SiO2 = (b_Si*1 + b_O*2)
U_SiO2 = (2*pi*hbar**2)/(m/c**2) * b_SiO2*N_SiO2 #eV
(2*pi*hbar**2)/(m/c**2)*(b_Si*rho_SiO2/M_Si*N_A*2/3. + b_O*rho_SiO2/M_O*N_A*1/3.)*1e15 #neV
%%render
E = 0.025 #eV
delta_n = 1 - sqrt(1 - U_SiO2/E)
波長を用いて書き直すと
%%render
U = U_SiO2 #eV
h #eV*s
m # eV
lam = 1e-9 #m
n = sqrt(1-U/(h**2/2/(m/c/c)/lam**2))
print(n)
0.9999334476148128
屈折率はほとんど1に近い値を取るため、しばしば近似した式が用いられる。 $$ \sqrt{1+x} \simeq 1+\frac{x}{2} $$ であるから、 $$ n \simeq 1 - \frac{V}{2E} = 1 - \frac{b_c N \lambda^2}{2\pi} = 1 - \frac{m U_\mathrm{Fermi} \lambda^2}{h^2} $$ と書ける。
反射臨界角¶
中性子は有効ポテンシャルによって光学的な反射を行う.
その反射角は $$ \theta_c = \sqrt{\frac{bN}{\pi}}\lambda $$ Niの場合,$\theta_c$は
%%render
b_Ni = 10.3e-15 #m
N_Ni #n/m^3
lam = 1e-9 #m
theta_c = sqrt(b_Ni*N_Ni/pi)*lam # rad/nm
また、この時0.5eV中性子の反射臨界角は
%%render
E = 0.5 #eV
lam = h*sqrt(1/2/m*c**2/E)*1e9 #nm
theta = theta_c*lam*1e3 #mrad
低エネルギー中性子の断面積¶
中性子の全散乱断面積$\sigma$は中性子散乱長$b$から得られる.
$$ \sigma = 4\pi b^2 $$
中性子散乱長は干渉性散乱長(coherent scat. length)$b_c$と、非干渉性散乱長(incoherent scat. length)$b_i$の二つに分離でき、
$$ b^2 = (b_c^2+b_i^2) $$
と書ける。 ここで干渉性散乱は各原子の散乱の総和を差し、非干渉性散乱は単一の原子核からの影響をあらわす。
ほかにも非弾性散乱とかもまとめたいが追々。。。
また、吸収断面積は中性子の速度$v$を用いて $$ \sigma \propto 1/v $$ に従う.
%%render
rate_10B = 0.199;
rate_11B = 0.801;
M_10B = 10.0129370; # g/mol
M_11B = 11.0093054;# g/mol
M_natB = M_10B*rate_10B + M_11B*rate_11B # g/mol
rho_natB = 2.08 #g/cm^3 by wiki
N_natB = rho_natB/M_natB*N_A*1e6 #/m^3
sigma_10B = 3835 #barn
sigma_11B = 0.0055 #barn
sigma_natB = sigma_10B*rate_10B + sigma_11B*rate_11B #barn
t_natB = 0.12 #mm
factor = -N_natB*t_natB*1e-3*sigma_natB*1e-28
T = exp(factor) #ratio of transmit
print(str((1.-T)*100) + "% が止まる")
65.39192682396823% が止まる
ちょっと現実的な系¶
次に,少し現実的な計算として,遮蔽によく使われるB4C焼結体の透過率を計算する.
%%render
roi_t = 8 # mm
M_B4C = 55.255 # g/mol by wiki
rho_B4C = 2.52 # g/cm^3
N_B4C = rho_B4C/M_B4C*N_A*1e6 #/m^3
E = 1 #eV
roi_sigma_B = sigma_natB/sqrt(E/0.025) #barn
sigma_C = 0.0035#barn
roi_sigma_C = sigma_C/sqrt(E/0.025) #barn
roi_sigma = roi_sigma_B*4 + roi_sigma_C #barn
factor = -N_B4C*roi_t*1e-3*(roi_sigma)*1e-28
T = exp(factor)
print(str((1.0-T)*100) + "% が止まる")
99.99752146874712% が止まる
遮蔽の厚さに対する吸収率を図にする
import matplotlib.pyplot as plt
import numpy as np
x = np.logspace(-1, 1, 100, 'base=10') ## mm
y_val = -N_B4C*x*1e-3*(roi_sigma)*1e-28
y =np.exp(y_val)
plt.plot(x, y, label="trans")
plt.xlabel('thickness [mm]')
plt.ylabel('ratio of transmit')
plt.grid()
plt.xscale('log')
plt.yscale('log')
plt.show()
factor = -8e28*10*1e-3*8*1e-28
T = exp(factor) #ratio of transmit
print(T)
0.5272924240430487
運動量移行の計算¶
運動量移行$q$はその波長$\lambda$,移動角$\theta$を用いて $$ q = 4\pi\frac{\sin\theta}{\lambda} $$ と書ける。 ここで$\theta$とは、透過ビームと反射ビームの角度差の1/2であることに留意。
#final update
!echo final update
!date '+%b %d %Y (%a)'
final update 12 27 2023 (水)