DeePMD-kitで水の計算に挑戦 Part.2

計算化学

Quantum ESPRESSOのpw.xで水の第一原理MDを実行し、それをDeePMD-kitで学習させ、そのDeep Potentialを使用してLAMMPSでMD計算をやってみます。
前回のPartではpw.xの第一原理MDとDeePMD-kitでの機械学習を実行しました。

今回はその機械学習ポテンシャルを使ってLAMMPSでのMD計算を行います。

スポンサーリンク

LAMMPSの計算モデル

こんな感じで水のユニットセルを作ります。

from ase import Atoms
from ase.visualize import view
from ase.build import molecule
from ase.units import mol
import numpy as np

water = molecule("H2O")
print(water.get_chemical_symbols())

unitcell_size = 3.11
unitcell = Atoms(symbols=water.get_chemical_symbols(), positions=water.get_positions(),
                  cell=np.eye(3) * unitcell_size, pbc=True)

mdcell = unitcell * [6, 6, 6]

mdcell.write("water.data", format='lammps-data')

density = (np.sum(unitcell.get_masses())/mol) / (unitcell.get_volume()*1e-24)
print(density, "[g/cm3]")
view(mdcell)

密度が1 g/cm3で、分子数が216個です。これがwater.dataとして保存されます。
そして以下のinファイルを用意します。

units        metal
boundary     p p p
atom_style   atomic

neighbor     1.0 bin
neigh_modify every 10 delay 0 check no

read_data    water.data
mass         1  1.008
mass         2 15.999

pair_style   deepmd graph-compress.pb
pair_coeff   * *

velocity     all create 300.0 23456789
fix          1 all npt temp 300.0 300.0 0.1 iso 1.0 1.0 1.0
timestep     0.0005

thermo_style custom step pe ke etotal temp press vol density
thermo       1000
dump         1 all custom 1000 water.dump id type x y z

run          200000

常温常圧の計算です。

スポンサーリンク

結果

まず平衡状態になるまでしばらく計算します。そしてその続きから結果の一部を1step毎に書き出して再計算し、アニメーションにしたものがこちらです。

分子の形は大丈夫そうです。
また平均密度は0.9612 g/cm3です。いい感じです。

これだけでは物足りないので、二体相関関数、自己拡散係数、動粘度、振動スペクトルなどをあとで計算して追記したいと思います。

スポンサーリンク

まとめ

前回のPartでQEの第一原理MDを2回計算し、それをDeePMD-kitで学習させてLAMMPSの計算に使用できました。結果がまだ出そろっていませんが、とりあえずそこまでおかしい結果にはなっていないと思います。

コメント

  1. harrods より:

    とても参考になります。
    続編楽しみにしています。

    2種類の無機材料のスラブ界面モデルの摩擦計算などに興味があります

  2. harrods より:

    DP-GENについても無機材料の例が知りたいです

タイトルとURLをコピーしました