pmd は,設定ファイル in.pmd
と原子構造ファイル pmdini
を読み込むことから開始する.
原子構造以外のシミュレーション設定は in.pmd
に記述する必要がある.
in.pmd
の例
NOTE
この例は Morse および Coulomb ポテンシャルを用いた NVE-MD の設定. シミュレーション内容に応じて適宜修正すること.
#
# 時間の単位 = フェムト秒
# 長さの単位 = オングストローム
# 質量の単位 = 統一原子質量単位
#
io_format ascii
print_level 1
num_omp_threads 4
time_interval 2d0
num_iteration 1000
min_iteration 10
num_out_energy 100
num_out_pos 10
# out_pos_combined F
force_type Morse Coulomb
cutoff_radius 5.8d0
cutoff_buffer 0.2d0
flag_damping 0
damping_coeff 0.99d0
converge_eps 1d-4
converge_num 3
initial_temperature -1.0d0
final_temperature -1.0d0
temperature_control none
temperature_target 300.0
temperature_relax_time 100.0
factor_direction 3 2
1.000d0 1.000d0 1.000d0
1.000d0 0.000d0 1.000d0
stress_control none
stress_relax_time 100.0
stress_target 5.0 5.0 5.0 0.0 0.0 0.0
boundary ppp
ここでは,!
や #
で始まる行はコメントとして扱われる.
入力パラメータ
num_nodes_{x,y,z}
- デフォルト:
-1
x,y,z 方向の分割数を指定する.負の値(<=0
)を設定すると,システムサイズと MPI プロセス数に基づいて自動的に決定される.すべて正の値を指定した場合,その値が適用される.
num_omp_threads
- デフォルト:
-1
OpenMP 並列処理のスレッド数を指定する.負の値を設定すると,環境変数 OMP_NUM_THREADS
の値が適用される.ただし,pmd が OpenMP 対応コンパイラ(例:gfortran
の -fopenmp
オプション)でコンパイルされている場合のみ有効.
io_format
- デフォルト:
ascii
原子構造ファイルのフォーマットを ascii
または binary
のいずれかから選択できる.
大規模なシミュレーションを実行する場合,ファイルの読み書きを高速化するために binary
を選択することを推奨する.
print_level
- デフォルト:
1
シミュレーション中に出力される情報量を指定する.
1
:通常の MD 実行情報を出力100
:デバッグ情報を含む詳細な出力
time_interval
- デフォルト:
1.0
時間ステップの間隔(フェムト秒単位). 負の値を指定すると,可変時間ステップモードが有効になり,その絶対値が最大時間間隔 となる.
vardt_length_scale
- デフォルト: 0.1
可変タイムステップモードにおける特徴的長さ を指定する.これによって時間間隔 が次のように決まる.
num_iteration
- デフォルト:
0
- 別名:
num_steps
MD のステップ数を指定する.
シミュレーション時間は time_interval
× num_iteration
で決まる.
num_out_energy
- デフォルト:
1000
エネルギー情報の出力頻度を指定する.
min_iteration
- デフォルト:
0
- 別名:
min_steps
最小のMDステップ数.構造最適化計算などで,必ず何ステップかは行いたい場合などに指定する.
flag_out_pos
- デフォルト:
3
- 別名:
flag_out_pmd
原子構造の出力方法を指定する.
0
:出力しない1
:pmd フォーマット(pmd_####
)2
:LAMMPSdump
フォーマット(dump_####
)3
:extxyz フォーマット
num_out_pos
- デフォルト:
10
- 別名:
num_out_pmd
途中構造ファイルの出力数.
combine_out_pos
- デフォルト:
F
(false)
構造ファイルを一つにまとめるか否か(rev230307
以降).
flag_sort
- デフォルト:
1
原子構造を出力する際に,原子の背番号(tag
)に基づいて原子の順番を並べ替えるか否か.
0
— Not to sort1
— Heap sort
dump_aux_order
- デフォルト:
ekin epot sxx syy szz syz sxz sxy
原子データの各行に記録される原子属性の順序(LAMMPS dump フォーマットを出力形式として選択した場合).
利用可能な原子属性は以下のとおり.
v?
— 速度成分.?
はx
,y
,またはz
のいずれか.これらのエントリは,以下のエントリより前に記述する必要がある.f?
— 原子に働く力.?
はx
,y
,z
のいずれか.ekin
/eki
— 運動エネルギーepot
/epi
— ポテンシャルエネルギーs??
— 応力テンソル成分.??
はxx
,yy
,zz
,yz
,xz
,xy
のいずれか.chg
— 電荷chi
— 電気陰性度tei
— 電子温度clr
— カラー電荷
force_type
- デフォルト:
None
使用する原子間ポテンシャルを指定する. 利用可能なポテンシャルの例は以下のとおり.
LJ
:Lennard-Jones ポテンシャル(Ar 系)SW_Si
:Stillinger-Weber ポテンシャル(Si 系)Morse
:Morse ポテンシャル(in.params.Morse
が必要)Coulomb
:クーロンポテンシャル(in.params.Coulomb
が必要)DNN
:ニューラルネットワークポテンシャル(in.params.desc
およびin.params.NN
が必要)
flag_damping
- デフォルト:
0
原子の速度に係数を掛けて速度を落としていくか否かのフラッグ.
0
— ダンピングしない.1
— シンプルに係数 damping_coeff を掛ける.2
— FIRE algorithm を使って速度ダンピング.
damping_coeff
- デフォルト:
0.9
ダンピング係数.
converge_eps
- デフォルト:
1d-4
速度ダンピングを行う際のエネルギーに関する収束判定条件(eV).
converge_num
- デフォルト:
1
何回連続で上記収束判定条件(converge_eps
)が満たされたら収束と見なすかという値.
initial_temperature
- デフォルト:
-1.0
初期温度(K).負の値の場合は pmdini
から速度を読み込む.
final_temperature
- デフォルト:
-1.0
最終温度(K).負の値の場合は無視される.
正の値の場合,初期温度から始まりnum_iteration
の間に線形にターゲット温度が変化するように設定される.
temperature_control
- デフォルト:
none
温度制御法の指定.none
, Berendsen
, Langevin
が設定可能.大文字・小文字は無視されるため,berendsen
, Berendsen
, BERENDSEN
は同じ.
flag_multi_temp
- デフォルト:
F
,.false.
原子グループ毎に異なるターゲット温度を設定するか否か.これが T
の場合,temperature_target
の指定方法が変化するので注意.
temperature_target
- デフォルト:
300.0
ターゲット温度(K).次のように指定する.
temperature_target 300.0
flag_multi_temp
が T
の場合,つぎのように,ifmv
値毎にターゲット温度を設定できるような書き方になる.
temperature_target 1 300.0
temperature_limit
- デフォルト:
1.0d+4
上限温度(K)の指定.これ以上の温度となったら,そのMDシミュレーションは正常でないと判断されて停止する.
temperature_relax_time
- デフォルト:
100.0
温度制御における緩和時間(fs).
remove_translation
- デフォルト:
0
並進運動量を0に補正するタイミングの指定.
- N < 0 : 補正しない
- N == 0 : 最初だけ補正する
- N > 0 : Nステップ毎に補正する
stress_control
- デフォルト:
none
圧力制御(バロスタット)の種類を指定する. 利用可能な方法は以下のとおりです.
Berendsen
/vc-Berendsen
:可変セル Berendsen 法vv-Berendsen
:可変体積 Berendsen 法(セル形状を維持したまま体積のみを変更)
Beredsen法ではMDステップ毎に のようにしてcellベクトルを更新する.その は次のように計算されます.
ここで , , はそれぞれ圧縮率,緩和時間,ターゲット応力.詳細は Berendsenの論文1を参照のこと.
pressure_target
- デフォルト:
0.0
目標圧力 を指定する(vv-Berendsen
の場合のみ適用).
stress_target
デフォルト: 0.0 0.0 0.0 0.0 0.0 0.0
応力制御法が vc-Berendsen
か Berendsen
の場合に,応力成分を指定する.左から順に xx
, yy
, zz
, yz
, xz
, xy
.3つだけ指定すると xx
, yy
, zz
だけ制限して非対角要素には制御がかからないようになる.
stress_relax_time
- デフォルト:
100d0
応力制御の緩和時間(fs).
stress_beta
- デフォルト:
1d-2
Berendsen法による応力制御の圧縮率 (1/GPa).
cell_fix
デフォルト:
F F F
F F F
F F F
ここで T
と指定された h-matrix 成分は応力制御法の間も固定される.
cutoff_radius
- デフォルト:
5.0
原子間ポテンシャルのカットオフ半径(Å).
mass
- デフォルト: 元素ごとに自動設定
特定の元素の質量を手動で設定する場合,以下のように記述する.
mass Si 28.0855
mass He 4.00
boundary
- デフォルト:
ppp
各軸の境界条件を指定する.
p
:周期境界条件f
:自由境界条件
flag_clrchg
- デフォルト:
.false.
カラー電荷非平衡MDを行うか否かのフラッグ.
clrfield
- デフォルト:
0d0 0d0 0d0
カラー電荷に作用する外部電場ベクトル.
flag_lflux
- デフォルト:
.false.
局所イオン流れを計測するか否かのフラッグ.これが ON のときには out.lflux
に出力される.
ndiv_lflux
- デフォルト:
1 1 1
局所イオン流計測の局所領域を決定するための各辺の分割数.この情報は out.lflux
の冒頭に出力される.
Footnotes
-
Berendsen, C., Postma, P. M., Van Gunsteren, W. F., Dinola, A., & Haak, R. (1984). Molecular dynamics with coupling to an external bath, 81(8), 3684—3690. ↩