# xrayUtilities を使うことの宣言。今回はグラフ表示はしないので matplotlib は呼ばない import xrayutilities as xu # xu が持ってる結晶の情報を借りる。 # 別の方法で作った結晶についても試してみよう InP = xu.materials.InP GaAs = xu.materials.GaAs # 構造因子の大きさは # 1. G=dk となる G、あるいは同じことだが dk に依存する。 # 2. dk = k'-k が同じなら (G=dkになるなら)良いので、本当は k の大きさには依存しない # 3. 言い換えると、X線の波長、エネルギーには依存しない。 # 4. はずなのだが、原子散乱因子には電子密度分布のフーリエ変換の項(主たる項)以外に異常分散項が存在し # これはエネルギー依存性があるため、厳密な議論には X線のエネルギー、波長を指定する必要がある。 # 5. 異常分散の起源は、原子に束縛された電子が電磁波によって揺さぶられる効果 energy= 8048 # eV # 構造因子を計算する逆格子点のリスト (好きな逆格子点を好きなだけ並べればいい) hkllist = [[0,0,0], [1, 1, 1], [2, 2, 2], [3, 3, 3], [0, 0, 0], [1, 0, 0], [2, 0, 0], [4, 0, 0]] # これから InP の構造因子の計算結果を表示するよ、という表示 print( f"Structual Factors of InP at {energy}[eV]" ) for hkl in hkllist: # hkllistから取り出した逆格子点を順番に hkl として qvec = InP.Q( hkl ) # その hkl にたどり着くのに Q すなわち dk を求める F = InP.StructureFactor( qvec, energy ) # InP について、その Q の時の構造因子を計算する print( f"|F|{hkl} = {abs(F):8.3f}" ) # 結果表示 # これから GaAs の構造因子の計算結果を表示するよ、という表示 print( f"Structual Factors of GaAs at {energy}[eV]" ) for hkl in hkllist: qvec = GaAs.Q( hkl ) F = GaAs.StructureFactor(qvec, energy) print(f"|F|{hkl} = {abs(F):8.3f}")