D:/git/sphinx/tkProg/source/electrical/EF_T_semi_VASP.py

プログラムの動作

第一原理計算ソフトVASPによって計算された状態密度(DOS)データをもとに、半導体材料における各種キャリア統計(電子密度、正孔密度、フェルミ準位、ホール係数など)を算出するプログラムです。

主な機能として、指定温度におけるキャリア密度のフェルミ準位依存性の解析、温度変化に対するフェルミ準位とキャリア密度の推移の算出、および状態密度から有効質量の推定を行うことができます。

これにより、第一原理計算の結果から、実際のデバイスや材料の有限温度での電気的特性を定量的に評価・予測するという課題を解決します。

原理

半導体のキャリア密度は、状態密度 \(D(E)\) とフェルミ・ディラック分布関数 \(f(E)\) を用いて計算されます。 電子密度 \(N_e\) は以下の積分式で与えられます。

\[N_e = \int_{E_C}^{\infty} D(E) f(E) dE\]

正孔密度 \(N_h\) は以下の式で計算されます。

\[N_h = \int_{-\infty}^{E_V} D(E) (1 - f(E)) dE\]

ここで、\(E_C\) は伝導帯下端、\(E_V\) は価電子帯上端のエネルギーであり、分布関数 \(f(E)\) は以下の式で表されます。

\[f(E) = \frac{1}{1 + \exp\left(\frac{E - E_F}{k_B T}\right)}\]

温度依存性(Tモード)では、ドナー濃度 \(N_D\) およびアクセプタ濃度 \(N_A\) を考慮し、以下の電荷中性条件を満たすようにフェルミ準位 \(E_F\) を自己無撞着に決定します。

\[N_e + N_A^- = N_h + N_D^+\]

また、有効質量の計算(meモード)では、バンド端近傍の放物線バンド近似に基づき、状態密度がエネルギーの平方根に比例することを利用します。

\[D(E) = \frac{\sqrt{2} (m^* m_e)^{3/2}}{\pi^2 \hbar^3} \sqrt{E - E_C}\]

この関係から、\(D(E)^2\) のエネルギーに対する傾きを求めることで、状態密度有効質量 \(m^*\) を算出します。

必要な非標準ライブラリとインストール方法

本プログラムは数値計算やグラフ描画のためにいくつかの非標準ライブラリを使用します。 以下のコマンドでインストール可能です。

pip install numpy scipy matplotlib

また、本プログラムの内部では、モジュールの説明文(docstring)を「3重引用符」で囲むなどして記述された独自の自作ライブラリ群 tklibtklib.tkfile, tklib.tkutils, tklib.tksci, tklib.tktransport など)に依存しています。そのため、実行環境のPythonパスが通った場所にこれらのライブラリパッケージをあらかじめ配置しておく必要があります。

必要な入力ファイル

主にVASPが出力する以下のファイルが必要です。

  • DOSCAR: 系の状態密度(DOS)が記録されたファイル。エネルギーに対するDOSのデータ構造を持っています。

  • オプションでバンドエッジを判別するために EIGENVAL を利用することも可能です(引数 data_for_bandedges で指定します)。

生成される出力ファイル

実行したモード(T または EF)に応じて、計算結果がCSV形式で実行ディレクトリに保存されます。

  • {入力ファイル名}-EFT-T.csv (Tモード実行時) 内容:温度、フェルミ準位、電子密度、正孔密度、イオン化ドナー・アクセプタ濃度、ホール係数、および各活性化エネルギーなどの温度依存性データ。

  • {入力ファイル名}-EFT-EF.csv (EFモード実行時) 内容:フェルミ準位、電子密度、正孔密度、イオン化ドナー・アクセプタ濃度、ホール係数などのフェルミ準位依存性データ。

コマンドラインでの使用例 (Usage)

基本的な実行コマンドの構文は以下の通りです。

python D:/git/sphinx/tkProg/source/electrical/EF_T_semi_VASP.py <mode> [file] [args]

第一引数 <mode> には以下のいずれかを指定します。

  • me: DOSのプロットと有効質量のフィッティング

  • T: キャリア密度やフェルミ準位の温度依存性の計算

  • EF: 指定温度におけるキャリア密度などのフェルミ準位依存性の計算

続いて対象となるVASPファイル、および各モードに対応したパラメータを引数として渡します。

コマンドラインでの具体的な使用例

  1. meモード(有効質量の計算)

python D:/git/sphinx/tkProg/source/electrical/EF_T_semi_VASP.py me DOSCAR 0.5 DOSCAR

このコマンドは、DOSCAR ファイルを読み込み、バンド端から 0.5 eV の範囲で状態密度をプロットし、有効質量のフィッティングを実行します。実行後、状態密度、キャリア数、\(DOS^2\)、有効質量のグラフが画面に表示されます。

  1. Tモード(温度依存性の計算)

python D:/git/sphinx/tkProg/source/electrical/EF_T_semi_VASP.py T DOSCAR 300 600 11 DOSCAR

このコマンドは、300 K から 600 K の範囲を 11 分割して、各温度におけるフェルミ準位やキャリア密度などを計算します。計算結果はコマンドラインに出力されるとともにグラフ描画され、同時に DOSCAR-EFT-T.csv というファイルにデータが保存されます。

  1. EFモード(フェルミ準位依存性の計算)

python D:/git/sphinx/tkProg/source/electrical/EF_T_semi_VASP.py EF DOSCAR 50 300 DOSCAR

このコマンドは、温度 300 K の条件下で、フェルミ準位を 50 分割したメッシュでスイープさせ、キャリア密度の変化を計算します。計算後に各種パラメータの推移グラフが表示され、DOSCAR-EFT-EF.csv というファイルに結果が保存されます。