1. 程式人生 > 其它 >lammps教程:group命令詳解

lammps教程:group命令詳解

技術標籤:lammsp教程lammps

lammps教程:group命令詳解


在lammps模擬過程中,group基本上是每次都會用到的一個命令。從命令關鍵字上也能猜出來,group就是對原子進行分組的意思。

被group後的原子會被分配一個group-ID,這個group-ID被用到fix、compute、dump等命令中。

例如fix命令中的第二個引數就是group-ID:

fix ID group-ID style_name keyword value ...
fix 1 water npt temp 300.0 300.0 100.0 iso 0.0 0.0 1000.0

即使不對原子進行分組,lammps也會設定一個預設的原子組:all,也就是把所有的原子全部劃分到all組內。

例如對系統所有原子進行溫度初始化,可以使用下面的語句,其中all就是預設的group-ID:

velocity all create 300.0 4928459

常用的分組方式有以下幾種:

(1)配合region使用,把某一區域的原子歸入到一個組中。

例如在奈米銅的拉伸時,需要一端固定,另一端施加一定的速度進行拉伸,這就需要把Cu原子劃分為三個組:
left:固定組
right:速度載入組
mobile:中間組

group命令配合union關鍵字可實現兩個組的合併,例如left和right組合併為boundary組,可以寫為:

group     boundary union left right

配合substract關鍵字可實現減法操作,所有原子減去boundary原子即為中間moible原子,可以寫為:

group     mobile subtract all boundary

Cu拉伸建模全部程式碼如下:

#模型基本設定
units               metal
dimension           3
boundary            p s p
neighbor            0.3
bin neigh_modify delay 0 timestep 0.001 #設定晶格引數,生成box lattice fcc 3.61 region box block 0 20 0 5 0 5 create_box 3 box create_atoms 1 box #設定Cu原子質量 mass 1 64 mass 2 64 mass 3 64 #設定left和right區域,以此region設定group region left block INF 2 INF INF INF INF group left region left set group left type 2 region right block 18 INF INF INF INF INF group right region right set group right type 3 #group組加減操作 group boundary union left right group mobile subtract all boundary #儲存模型資料 write_data Cu.data

(2)配合type命令,可以將多種型別的原子歸為一組

#將原子型別為3和4的原子全部歸入到water組

group water type 3 4

(3)配合原子id可將特定的原子歸入到一組

#原子id為102550的三個原子歸入到sub組
group sub id 10 25 50
#原子id從5001000的全部原子歸入到sub組
group sub id 500:1000
#原子id為100110120...10000的原子歸入到sub組
group sub id 100:10000:10
#原子id小於或等於150的原子歸入到sub組
group sub id <= 150

需要注意的是,lammps最多支援32個group(包含all組),如果定義的組過多,可將不再使用的組刪除:

group boundary delete

group命令在模擬過程中使用比較頻繁,靈活掌握以上幾種應用基本上能夠滿足要求,更多的設定方式可以檢視lammps手冊。
更多lammps教程和案例請關注微信公眾號:lammps加油站