LAMMPS 即 Large-scale Atomic/Molecular Massively Parallel Simulator (大規模原子分子並行模擬器),是由美國能源部桑迪亞國家實驗室開發的一種開源的經典分子動力學模擬代碼
in 文件描述一個符合牛頓定律的模擬過程,內容大致包含三個部分:
構建所模擬的體系,創造一個模擬環境的以及最后輸出想得到的數據
一、各類文件
1 in :程序寫入
2 log :寫入狀態信息(if the switch is used?)
3 screen : 決定結果的是否進行屏幕輸出
4 var name : 定義一個變量,name指變量名,可為字母也可為字符串,形式$x / $ {abc}
二、指令系統介紹
1.一般來說指令的順序並不重要,但在以下幾種情況中必須注意:1. LAMMPS並不是全部讀完所有指令才執行,而是讀一行執行一次,因此下面的兩組語句是不同的:
timestep 0.5 #以下的兩個模擬其步長均為0.5 fmsec run 100 run 100 run 100 #第一個模擬采用缺省值步長為1 fmsec timestep 0.5 run 100 #第二個采用步長為0.5 fmsec
2. 某些指令只在其他指令之后才生效,如要得到系統溫度必須先進行各種定義
3 .若A指令在B之前,B可以引用A定義的變量
三、in語法規則
1.在LAMMPS中要區分大小寫,一般指令名稱用小寫字母,文件及用戶定義ID Strings 用大寫。
2. LAMMPS對每行語句的語法要求如下:
- 當語句太長一行放不下時,在語句一行結束的時候輸入字符 “&” 表示下一行的語句接着上一行繼續。
- #注釋,但有例外
- 緊跟在$后的為定義變量
- 單詞間用空格隔開
- 第一個詞為指令名,后面的字段都是相關的參數
四. 語句結構
1.Lammps官網命令,寫in data文件時注意看:https://lammps.sandia.gov/doc/Commands_all.html
2.in文件包括四個部分:初始值,定義原子和盒子,設定條件,run
- 大致了解這些命令如下 #附斷裂實例操作 : https://youtu.be/M8NPAk0Cs7Q
- lattice(晶格參數),region(選擇一個而區域),create_box(創建一個盒子),create-atoms(創建原子)——通過這四個命令創建原子(按晶格的方式),這種方式適合沒有分子拓撲信息的晶體,如金屬,鹽等有規則晶體信息的物質。
五.撰寫data,in文件並計算
以TIP4P水分子為例。#用in文件撰寫簡單的小分子模擬
水分子模型參數(看下面in文件對照着來看):Lammps官網-教程-8.5節howto discussions:https://lammps.sandia.gov/doc/Howto.html
#強力安利軟件:UltraEdit——超強大的文本編輯器,編輯in data文件。(真的超好用,之后遇到很多更復雜的文件,如力場,記事本已經無法滿足了,會亂序)
data file for tip4p 3 atoms 2 bonds 1 angles #非剛體結構in文件中不能寫masses,剛體的話要寫。 full中read_data格式無masses Coords #坐標 x y z 1 1.360 1.39 0.570 2 1.770 0.81 1.220 3 0.430 1.31 0.740 Types #原子編號 類型 1 1 2 2 3 2 Charges #電荷 1 -1.0484 2 0.5242 3 0.5242 #下面時拓撲信息 可看最開頭總數 Bonds #鍵的編號 鍵的類型 誰和誰連在一起 1 1 1 2 2 1 1 3 Angles #一個角 1 1 2 1 3
# in file for tip4p model echo screen #調試用,打印到屏幕或log文件。 none or screen or log or both units real #lj or real or metal or si or cgs or electron or micro or nano dimension 3 #2 or 3 boundary p p p #p f s m atom_style full #重要 full:molecular + charge; atomic:only the default values;charge:charge bond_style harmonic angle_style harmonic #創建一個box,並選擇一個區域把水放進去 region box block 0 10 0 10 0 10 #規划區域:定義一個長方體區域叫box,長寬高 單位angstrom create_box 2 box bond/types 1 angle/types 1 extra/bond/per/atom 2 extra/angle/per/atom 1 #create_box N region-ID keyword value .....;box支持多少種(大於等於實際最大值):原子類型 鍵 角 每個原子包含鍵和角 molecule tip4 mol.data #導入模型,需要molecule安裝包才支持。 #read_data tip4.data #計算完后,生成restart.data,再把in文件改一下並且下面的設置部分改一下繼續算。 #region w2 block 10 30 10 30 10 30 #可定義一個之間空的區域w2 lattice sc 5.0 #設置晶格:晶胞類型,晶格常數。讓加入的原子分子在個點上。注意邊界也有分子 create_atoms 0 region w1 mol tip4 515 units box #從0開始,實際上沒有0這種原子類型。設1之后,加上分子就有三種原子類型,上面create_atoms可改為3 #create_atoms 0 random 10 1234 w1 mol tip4 12 3units box #random不用在格點上,故lattice可不用。隨機生成,前面部分是生成原子,如果后面跟了分子,則是生成以隨機點為質心的分子,前面注意要對應box要支持這種分子的拓撲結構,要對應。如果沒跟分子,不能從0開始 mass 1 15.9994 #原子類型,質量 mass 2 1.008 neighbor 2.0 bin #截斷半徑相關的東西 neigh_modify delay 0 every 1 check yes #鄰近原子列表更新速度 pair_style lj/cut/tip4p/long 1 2 1 1 0.125 8.5 #相互作用勢:原子編號類型, 鍵和角的相互作用勢:OM距離 ,截斷 pair_coeff 1 1 0.1852573718 3.1589 pair_coeff 1 2 0.0000000000 1.5795 pair_coeff 2 2 0.0000000000 0.0000 bond_coeff 1 1000 0.9572 angle_coeff 1 3000 104.52 kspace_style pppm/tip4p 1.0e-5 #計算長程庫侖項,需要kspace安裝包才支持 dump 1 all custom 10 tip4.lammpstrj id type x y z #將信息寫入tip4.lammpstrj,此后可用vmd打開視圖 dump_modify 1 sort id #dielectric 80.0 fix 1 all shake 0.0001 2 0 b 1 a 1 #設置偏差控制精度提示,步數,步數,鍵和角 fix 2 all nve #系綜,后面可跟定義的參數 fix 3 all temp/rescale 1 300 300 1 1.0 1.0 #minimize 1.0e-12 1.0e-12 1000 1000 #能量最小化參數,指數越大最小化成都越深 thermo 1000 timestep 0.05 #步長fs run 100000 write_data tip41.data #輸出 write_restart tip41.restart