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 は、以下の非標準ライブラリに依存しています。
numpy: 数値計算のための基本的なライブラリです。
pip install numpy
xmltodict: XMLデータをPythonの辞書形式に変換するためのライブラリです。
vasprun.xmlの解析に使用されます。pip install xmltodict
pymatgen: 材料科学における計算の自動化を支援するオープンソースのライブラリです。VASP出力の解析機能の一部(
Vasprunクラス)を利用しています。pip install pymatgen
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オブジェクトを初期化します。内部でtkCrystalObjectのupdateメソッドを呼び出し、キーワード引数で渡された属性をセットできます。引数:
**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.xmlやKPOINTS_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 ornumpy.ndarray): エネルギー値のリスト。DOS(list ornumpy.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_lmdosがTrueの場合に保存するファイル名。省略された場合は自動生成されます。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など)をまとめて読み込み、それらの情報を単一の辞書に集約して返します。また、OUTCARやKPOINTSの情報に基づいて計算の「役割」(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_errorがTrueでエラーが発生した場合に呼び出される終了処理関数。デフォルトはtklib.tkutils.terminate。
戻り値:
dict- 読み込まれたすべてのファイル情報 ("INCAR","POSCAR",...のキーに対応する辞書) と、計算ディレクトリのパス、ディレクトリ名、計算の役割など。
main scriptとして実行したときの動作
提供された tkvasp.py のソースコードには、if __name__ == '__main__': ブロックが存在しません。したがって、このライブラリファイルをPythonのメインスクリプトとして直接実行しても、特定の処理は実行されず、何も出力されません。
tkvasp.py は他のPythonプログラムからインポートされ、その中で tkVASP クラスのメソッドが呼び出されることを前提として設計されたライブラリです。