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)。

戻り値:

なし。グラフを表示するか、エラー時にスクリプトを終了する。