lammps做分子動力學模擬時,需要一個輸入文件(input script),也就是in文件,以及關於體系的原子坐標之類的信息文件(data file)和勢文件(potential file)。lammps在執行計算的時候,從這個in文件中讀入命令,所以對LAMMPS的使用最主要的就是對in文件的編寫和使用。
下面是in文件書寫方面的注意事項以及對4個模塊的詳細解釋,原文來源於百度文庫:
http://wenku.baidu.com/view/152b56906bec0975f465e26a.html?re=view
由RCWDliwei於2014年4月13日上傳。在轉載並重新編排之前對原文作者表示致謝。
1、lammps命令分類整理
Initialization | atom_modify, atom_style, boundary,dimension, newton, processors, units |
Atom definition | create_atoms, create_box, lattice, read_data, read_restart, region, replicate |
Force fields | angle_coeff, angle_style, bond_coeff, bond_style, dielectric, dihedral_coeff, dihedral_style,improper_coeff, improper_style, kspace_modify, kspace_style, pair_coeff, pair_modify, pair_style, pair_write,special_bonds |
Settings | communicate, dipole, group, mass, min_modify, min_style, neigh_modify, neighbor, reset_timestep, run_style, set, shape, timestep, velocity |
Fixes | fix, fix_modify, unfix |
Computes | compute, compute_modify, uncompute |
Output | dump, dump_modify, restart, thermo, thermo_modify, thermo_style, undump, write_restart |
Actions | delete_atoms, delete_bonds, displace_atoms, displace_box, minimize, run, temper |
Miscellaneous | clear, echo, if, include, jump, label, log, next, print, shell, variable |
2、命令書寫注意事項
- 每一非空行都被認為是一條命令(大小寫敏感,但極少有命令或參數大寫的)。
- 各命令的順序可能會對計算產生影響,但大部分情況下不會有影響。
- 每行后的“&” 表示續行(類似fortran);“#”表示注釋(類似bash)。
- 每行命令中的不同字段由空格或者制表符分隔開來,每個字段可以由字母、數字、下划線、或標點符號構成。
- 每行命令中第一個字段表示命令名,之后的字段都是相關的參數。
- 很多命令都是在需要修改默認值的情況下才特別設置的。
3、in文件4個部分的詳細解釋
3.1 Initialization
這一部分包含了關於計算體系最基本的信息,例如:
- units: 單位系統(units style),lammps現在提供包括lj、real、metal、si和cgs幾種單位系統;
- dimension: 定義了兩維或者三維模擬(默認是三維);
- boundary: 定義了分子動力學體系使用的邊界條件,例如周期性邊界條件或者自由邊界條件等;
- atom_style: 定義模擬體系中的原子屬性,這一命令與力場設置的參數中的原子類型(atom type)不同;
- pair_style: 相互作用力場類型,例如范德化勢或者硬球勢等;
- bond_style: 鍵合相互作用勢類型;
- angle_style: 鍵角作用勢類型;
- dihedral_style: 二面角作用勢類型;
- improper_style: 混合作用勢類型;
還有其它一些參數設置,例如newton, processors,boundary, atom_modify等,可查閱lammps官網。
3.2 Atom definition
lammps提供3種定義原子方式:
- 通過read_data或read_restart命令從data或restart文件讀入,這些文件可以包含分子拓撲結構信息,這一方法在續算上也很有用。
- 按照晶格的方式創建原子,這種方式不包含分子拓撲信息,可能會用到如下的一些命令:lattice, region, create_box, create_atoms。
- 對已經設置好的原子可以用replicate命令復制后生成一個更大規模的計算體系(注意它與周期性邊界條件是兩個不同的概念)。
3.3 Settings
原子或分子的拓撲信息定義好后,就需要制定一系列的設置,例如力場系數、模擬參數、輸出選項等。
力場系數可以通過這樣的一些命令來定義:pair_coeff, bond_coeff, angle_coeff, dihedral_coeff, improper_coeff, kspace_style, dielectric, special_bonds等。實際上力場系數也可以在關於體系的原子坐標之類的信息的文件(data file)中制定,這樣具體參考read_data命令的相關介紹。
模擬參數可以由如下這樣一些命令來設置:neighbor, neigh_modify, group, timestep, reset_timestep, run_style, min_style, min_modify等。模擬過程中通過compute, compute_modify, variable等一些命令來制定。
輸出選項可以由thermo, dump, restart等一些命令來設置。
3.4 Run a simulation
通常run命令被設置在in文件的最后,使用run命令來開始一個分子動力學模擬的過程。另外,使用minimize命令來實施能量最小化計算,使用temper命令來進行復制品交換采樣模擬。
關於LAMMPS計算前后的處理問題,計算前的原子初始形態文件的生成,由read_data讀入一個data文件,這個文件包括體系中各個原子的xyz坐標等等相關參數,或者由其他軟件生成並修改后符合LAMMPS的輸入文件格式生成。而計算后的輸出,因為LAMMPS不支持圖形輸出,需要借助第三方可視化軟件實現,例如VMD。LAMMPS的輸出文件主要可以分為三種:
一種是log.lammps,這里面記錄了整個計算過程屏幕上顯示的所有信息,可由thermo、thermo_modify等命令控制;
另一種是輸出應力、能量、原子位置、速度等等信息,由dump命令控制輸出文件;
第三種是斷點續算的restart文件輸出信息,由write_restart命令控制。