Electron_Helmholtz_energy プログラム仕様

有限温度における電子のエネルギーとエントロピーへの寄与をVASPのDOSCARファイルから計算します。

このスクリプトは、VASPのDOSCARファイルから読み込んだ電子状態密度(DOS)データを使用して、 有限温度における電子の内部エネルギー、エントロピー、およびヘルムホルツ自由エネルギーを計算します。 フェルミ・ディラック分布を考慮し、温度に応じたフェルミ準位の変動もニュートン法を用いて決定します。 最終的に、温度に対するこれらの物理量の変化をプロットして可視化します。

Electron_Helmholtz_energy.py 技術ドキュメント

VASP.Electron_Helmholtz_energy.CalEF(T, EF0, E0, E1, totNe)[ソース]

温度Tにおけるフェルミ準位EFを、電子数保持の条件から計算します。

指定された温度Tにおいて、電子の総数が totNe となるようにフェルミ準位を調整します。 ニュートン法 (scipy.optimize.newton) を用いて、Ne(T, EF, E0, E1) - totNe = 0 を満たすEFを求めます。

パラメータ:
  • T -- 温度 (float, K)

  • EF0 -- 0 Kにおける初期フェルミ準位 (float, eV)

  • E0 -- 積分下限エネルギー (float, eV)

  • E1 -- 積分上限エネルギー (float, eV)

  • totNe -- 保持されるべき電子の総数 (float)

戻り値:

温度Tにおけるフェルミ準位 (float, eV)

VASP.Electron_Helmholtz_energy.E_int(T, EF, E0, E1)[ソース]

指定されたエネルギー範囲における電子の内部エネルギーを計算します。

f_dos(E) * fe(E, T, EF) * E を指定されたエネルギー範囲で積分することにより、 電子の内部エネルギーを求めます。

パラメータ:
  • T -- 温度 (float, K)

  • EF -- フェルミ準位 (float, eV)

  • E0 -- 積分下限エネルギー (float, eV)

  • E1 -- 積分上限エネルギー (float, eV)

戻り値:

電子の内部エネルギー (float, eV/u.c.)

VASP.Electron_Helmholtz_energy.Ne(T, EF, E0, E1)[ソース]

指定されたエネルギー範囲における電子の総数を計算します。

絶対零度ではフェルミ準位までのDOSを積分し、有限温度ではDOSとフェルミ・ディラック分布関数の積を積分します。

パラメータ:
  • T -- 温度 (float, K)

  • EF -- フェルミ準位 (float, eV)

  • E0 -- 積分下限エネルギー (float, eV)

  • E1 -- 積分上限エネルギー (float, eV)

戻り値:

指定された範囲における電子の総数 (float)

VASP.Electron_Helmholtz_energy.Ne0(EF0, E0, E1)[ソース]

絶対零度における電子の総数を計算します。

Ne 関数を呼び出し、温度を0 Kに設定して絶対零度での電子数を計算します。

パラメータ:
  • EF0 -- 0 Kにおけるフェルミ準位 (float, eV)

  • E0 -- 積分下限エネルギー (float, eV)

  • E1 -- 積分上限エネルギー (float, eV)

戻り値:

絶対零度における電子の総数 (float)

VASP.Electron_Helmholtz_energy.S(T, EF, E0, E1)[ソース]

電子のエントロピーにおける混合項を、kBの係数を除いて計算します。

フェルミ・ディラック分布関数 fe および fh を用いて、エントロピーの積分項を計算します。 絶対零度ではエントロピーは0と見なされます。

パラメータ:
  • T -- 温度 (float, K)

  • EF -- フェルミ準位 (float, eV)

  • E0 -- 積分下限エネルギー (float, eV)

  • E1 -- 積分上限エネルギー (float, eV)

戻り値:

エントロピーの混合項 (float)

VASP.Electron_Helmholtz_energy.dosfe(E, T, EF)[ソース]

状態密度とフェルミ・ディラック分布関数の積を計算します。

この関数は、積分計算で使用される被積分関数として定義されます。

パラメータ:
  • E -- エネルギー (float, eV)

  • T -- 温度 (float, K)

  • EF -- フェルミ準位 (float, eV)

戻り値:

f_dos(E) * fe(E, T, EF) の値 (float)

VASP.Electron_Helmholtz_energy.entropy(T, EF, E0, E1)[ソース]

電子のエントロピーをエネルギー単位 (eV) で計算します。

S 関数で計算された混合項に -T * kB / e の係数を乗じて、 エントロピーを温度と電気素量でスケーリングしたエネルギー単位で返します。

パラメータ:
  • T -- 温度 (float, K)

  • EF -- フェルミ準位 (float, eV)

  • E0 -- 積分下限エネルギー (float, eV)

  • E1 -- 積分上限エネルギー (float, eV)

戻り値:

電子のエントロピー (float, eV/u.c.)

VASP.Electron_Helmholtz_energy.f_dos(E)[ソース]

与えられたエネルギーにおける電子の状態密度(DOS)を計算します。

DOSCARファイルから読み込んだ離散的なDOSデータに対して、3次スプライン補間を用いて 任意のエネルギーにおけるDOS値を求めます。

パラメータ:

E -- エネルギー (float, eV)

戻り値:

指定されたエネルギーにおける状態密度 (float, states/eV/u.c.)

VASP.Electron_Helmholtz_energy.fe(E, T, EF)[ソース]

フェルミ・ディラック分布関数を計算します。

与えられたエネルギー、温度、フェルミ準位に基づいて、電子がそのエネルギー準位を占有する確率を計算します。 絶対零度の場合には、E < EF で 1.0、それ以外で 0.0 を返します。

パラメータ:
  • E -- エネルギー (float, eV)

  • T -- 温度 (float, K)

  • EF -- フェルミ準位 (float, eV)

戻り値:

フェルミ・ディラック分布関数の値 (float)

VASP.Electron_Helmholtz_energy.fh(E, T, EF)[ソース]

電子が存在しない確率 (1 - fe) を計算します。

フェルミ・ディラック分布関数 fe を用いて、電子がそのエネルギー準位に存在しない確率を計算します。

パラメータ:
  • E -- エネルギー (float, eV)

  • T -- 温度 (float, K)

  • EF -- フェルミ準位 (float, eV)

戻り値:

1 - fe(E, T, EF) の値 (float)

VASP.Electron_Helmholtz_energy.main()[ソース]

スクリプトのメイン実行関数です。

VASPのDOSCARファイルから電子の状態密度を読み込み、指定された温度範囲で 電子の内部エネルギー、エントロピー、およびヘルムホルツ自由エネルギーを計算します。 結果はコンソールに出力され、matplotlibを用いてグラフ化されます。