plot_VASP_DOS_Ne プログラム仕様
VASPのDOSCARファイルを解析し、DOS、キャリア濃度、またはSeebeck係数をプロットするスクリプト。
詳細説明: 本スクリプトは、VASP計算ディレクトリからPOSCAR、DOSCAR、OUTCARファイルを読み込み、 バンド端(EVBM, ECBM)を特定します。 コマンドライン引数で指定されたモードに応じて、以下のいずれかのプロットを実行します。 - 全状態密度(DOS)と積分電子数 ('dos'モード) - フェルミ準位に対する電子および正孔濃度 ('n'モード) - フェルミ準位に対するSeebeck係数 ('seebeck'モード)
キャリア濃度とSeebeck係数の計算には、フェルミ・ディラック統計と定緩和時間近似(CRTA)が用いられます。 計算の数値的安定性を向上させるための工夫も含まれています。
関連リンク: VASP DOSおよびキャリア濃度、Seebeck係数プロットツール
- VASP.plot_VASP_DOS_Ne.calculate_concentrations(dos_info, fermi_energy_list, T)[ソース]
指定されたフェルミエネルギーのリストに対するキャリア濃度を計算する。
詳細説明: DOS情報 (エネルギーと全DOS) とフェルミ・ディラック分布関数を用いて、 各フェルミエネルギーにおける電子濃度と正孔濃度を数値積分(シンプソン法)で算出する。 DOS値が負の場合は0として処理される。
- パラメータ:
dos_info -- DOS情報を含む辞書。必須キーは'E' (エネルギー配列) と 'TotalDOS' (全DOS配列)。 例: {'E': np.array([...]), 'TotalDOS': np.array([...])}。
fermi_energy_list -- 計算対象のフェルミエネルギーの配列 (eV)。numpy.ndarray。
T -- 温度 (K)。float。
- 戻り値:
electron_concentrations (numpy.ndarray): 各フェルミエネルギーに対応する電子濃度の配列 (cm^-3)。
hole_concentrations (numpy.ndarray): 各フェルミエネルギーに対応する正孔濃度の配列 (cm^-3)。
- VASP.plot_VASP_DOS_Ne.calculate_seebeck_coefficient(dos_info, fermi_energy_list, T)[ソース]
Constant Relaxation Time Approximation (CRTA) を用いてSeebeck係数を計算する。
詳細説明: DOS情報とフェルミ・ディラック分布関数のエネルギー微分を用いて、輸送積分L0とL1を計算し、 それらの比からSeebeck係数を導出する。 数値的な安定性を確保するため、エネルギー微分の計算時に`exp(arg)`が大きくなりすぎる領域は0と見なす。 Seebeck係数に加え、各フェルミエネルギーにおける電子および正孔濃度も同時に計算し、 結果をコンソールに出力する。
- パラメータ:
dos_info -- DOS情報を含む辞書。必須キーは'E' (エネルギー配列) と 'TotalDOS' (全DOS配列)。 例: {'E': np.array([...]), 'TotalDOS': np.array([...])}。
fermi_energy_list -- 計算対象のフェルミエネルギーの配列 (eV)。numpy.ndarray。
T -- 温度 (K)。float。
- 戻り値:
seebeck_coefficients (numpy.ndarray): 各フェルミエネルギーに対応するSeebeck係数の配列 (μV/K)。
- VASP.plot_VASP_DOS_Ne.fermi_dirac(E, Ef, T)[ソース]
フェルミ・ディラック分布関数を計算する。
詳細説明: 与えられたエネルギーE、フェルミエネルギーEf、温度Tに基づいてフェルミ・ディラック分布関数の値を計算する。 数値的な安定性を向上させるため、指数関数 exp(x) の引数 x が非常に大きくなることによる オーバーフロー(inf)を避けるために、arg_threshold を用いて引数をクリッピングする。 これにより、exp(x) が inf になる領域では 1 / (inf + 1) が 0 に収束するように振る舞う。
- パラメータ:
E -- エネルギー (eV)。floatまたはnumpy.ndarray。
Ef -- フェルミエネルギー (eV)。float。
T -- 温度 (K)。float。
- 戻り値:
フェルミ・ディラック分布関数の値。floatまたはnumpy.ndarray。
- VASP.plot_VASP_DOS_Ne.main()[ソース]
スクリプトのエントリポイント。VASP DOSCARを読み込み、DOS、キャリア濃度、またはSeebeck係数をプロットする。
詳細説明: コマンドライン引数を解析し、VASP計算ディレクトリからPOSCAR、DOSCAR、OUTCARファイルを読み込む。 読み込んだDOSデータからバンド端 (EVBM, ECBM) を特定し、VASPのフェルミ準位とバンドギャップを出力する。 選択されたモード ('dos', 'n', 'seebeck') に応じて、以下のいずれかの計算とプロットを実行する。 - 'dos'モード: 全状態密度と積分電子数を、左右のy軸を用いてプロットする。EVBM, ECBM, VASPフェルミ準位、
およびOUTCARから読み取れる場合は全電子数NELECTを垂直/水平線で表示する。
'n'モード: 指定された温度におけるフェルミエネルギーに対する電子および正孔濃度を対数スケールでプロットする。
'seebeck'モード: 指定された温度におけるフェルミエネルギーに対するSeebeck係数をプロットする。
- パラメータ:
args -- コマンドライン引数。ArgumentParserによりパースされる。 'path': VASP計算ディレクトリへのパス。 '--mode': プロットモード ('dos', 'n', 'seebeck')。 '--T': 計算に使用する温度 (K)。
- 戻り値:
なし。グラフを表示するか、エラー時にスクリプトを終了する。