tkvasp.py 技術ドキュメント

ライブラリの機能や目的

tkvasp.py は、VASP (Vienna Ab initio Simulation Package) の計算結果ファイルを解析し、その内容をPythonオブジェクトや辞書形式で簡単にアクセスできるように設計されたライブラリです。主な目的は、VASPの多様な出力ファイル(INCAR, POSCAR, POTCAR, KPOINTS, OUTCAR, DOSCAR, EIGENVAL, vasprun.xml など)から、結晶構造、電子構造(バンド構造、状態密度)、計算設定、エネルギー情報、電荷・磁化情報といった重要なデータを抽出することにあります。

このライブラリは、VASP計算の自動解析やデータ処理パイプラインの構築を支援し、計算結果の可視化や分析を容易にします。tklib という独自のライブラリ群に依存しており、特に tkCrystalObject を継承することで、結晶学的な操作や情報管理とVASPのデータ解析を統合しています。

解決する課題としては、VASPの出力ファイル形式が複雑であること、およびそれらのファイルから必要な情報を手動で抽出する手間を省き、プログラマティックなアクセスを可能にすることが挙げられます。

importする方法

tkvasp.py ライブラリは、以下の方法でPythonプログラムにインポートできます。

from tkvasp import tkVASP

または、特定の変数や関数を直接インポートすることも可能です。

from tkvasp import conv_dic

必要な非標準ライブラリとインストール方法

tkvasp.py は、以下の非標準ライブラリに依存しています。

  1. numpy: 数値計算のための基本的なライブラリです。

    pip install numpy
    
  2. xmltodict: XMLデータをPythonの辞書形式に変換するためのライブラリです。vasprun.xml の解析に使用されます。

    pip install xmltodict
    
  3. pymatgen: 材料科学における計算の自動化を支援するオープンソースのライブラリです。VASP出力の解析機能の一部(Vasprun クラス)を利用しています。

    pip install pymatgen
    
  4. tklib: これは、tkvasp.py が属するプロジェクトまたはフレームワーク固有のカスタムライブラリです。標準の pip コマンドではインストールできません。

    • このライブラリを使用するためには、tklib ディレクトリをプロジェクトに含めるか、Pythonのサイトパッケージパスに tklib が利用できるように設定する必要があります。

    • tklib.tkobject, tklib.tkutils, tklib.tkre, tklib.tkfile, tklib.tkcrystal.tkcrystalobject, tklib.tkcrystal.tkspacegroup, tklib.tkprogvars, tklib.tkinifile, tklib.tksci.tksci, tklib.tksci.tkintegration, tklib.tksci.tkmatrix, tklib.tkcrystal.tkcrystal, tklib.tkvariousdata, tklib.collabo.RH.parse_kpoints_opt といった多数のサブモジュールに依存しています。

importできる変数と関数

変数

  • conv_dic: K点パスの特定のシンボル(例: Gamma, Delta など)をMarkdown形式のギリシャ文字の数式表記に変換するために使用される辞書です。キーは小文字のギリシャ文字名、値はプレースホルダーの 1 です。

    conv_dic = {
              "alpha": 1
            , "beta": 1
            , "gamma": 1
            , "delta": 1
            , "epsilon": 1
            , "zeta": 1
            , "eta": 1
            , "theta": 1
            , "iota": 1
            , "kappa": 1
            , "lambda": 1
            , "mu": 1
            , "nu": 1
            , "xi": 1
            , "pi": 1
            , "rho": 1
            , "sigma": 1
            , "tau": 1
            , "upsilon": 1
            , "phi": 1
            , "chi": 1
            , "psi": 1
            , "omega": 1
            }
    

クラス: tkVASP

tkVASP クラスは tklib.tkcrystal.tkcrystalobject.tkCrystalObject を継承しており、VASP計算のデータを扱うための主要なインターフェースを提供します。

インスタンス変数

tkVASP クラスのインスタンスは、以下の属性を持つことができます。これらは主に、各種 read_ メソッドによって設定されます。

  • crystal: 読み込まれた結晶構造を保持する tkCrystal オブジェクト。

  • incarinf: INCAR ファイルから読み込まれた計算設定情報を保持する辞書。

  • kpointsinf: KPOINTS ファイルから読み込まれたK点パス情報を保持する辞書。

  • outcarinf: OUTCAR ファイルから読み込まれた計算結果サマリーや詳細情報を保持する辞書。

  • eigenvalinf: EIGENVAL ファイルから読み込まれたバンド構造情報を保持する辞書。

  • poscarinf: POSCAR ファイルから読み込まれた結晶構造情報を保持する辞書。

  • potcarinf: POTCAR ファイルから読み込まれた擬ポテンシャル情報を保持する辞書。

  • oszicarinf: OSZICAR ファイルから読み込まれた計算履歴情報を保持する辞書。

メソッド

  • __init__(self, **args)

    • 機能: tkVASP オブジェクトを初期化します。内部で tkCrystalObjectupdate メソッドを呼び出し、キーワード引数で渡された属性をセットできます。

    • 引数:

      • **args (dict, optional): オブジェクトの初期属性を設定するためのキーワード引数。

    • 戻り値: なし。

  • __del__(self)

    • 機能: オブジェクトが破棄される際に呼び出されるデストラクタ。現在の実装では特に処理はありません。

    • 引数: なし。

    • 戻り値: なし。

  • __str__(self)

    • 機能: オブジェクトの文字列表現を返します。現在の実装では、クラスの完全なパス (ClassPath()) を返します。

    • 引数: なし。

    • 戻り値: str - クラスパスの文字列表現。

  • getdir(self, path)

    • 機能: 与えられたパスがディレクトリであればそのまま返し、ファイルであればその親ディレクトリを返します。

    • 引数:

      • path (str): ディレクトリまたはファイルのパス。

    • 戻り値: str - ディレクトリパス。

  • get_CAR_dir(self, path, use_abspath = False)

    • 機能: VASPの入力/出力ファイル群(INCAR, POSCARなど)が格納されているディレクトリ(CARディレクトリ)を特定し、そのパスを返します。

    • 引数:

      • path (str): ファイルパスまたはディレクトリパス。

      • use_abspath (bool, optional): 返すパスを絶対パスにするかどうか。デフォルトは False

    • 戻り値: str - CARディレクトリのパス。

  • get_VASPPath(self, path, filename)

    • 機能: 指定された path が属するCARディレクトリ内で、特定のVASPファイル (例: INCAR, POSCAR) の完全なパスを構築して返します。

    • 引数:

      • path (str): CARディレクトリパス、またはその中の任意のファイルのパス。

      • filename (str): 取得したいVASPファイル名(例: 'INCAR')。

    • 戻り値: str - VASPファイルの完全パス。

  • get_INCAR(self, CAR_dir)

    • 機能: INCAR ファイルのパスを返します。

    • 引数:

      • CAR_dir (str): CARディレクトリのパス。

    • 戻り値: str - INCAR ファイルのパス。

  • get_POSCAR(self, CAR_dir)

    • 機能: POSCAR ファイルのパスを返します。

    • 引数:

      • CAR_dir (str): CARディレクトリのパス。

    • 戻り値: str - POSCAR ファイルのパス。

  • get_POTCAR(self, CAR_dir)

    • 機能: POTCAR ファイルのパスを返します。

    • 引数:

      • CAR_dir (str): CARディレクトリのパス。

    • 戻り値: str - POTCAR ファイルのパス。

  • get_KPOINTS(self, CAR_dir)

    • 機能: KPOINTS ファイルのパスを返します。

    • 引数:

      • CAR_dir (str): CARディレクトリのパス。

    • 戻り値: str - KPOINTS ファイルのパス。

  • get_KPOINTS_OPT(self, CAR_dir)

    • 機能: KPOINTS_OPT ファイルのパスを返します。

    • 引数:

      • CAR_dir (str): CARディレクトリのパス。

    • 戻り値: str - KPOINTS_OPT ファイルのパス。

  • get_XML(self, CAR_dir)

    • 機能: vasprun.xml ファイルのパスを返します。

    • 引数:

      • CAR_dir (str): CARディレクトリのパス。

    • 戻り値: str - vasprun.xml ファイルのパス。

  • get_VASPRUN(self, CAR_dir)

    • 機能: vasprun.xml ファイルのパスを返します。(get_XML と同じ)。

    • 引数:

      • CAR_dir (str): CARディレクトリのパス。

    • 戻り値: str - vasprun.xml ファイルのパス。

  • get_CONTCAR(self, CAR_dir)

    • 機能: CONTCAR ファイルのパスを返します。

    • 引数:

      • CAR_dir (str): CARディレクトリのパス。

    • 戻り値: str - CONTCAR ファイルのパス。

  • get_OUTCAR(self, CAR_dir)

    • 機能: OUTCAR ファイルのパスを返します。

    • 引数:

      • CAR_dir (str): CARディレクトリのパス。

    • 戻り値: str - OUTCAR ファイルのパス。

  • get_DOSCAR(self, CAR_dir)

    • 機能: DOSCAR ファイルのパスを返します。

    • 引数:

      • CAR_dir (str): CARディレクトリのパス。

    • 戻り値: str - DOSCAR ファイルのパス。

  • get_EIGENVAL(self, CAR_dir)

    • 機能: EIGENVAL ファイルのパスを返します。

    • 引数:

      • CAR_dir (str): CARディレクトリのパス。

    • 戻り値: str - EIGENVAL ファイルのパス。

  • read_potcar_inf(self, potcarpath, print_level = 1)

    • 機能: POTCAR ファイルを解析し、含まれる擬ポテンシャルの種類、対応する原子種、価電子数などの情報を辞書形式で抽出します。抽出された情報は self.potcarinf に格納されます。

    • 引数:

      • potcarpath (str): POTCAR ファイルへのパス。

      • print_level (int, optional): 出力詳細レベル。デフォルトは 1

    • 戻り値: dict または None - 抽出された情報、またはファイルが開けなかった場合は None

  • read_poscar_inf(self, poscarpath, is_print = None, print_level = 1)

    • 機能: POSCAR ファイルを解析し、結晶のサンプル名、格子定数、格子ベクトル、原子種とサイト数、原子位置などを抽出します。また、tkCrystal オブジェクトを生成し、self.crystal および戻り値の辞書に格納します。

    • 引数:

      • poscarpath (str): POSCAR ファイルへのパス。

      • is_print (bool, optional): 情報をコンソールに出力するかどうか(非推奨、print_level を使用)。

      • print_level (int, optional): 出力詳細レベル。デフォルトは 1

    • 戻り値: dict または None - 抽出された情報 ("crystal" キーに tkCrystal オブジェクトが含まれる)、またはファイルが開けなかった場合は None

  • read_poscar(self, poscarpath, is_print = None, print_level = 1)

    • 機能: POSCAR ファイルを解析し、構築された tkCrystal オブジェクトを直接返します。

    • 引数:

      • poscarpath (str): POSCAR ファイルへのパス。

      • is_print (bool, optional): 情報をコンソールに出力するかどうか(非推奨)。

      • print_level (int, optional): 出力詳細レベル。デフォルトは 1

    • 戻り値: tkCrystal または None - 結晶構造オブジェクト、またはファイルが開けなかった場合は None

  • read_incar_inf(self, incarpath, print_level = 1)

    • 機能: INCAR ファイルを解析し、VASPの計算パラメータをキー・バリュー形式の辞書として抽出します。コメント行は無視されます。抽出された情報は self.incarinf に格納されます。

    • 引数:

      • incarpath (str): INCAR ファイルへのパス。

      • print_level (int, optional): 出力詳細レベル。デフォルトは 1

    • 戻り値: dict または None - 抽出されたINCARパラメータ、またはファイルが開けなかった場合は None

  • read_oszicar_inf(self, oszicarpath)

    • 機能: OSZICAR ファイルを解析し、VASP計算のイオンステップごとのエネルギー情報(自由エネルギー、全エネルギー、電子ステップ)を抽出します。抽出された情報は self.oszicarinf に格納されます。

    • 引数:

      • oszicarpath (str): OSZICAR ファイルへのパス。

    • 戻り値: dict または None - 抽出された情報、またはファイルが開けなかった場合は None

  • read_outcar_inf(self, outcarpath, print_level = 1)

    • 機能: OUTCAR ファイルを解析し、計算の詳細(VASPバイナリ情報、コンパイラ、MPI、INCAR設定の要約、Fermiエネルギー、平均コアポテンシャル、最終的な全エネルギー、電荷、磁化、誘電率、圧電係数、Born電荷、収束情報、CPU時間など)を抽出します。抽出された情報は self.outcarinf に格納されます。

    • 引数:

      • outcarpath (str): OUTCAR ファイルへのパス。

      • print_level (int, optional): 出力詳細レベル。デフォルトは 1

    • 戻り値: dict または None - 抽出された情報、またはファイルが開けなかった場合は None

  • read_n_crystalstructures(self, outcarpath)

    • 機能: OUTCAR ファイルをスキャンし、EDIFF が収束した(つまり新しい構造が最適化された)回数を数えます。主に構造最適化計算で、いくつの構造が記録されたかを知るのに役立ちます。

    • 引数:

      • outcarpath (str): OUTCAR ファイルへのパス。

    • 戻り値: int - 収束した結晶構造の数。

  • read_next_crystalstructure(self, fp, template_cry, IsReduce01 = False)

    • 機能: 開いている OUTCAR ファイルポインタ fp から、次の収束した結晶構造の状態と関連するエネルギー情報(全エネルギー、運動エネルギー、温度)を読み取ります。主に分子動力学 (MD) や構造最適化の履歴解析に使用されます。

    • 引数:

      • fp (tkFile オブジェクト): OUTCAR ファイルのファイルポインタ。

      • template_cry (tkCrystal): 基準となる結晶構造オブジェクト。原子種やサイト情報などを提供します。

      • IsReduce01 (bool, optional): 原子位置を \(0 \le x < 1\) の範囲に正規化するかどうか。デフォルトは False

    • 戻り値: tuple (dict, tkCrystal) または (None, None) - 抽出された情報 (dict) と新しい結晶オブジェクト (tkCrystal) のタプル。次の構造が見つからない場合は (None, None) を返します。

  • convert_kname(self, name)

    • 機能: K点パスの特殊な名称(例: "Gamma", "Delta")をMarkdown形式の数式表記(例: $\Gamma$, $\Delta$)に変換します。これにより、プロットなどで見やすいラベルを生成できます。

    • 引数:

      • name (str): 変換したいK点名。

    • 戻り値: str - 変換されたK点名。

  • read_kpoints_linemode(self, fp, inf, cry = None)

    • 機能: KPOINTS ファイルがラインモード(バンド計算など)で記述されている場合にK点パス情報を読み込みます。K点の座標、K点名、K点間の距離などを抽出します。

    • 引数:

      • fp (tkFile オブジェクト): KPOINTS ファイルのファイルポインタ。

      • inf (dict): 抽出された情報を格納するための辞書。

      • cry (tkCrystal, optional): 結晶オブジェクト。K点間の距離計算に使用されます。

    • 戻り値: dict - 更新された情報辞書。

  • read_kpoints_pointmode(self, fp, inf, cry = None)

    • 機能: KPOINTS ファイルがポイントモード(SCF計算など)で記述されている場合にK点サンプリング情報を読み込みます。K点の座標、重み、K点名、K点間の距離などを抽出します。

    • 引数:

      • fp (tkFile オブジェクト): KPOINTS ファイルのファイルポインタ。

      • inf (dict): 抽出された情報を格納するための辞書。

      • cry (tkCrystal, optional): 結晶オブジェクト。K点間の距離計算に使用されます。

    • 戻り値: dict - 更新された情報辞書。

  • read_kpoints(self, KPOINTS_path, cry = None)

    • 機能: KPOINTS ファイルを解析し、K点サンプリングやK点パスに関する情報を抽出します。ファイルの内容に応じて read_kpoints_linemode または read_kpoints_pointmode を呼び出します。抽出された情報は self.kpointsinf に格納されます。

    • 引数:

      • KPOINTS_path (str): KPOINTS ファイルへのパス。

      • cry (tkCrystal, optional): 結晶オブジェクト。K点間の距離計算に使用されます。

    • 戻り値: dict または None - 抽出された情報、またはファイルが存在しない場合は None

  • read_eigenval_opt(self, EIGENVAL_path, normalize_E = True, KPOINTS_inf = None, ISPIN = None, IsHF = None, IsMETAGGA = None, EF = None, NELECT = None, cry = None, print_level = 1)

    • 機能: KPOINTS_OPT ファイルを使用する特別なバンド構造計算の結果 (vasprun.xml) からバンドエネルギー情報を読み込みます。tklib.collabo.RH.parse_kpoints_opt.KPOINTS_OPT_Parser を利用します。抽出された情報は self.eigenvalinf に格納されます。

    • 引数:

      • EIGENVAL_path (str): EIGENVAL ファイルへのパス (関連する vasprun.xmlKPOINTS_OPT を特定するために使用)。

      • normalize_E (bool, optional): バンドエネルギーをFermi準位で正規化するかどうか。デフォルトは True

      • KPOINTS_inf (dict, optional): K点情報。

      • ISPIN (int, optional): スピン極性。1 (非スピン), 2 (スピン極性)。

      • IsHF (bool, optional): HF計算かどうか。

      • IsMETAGGA (bool, optional): METAGGA計算かどうか。

      • EF (float, optional): Fermiエネルギー。

      • NELECT (int, optional): 全電子数。

      • cry (tkCrystal, optional): 結晶オブジェクト。

      • print_level (int, optional): 出力詳細レベル。デフォルトは 1

    • 戻り値: dict - 抽出されたバンド情報。

  • read_eigenval(self, EIGENVAL_path, normalize_E = True, KPOINTS_inf = None, ISPIN = None, IsHF = None, IsMETAGGA = None, EF = None, NELECT = None, cry = None, print_level = 1)

    • 機能: EIGENVAL ファイルを解析し、K点ごとのバンドエネルギー準位と占有数、スピン分解された情報などを抽出します。KPOINTS_OPT が存在し、利用が有効な場合は read_eigenval_opt に処理を委譲します。抽出された情報は self.eigenvalinf に格納されます。

    • 引数:

      • EIGENVAL_path (str): EIGENVAL ファイルへのパス。

      • normalize_E (bool, optional): バンドエネルギーをFermi準位で正規化するかどうか。デフォルトは True

      • KPOINTS_inf (dict, optional): K点情報。

      • ISPIN (int, optional): スピン極性。1 (非スピン), 2 (スピン極性)。

      • IsHF (bool, optional): HF計算かどうか。

      • IsMETAGGA (bool, optional): METAGGA計算かどうか。

      • EF (float, optional): Fermiエネルギー。

      • NELECT (int, optional): 全電子数。

      • cry (tkCrystal, optional): 結晶オブジェクト。

      • print_level (int, optional): 出力詳細レベル。デフォルトは 1

    • 戻り値: dict または None - 抽出されたバンド情報、またはファイルが存在しない場合は None

  • find_band_edges_from_dos(self, E, DOS, EF0 = 0.0, DOSth = 1.0e18)

    • 機能: 状態密度 (DOS) データから、価電子帯上端 (VBM: Valence Band Maximum) と伝導帯下端 (CBM: Conduction Band Minimum) を推定します。DOSが特定の閾値 $DOS_{th}$ を超えるエネルギー範囲を探索します。

    • 引数:

      • E (list or numpy.ndarray): エネルギー値のリスト。

      • DOS (list or numpy.ndarray): 各エネルギーにおけるDOS値のリスト。

      • EF0 (float, optional): Fermiエネルギー。DOSを探索する基準点となります。デフォルトは 0.0

      • DOSth (float, optional): DOSの閾値。この値を超えたDOSを持つエネルギー準位をバンドと見なします。デフォルトは 1.0e18

    • 戻り値: tuple (float, float) - (VBMのエネルギー, CBMのエネルギー)。どちらも見つからなかった場合は (EF0, EF0) を返します。

  • gbandedges(self, dir = '.', fn_outcar = 'OUTCAR', fn_eig = 'EIGENVAL', ef = None)

    • 機能: VASPの EIGENVAL ファイルからバンドギャップ、VBM、CBMを計算します。Fermiエネルギー (ef) が与えられない場合、OUTCAR から読み取ろうとします。

    • 引数:

      • dir (str, optional): OUTCAR および EIGENVAL ファイルが存在するディレクトリ。デフォルトは . (カレントディレクトリ)。

      • fn_outcar (str, optional): OUTCAR ファイル名。デフォルトは 'OUTCAR'

      • fn_eig (str, optional): EIGENVAL ファイル名。デフォルトは 'EIGENVAL'

      • ef (float, optional): Fermiエネルギー。指定しない場合は fn_outcar から読み込みを試みます。

    • 戻り値: dict または None - バンドエッジに関する情報(nspin, nkpoint, nband, EF, Eg, ECBM, EVBM など)。ファイルが存在しない場合は None

  • find_band_edges_from_eigenval(self, EF0 = 0.0, normalize_E = True, eigenvalinf = None, ISPIN = None, occ_th = 0.5, occ_th0 = 1.0e-4, print_level = 1)

    • 機能: read_eigenval から得られたバンド情報 (eigenvalinf) を用いて、VBM (価電子帯上端) と CBM (伝導帯下端)、および HOMO (Highest Occupied Molecular Orbital)、LUMO (Lowest Unoccupied Molecular Orbital) のエネルギーを特定します。占有数の閾値 (occ_th, occ_th0) を使用して判断します。

    • 引数:

      • EF0 (float, optional): Fermiエネルギー。エネルギー正規化の基準として使用されます。デフォルトは 0.0

      • normalize_E (bool, optional): バンドエネルギーがすでにFermi準位で正規化されているかどうか。デフォルトは True

      • eigenvalinf (dict, optional): read_eigenval メソッドから返される形式のバンド情報辞書。

      • ISPIN (int, optional): スピン極性。1 (非スピン), 2 (スピン極性)。省略された場合、self.outcarinf または self.incarinf から取得を試みます。

      • occ_th (float, optional): 占有数の閾値。この値より大きい占有数を持つ準位を「占有」、小さいものを「非占有」と判断します。デフォルトは 0.5

      • occ_th0 (float, optional): 別の占有数の閾値。HOMO/LUMO の判定に使用されます。デフォルトは 1.0e-4

      • print_level (int, optional): 出力詳細レベル。デフォルトは 1

    • 戻り値: dict - バンドエッジ情報 (EV, EC, Eg, EF0, EHOMO, ELUMO)。

  • cal_lmdecomposed_dos(self, inf, atom_type, lm, save_lmdos = False, outfile = None, is_print = False)

    • 機能: read_doscar で読み込まれたDOS情報 (inf) から、特定の原子種 (atom_type) と軌道 (lm) に分解された状態密度 (PDOS) を計算します。lm の指定は柔軟で、's', 'p', 'd' などの軌道、'tot' (合計)、'up' (スピンアップ)、'dn' (スピンダウン) を組み合わせることができます(例: 's up', 'Fe tot')。計算結果はExcelファイルとして保存することも可能です。

    • 引数:

      • inf (dict): read_doscar メソッドから返されるDOS情報辞書。

      • atom_type (str): 計算対象とする原子の化学記号(例: 'Fe', 'O')。

      • lm (str): 計算対象とする軌道またはスピンの指定文字列。例: 'tot', 'up', 'dn', 's', 'p', 'd', 's up', 'p dn' など。

      • save_lmdos (bool, optional): 計算結果をExcelファイルとして保存するかどうか。デフォルトは False

      • outfile (str, optional): save_lmdosTrue の場合に保存するファイル名。省略された場合は自動生成されます。

      • is_print (bool, optional): 処理情報をコンソールに出力するかどうか。デフォルトは False

    • 戻り値: numpy.ndarray または None - 計算された \(lm\) 分解状態密度データ (エネルギー点ごとのDOS値の配列)。PDOSデータが存在しない場合は None

  • read_doscar(self, DOSCAR_path, cry = None, EF = None, normalize_E = True, unit = '', IsSpinPolarized = None, IsNonCollinear = None, SpinOrbit = None, print_level = 1)

    • 機能: DOSCAR ファイルを解析し、全状態密度 (TDOS)、スピン分解されたTDOS、部分状態密度 (PDOS) などを抽出します。POSCARファイルから結晶構造情報を読み込み、原子サイトと原子種を関連付けます。エネルギーをFermi準位で正規化したり、DOSの単位を変換したりするオプションがあります。

    • 引数:

      • DOSCAR_path (str): DOSCAR ファイルへのパス。

      • cry (tkCrystal, optional): 結晶構造オブジェクト。省略された場合、self.crystal から、または POSCAR から読み込みます。

      • EF (float, optional): Fermiエネルギー。省略された場合、self.outcarinf から取得を試みます。

      • normalize_E (bool, optional): エネルギーをFermi準位で正規化するかどうか。デフォルトは True

      • unit (str, optional): DOSの単位変換。'/cm3' を指定すると、体積あたりのDOSに変換されます。デフォルトは '' (変換なし)。

      • IsSpinPolarized (bool, optional): スピン偏極計算かどうか。

      • IsNonCollinear (bool, optional): 非共線計算かどうか。

      • SpinOrbit (bool, optional): スピン軌道相互作用 (LSORBIT) が考慮されているか。

      • print_level (int, optional): 出力詳細レベル。デフォルトは 1

    • 戻り値: dict - 抽出されたDOS情報 (E, TotalDOS, TotalDOSup, TotalDOSdn, PDOS_list, lmlabels など)。

  • read_DOS(file, cry = None, IsSpinPolarized = None, IsNonCollinear = None, EF = None, normalize_E = True, unit = '', print_level = 1)

    • 機能: DOS関連のファイルを読み込みます。入力ファイルが .dat 拡張子を持つ場合は単純な2列のエネルギーとDOSデータを読み込み、それ以外の場合は read_doscar メソッドを呼び出してVASPの DOSCAR ファイルを解析します。

    • 引数:

      • file (str): DOSファイルへのパス。

      • cry (tkCrystal, optional): 結晶構造オブジェクト。

      • IsSpinPolarized (bool, optional): スピン偏極計算かどうか。

      • IsNonCollinear (bool, optional): 非共線計算かどうか。

      • EF (float, optional): Fermiエネルギー。

      • normalize_E (bool, optional): エネルギーをFermi準位で正規化するかどうか。

      • unit (str, optional): DOSの単位変換。

      • print_level (int, optional): 出力詳細レベル。

    • 戻り値: dict - 抽出されたDOS情報。

  • read_vasprun(self, VASPRUN_path, print_level = 1)

    • 機能: vasprun.xml ファイルを読み込み、xmltodict ライブラリを使用してその内容をPythonの辞書形式に変換します。@datatype 属性に基づいて数値型(float, int, bool)への自動型変換も行います。

    • 引数:

      • VASPRUN_path (str): vasprun.xml ファイルへのパス。

      • print_level (int, optional): 出力詳細レベル。デフォルトは 1(現在の実装では未使用)。

    • 戻り値: dict または None - XMLファイルの内容を表現する辞書。ファイルが存在しないか、解析エラーが発生した場合は None を返します。

  • read_files(self, file, file_types, EF = None, normalize_E = True, unit = '/cm3', data_for_bandedges = None, exit_by_error = False, print_level = 0, terminate = terminate)

    • 機能: 指定されたVASP計算ディレクトリ内にある複数の出力ファイル(INCAR, POSCAR, POTCAR, KPOINTS, CONTCAR, OUTCAR, EIGENVAL, DOSCAR, vasprun.xml など)をまとめて読み込み、それらの情報を単一の辞書に集約して返します。また、OUTCARKPOINTS の情報に基づいて計算の「役割」(scf, band, relax, md など) を推測します。

    • 引数:

      • file (str): VASP計算ディレクトリのパス、またはその中の任意のVASPファイルのパス。

      • file_types (list of str): 読み込みたいファイルタイプ名のリスト (例: ['INCAR', 'OUTCAR'])。

      • EF (float, optional): Fermiエネルギー。

      • normalize_E (bool, optional): エネルギーをFermi準位で正規化するかどうか。デフォルトは True

      • unit (str, optional): DOSの単位変換 (例: '/cm3')。デフォルトは '/cm3'

      • data_for_bandedges (any, optional): バンドエッジ計算のための追加データ (現在の実装では未使用)。

      • exit_by_error (bool, optional): ファイルの読み込みに失敗した場合にプログラムを強制終了するかどうか。デフォルトは False

      • print_level (int, optional): 出力詳細レベル。デフォルトは 0

      • terminate (callable, optional): exit_by_errorTrue でエラーが発生した場合に呼び出される終了処理関数。デフォルトは tklib.tkutils.terminate

    • 戻り値: dict - 読み込まれたすべてのファイル情報 ("INCAR", "POSCAR", ... のキーに対応する辞書) と、計算ディレクトリのパス、ディレクトリ名、計算の役割など。

main scriptとして実行したときの動作

提供された tkvasp.py のソースコードには、if __name__ == '__main__': ブロックが存在しません。したがって、このライブラリファイルをPythonのメインスクリプトとして直接実行しても、特定の処理は実行されず、何も出力されません。

tkvasp.py は他のPythonプログラムからインポートされ、その中で tkVASP クラスのメソッドが呼び出されることを前提として設計されたライブラリです。