Л.17 Монте-Карло симуляції в різних ансамблях
(NPT) ансамбль у МК
Алгоритм (NPT) ансамблю у МК
Найпростіша реалізація (NPT) ансамблю у методі Монте-Карло
Найпростіша реалізація зміни об’єму в (NPT)
(μVT) ансамбль у МК
Алгоритм (μVT) ансамблю у МК
Алгоритм (μVT) ансамблю у МК
Найпростіша реалізація (μVT) ансамблю у методі Монте-Карло
Найпростіша реалізація обміну частинками в (μVT)
916.50K
Категория: ИнформатикаИнформатика

Монте-Карло симуляції в різних ансамблях

1. Л.17 Монте-Карло симуляції в різних ансамблях

1. (NVE) – мікроканонічний
2. (NVT) – канонічний
3. (NPT) – ізобарично-ізотермічний
4. (μVT) – великий канонічний (Grand-canonical ensemble)
5. Gibbs ensemble – комбінація (NVT), (NPT) і (μVT) використовується переважно для дослідження співіснування двох
фаз
Мікроканонічний – як правило не використовується в Монте-Карло
– вимагає постійної енергії конфігурацій
Канонічний – реалізується за допомогою стандартного алгоритму
Метрополіса

2. (NPT) ансамбль у МК

ri
si
L
V’
Нормовані на довжину
бокса координати
V
Ймовірність знайти певну конфігурацію N атомів (sN) при
певному об’ємі V є
N
V N e PV / kBT e U ( s
e
, L ) / k BT
[U ( s N , L ) PV NkBT ln V ]/ k BT

3. Алгоритм (NPT) ансамблю у МК

У (NPT) ансамблі V розглядається як додаткова координата –
тому пробні рухи по V повинні задовольняти тимже
правилам, що і пробні рухи по s. Нехай об’єм боксу змінився
V’=V+ΔV, тоді стандартне правило Метрополіса для
ймовірності прийняття конфігурації є
w( st ,V st ,V ') min[1, e
U ( stN ,V ') U ( stN ,V ) P (V ' V ) Nk BT ln(V '/ V )
k BT
1. Генератор випадкових чисел використовується для вибору
частинки чи об’єму (як N+1-ї “частинки”)
2. Робиться пробне зміщення частинки або об’єму
3. Зміщення приймається з ймовірністю w
]

4. Найпростіша реалізація (NPT) ансамблю у методі Монте-Карло

PROGRAM MC_NPT
DO ISTEP=1,MAX_STEP
NVAR=NINT(RANF()*(NPART+1))+1
IF(NVAR.LE.NPART) THEN
CALL MC_PART
ELSE
CALL MC_VOL
ENDIF
CALL SAMPLE(N,V,T,P,E)
ENDDO
STOP
END

5. Найпростіша реалізація зміни об’єму в (NPT)

SUBROUTINE MC_VOL
CALL ENERGY(X,Y,Z,UL,EN_OLD)
V_OLD=UL**3
LNVN=LOG(V_OLD)+(RANF()-0.5)*DVMAX
V_NEW=EXP(LNVN)
UL_NEW=V_NEW**(1/3)
DO I=1,NPART
X(I)=X(I)*UL_NEW/UL
…………..
ENDDO
CALL ENERGY(X,Y,Z,UL_NEW,EN_NEW)
ARG=-BETA((E_NEW-E_OLD)+P*(V_NEW-V_OLD)
-(NPART+1)*LOG(V_NEW/V_OLD)/BETA)
IF(RANF().GT.EXP(ARG)) THEN
DO I=1,NPART
X(I)=X(I)*UL/UL_NEW
ENDDO
ENDIF
RETURN
END
! REJECT

6. (μVT) ансамбль у МК

Використовується, як правило для систем у контакті з об’ємною
рідкою фазою, для якої добре відома густина, однак, не відомо яка
частина рідини буде проникати в іншу фазу
- адсорбент (на прикладі пор
зеоліту) у контакті з рідиною
Температура і хімічний потенціал є зафіксовані для рідини у
всій доступній області, але число частинок може флуктуювати
під час симуляцій

7. Алгоритм (μVT) ансамблю у МК

- ідеальний газ (резервуар з M-N
частинками і об’ємом V0-V)
може обмінюватись частинками
з N-частинковою системою
(об’ємом V)
Для ідеального газу хімічний потенціал визначається густиною:
k BT ln 3
Ймовірність знайти певну конфігурацію N атомів (sN) при
певному об’ємі V та певну конфігурацію M-N атомів (sM-N) у
об’ємі V’=V0-V є
N
e N / k BT V N
N!
3N
e
U ( s ) / k BT

8. Алгоритм (μVT) ансамблю у МК

Ймовірність породження частинки
V
w( N N 1) min[1, 3
e
( N 1)
Ймовірність знищення частинки
N
w( N N 1) min[1,
e
V
3
U ( stN 1 ) U ( stN )
k BT
]
U ( stN 1 ) U ( stN )
k BT
]
1.
Генератор ВЧ визначає породити чи знищити частинку
2.
АБО: вибирає випадково частинку для знищення і вираховує
ймовірність прийняття такого кроку
3. АБО: у випадковому місці породжує частинку і вираховує
ймовірність прийняття такого кроку

9. Найпростіша реалізація (μVT) ансамблю у методі Монте-Карло

PROGRAM MC_GC
DO ISTEP=1,MAX_STEP
NVAR=NINT(RANF()*(NPART+NEXC))+1
IF(NVAR.LE.NPART) THEN
CALL MC_PART
ELSE
CALL MC_EXC
ENDIF
CALL SAMPLE(N,V,T,P,E)
ENDDO
STOP
END

10. Найпростіша реалізація обміну частинками в (μVT)

SUBROUTINE MC_EXC
IF(RANF().LT.0.5) THEN
! DECIDE TO REMOVE OR ADD
IF(NPART.EQ.0) RETURN
IP=INT(NPART*RANF())+1
CALL ENERGY(X,Y,Z,UL,EN_O)
ARG=NPART/ZZ/V*EXP(BETA*EN_O)
IF(RANF().LT.ARG) THEN
X(IP)=X(NPART)
! REMOVE A PARTICLE
NPART=NPART-1
ENDIF
ELSE
XNEW=RANF()*UL
CALL ENERGY(X,Y,Z,UL,EN_N)
ARG=ZZ*V/(NPART+1)*EXP(-BETA*EN_N)
IF(RANF().LT.ARG) THEN
X(NPART+1)=XNEW
! ADD A PARTICLE
NPAT=NPART+1
ENDIF
ENDIF
RETURN
END
English     Русский Правила