tkboltztrap プログラム仕様
tkboltztrapモジュール
BoltzTraP計算の入出力ファイルを操作するためのクラスとユーティリティを提供します。 BoltzTraPは、半古典的Boltzmann輸送方程式に基づいて、電子構造計算(VASPなど)から 輸送特性(電気伝導度、ゼーベック係数、熱伝導度など)を計算するプログラムです。
関連リンク: tkboltztrap.py 技術ドキュメント
- class tklib.tkcrystal.tkboltztrap.tkBoltzTraP(**args)[ソース]
ベースクラス:
tkCrystalObjectBoltzTraP計算に関連するデータと操作を管理するクラス。
このクラスは、BoltzTraPの入力ファイル、出力ファイル、およびVASPの関連ファイル (INCAR, OUTCAR, EIGENVAL, DOSCARなど)のパス管理、読み込み、データ抽出機能を提供します。 tkCrystalObjectを継承しており、結晶構造に関連する情報も扱えます。
- extract_data(labels, T_list, data_list, Vcell, mode)[ソース]
BoltzTraPの出力データから特定の輸送特性データを抽出します。
この関数は、与えられたラベルとモードに基づいて、フェルミエネルギー、温度、キャリア濃度、 および指定された輸送特性(sigma, S, kappa, RH, dos)を抽出して整形します。 :param labels: 全ての利用可能なラベルのリスト。 :type labels: list of str :param T_list: 抽出する温度のリスト。 :type T_list: list of float :param data_list: BoltzTraPの出力ファイルから読み込んだ生データ。 :type data_list: list of list of float :param Vcell: 単位胞の体積 (Å^3)。キャリア濃度やDOSの単位換算に使用されます。 :type Vcell: float :param mode: 抽出するデータの種類 ('all', 'sigma', 'S', 'kappa', 'RH', 'dos')。 :type mode: str :returns: (フェルミエネルギーの配列, 温度のリスト, キャリア濃度配列, 抽出されたデータ配列, 抽出されたデータのラベル)。 :rtype: tuple (numpy.ndarray, list of float, numpy.ndarray, numpy.ndarray, list of str) :raises SystemExit: 無効なモードが指定された場合。
- find_band_edges_from_dos(E, DOS, EF0=0.0, DOSth=1e+18)[ソース]
DOS (状態密度) データから価電子帯上端 (EV) と伝導帯下端 (EC) を推定します。
フェルミエネルギーを基準に、DOSが閾値 DOSth を超える点でバンド端を特定します。 :param E: エネルギーのリスト (eV)。 :type E: list of float :param DOS: 対応する状態密度のリスト。 :type DOS: list of float :param EF0: 基準となるフェルミエネルギー (eV)。 :type EF0: float :param DOSth: バンド端と見なすDOSの閾値。 :type DOSth: float :returns: (価電子帯上端のエネルギー, 伝導帯下端のエネルギー)。 :rtype: tuple (float, float)
- find_band_edges_from_eigenval(EF0=0.0, eigenvalinf=None, ISPIN=None)[ソース]
EIGENVALデータから価電子帯上端 (EV) と伝導帯下端 (EC) を推定します。
k点ごとのバンドエネルギーと占有数を用いて、EHOMO (Highest Occupied Molecular Orbital) と ELUMO (Lowest Unoccupied Molecular Orbital) も合わせて計算します。 :param EF0: 基準となるフェルミエネルギー (eV)。Noneの場合、0.0が使用されます。 :type EF0: float or None :param eigenvalinf: EIGENVALファイルから読み込んだ情報を含む辞書。Noneの場合、self.eigenvalinf を使用します。 :type eigenvalinf: dict or None :param ISPIN: スピン分極計算かどうか (1: 非スピン分極, 2: スピン分極)。Noneの場合、self.outcarinf または self.incarinf から取得を試みます。 :type ISPIN: int or None :returns: バンド端情報 (EV, EC, Eg, EF0, EHOMO, ELUMO) を含む辞書。 :rtype: dict
- get_condtens_labels(latex_style=0)[ソース]
BoltzTraPの伝導テンソル (condtens) の列ラベルを取得します。
電気伝導度、ゼーベック係数、熱伝導度に関するラベルが含まれます。 :param latex_style: ラベルをLaTeX形式にするかどうか。0の場合はプレーンテキスト。 :type latex_style: int :returns: 伝導テンソルデータのラベルのリスト。 :rtype: list of str
- get_condtenspath(filebody, dir=None)[ソース]
BoltzTraPの輸送テンソルファイル (condtens) の完全なファイルパスを生成します。
ファイルボディに .condtens 拡張子を付加します。 :param filebody: condtensファイルのボディ(拡張子なし)。 :type filebody: str :param dir: ファイルが存在するディレクトリのパス。Noneの場合、self.workdir を使用します。 :type dir: str or None :returns: condtensファイルの完全なパス。 :rtype: str
- get_halltens_labels(latex_style=0)[ソース]
BoltzTraPのホールテンソル (halltens) の列ラベルを取得します。
ホール係数に関するラベルが含まれます。 :param latex_style: このメソッドでは現在未使用ですが、将来の拡張のために含まれています。 :type latex_style: int :returns: ホールテンソルデータのラベルのリスト。 :rtype: list of str
- get_halltenspath(filebody, dir=None)[ソース]
BoltzTraPのホールテンソルファイル (halltens) の完全なファイルパスを生成します。
ファイルボディに .halltens 拡張子を付加します。 :param filebody: halltensファイルのボディ(拡張子なし)。 :type filebody: str :param dir: ファイルが存在するディレクトリのパス。Noneの場合、self.workdir を使用します。 :type dir: str or None :returns: halltensファイルの完全なパス。 :rtype: str
- get_intranspath(filebody, dir=None)[ソース]
BoltzTraPの入力ファイル (intrans) の完全なファイルパスを生成します。
ファイルボディに .intrans 拡張子を付加します。 :param filebody: intransファイルのボディ(拡張子なし)。 :type filebody: str :param dir: ファイルが存在するディレクトリのパス。Noneの場合、self.workdir を使用します。 :type dir: str or None :returns: intransファイルの完全なパス。 :rtype: str
- get_labels(latex_style=0)[ソース]
BoltzTraPの出力データ(condtensなど)の列ラベルを取得します。
電気伝導度、ゼーベック係数、熱伝導度に関するラベルが含まれます。 :param latex_style: ラベルをLaTeX形式にするかどうか。0の場合はプレーンテキスト。 :type latex_style: int :returns: ラベルのリスト。 :rtype: list of str
- get_outputtranspath(filebody, dir=None)[ソース]
BoltzTraPの出力サマリーファイル (outputtrans) の完全なファイルパスを生成します。
ファイルボディに .outputtrans 拡張子を付加します。 :param filebody: outputtransファイルのボディ(拡張子なし)。 :type filebody: str :param dir: ファイルが存在するディレクトリのパス。Noneの場合、self.workdir を使用します。 :type dir: str or None :returns: outputtransファイルの完全なパス。 :rtype: str
- get_path(filebody, dir=None)[ソース]
指定されたファイルボディとディレクトリに基づいて完全なファイルパスを生成します。
ディレクトリが指定されていない場合、オブジェクトの workdir 属性を使用します。 :param filebody: ファイル名またはファイルボディ。 :type filebody: str :param dir: ファイルが存在するディレクトリのパス。Noneの場合、self.workdir を使用します。 :type dir: str or None :returns: 完全なファイルパス。 :rtype: str
- get_tracepath(filebody, dir=None)[ソース]
BoltzTraPのDOS補間ファイル (trace) の完全なファイルパスを生成します。
ファイルボディに .trace 拡張子を付加します。 :param filebody: traceファイルのボディ(拡張子なし)。 :type filebody: str :param dir: ファイルが存在するディレクトリのパス。Noneの場合、self.workdir を使用します。 :type dir: str or None :returns: traceファイルの完全なパス。 :rtype: str
- get_transdospath(filebody, dir=None)[ソース]
BoltzTraPの輸送DOSファイル (transdos) の完全なファイルパスを生成します。
ファイルボディに .transdos 拡張子を付加します。 :param filebody: transdosファイルのボディ(拡張子なし)。 :type filebody: str :param dir: ファイルが存在するディレクトリのパス。Noneの場合、self.workdir を使用します。 :type dir: str or None :returns: transdosファイルの完全なパス。 :rtype: str
- read_btoutput(infile, E0=0.0, normalize_E=True, unit='/cm3', EFmin=None, EFmax=None, print_level=1, usage=None, exit_by_error=True)[ソース]
BoltzTraPの一般的な出力ファイル(.trace, .condtens, .halltensなど)を読み込みます。
フェルミエネルギーの正規化や範囲指定を行いながら、データを抽出します。 :param infile: 読み込むファイルのパス。 :type infile: str :param E0: エネルギーの基準点(Ry単位)。正規化する場合に使用されます。 :type E0: float :param normalize_E: フェルミエネルギーを E0 を基準に正規化するかどうか。 :type normalize_E: bool :param unit: 現在は未使用ですが、将来の拡張のために含まれています。 :type unit: str :param EFmin: 抽出するフェルミエネルギーの下限 (eV単位)。 :type EFmin: float or None :param EFmax: 抽出するフェルミエネルギーの上限 (eV単位)。 :type EFmax: float or None :param print_level: ログ出力のレベル。 :type print_level: int :param usage: エラーメッセージに表示する使用法情報。 :type usage: str or None :param exit_by_error: ファイル読み込みエラー時にプログラムを終了するかどうか。 :type exit_by_error: bool :returns: (ヘッダーのリスト, データのリスト)。ファイル読み込み失敗時は (None, None)。 :rtype: tuple (list of str or None, list of list of float or None)
- read_condtens(infile, Vcell, E0=None, normalize_E=True, unit='/cm3', EFmin=None, EFmax=None, print_level=1, usage=None, exit_by_error=True)[ソース]
BoltzTraPの輸送テンソルファイル (*.condtens) を読み込み、伝導特性を抽出します。
このメソッドは read_btoutput を利用して生データを読み込み、extract_data で電気伝導度、 ゼーベック係数、熱伝導度などの情報を整形します。 :param infile: 読み込む *.condtens ファイルのパス。 :type infile: str :param Vcell: 単位胞の体積 (Å^3)。キャリア濃度の単位換算に使用されます。 :type Vcell: float :param E0: エネルギーの基準点(Ry単位)。正規化する場合に使用されます。 :type E0: float or None :param normalize_E: フェルミエネルギーを E0 を基準に正規化するかどうか。 :type normalize_E: bool :param unit: 現在は未使用ですが、将来の拡張のために含まれています。 :type unit: str :param EFmin: 抽出するフェルミエネルギーの下限 (eV単位)。 :type EFmin: float or None :param EFmax: 抽出するフェルミエネルギーの上限 (eV単位)。 :type EFmax: float or None :param print_level: ログ出力のレベル。 :type print_level: int :param usage: エラーメッセージに表示する使用法情報。 :type usage: str or None :param exit_by_error: ファイル読み込みエラー時にプログラムを終了するかどうか。 :type exit_by_error: bool :returns: condtensファイルから抽出された伝導特性情報を格納した辞書。ファイル読み込み失敗時は None。 :rtype: dict or None
- read_doscar(DOSCAR_path, cry=None, IsSpinPolarized=None, IsNonCollinear=None, EF=None, unit='')[ソース]
VASPのDOSCARファイルを読み込み、全状態密度 (TotalDOS) およびスピンごとの状態密度 (DOSup, DOSdn) とキャリア濃度 (Ne, Neup, Nedn) を抽出します。
エネルギーはフェルミエネルギー EF を基準にシフトされます。 :param DOSCAR_path: DOSCARファイルのパス。 :type DOSCAR_path: str :param cry: 結晶オブジェクト。単位胞の体積 (cry.Volume()) を取得するために使用されます。Noneの場合、self.crystal を使用します。 :type cry: tkCrystalObject or None :param IsSpinPolarized: スピン分極計算かどうか (True/False)。Noneの場合、self.outcarinf["ISPIN"] を使用します。 :type IsSpinPolarized: bool or None :param IsNonCollinear: 非共線スピン計算かどうか (True/False)。現在は未使用。 :type IsNonCollinear: bool or None :param EF: フェルミエネルギー (eV)。Noneの場合、self.outcarinf["EF"] を使用します。 :type EF: float or None :param unit: DOSの単位。'/cm3' の場合、単位胞の体積で割って体積あたりの値にします。 :type unit: str :returns: DOSCARファイルから抽出された情報を格納した辞書。ファイル読み込み失敗時は一部のキーが空の辞書。 :rtype: dict
- read_files(file, file_types, exit_by_error=False, print_level=0, terminate=<function terminate>)[ソース]
指定されたVASP関連ファイルを一括で読み込み、その情報を辞書として返します。
読み込むファイルのタイプを file_types リストで指定できます。 tkCrystalObject から継承された read_incar_inf, read_potcar_inf, read_poscar, read_outcar_inf, read_eigenval などのメソッドを利用します。 :param file: 基準となるファイルパス(ディレクトリを特定するために使用)。 :type file: str :param file_types: 読み込むファイルの種類を示す文字列のリスト(例: ['INCAR', 'OUTCAR'])。 :type file_types: list of str :param exit_by_error: ファイル読み込みエラー時にプログラムを終了するかどうか。 :type exit_by_error: bool :param print_level: ログ出力のレベル。1以上で読み込み状況が表示されます。 :type print_level: int :param terminate: エラー発生時に呼び出す終了関数。 :type terminate: callable :returns: 読み込んだファイルの情報を含む辞書。各キーはファイルタイプ(例: 'INCAR')。 :rtype: dict
- read_halltens(infile, Vcell, E0=None, normalize_E=True, unit='/cm3', EFmin=None, EFmax=None, print_level=1, usage=None, exit_by_error=True)[ソース]
BoltzTraPのホールテンソルファイル (*.halltens) を読み込み、ホール係数を抽出します。
このメソッドは read_btoutput を利用して生データを読み込み、extract_data でホール係数情報を整形します。 :param infile: 読み込む *.halltens ファイルのパス。 :type infile: str :param Vcell: 単位胞の体積 (Å^3)。キャリア濃度の単位換算に使用されます。 :type Vcell: float :param E0: エネルギーの基準点(Ry単位)。正規化する場合に使用されます。 :type E0: float or None :param normalize_E: フェルミエネルギーを E0 を基準に正規化するかどうか。 :type normalize_E: bool :param unit: 現在は未使用ですが、将来の拡張のために含まれています。 :type unit: str :param EFmin: 抽出するフェルミエネルギーの下限 (eV単位)。 :type EFmin: float or None :param EFmax: 抽出するフェルミエネルギーの上限 (eV単位)。 :type EFmax: float or None :param print_level: ログ出力のレベル。 :type print_level: int :param usage: エラーメッセージに表示する使用法情報。 :type usage: str or None :param exit_by_error: ファイル読み込みエラー時にプログラムを終了するかどうか。 :type exit_by_error: bool :returns: halltensファイルから抽出されたホール係数情報を格納した辞書。ファイル読み込み失敗時は None。 :rtype: dict or None
- read_outputtrans(infile, exit_by_error=True)[ソース]
BoltzTraPの出力サマリーファイル (*.outputtrans) を読み込み、その内容を辞書として返します。
ケース名、バンドスタイル、フェルミエネルギー、ギャップエネルギー、VBM/CBMなどの情報を抽出します。 :param infile: 読み込む *.outputtrans ファイルのパス。 :type infile: str :param exit_by_error: ファイル読み込みエラー時にプログラムを終了するかどうか。 :type exit_by_error: bool :returns: outputtransファイルの内容を格納した辞書。ファイル読み込み失敗時は None。 :rtype: dict or None
- read_trace(infile, Vcell, E0=None, normalize_E=True, unit='/cm3', EFmin=None, EFmax=None, print_level=1, usage=None, exit_by_error=True)[ソース]
BoltzTraPのDOS補間ファイル (*.trace) を読み込み、DOS情報を抽出します。
このメソッドは read_btoutput を利用して生データを読み込み、extract_data でDOS情報を整形します。 :param infile: 読み込む *.trace ファイルのパス。 :type infile: str :param Vcell: 単位胞の体積 (Å^3)。DOSの単位換算に使用されます。 :type Vcell: float :param E0: エネルギーの基準点(Ry単位)。正規化する場合に使用されます。 :type E0: float or None :param normalize_E: フェルミエネルギーを E0 を基準に正規化するかどうか。 :type normalize_E: bool :param unit: 現在は未使用ですが、将来の拡張のために含まれています。 :type unit: str :param EFmin: 抽出するフェルミエネルギーの下限 (eV単位)。 :type EFmin: float or None :param EFmax: 抽出するフェルミエネルギーの上限 (eV単位)。 :type EFmax: float or None :param print_level: ログ出力のレベル。 :type print_level: int :param usage: エラーメッセージに表示する使用法情報。 :type usage: str or None :param exit_by_error: ファイル読み込みエラー時にプログラムを終了するかどうか。 :type exit_by_error: bool :returns: traceファイルから抽出されたDOS情報を格納した辞書。ファイル読み込み失敗時は None。 :rtype: dict or None
- read_transdos(infile, Vcell, SpinPolarized=False, E0=None, normalize_E=True, unit='/cm3', unit_N='', Emin=None, Emax=None, print_level=1, usage=None, exit_by_error=True)[ソース]
BoltzTraPの輸送DOSファイル (*.transdos) を読み込み、DOSとキャリア濃度情報を抽出します。
- パラメータ:
infile (str) -- 読み込む *.transdos ファイルのパス。
Vcell (float) -- 単位胞の体積 (Å^3)。DOSやキャリア濃度の単位換算に使用されます。
SpinPolarized (bool) -- スピン分極計算かどうか。DOSとキャリア濃度のスケーリングに影響します。
E0 (float or None) -- エネルギーの基準点。正規化する場合に使用されます。現在は未使用。
normalize_E (bool) -- フェルミエネルギーを E0 を基準に正規化するかどうか。現在は未使用。
unit (str) -- DOSの単位。'/cm3' の場合、単位胞の体積で割って体積あたりの値にします。
unit_N (str) -- キャリア濃度の単位。'/cm3' の場合、単位胞の体積で割って体積あたりの値にします。
Emin (float or None) -- 抽出するエネルギーの下限 (eV単位)。
Emax (float or None) -- 抽出するエネルギーの上限 (eV単位)。
print_level (int) -- ログ出力のレベル。
usage (str or None) -- エラーメッセージに表示する使用法情報。
exit_by_error (bool) -- ファイル読み込みエラー時にプログラムを終了するかどうか。
- 戻り値:
transdosファイルから抽出された情報を格納した辞書。ファイル読み込み失敗時は None。
- 戻り値の型:
dict or None