01xmac3.ipynb

コードをクリップボードにコピーするには,セルの右上のアイコンをクリックする。

コード [1]: 質量減衰係数の取得

#
# 特定の波長(Å) のX線に対する任意の化合物の
# 質量減衰係数 (x-ray mass attenuation coefficient) (μ/ρ) を求める。
# "xmac3.py" が作業用ディレクトリの親ディレクトリのサブディレクトリ "xmac3" 下にあるとする。
# 質量減衰係数計算ソフトウェア "xmac3.py" 中のデータは
# 米国国立標準技術研究所 (National Institute of Standards & Technology; NIST) の
# 標準参照データベース (Standard Reference Database) 126
# (SRD 126) によるものであることに注意する。
#
%run ..\xmac3\xmac3.py 1.5406 Si

コード [2]: 理論密度の計算

#
# Si の式モル質量 (formula molar mass) は M = 28.085 g/mol, 
# 光子エネルギー 8.048 keV(波長 1.5406 Å)のX線に対する Si の質量減衰係数は
# (μ/ρ) = 63.689 cm**2/g とわかった。
# Si の計算密度 (calculated density)(真密度)を求める。
# 式モル質量: M = 28.085 g/mol, 格子定数: a = 5.43123*10^(-8) cm,
# 単位胞中の式数: Z = 8, アボガドロ定数: NA = 6.02213076e23 mol**(-1)
#    d_cal = M * Z / a**3 /NA
#
print(f'Calculated density : d_cal = {28.085*8/5.43123e-8**3/6.02213076e23:.3f} g/cm**3')

コード [3]: 嵩密度の計算

#
# 試料ホルダの秤量値: w0, 試料充填時の秤量値: w, 
# 試料充填部の容積: v から嵩密度 (bulk density) を求める。
#    d_bulk = (w-w0)/v
#
print(f'Bulk density : d_bulk = {(7.1131-6.9432)/0.2395:.3f} g/cm**3')

コード [4]: 充填率の計算

#
# 粉末粒子の空間充填率 (filling factor) を求める
#    f = d_bulk / d_cal
#
print(f'Filling factor : f = {0.709/2.329:.3f}')

コード [5]: 線減衰係数の計算

#
# 粉末の充填率は 30% 程度が普通。
# 質量減衰係数 (μ/ρ) に嵩密度 d_bulk をかけて線減衰係数 μ を求める。
#
print(f'Linear attenuation coefficient : mu = {63.689*0.709:.3f} cm**(-1)')

コード [6]: 侵入深さの計算

#
# 線減衰係数 μ(cm**(-1) 単位)ではスケール感を掴みにくく,単位の換算などで混乱しやすい。
# 侵入深さ μ**(-1) (penetration depth)(mm 単位)に表記を変える。
#
print(f'Penetration depth : mu**(-1) = {10/45.156:.3f} mm')

コード [7]: 正入射での透過率の計算

#
# 侵入深さが μ**(-1) 試料厚さ t(ホルダ深さ)より充分に浅いことを確認する。
# ただし現行の逆畳込的処理ソフト exterm シリーズでは
# 試料の有限な厚さを考慮した処理が可能である。
# この試料の平均厚さは t = 0.603 mm だった。
# 
# 侵入深さと試料の平均厚さ(試料ホルダの平均深さ)がわかっている時,
# 正入射 (normal incidence) での透過率 (transmittance) を求めておく。
# 実際の測定は斜入射 (oblique incidence) で行われる。
#
import numpy as np
print(f'Transmittance for normal incidence : T_normal = {np.exp(-0.603/0.221):.3f}')

コード [8]: 対称反射での実質透過率の計算とグラフ表示

#
# 正入射での透過率が気になる値なら,見かけ回折角 2Θ に対して
# 透過率がどのように変化するかをグラフにすれば良い。
# 対称反射型のX線回折測定では厚さ t の試料の実質的な透過率は
#    T = exp(-2μt/sinΘ)
# と表される。ただし μ は線減衰係数とする。
#
import numpy as np
import matplotlib.pyplot as plt

#**************************
# 以下は試料に応じて書き換える。
#**************************
specT,muInv = 0.603,0.221
#**************************
# 以上は試料に応じて書き換える。
#**************************
deg2T = np.linspace(5,145,num=141,dtype='float')
sinT = np.sin(deg2T*np.pi/360)
y = np.exp(-2*specT/(muInv*sinT))
fig,ax = plt.subplots()
ax.plot(deg2T,y,label='Transmittance')
ax.xaxis.set_ticks_position('both')
ax.yaxis.set_ticks_position('both')
ax.minorticks_on()
ax.set_xlabel(r'$2\Theta (^\circ)$')
ax.set_ylabel(r'${\rm Transmittance} $')
ax.legend()
plt.show()

20260727学生実験課題10のページに戻る