pmd で使用される原子構造記述ファイル形式を説明する.

pmdファイル形式

NOTE

ファイルフォーマット,特に h-matrix 部分は rev240307 以降で変更された.

pmd ファイルの例は以下のとおり.

1 :!
2 :! specorder:  W  H
3 :!    
4 :  2.855300000E+000
5 :  3.00000000000000E+000  0.00000000000000E+000  0.00000000000000E+000   0.00  0.00  0.00
6 :  0.00000000000000E+000  3.00000000000000E+000  0.00000000000000E+000   0.00  0.00  0.00
7 :  0.00000000000000E+000  0.00000000000000E+000  3.00000000000000E+000   0.00  0.00  0.00
8 :        55
9 :  1.10000000000001  1.000E-007  1.000E-007  1.000E-007  3.62E-004  1.60E-004  9.60E-004
10:  1.10000000000002  1.666E-001  1.666E-001  1.666E-001  3.62E-004  1.60E-004  9.60E-004
11:  ...
12:  1.10000000000054  9.00E-001  9.00E-007  9.00E-001  3.62E-004  1.60E-004  9.60E-004
13:  2.10000000000055  5.33E-001  5.33E-001  5.33E-001  3.62E-004  1.60E-004  9.60E-004

ここでは説明を容易にするため行番号を付けている.

  • 1-3 行目! または # で始まる行はコメントとして扱われます.いくつかのキーワードは,pmd に追加データを指定するためにコメント行として記述される.
    • specorder:pmd で使用する元素の順序を指定します.これは原子の質量や原子間ポテンシャルの適用順序を決定するため,現在の pmdrev190515 以降)では必須.
  • 4 行目:5-7行目の格子ベクトルに掛かる係数.
  • 5-7 行目:格子ベクトルとその速度.2 行目が a1 ベクトル,3 行目が a2,4 行目が a3 を表します.各行の最初の3列は xyz 成分を表し,その後に速度情報が続く(rev240307 以降).
  • 8 行目:システム内の原子数.
  • 9 行目以降:1 行ごとに 1 つの原子情報を記述.
    • 1 列目:原子のタグ.1 の位は原子の種類,小数点第1位は移動方向を制御する ifmv 値.
    • 2-4 列目xyz 座標(格子ベクトルで正規化された値,範囲は (0:1]).
    • 5-7 列目xyz 成分の速度(格子ベクトルで正規化された値).

Fortran のサンプルコード

open(ionum,file=cfname,status='replace')
write(ionum,'(es23.14e3)') hunit
write(ionum,'(3es23.14e3)') ((h(ia,1,l)/hunit,ia=1,3),l=0,1)
write(ionum,'(3es23.14e3)') ((h(ia,2,l)/hunit,ia=1,3),l=0,1)
write(ionum,'(3es23.14e3)') ((h(ia,3,l)/hunit,ia=1,3),l=0,1)
write(ionum,'(i10)') natm
do i=1,ntot
  write(ionum,'(7es23.14e3)') tag(i), rtot(1:3,i), vtot(1:3,i)
  close(ionum)
enddo

変数の詳細な説明は省略する.このサンプルコードを参考にして,独自のコードを作成する.


フォーマット変換

Python ユーティリティ napsys.py を使用すると,以下のフォーマット間でファイルを変換できる.

  • pmdpmd プログラムの入力フォーマット.
  • POSCARVASP プログラムの入力フォーマット.
  • dumpLAMMPS の dump コマンドの出力フォーマット.

以下のように使用する.

python /path/to/nap/nappy/napsys.py convert pmdini POSCAR

ここでは,pmdini ファイルを POSCAR 形式に変換している. ファイルフォーマットは自動的に判別されますが,オプション --in-format および --out-format を使用して手動指定も可能.

ヘルプメッセージを表示するには以下のコマンドを実行する.

python /path/to/nap/nappy/napsys.py -h

結晶構造の作成

Python ユーティリティ cell_maker.py を使用すると,一般的な結晶構造を作成できる. 例えば,ダイヤモンド構造の立方晶(8 原子)の pmd 形式ファイルを作成するには以下のように実行する.

python /path/to/nap/nappy/mkcell/cell_maker.py dia -l 5.473 -o pmdini

オプション -l は格子定数を指定する.出力フォーマットはファイル名から自動的に判別される.また,fccbccsc(単純立方),および hcp 構造を作成することも可能.詳しくはヘルプもしくは中身を見るとよい.

python /path/to/nap/nappy/mkcell/cell_maker.py -h