再翻譯大概是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。