outcar2axsf.py 技術ドキュメント
プログラムの動作
outcar2axsf.py は、VASP (Vienna Ab initio Simulation Package) の分子動力学 (MD) シミュレーションの出力ファイル (OUTCAR) を解析し、構造の時系列変化を可視化するためのXCrySDen AXSF (Animation XSF) ファイルに変換するプログラムです。
主な機能:
VASPの
OUTCARファイルから、各ステップの結晶構造(格子ベクトル、原子座標、原子にかかる力または速度)を読み取ります。読み取った構造履歴をXCrySDenでアニメーションとして表示可能なAXSF形式で出力します。
VASPの
POSCARおよびCONTCARファイルから、シミュレーションの初期構造と最終構造をCIF (Crystallographic Information File) 形式で別途出力します。INCARファイルからシミュレーション名 (SYSTEM) とタイムステップ (POTIM) を読み取り、出力ファイル名や情報表示に利用します。
解決する課題:
VASPの分子動力学シミュレーション結果は、OUTCAR ファイルに構造情報が時系列で記述されますが、このファイルを直接可視化ツールでアニメーションとして扱うことは困難です。本プログラムは、OUTCAR の情報をXCrySDenという広く使われている結晶構造可視化ソフトウェアのアニメーションフォーマットに変換することで、VASP MDシミュレーションの動的な挙動を容易に解析・視覚化できるようにします。
原理
本プログラムは、主にVASPの出力ファイルを解析し、その内容をXCrySDenのAXSFフォーマットに再構成することで機能します。
アルゴリズムの概要:
入力ファイルパスの特定: コマンドライン引数で指定された
OUTCARファイルのパスから、同じディレクトリ内のINCAR,POSCAR,CONTCARファイルのパスを推測し特定します。初期/最終構造の抽出とCIF出力:
POSCARから初期結晶構造を読み込み、[SYSTEM]-initial.cifというファイル名でCIF形式で出力します。CONTCARから最終結晶構造を読み込み、[SYSTEM]-final.cifというファイル名でCIF形式で出力します。
シミュレーション情報の取得:
INCARファイルからSYSTEM(サンプル名) とPOTIM(タイムステップ) を読み込みます。
AXSFファイルの準備:
OUTCARを一度スキャンし、格納されている結晶構造の総ステップ数$N_{step}$を取得します。AXSFファイルのヘッダーとして
ANIMSTEPS $N_{step}$とCRYSTALを出力ファイルに書き込みます。
構造履歴の読み取りとAXSF出力:
OUTCARファイルを最初から順次読み込み、各ステップの結晶構造データを抽出します。各ステップ
$i_{step}$ごとに以下の情報をAXSFフォーマットで出力ファイルに追加書き込みます。格子ベクトル:
PRIMVEC $i_{step}$とCONVVEC $i_{step}$の後、現在の単位格子の3つの基底ベクトル(直交座標系)を書き込みます。原子座標:
PRIMCOORD $i_{step}$の後、総原子数とダミーの数を書き込み、続いて各原子の情報を書き込みます。原子の種類 (AtomicNumber)
直交座標
$x_c, y_c, z_c$原子にかかる力または速度
$f_x, f_y, f_z$原子の直交座標は、VASPの分数座標$x_f, y_f, z_f$と現在の格子ベクトル$a_1, a_2, a_3$を用いて以下のように計算されます。 $$ \begin{pmatrix} x_c \ y_c \ z_c \end{pmatrix} = x_f \begin{pmatrix} a_{1x} \ a_{1y} \ a_{1z} \end{pmatrix}
y_f \begin{pmatrix} a_{2x} \ a_{2y} \ a_{2z} \end{pmatrix}
z_f \begin{pmatrix} a_{3x} \ a_{3y} \ a_{3z} \end{pmatrix} $\( ここで `\)a_1, a_2, a_3$` は格子ベクトルです。
使用ライブラリ:
このプログラムは、作者が開発したと思われるカスタムライブラリ群 (tkfile, tkre, tkutils, tksci, tkcrystal) に依存しています。これらのライブラリは、ファイル操作、正規表現、ユーティリティ関数、科学計算、結晶学関連の機能を提供します。特にVASPの出力ファイルを解析し、結晶構造を表現するための tkVASP や tkCrystal クラスが中心的な役割を担います。
必要な非標準ライブラリとインストール方法
本プログラムは、以下の非標準ライブラリに依存しています。
numpy: 数値計算を行うためのPythonライブラリ。
インストール方法 (pipを使用):
pip install numpy
カスタムライブラリ (tkfile, tkre, tkutils, tksci, tkcrystal など):
ソースコードの冒頭に以下の行があります。
sys.path.append("c:/Programs/python/lib")
sys.path.append("d:/Programs/python/lib")
これは、プログラムが実行時にPythonのライブラリ検索パスに c:/Programs/python/lib と d:/Programs/python/lib を追加することを意味します。
したがって、上記のカスタムライブラリはこれらのパス、または outcar2axsf.py スクリプトと同じディレクトリ、あるいはPythonの標準的なサイトパッケージディレクトリに配置されている必要があります。pip を用いた一般的なインストール方法はありません。
必要な入力ファイル
本プログラムは、指定された OUTCAR ファイルと同じディレクトリに、以下のVASP関連の入力ファイルが存在することを期待します。
OUTCAR形式: VASPのメイン出力ファイル。
データ構造: シミュレーションの各ステップにおける格子ベクトル、原子の種類と座標(分数座標)、原子にかかる力(または速度)のデータが時系列で記述されている必要があります。
説明: これがプログラムの主要な入力であり、アニメーションのフレームデータが抽出されます。
INCAR形式: VASPの入力パラメータファイル。
データ構造:
SYSTEMタグ(シミュレーション名)とPOTIMタグ(タイムステップ)が記述されている必要があります。説明: 出力されるCIFファイルの名前付けや、シミュレーション時間の計算に利用されます。
POSCAR形式: VASPの初期構造ファイル。
データ構造: シミュレーション開始時の結晶構造情報(格子定数、原子の種類、原子数、原子座標など)が記述されている必要があります。
説明: 原子種の特定や初期構造のCIFファイル生成に利用されます。
CONTCAR形式: VASPの最終構造ファイル。
データ構造: シミュレーション終了時の結晶構造情報が記述されている必要があります。
説明: 最終構造のCIFファイル生成に利用されます。
これらのファイルは、通常VASPシミュレーションが実行されたディレクトリにまとめて存在します。
生成される出力ファイル
本プログラムを実行すると、以下のファイルが OUTCAR と同じディレクトリに生成されます。
[outcar_body].xsf保存されるファイル名: 入力された
OUTCARファイルのファイル本体名に拡張子.xsfが付加されたもの(例:OUTCARを入力した場合、OUTCAR.xsf)。内容: XCrySDen AXSF (Animation XSF) 形式のテキストファイル。VASPシミュレーションの各ステップにおける結晶構造が、時系列順に記録されています。このファイルはXCrySDenで開くことで、シミュレーション中の原子の動きや構造変化をアニメーションとして視覚化できます。各ステップには、格子ベクトル (
PRIMVEC,CONVVEC) と、各原子の原子番号、直交座標、そして原子にかかる力または速度 (PRIMCOORD) が含まれます。
[SYSTEM]-initial.cif保存されるファイル名:
INCARファイルから読み取られたSYSTEMパラメータ(存在しない場合は 'hogehoge')に-initial.cifが付加されたもの(例:SYSTEM = "Si_bulk"の場合、Si_bulk-initial.cif)。内容: CIF (Crystallographic Information File) 形式のテキストファイル。VASPシミュレーションの初期結晶構造が記述されています。結晶の空間群、格子定数、原子の種類と位置などの情報を含みます。
[SYSTEM]-final.cif保存されるファイル名:
INCARファイルから読み取られたSYSTEMパラメータ(存在しない場合は 'hogehoge')に-final.cifが付加されたもの(例:SYSTEM = "Si_bulk"の場合、Si_bulk-final.cif)。内容: CIF (Crystallographic Information File) 形式のテキストファイル。VASPシミュレーションの最終結晶構造が記述されています。
[SYSTEM]-initial.cifと同様に、最終的な結晶の空間群、格子定数、原子の種類と位置などの情報を含みます。
(備考): ソースコード中には historycsvfile = sample_name + '-history.csv' の定義がありますが、このファイルに対する書き込み処理は実行されないため、実際には生成されません。
コマンドラインでの使用例 (Usage)
outcar2axsf.py の基本的な使用方法は以下の通りです。
python outcar2axsf.py outcar_path
outcar_path: 変換したいVASPOUTCARファイルのパスを指定します。相対パスまたは絶対パスのいずれも指定可能です。OUTCARファイルが他のVASP入力ファイル (INCAR,POSCAR,CONTCAR) と同じディレクトリにあることを想定しています。
コマンドラインでの具体的な使用例
ここでは、VASPシミュレーションの出力ファイル群が vasp_simulations/md_run1/ ディレクトリに格納されていると仮定します。このディレクトリには、OUTCAR, INCAR, POSCAR, CONTCAR が存在し、INCAR ファイルには SYSTEM = "GaAs_MD" という記述があるとします。
入力ファイルの準備:
vasp_simulations/md_run1/ディレクトリに以下のファイルを用意します。OUTCAR(VASPのMD出力)INCAR(内容例:SYSTEM = "GaAs_MD",POTIM = 2.0)POSCAR(初期構造)CONTCAR(最終構造)
プログラムの実行: ターミナル(コマンドプロンプト)で、
outcar2axsf.pyがあるディレクトリ、またはPythonパスが設定されている場所から以下のコマンドを実行します。python outcar2axsf.py vasp_simulations/md_run1/OUTCAR
実行結果の説明: 上記のコマンドを実行すると、以下のような情報が標準出力に表示され、指定されたディレクトリにファイルが生成されます。
=============== Convert VASP output files to XCrySDen AXSF file ============ CAR dir : vasp_simulations/md_run1 INCAR : vasp_simulations/md_run1/INCAR POSCAR : vasp_simulations/md_run1/POSCAR CONTCAR : vasp_simulations/md_run1/CONTCAR OUTCAR : vasp_simulations/md_run1/OUTCAR AXSF file: vasp_simulations/md_run1/OUTCAR.xsf *** Read initial crystal structure from [vasp_simulations/md_run1/POSCAR] cell: 5.6530000000 5.6530000000 5.6530000000 A 90.000000 90.000000 90.000000 *** Read final crystal structure from [vasp_simulations/md_run1/CONTCAR] cell: 5.6531234500 5.6531234500 5.6531234500 A 90.000000 90.000000 90.000000 Read [vasp_simulations/md_run1/INCAR] sample_name: GaAs_MD POTIM: 2.0 fs Write to [vasp_simulations/md_run1/GaAs_MD-initial.cif] Write to [vasp_simulations/md_run1/GaAs_MD-final.cif] # of crystal structures: 100 # of atom sites for atom types = [4 4] Read crystal structures from [vasp_simulations/md_run1/OUTCAR]
(
# of atom sites for atom typesは例えばGaAs結晶でGa原子が4つ、As原子が4つの場合)この実行により、以下のファイルが
vasp_simulations/md_run1/ディレクトリに生成されます。OUTCAR.xsf: XCrySDenで開くと、VASP MDシミュレーションの構造変化をアニメーションとして見ることができます。GaAs_MD-initial.cif: シミュレーション開始時のGaAs結晶構造。GaAs_MD-final.cif: シミュレーション終了時のGaAs結晶構造。
これらの出力ファイルを使用することで、VASPの分子動力学シミュレーション結果を効果的に視覚化し、解析することが可能になります。