【lammps】入力ファイルの解説!!_1
はじめに
今回は前回の記事で使用したファイルについて解説したいと思います!(※内容が多すぎるので分けました!)
今回解説する時にしたのはlammpdsの公式マニュアル(英語)です。英語読める人はそっちを参考にするのが良いと思うので以下をご覧ください。2000ページあって重いので注意!
https://lammps.sandia.gov/doc/Manual.pdf
解説
①INファイル
##/bin/sh
これはシミュレーションに直接関係ないですが、Unix系で使われるシェル「bash」のシンボリックリンク?らしいです。詳しく知りたい人は調べてみてください。
units real
atom_style molecular
一行目はシミュレーションで使用する物理量の単位を規定しています。例えばrealスタイルではmassが『grams/mole』となっていますが、siスタイルにすると『kilograms』になります。(単位を間違えると全てがパーになるから気を付けような←)
二行目はシミュレーションで使用する粒子が持つことができる物理量を規定しています。例えばmolecularスタイルでは『only the default values(速度とか原子の種類のコマンド)』を使う事ができます。一方でfullスタイルでは『molecular style + charge』となっているのでmolecularスタイルに加えて、電荷を付与することができます。どれを選べばいいかはマニュアルに書いてあるので『atom_style command』の所を読みましょう。
boundary p p p
read_data CONFIG
include Param
一行目ではシミュレーションのセルの境界条件を規定しています。pは周期境界条件を示しています。一文字目がx軸、その次がy,zに対応しています。周期境界条件にすると大きな系を小さなセルで表現することが可能になるので、高分子シミュレーションの場合ではよく使われます。
二行目,三行目は読み込むファイルを示しています。このようにファイルを分けたのは、一つのファイルに全てを記述すると見通しが悪くなるからです。(特に系が大きくなると大変)
neighbor 10.0 bin
neigh_modify delay 0 every 1 check yes
neigh_modify page 2000000 one 50000
ここではポテンシャルを計算するときのパラメータを決定している。 (イマイチよく分かってない部分だが)雑に設定し過ぎると、原子の位置をlostして解析がストップするので注意が必要である。
一行目は『neighbor pageに(cut offに10Åを加えた距離にある)原子までを記録する』ということを示している。
二行目は『各ステップごとに原子の位置を更新する(ただし原子が大きく移動した時のみ)』ということを示している。
三行目は『一つのneighbor pageにpairを2000000個保存して、一つの粒子に対してneighborを最大50000個まで集計する』ということを示している。
(ここでneighbor pageとはポテンシャルを計算をする原子のペアを収納しているファイルではないかと考えられる。)
variable dt equal 10
variable Nstep equal 40000
variable dNcfg equal ${Nstep}/100
variable dNout equal ${Nstep}/100
variable Tini equal 323
variable Tend equal 323
variable Tmass equal ${dt}*100
variable Pini equal 1.0
variable Pend equal 1.0
variable Pmass equal ${dt}*1000
ここでは後の計算をする時の変数を設定しています。
dtはシミュレーションの1stepあたりに進める時間、Nstepはシミュレーションをする総step、dNcfgはcfgeファイルを出力するstep間隔、dNoutは物理量を出力するstep間隔、TiniとTendはシミュレーションをする時の温度、Tmassは温度に関するdampingパラメータ、PiniとPendとPmassは圧力の以下略である。
thermo_style multi
thermo ${dNout}
ここでは出力する熱力学量を規定しています。multiにすると、log.lammpsに色んな物理量が記述されます。(詳しくはマニュアル読んで)
二行目では物理量を出力するファイル数を規定しています。
timestep ${dt}
velocity all create ${Tini} 1 rot yes dist gaussian
fix 1 all nvt temp ${Tini} ${Tend} ${Tmass}
ここではシミュレーションをする際の条件を示しています。
一行目は1ステップあたりに進める時間を示しています。大きいほど時間経過が観察しやすいですが、安定しなくなります。(理論の記事でまた説明します)
二行目はシミュレーション開始時に粒子に初速を与えるかどうかを示しています。今回の場合は全ての粒子(all)にTiniケルビンの初速をガウシアン分布で与えています。
三行目はnvt条件(等温等積粒子数変化なし)でシミュレーションを行うことを示しています。
fix engout all print ${dNout} "$(step) $(ke) $(pe)" screen no file energy.d
fix strout all print ${dNout} "$(step) $(pxx) $(pyy) $(pzz)" screen no file stress.d
fix cllout all print ${dNout} "$(step) $(vol) $(lx) $(ly) $(lz)" screen no file cell.d
dump 3 all cfg ${dNcfg} *.cfge mass type xs ys zs mol fx fy fz
#dump 4 all custom ${dNcfg} *.atom id mol type id xu yu zu fx fy fz
dump_modify 3 element C
ここでは出力するファイルを指定しています。指定した物理量がファイルに出力されます。例えばstress.dの左から3列目はセルのy方向にかかる圧力を示しています。
run ${Nstep}
write_data CONFIG.OUT nocoeff
ここではシミュレーションの開始と原子位置ファイル(CONFIG.OUT)の出力を指示しています。
まとめ(INファイル)
いかがでしたか?
INファイルがシミュレーションの設定をしていることがおわかりいただけたでしょうか?次回はCONFIGとParamファイルの解説をします!!