LAMMPS-SGCMC學習
再翻譯大概是LAMMPS裡最後一個MC命令吧。這裡要特別特別特別感謝兩位老師:Jian Luo, University of Californi
;
Shengfeng Yang, Indiana University Purdue University Indianapolis
。我在LAMMPS上檢索的時候,並沒有找到這個可以完成MC的任務的命令。發郵件問了國內外的幾位老師,Luo老師給了提了相關建議,並幫我詢問第Yang老師程式的具體事情,得到回覆我才知道atom/swap命令的作用。真心感謝兩位老師,祝他們科研順利。
fix atom/swap command
1.
語法
fix ID group-ID atom/swap N X seed T keyword values
ID, group-ID, atom/swap, seed:
不介紹了
N:
每N步啟動一次該fix(invoke this fix every N steps)
X:
每N步試行swaps的原子數量
T:
該MC模擬的特徵溫度(scaling temperature of the MC swaps)
keyword:
types, mu, ke, semi-grand, region
Ø
types
values = two or more atoms types
Ø
mu
values = chemical potential of swap types
Ø
ke
value = no or yes
no = no conservation of kinetic energy after atom swaps (原子交換後動能不必守恆)
yes = kinetic energy is conserved after atom swaps (原子交換後動能守恆)
Ø
semi-grand value = no or yes
no = particle type counts and fraction conserved (各類原子的數量保持不變)
yes = semi-grand canonical ensemble, particle fraction not conserved
(各類原子數量會變化,和GCMC一樣)
Ø
region
value = region-ID
region-ID = ID of region to use as an exchange/move volume (該region內的原子進行交換和移動)
2.
例子
fix
2
all
atom/swap
1 1 29494 300。0
ke
no
types
1 2
fix
muFix
all atom/swap
100 1 12345 298。0
region
my_swap_region
types
5 6
fix
SGMC
all atom/swap
1 100 345 1。0
semi-grand
yes
types
1 2 3
mu
0。0 4。3 -5。0
3.
命令詳解
該fix對一類原子與另一類原子進行MC交換。(這真真是我需要的功能了,可惜沒找到variance-constraint semi-grand canonical Monte Carlo algorithm)。指定的溫度T是用在馬氏準則(Metropolis criterion)中的,用來計算機率。
根據MC機率進行
X
次原子的交換。參與交換的原子必須在指定的
group
中,在指定的
region
中(如果指定了的話),在指定的
types
中。原子隨機選定,並且不會選擇同類原子,因為沒有意義。
所有的原子均可被常規的時間積分方法移動,如NVT,以此完成
hybrid MC+MD
模擬。選擇的
timestep
必須必常用的MD時間步要小,特別是當原子並未平衡時。
需要指定至少兩個原子
types
。
ke
預設是
no
,關閉的。如果開啟
yes
,那麼原子交換位置前後動能不變,這意味著它們的速度受質量影響。
semi-grand
預設
no
,關閉的。
yes
的話,開啟半巨正則系綜(Sadigh)。
yes
的話,各類原子的數量在MC過程中不守恆,即系統的成分會發生變化;
no
的話,只有不同類原子之間發生互換,即系統成分不變。當使用
semi-grand
時,未被
types
指定的原子不參與互換。
mu
關鍵詞用於指定化學勢,只有
semi-grand
開啟時需要用
mu
。所有化學勢的值都是絕對的,每一類原子一個化學勢。
在semi-grand中化學成分由這些mu的值控制,因此,如果所有的mu都是同樣的值,那麼這些mu對MC模擬不會產生影響
。
region
關鍵詞指定參與
swap
的原子所在的區域。只有兩原子都在該
region
內,才可發生
swap
。
務必保證分子上的原子不發生
swap
,要不然就等著報錯吧!
不使用
semi-grand
時,該
fix
會檢查是否所有原子具有相同電荷。因為
swap
並不交換原子電荷。因此,如果原子的
type
改變了,但是電荷卻沒變,那就麻煩了。如果使用了
semi-grand
,那麼它會預設所有原子的電荷量一致,反正不會給你檢查的,也不會給你交換電荷量。
看到這裡,我才明白,原來交換的並不是原子位置,而是原子的型別。這也解釋了,為什麼質量是可交換的,速度要選擇是否交換。因為Lammps的原子型別和質量是繫結的,但是電荷量和速度都不是。如果a原子型別變成了b,但是電荷量和速度都還是a的,那就麻煩了。因此前面可以選擇是否開啟ke守恆,還要檢查電荷是否一樣。
該fix需要計算swap前後的化學勢,下列原子作用勢型別下的系統可以計算
Ø
long-range electrostatics (kspace)
長程靜電勢
Ø
many body pair styles
多體勢
Ø
hybrid pair styles
複合勢
Ø
eam pair styles
嵌入原子勢
Ø
triclinic systems
三斜晶體系統
Ø
need to include potential energy contributions from other fixes
包含其他fix賦予的勢
一些fix會附加額外的勢能,包括
efield, gravity, addforce, langevin, restrain, temp/berendsen, temp/rescale, and wall fixes
。如果要將這些fix附加的原子勢考慮進來,務必為這些勢開啟
fix_modify energy
選項。
Restart, fix_modify, output, run start/stop, minimize info:
該fix會將自身狀態寫入一個二進位制restart檔案中,包含隨機種子數,MC交換的下一個時間步,嘗試交換的次數和成功次數等。
不允許使用fix_modify。
fix產生一個二維向量,可以被
output commands訪問,用於計算或輸出。
Ø
1 = swap attempts
Ø
2 = swap successes
該fix中的引數不能與run中的start/stop關鍵詞聯用。
不參與能量minimization。