サンプルの実行

example/test-W/ ディレクトリにはいくつかの入力ファイル(in.pmd および pmdini)がある.これらの入力ファイルは,体心立方(BCC)タングステン結晶構造に 1 つのヘリウム原子を含むシステムのもの. 次のようにして pmd コマンドを実行すると 100 ステップの NVE-MD シミュレーションが実行される.

cd example/test-W
../../pmd/pmd

総エネルギー,運動エネルギー,ポテンシャルエネルギーは out.erg ファイルに出力される. これらのエネルギーの変化を gnuplot を使用して可視化できる.

$ gnuplot
gnuplot> plot 'out.erg' us 1:3 w l, 'out.erg' us 1:4 w l, 'out.erg' us 1:5 w l

この場合,NVE-MD シミュレーションを実行しているため,総エネルギーは運動エネルギーとポテンシャルエネルギーの和となり保存される.

image

NOTE

out.erg では総エネルギーとポテンシャルエネルギーは初期値を差し引かない生の値になっている.

また,100 ステップのうち 10 ステップごとに原子構造が LAMMPS-dump 形式で出力される(例:dump_0dump_10dump_100 など).


pmd の実行に必要な入力ファイル

pmd を実行するには,作業ディレクトリ内に以下のファイルが必要.

  • in.pmd:シミュレーション設定を記述した入力ファイル(詳細は04_in-pmd
  • pmdini:セル情報,原子の初期位置および速度を記述したファイル(詳細は03_pmd-file

また,一部の原子間ポテンシャルを使用する場合は,in.params.xxx のようなポテンシャル固有のパラメータファイルも必要になる(Coulombポテンシャルの場合に in.params.Coulomb となる).

pmd が実行されると,次のファイルが出力される.

  • pmdfin:最終構造(pmdフォーマット)
  • traj.extxyz:途中の構造(フォーマットや出力頻度は in.pmd で指定する)(v0.13.0以降)
  • 上図の <stdout> は標準出力(画面出力)なので,リダイレクトして out.pmd などに出力する.
    $ pmd | tee out.pmd
    または
    $ pmd > out.pmd

pmd で使用される単位

  • 長さ:オングストローム(Å)
  • 時間:フェムト秒(fs)
  • エネルギー:電子ボルト(eV)
  • 質量:炭素原子の 1/12

初期原子構造ファイルの作成

詳細は 03_pmd-file を参照のこと.

pmd を実行するには,初期原子構造ファイル pmdini を用意する必要がある. すでにいくつかの構造を作成するプログラム(nappy/mkcell/cell_maker.py)がある. それらのコードを参考にして独自の構造ファイルを作成することもできる.

上記の中に目的のシステムの原子構造ファイルを作成するプログラムがある場合は,以下のように実行する.

$ cd mkconf
$ emacs makefile
# 作成する mkconf_* の確認
$ make mkconf_Si_disl
$ ./mkconf_Si_disl

または,nappy/mkcell/cell_maker.py を使用することもできる.

$ python /path/to/nappy/mkcell/cell_maker.py -h
...
$ python /path/to/nappy/mkcell/cell_maker.py dia -l 5.427 -s 4,4,4

これにより pmdini ファイルが作成される.

NOTE

原子構造ファイルを作成するプログラムを新規に作成する場合, mkconf_BCC.F などのプログラムをコピーして修正し, makefile にエントリを追加してコンパイルする.


in.pmd ファイルの作成

in.pmd ファイルの詳細については 04_in-pmd を参照する.

例えば,SW_Si ポテンシャルを使用した 1000 ステップの MD シミュレーションの in.pmd ファイルの例は以下のとおり.

io_format         ascii
print_level       1

time_interval     2d0
num_iteration     1000
num_out_energy    100
num_out_pmd       10

force_type        SW_Si
cutoff_radius     3.7712d0
cutoff_buffer     0.2d0

!# で始まる行はコメントとして扱われ,空白行は無視される.


pmd の実行

1 プロセスでの実行

in.pmdpmdini があるディレクトリで,以下のコマンドを実行すると pmd を実行できる.

$ /path/to/pmd/pmd | tee out.pmd

バックグラウンドで実行する場合は以下のようにする.

$ /path/to/pmd/pmd > out.pmd 2>&1 &

pmd を実行すると,以下のファイルが出力される.

  • out.erg:総エネルギー,運動エネルギー,ポテンシャルエネルギー,温度,体積,圧力
  • traj.extxyz:特定の MD ステップの原子構造

MPIを用いた複数プロセス(ノード)実行

pmdはMPIコンパイラを使ってコンパイルされているので,MPIを使った並列実行が可能.次のように mpirun(もしくは mpiexec)コマンドを使って並列実行する.

$ mpirun -np 4 /path/to/pmd/pmd | tee out.pmd

システムサイズが小さすぎると領域分割できないためにMPI並列実行ができない場合がある.

OpenMPを使ったプロセス並列実行

OpenMPを有効にしてコンパイルした場合は,次のようにして OpenMP を使ったプロセス並列実行が可能.ただし,ノードをまたいだ並列実行はできない.また,あまりに多い並列数は並列化効率が下がるので,並列数を増やすのであればMPI並列の方が有意.

$ OMP_NUM_THREADS=2 mpirun -np 2 /path/to/pmd/pmd | tee out.pmd