AkaiKKRでバンドギャップの測り方

AkaiKKR(machikaneyama)にはバンドギャップの大きさを数値として出力する機能がないように思えます。そこでBlochスペクトル関数にローレンツ関数をフィッティングすることにより、ギャップのエネルギーを計算してみました。このような方法が、どの程度物理的に意味があるのかは、難しいところですが。

001_20150928230014732.png

Fig.1: AkaiKKRによるGaAsのバンド構造の計算結果。Γ点のバンドギャップはグラフから目視で読み取る限り0.6Ry程度。



バンドギャップを目視で読みだす


ecaljなどでは、バンドギャップの大きさが数値として出力される機能があります。しかしながらAkaiKKR(machikaneyama)にはバンドギャップの大きさを数値として出力する機能がないように思えます。もちろん状態密度やバンド図を描いて目視で読み取ることは可能です。例えばGaAsはΓ点にVBM(Valence Band Mzximum)とCBM(Conduction Band Minimum)を持つ直接遷移型の半導体です。Fig.1はAkaiKKRによって計算されたΓ点付近のバンド構造で VBM は -0.03 Ry あたり CBM は 0.05 Ry あたりにあるのでバンドギャップは約 0.08 Ry だと読み取ることができます。(なおこの場合のエネルギー基準点 E=0 は必ずしも半導体のフェルミ準位(絶対零度における化学ポテンシャル)ではありません。金属の場合は問題なくフェルミ準位になりますが、半導体の場合はバンドギャップの間の「どこか」以上の事は言えないと思います。)

所詮LDAやGGAの範囲で決めたバンドギャップなので細かいことは気にしても仕方ないかもしれません。とは言うものの目視ではなくもうちょっと「ちゃんとした風」な値の出し方があった方が良いと思うときもあります。そんなわけで今回はBlochスペクトル関数にローレンツ関数をフィッティングしてピークの中心値を求めてみました。

計算方法


今回はspc計算の入力方法が、古いバージョンのAkaiKKRの方がやりやすいので(少なくともspc計算には)最新版(August 26, 2015)ではなく、それより以前のバージョン(May 22, 2015)を使用します。

最初に通常のgo計算を行います。以下はgo計算のための入力ファイルで、サンプルの入力ファイルを原子球近似(asa)としたものです。

c----------------------GaAs----------------------------------
go data/gaas
c------------------------------------------------------------
c brvtyp a c/a b/a alpha beta gamma
fcc 10.684 , , , , , ,
c------------------------------------------------------------
c edelt ewidth reltyp sdftyp magtyp record
0.001 1.5 sra mjwasa nmag 2nd
c------------------------------------------------------------
c outtyp bzqlty maxitr pmix
update 4 200 0.035
c------------------------------------------------------------
c ntyp
4
c------------------------------------------------------------
c type ncmp rmt field mxl anclr conc
Ga 1 1 0.0 2 31 100
As 1 1 0.0 2 33 100
Vc1 1 1 0.0 0 0 100
Vc2 1 1 0.0 0 0 100
c------------------------------------------------------------
c natm
4
c------------------------------------------------------------
c atmicx atmtyp
0 0 0 Ga
0.25 0.25 0.25 As
0.5 0.5 0.5 Vc1
0.75 0.75 0.75 Vc2
c------------------------------------------------------------


次にspc計算のための実行ファイルをコンパイルします。
まず source/specx.f の msex を大きめの値に変更します。今回は msex=401 としました。更に source/cemesr.f の data ref/0.75d0/ を data ref/0.5d0/ に変更します。これらの変更ののち make します。
前者はdos計算やspc計算のエネルギー分解能を決めるパラメータです。後者はewidthのうち、どれだけの割合をフェルミ準位より下に割り当てるかを指定するパラメータです。

前述のとおりGaAsのバンドギャップはΓ点にあるのでBlochスペクトル関数はΓ点だけ計算します。エネルギーの範囲もバンドギャップを含んでさえいればいいので小さめに変更します。

c----------------------GaAs----------------------------------
spc data/gaas
c------------------------------------------------------------
c brvtyp a c/a b/a alpha beta gamma
fcc 10.684 , , , , , ,
c------------------------------------------------------------
c edelt ewidth reltyp sdftyp magtyp record
0.001 0.2 sra mjwasa nmag 2nd
c------------------------------------------------------------
c outtyp bzqlty maxitr pmix
update 4 200 0.035
c------------------------------------------------------------
c ntyp
4
c------------------------------------------------------------
c type ncmp rmt field mxl anclr conc
Ga 1 1 0.0 2 31 100
As 1 1 0.0 2 33 100
Vc1 1 1 0.0 0 0 100
Vc2 1 1 0.0 0 0 100
c------------------------------------------------------------
c natm
4
c------------------------------------------------------------
c atmicx atmtyp
0 0 0 Ga
0.25 0.25 0.25 As
0.5 0.5 0.5 Vc1
0.75 0.75 0.75 Vc2
c------------------------------------------------------------
c kvector
0.0 0.0 0.0
c------------------------------------------------------------


すると data/gaas_up.spc にエネルギーとBlochスペクトル関数が書きだされます。

002_2015092823001346f.png

Fig.2: GaAsのΓ点のBlochスペクトル関数(赤)とローレンツ関数によるピークのフィッティング(緑と青)。


この数値データのピーク位置を読み取るだけでも良いのですが、もうひと手間かけてローレンツ関数にフィッティングしました。

\begin{equation}
f(x)=\frac{a_1}{1 + a_3 (x - a_2 )^2}
\end{equation}

その結果ピークの中心値は CBM が 0.0516617 Ry で VBM が 0.0297679 Ry となりました。したがってバンドギャップは 0.0814296 Ry となりました。

003_20150928230013664.png

004_20150928230013b79.png
Fig.3-4: それぞれのピークへのフィッティング


何が問題なのか?


Fig.3-4に示したようにAkaiKKRを用いて計算したBlochスペクトル関数は、エネルギーに広がりを持っています。しかし、本来なら規則構造の完全結晶の場合、エネルギーの幅を持たないデルタ関数的なピークになるはずです。このようなエネルギーの広がりがある(持たせてある)理由は第5回CCMSハンズオン(ソフトウェア講習会): AkaiKKRチュートリアル 1. KKR法のP29-30に書いてある通り、数値計算上の理由です。

規則構造の完全結晶だけなら、入力ファイルの edelt を十分小さくとれば、エネルギーの広がりは小さくなっていくので解決できます。問題は、不規則性の影響によってもエネルギーに広がりができるという事です。

不規則構造に関しても CBM や VBM に相当するBlochスペクトル関数のピークに対してフィッティングをすることによってピークの中心値を求めることはできると思います。しかし、数値計算的な理由からピークがぼやけている規則構造の場合と不規則性からエネルギーに不確定性が出ている場合とでは、意味が異なります。

関連エントリ




参考URL




付録


このエントリで使用したファイルを添付します。ファイル名末尾の".txt"を削除して、"_"を"."に変更すれば使えるはずです。(参考:ねがてぃぶろぐの付録)


参考文献/使用機器




フィードバック



にほんブログ村 その他趣味ブログ 電子工作へ

 ↑ 電子工作ブログランキング参加中です。1クリックお願いします。


コメント・トラックバックも歓迎です。 ↓      


 ↓ この記事が面白かった方は「拍手」をお願いします。


tag: AkaiKKR machikaneyama KKR 半導体 

comment

Secret

FC2カウンター
カテゴリ
ユーザータグ

LTspiceAkaiKKRScilabmachikaneyamaKKRPSoCOPアンプPICCPA強磁性モンテカルロ解析常微分方程式トランジスタode状態密度インターフェースDOSPDS5022ecaljスイッチング回路定電流半導体シェルスクリプトレベルシフト乱数HP6632A温度解析ブレッドボードI2CR6452A分散関係トランジスタ技術可変抵抗確率論数値積分反強磁性セミナー非線形方程式ソルバ絶縁バンドギャップ熱設計偏微分方程式バンド構造GW近似カオス三端子レギュレータLEDフォトカプラシュミットトリガISO-I2CA/DコンバータLM358USBカレントミラーTL431マフィンティン半径PC817C数値微分アナログスイッチ発振回路サーボ直流動作点解析74HC40532ちゃんねる標準ロジックチョッパアンプLDAアセンブラFFTbzqltyイジング模型ブラべ格子開発環境補間量子力学電子負荷BSchパラメトリック解析単振り子基本並進ベクトル熱伝導繰り返しGGAMaximaTLP621ewidthSMP相対論抵抗位相図ランダムウォークスピン軌道相互作用六方最密充填構造不規則合金FETコバルト失敗談QSGWcygwinスレーターポーリング曲線スイッチト・キャパシタラプラス方程式gfortranキュリー温度状態方程式条件分岐格子比熱TLP552LM555TLP521三角波NE555過渡解析FXA-7020ZRWriter509テスタ詰め回路MCUマントルダイヤモンドQNAPデータロガーガイガー管自動計測UPS井戸型ポテンシャルawk第一原理計算仮想結晶近似ブラウン運動差し込みグラフ平均場近似fsolve起電力熱力学OpenMPスーパーセル固有値問題最適化最小値VCAシュレディンガー方程式VESTAubuntu最大値面心立方構造PGAOPA2277L10構造非線型方程式ソルバ2SC1815fccフェルミ面等高線ジバニャン方程式ヒストグラム確率論マテリアルデザイン正規分布結晶磁気異方性interp1フィルタ初期値ウィグナーザイツ胞c/aルチル構造岩塩構造スワップ領域リジッドバンド模型edeltBaOウルツ鉱構造重積分SIC二相共存ZnOquantumESPRESSOCapSensegnuplotmultiplot全エネルギー固定スピンモーメントFSM合金ノコギリ波フォノンデバイ模型ハーフメタル半金属TeXifortTS-110不規則局所モーメントTS-112等価回路モデルパラメータ・モデルヒストグラムExcel円周率GimpトラックボールPC直流解析入出力文字列マンデルブロ集合キーボードフラクタル化学反応三次元Realforce縮退日本語最小二乗法関数フィッティング疎行列シンボル線種ナイキスト線図陰解法負帰還安定性熱拡散方程式EAGLECrank-Nicolson法連立一次方程式P-10クーロン散乱Ubuntu境界条件MBEHiLAPW軸ラベルトランスCK1026MAS830L凡例PIC16F785LMC662AACircuit両対数グラフ片対数グラフグラフの分割specx.f

最新コメント
リンク

にほんブログ村 その他趣味ブログ 電子工作へ