データ形式
このファイルでは, 「read data」コマンドで LAMMPS に読み込まれるデータファイルの形式を説明します. データファイルには, 実行する問題の大きさ, 初期原子座標, 分子トポロジー, そして(任意で)力場係数に関する基本情報が含まれます. examples にあるサンプルデータファイルを参照しながら読むと理解しやすいでしょう.
** データファイルの書式ルール
空行は重要です. ヘッダセクション以降は, 各エントリを空行で区切ります.
インデントや行内の単語・数値の間隔は重要ではありませんが, キーワード(Masses や Bond Coeffs など)は左寄せで, ここに示すとおり大文字小文字を守って記述する必要があります.
ヘッダセクション(ボックス境界まで)はファイルの先頭に記述する必要があります. それ以外の Masses, 各種 Coeffs, Atoms, Bonds などのセクションは任意の順序で構いません.
ファイルに必ず含める必要があるのはヘッダセクション, Masses, Atoms です.
数が 0 でないセクションは必ず記述してください(Bonds, Angles, Dihedrals, Impropers). 力場係数は入力スクリプトで指定できるため, データファイルに含める必要はありません. ただしクラス II 力場の係数だけはデータファイルでしか指定できない点に注意してください.
Nonbond Coeffs セクションには原子タイプごとに 1 行ずつ記述します. ここで指定した係数は同一タイプの 2 原子間相互作用に適用されます. 異なるタイプ間の係数は, クラス I またはクラス II の混合則によって計算されるか, 入力スクリプトで「nonbond coeff」コマンドを使って明示的に指定します. 詳細は force_fields ページを参照してください.
Atoms セクションでは, 原子は任意の順序で記述できますが N 行存在する必要があります. 行頭の値は原子タグ(1 から N までの番号)で, シミュレーション全体を通して原子を識別するために使用します. molecule-tag は原子に付与する 2 つ目の識別子で, 0, 分子番号, その他任意の番号を指定できます. q は原子の電荷(電子単位, 例:陽子なら +1)です. xyz は原子の初期位置です. 2 次元シミュレーションでは z に 0.0 を指定します.
Atoms セクションの各行末に記載できる nx, ny, nz の 3 つの値は任意です. 入力スクリプトで「true flag」コマンドを指定した場合のみ LAMMPS が読み込み, それ以外は 0 に初期化されます. 各次元について, xyz にボックス長さを n 回足した位置が原子の「真の」座標であることを意味します. 周期境界を 1 周以上する長鎖分子の巻き戻し処理を前処理・後処理で行いたい場合に便利です. n の値は正・負・0 のいずれでも構いません. 2 次元シミュレーションでは nz に 0 を指定します.
Velocities セクションがなければ, 原子速度は 0.0 に初期化されます. Velocities セクションでは, Atoms と同様に任意の順序で構いませんが N 行必要です. 行頭の値は該当速度を割り当てる原子の原子タグ(1 から N)です.
Velocities, Bonds, Angles, Dihedrals, Impropers の各セクションは, Atoms セクションより後に記述してください.
周期境界条件を用いるシミュレーションでは, xyz 座標は必要に応じて周期ボックス内に再マッピングされます. そのため, 初期座標がボックス内に収まっている必要はありません. nx, ny, nz(読み込んだ値または LAMMPS が 0 に設定した値)は, この再マッピング処理に合わせて調整されます.
各種係数セクション(Nonbond Coeffs, Bond Coeffs など)の行で指定する係数の数は, 相互作用の「style」に依存します. デフォルトを使用しない場合, 「read data」コマンドを実行する前に入力スクリプトでスタイルを指定する必要があります. 利用可能なスタイルについては input_commands ページを参照してください. 各係数の意味と有効な値は input_commands ページと force_fields ページで説明しています.
** 注釈付きサンプルファイル
以下に示すサンプルファイルでは, 注釈を括弧内に記載し, 長いセクションは「... 」に置き換えています. この例でも空行が重要である点に注意してください.
LAMMPS Description (ファイル 1 行目)
100 atoms (ここは 3 行目である必要があります. 最初の 2 行は無視されます)
95 bonds (シミュレーションする結合の数)
50 angles (数が 0 でもこれらの行を記述)
30 dihedrals
20 impropers
5 atom types (非結合原子タイプの数)
10 bond types (結合タイプ = 結合係数セットの数)
18 angle types
20 dihedral types (結合・角度・二面角・不正規タイプ数が 0 の場合はそれぞれの行を記述しない)
2 improper types
-0.5 0.5 xlo xhi (周期系ではボックスサイズ, 非周期系では原子の最小値と最大値)
-0.5 0.5 ylo yhi (2 次元シミュレーションでは zlo zhi の行を記述しない)
-0.5 0.5 zlo zhi
Masses
1 mass
...N mass (N = 原子タイプ数)
Nonbond Coeffs
1 coeff1 coeff2 ......N coeff1 coeff2 ... (N = 原子タイプ数)
Bond Coeffs
1 coeff1 coeff2 ......N coeff1 coeff2 ... (N = 結合タイプ数)
Angle Coeffs
1 coeff1 coeff2 ......N coeff1 coeff2 ... (N = 角度タイプ数)
Dihedral Coeffs
1 coeff1 coeff2 ......N coeff1 coeff2 ... (N = 二面角タイプ数)
Improper Coeffs
1 coeff1 coeff2 ......N coeff1 coeff2 ... (N = 不正規タイプ数)
BondBond Coeffs
1 coeff1 coeff2 ......N coeff1 coeff2 ... (N = 角度タイプ数)
BondAngle Coeffs
1 coeff1 coeff2 ......N coeff1 coeff2 ... (N = 角度タイプ数)
MiddleBondTorsion Coeffs
1 coeff1 coeff2 ......N coeff1 coeff2 ... (N = 二面角タイプ数)
EndBondTorsion Coeffs
1 coeff1 coeff2 ......N coeff1 coeff2 ... (N = 二面角タイプ数)
AngleTorsion Coeffs
1 coeff1 coeff2 ......N coeff1 coeff2 ... (N = 二面角タイプ数)
AngleAngleTorsion Coeffs
1 coeff1 coeff2 ......N coeff1 coeff2 ... (N = 二面角タイプ数)
BondBond13 Coeffs
1 coeff1 coeff2 ......N coeff1 coeff2 ... (N = 二面角タイプ数)
AngleAngle Coeffs
1 coeff1 coeff2 ......N coeff1 coeff2 ... (N = 不正規タイプ数)
Atoms
1 molecule-tag atom-type q x y z nx ny nz (nx, ny, nz は任意. 詳細は「true flag」コマンドを参照)
...N molecule-tag atom-type q x y z nx ny nz (N = 原子数)
Velocities
1 vx vy vz
......N vx vy vz (N = 原子数)
Bonds
1 bond-type atom-1 atom-2
...N bond-type atom-1 atom-2 (N = 結合数)
Angles
1 angle-type atom-1 atom-2 atom-3 (atom-2 が角度の中心原子)
...N angle-type atom-1 atom-2 atom-3 (N = 角度数)
Dihedrals
1 dihedral-type atom-1 atom-2 atom-3 atom-4 (原子 2-3 が中心結合)
...N dihedral-type atom-1 atom-2 atom-3 atom-4 (N = 二面角数)
Impropers
1 improper-type atom-1 atom-2 atom-3 atom-4 (atom-2 が中心原子)
...N improper-type atom-1 atom-2 atom-3 atom-4 (N = 不正規数)