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)