nano_exit

基礎的なことこそ、簡単な例が必要だと思うのです。

部分散乱振幅(サイトT行列)のアーガンド図

仕事で図を作る必要があったので、練習がてらまとめた。

位相シフトなどの概念にについては、wikipedia等を参照して頂きたい。
散乱振幅 - Wikipedia
簡単に言うと、「ポテンシャルが無い時の波は、ポテンシャルによってどれくらい変調されたか?」を表す量である。

ある部分波(角運動量 lの位相シフト \delta_lに対するサイト T行列 t_lは、次の式で与えられる。

\displaystyle
t_l = \frac{ e^{ 2 i \delta_l } - 1 }{ 2 i k }

位相シフトは、ある程度エネルギーが高くなると単調に減少する。
ここでは簡略化し、一次で減少するとする。
f:id:koideforest:20180829065145p:plain
この時の t_lの実部(赤点)と虚部(青点)、及びそのArgand diagramは次の図のようになる。
f:id:koideforest:20180829065152p:plainf:id:koideforest:20180829065202p:plain
左巻きでグルグルする。

仮に、一次で単調に増加するようにすると、右巻きでグルグルする。
向きは後で大事になる。

次に、(準)共鳴準位がある場合を考える。
共鳴準位のエネルギー位置で位相は急激に変化し、最終的に \piずれる。
これを簡単に \tan^{-1}で表すとする。ただし、原点を通る様に下駄を履かせている。
f:id:koideforest:20180829074635p:plainf:id:koideforest:20180829074644p:plainf:id:koideforest:20180829074651p:plain
Argand diagramにおいて、共鳴準位のある20 eV近傍で、急激に(分かりにくいが)右巻きに回転しているのがわかる。

最後に、両方を組み合わせた位相シフトの変化を考える。
f:id:koideforest:20180829074709p:plainf:id:koideforest:20180829074721p:plainf:id:koideforest:20180829074729p:plain
急に右巻きの成分が現れ、共鳴準位のから遠ざかるとまた左巻きに戻っているのがわかるかと思う。
この様な挙動から、共鳴準位の有無を観察することが出来る。

以下ソースコード

import numpy as np
from matplotlib import pyplot as plt

def wavenumbers( energy_ev ):
    RYD2EV = 13.605
    EV2RYD = 1. / RYD2EV
    return np.sqrt( energy * EV2RYD )

energy = np.linspace( 1., 100, 199 )

#delta = - energy / 20.
#delta = np.arctan( energy - 20 ) + np.pi / 2.
delta = - energy / 20. + np.arctan( energy - 20 ) + np.pi / 2.

plt.plot( energy, delta )
plt.xlabel( "Energy [eV]" )
plt.ylabel( "$\delta_l$" )
plt.show()
#plt.savefig( "delta.png" )
#plt.close()

t_l = ( np.exp( 2.j * delta ) - 1. ) / ( 2.j * wavenumbers( energy ) )
plt.plot( energy, t_l.real, "ro" )
plt.plot( energy, t_l.imag, "bo" )
plt.xlabel( "Energy [eV]" )
plt.ylabel( "$t_l$" )
plt.show()
#plt.savefig( "tl.png" )
#plt.close()

fig = plt.figure( figsize = ( 4.72, 4.72 ) )
ax = fig.add_subplot( 1, 1, 1 )
ax.plot( t_l.real, t_l.imag, "go" )
ax.set_xlim( - 1.1 * m_t, 1.1 * m_t )
ax.set_ylim( - 0.1 * m_t, 2.1 * m_t )
ax.set_xlabel( "Re( $t_l$ )" )
ax.set_ylabel( "Im( $t_l$ )" )
for ie, ene in enumerate( energy ):
    if ene % 10 == 0:
        ax.text( t_l.real[ie], t_l.imag[ie], "{:4.0f} eV".format( energy[ie] ) ) 
plt.show()
#plt.savefig( "arg.png" )
#plt.close()