はじめに
サイクロトロンは、原子など電荷を帯びた荷電粒子を加速させる装置である。
サイクロトロンは、一様な垂直磁場内に交流電圧をかけた半円状の電極から構成される。
つまり、電圧の向きが変わるごとに電場により荷電粒子を加速させていく。
今回は、サイクロトロンによって加速される荷電粒子の軌跡と速度変化について計算機を用いて数値計算を行った。
#原理
ローレンツ力によって荷電粒子は等速円運動を行う。
m\frac{v^2}{r}=qvB
ゆえに、
v=\frac{rqB}{m}
ここで、この円運動の周期を$T$とすると、
T=\frac{2\pi r}{v}=\frac{2\pi m}{qB}
動作条件
サイクロトロンが動作するためには、荷電粒子が半周する時間に交流電圧の位相が反転すればいい。
したがって、交流電圧の周波数$f$は,以下の式を満たす必要性がある。
f\frac{T}{2}=n+\frac{1}{2}
f=\frac{2n+1}{T}=\frac{2n+1}{2\pi}\frac{qB}{m}
プログラム
python cicrotron.py
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
import math
q=1 # 粒子の電荷[C]
m=1 # 粒子の質量[kg]
B=1.0 # 磁場の大きさ[T]
# n:任意の整数
n=1
# 周波数f
f=(2*n+1)/(2*math.pi)*(q*B/m)
omega=2*math.pi*f # 角周波数
V_m=1.0 # 入力電圧の最大値
d=1.0
dt=0.0001 # 時間刻み[s]
t=0 # 時刻[s]
x=0
y=0
z=0
x_vec=np.array([x,y,z]) # 位置ベクトル
v_vec=np.array([0,0,0]) # 速度ベクトル
x_ary=[]
y_ary=[]
z_ary=[]
t_ary=[]
v_ary=[]
while t<10:
E=V_m*math.sin(omega*t)/d # 電場強度
if -d<x_vec[1] <d:
E_vec=np.array([0,E,0]) # 電場ベクトル
B_vec=np.array([0,0,0]) # 磁場ベクトル
else:
E_vec=np.array([0,0,0]) # 電場ベクトル
B_vec=np.array([0,0,B]) # 磁場ベクトル
# 位置を配列に保存
x_ary.append(x_vec[0])
y_ary.append(x_vec[1])
z_ary.append(x_vec[2])
t_ary.append(t)
v_ary.append((v_vec[0]**2+v_vec[1]**2+v_vec[2]**2)**0.5)
F=q*(E_vec+np.cross(x_vec,B_vec)) # ローレンツ力
a=F/m # 加速度
v_vec=v_vec+a*dt # 速度
x_vec=x_vec+v_vec*dt # 位置
t+=dt # 時刻を進める
# シミュレーション結果の表示
plt.plot(x_ary,y_ary)
plt.xlabel('x [m]')
plt.ylabel('y [m]')
plt.title('サイクロトロン内の粒子の軌道')
plt.axis('equal')
plt.grid()
plt.savefig('サイクロトロン内の粒子の軌道_2.png')
plt.show()
plt.plot(t_ary,v_ary)
plt.xlabel('t [s]')
plt.ylabel('v [m/s]')
plt.title('サイクロトロン内の粒子の速度')
plt.grid()
plt.savefig('サイクロトロン内の粒子の速度_2.png')
plt.show()
このように、荷電粒子の速度は、指数関数的に増大する。
まとめ
今回は、サイクロトロンによって加速される荷電粒子の軌道計算を行った。
このように、サイクロトロンは短期間に粒子を爆発的に加速させることができるため、素粒子物理の世界で多用されている。
もちろん設備の規模が極めて大きく消費電力も膨大であるが、ビックバン当時の宇宙および核融合といった量子的な現象の解明に一役買っている。
参考文献

