Pythonで電子顕微鏡シミュレーション：マルチスライス法(2)

And now, for something completely different...
　さて、前回の記事の続きです。前回は中途半端に終わってしまってすいません。今回の記事で完結しますのでご安心ください。

前回の記事：　[Pythonで電子顕微鏡シミュレーション：マルチスライス法(1)](https://qiita.com/picric_acid/items/50da3b8ccd8677ace35c)

コードはGitHub[^1]
[^1]: https://github.com/PicricAcid/multislice_method
に載せています。

再びの注意点：　趣味でシミュレーション(以下、趣味レーション)していると、結果が本当に正しいのか判別がつきにくく、ここに載っている結果も物理的に正しくない可能性があります。間違いがあったらご指摘をいただけると幸いです。

#電子顕微鏡の性能による誤差(収差)
　前回の記事の最後で、結晶構造像をシミュレーションするには、マルチスライス計算だけでは不足だと言いました。具体的に何が不足かといえば、マルチスライス計算だけでは、観測する機器である電子顕微鏡の性質による理想系との差を考慮していないのです。電子顕微鏡に限った話でないのですが、計測をシミュレーションするときには、計測結果の解析を目的とすることがほとんどです。ですので、シミュレーションはできる限り計測系に近づける必要があるのです。
　電子顕微鏡で考えられる、理想系との差(収差)は数多くあります。その中でも、HREMによる結晶構造像に特に効いてくるのは、球面収差と色収差です。

#球面収差
　球面収差とは、電子顕微鏡の対物レンズに起因する収差です。電子線が対物レンズに入射するとき、対物レンズに対して垂直(光軸に並行)に近い角度で入射した電子線は適切に像面に集まりますが、光軸から傾いて入射した電子線は像面から離れたところに焦点があってしまいます。これによる像のぼやけが球面収差です。球面収差の大きさは対物レンズの性能により変化します。
　球面収差は以下の式で表されます。
$$ \chi(\alpha) = \frac{2\pi}{\lambda}(C_S \frac{\alpha^4}{4} - \Delta f\frac{\alpha^2}{2}) $$
$\alpha$は散乱角(光軸と散乱した電子線のなす角)、$C_S$は球面収差係数といって対物レンズの性能によって固有の定数、$\Delta f$は焦点はずれ量(デフォーカス量)です。
ここで、デフォーカス量という一見関係なさそうな変数が出てきました。実はこのデフォーカス量の変化を用いると、球面収差を逆手にとった観察ができるのです。
　前回、結晶構造像では透過波と回折波の位相差が観察できると言いました。弱位相物体近似の下では回折波は
$$ \psi = \{1 - 2\pi i\sigma V_p \} \psi_0 = \psi_0 - 2\pi i\sigma V_p \psi_0 $$
です。前回登場した式を簡単のために$\sigma =1/2\lambda E$として書き換えています。右辺第二項を見ると、$-\pi/2$だけ回折波は透過波に対して位相が変化していることがわかります。しかしこのままでは複素成分なので像として反映されません。そこで、球面収差によってさらに$-\pi/2$だけわざと位相を変化させます。球面収差はデフォーカス量によって調節します。
$\chi(\alpha)=-\pi/2$として逆算すると、デフォーカス量$\Delta f$は
$$ \Delta f = 1.2(Cs\lambda)^{1/2} $$
で計算されます。係数は1.1 ~ 1.2程度までズレがあります。このデフォーカス量を特に、シェルツァー・フォーカスと言います。
　デフォーカス量を調節しても、位相差が像上の明暗(コントラスト)として適切に反映される範囲は限られています。散乱角に対して位相差がどの程度反映されるかを示す関数を位相コントラスト伝達関数(CTF)といい、以下で表されます。
$$ CTF(\alpha) = cos \{-\frac{\pi}{2} + \chi(\alpha) \} $$
試しに、$C_S = 0.5 mm$、$\alpha = 0 ~ 0.02$でCTFをプロットしてみたのが以下です。
![fig1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/467266/17381e4b-0847-b5cb-6df5-3dbc5da88521.png)
$CTF = -0.5$のところで位相コントラストが適切に反映されると考えると、$\alpha$が0.0025から0.0125あたりまでであればまあまあ許容範囲内であろうと言えます。CTFの正負が変わると像の白黒が反転するので、$\alpha = 0.0125$以降のCTFの正負が大きく変動しているところでは、位相コントラストがめちゃくちゃになってしまいます。
CTFの傾向がわかったところで、前回の記事で計算した範囲でのCTFをプロットしてみましょう。
![fig2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/467266/0e3830ce-f0c6-fa4d-e3c8-6404eae72ae3.png)
球面収差のみを考えれば、ほぼ全ての範囲で位相コントラストが正しく出そうだということがわかりました。

#色収差
　もう一つ、結晶構造像で影響が大きく出るのが色収差です。色とは、波長のことを指しています。色収差は電子線のエネルギーの幅に起因します。波のエネルギーの違いは波長の違いですから、色の違いというわけです。電子顕微鏡の電子銃から出る電子線は、$\Delta E/E = 10^{-5}$ 以下ほどの広がり(揺らぎ)を持ちます。さらに、その電子線を集めるレンズの電流も同程度の揺らぎ$\Delta J/J$を持ちます。色収差による焦点のズレはこれらに比例して、
$$ \frac{\Delta f}{f} \propto \frac{\Delta E}{E} - 2\frac{\Delta J}{J} $$
さらに、$\Delta f/f$がガウス関数に従うと仮定すると、元のデフォーカス量を$\Delta f_0$として、
$$ W(\Delta f) = \frac{1}{\sqrt{2\pi \sigma^2}}e^{\frac{-(\Delta f - \Delta f_0)^2}{2\sigma^2}} $$
記号が被って紛らわしいですが、ここでの$\sigma$はガウス関数の偏差で
$$ \sigma = Cc[(\frac{\Delta E}{E})^2 + (\frac{\Delta J}{J})^2]^{1/2} $$
$C_C$を色収差係数と言います。以上から、色収差$E_C$は
$$ E_C = e^{-\frac{1}{2}(\pi^2\sigma^2\frac{\alpha^4}{\lambda^2})} $$
となります。
色収差を先ほどのCTFにかけてプロットしたものが以下です。
![fig3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/467266/ee742cd2-f32f-9dfb-255e-99973620ce61.png)
先ほどと同様に前回の計算範囲でも見てみましょう。
![fig4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/467266/0af7b1b9-7970-7bd9-3fd9-2370a3c85719.png)
これらを踏まえて結晶構造像を作れば、より正しい像ができるはずです。

#プログラム
　球面収差と色収差を予め計算しておいて、マルチスライス計算から出力された$\Psi_{out}$に畳み込みます。
$$ \psi = F[\Psi_{out}e^{i\chi}E_C] $$
球面収差

```Python
Cs = 0.5e-3
deltaf = 1.2*(Cs*lamb)**(1/2)
hkl = [h, k, 0]
thkl = np.transpose(hkl)
dk = 1/((np.matmul(np.matmul(invG, thkl), hkl))**(1/2))
u = self.lamb/(2*dk)
chi = 2*np.pi/lamb
chi = chi*(1/4*self.Cs*u**4 - 1/2*deltaf*u**2)
```

色収差

```Python
deltaE = 1.0e-6
deltaJ = 0.5e-6
Cc = 1.4e-3
sig = Cc*((deltaE)**2 + (2*deltaJ)**2)**(1/2)
hkl = [h, k, 0]
thkl = np.transpose(hkl)
dk = 1/((np.matmul(np.matmul(invG, thkl), hkl))**(1/2))
u = lamb/(2*dk)
w = np.exp(-(1/2)*(np.pi**2)*(u**4)*(sig**2)/(lamb**2))
```
α-Fe、 [001]入射、加速電圧 200 keV、$C_S$ = 0.5 mm、$C_C$ = 1.4 mm、$\Delta E/E$ = 1.0 μm、$\Delta J/J$ = 0.5 μmとすると、結晶構造像はこんな感じです。
![fig5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/467266/d9915443-4f66-a7d4-77e9-fccc0ba45859.png)
$C_S$を0.5 μmにすると以下のようになります。より像が明瞭になっています。収差係数が小さい顕微鏡はいい顕微鏡と言えます。
![fig6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/467266/b064261c-501a-0055-36f6-ad8b0d84f2a3.png)

#まとめ
大変長くなってしまいましたが、HREMでの結晶構造像のシミュレーションを作りました。実は収束角などまだ考慮できていないパラメータがありますので、いずれ改良できたらと思います。

#参考文献
- [日本電子株式会社　用語集] (https://www.jeol.co.jp/words/)

#コード
- https://github.com/PicricAcid/multislice_method