2.2 M´ etodo de Monte Carlo em simula¸c˜ ao molecular
2.2.4 Monte Carlo “configurational-bias”
2.2.4.2 Algoritmo
Em termos gerais, o algoritmo do m´etodo MCCB consiste em seleccionar aleatoria- mente uma cadeia (mol´ecula), reconstruir total ou parcialmente essa cadeia gerando assim uma nova conforma¸c˜ao, calcular os factores de Rosenbluth para a cadeia an- tiga e nova e testar a aceita¸c˜ao da nova cadeia pela regra de aceita¸c˜ao da equa¸c˜ao (2.47).
A partir das regras de probabilidade, acima definidas, vamos agora descrever, em termos operacionais, como ´e que os segmentos da cadeia s˜ao colocados. Imaginemos que alguns segmentos da cadeia j´a foram colocados e vamos agora colocar o segmento
i do meio da cadeia. O segmento ir´a ser colocado da seguinte forma:
1. Gerar k orienta¸c˜oes tentativa para o segmento. O n´umero de orienta¸c˜oes, k, ´e escolhido por tentativa e erro de forma a fornecer os melhores resultados. As orienta¸c˜oes tˆem de ser geradas com probabilidade dada pela equa¸c˜ao (2.39). Um dos processos para gerar as orienta¸c˜oes ser´a:
(a) Gerar um vector unit´ario com distribui¸c˜ao uniforme de orienta¸c˜oes numa esfera de raio 1. Os m´etodos para gerar este tipo de distribui¸c˜ao de orienta¸c˜oes podem encontrar-se na literatura referida [2].
(b) Avaliar a contribui¸c˜ao desta orienta¸c˜ao para a energia potencial de liga- ¸c˜ao, uligi . Aceitar a orienta¸c˜ao gerada com probabilidade
min h
1, exp
−βuligi i (2.49)
(c) Repetir os passos (a) e (b) at´e que se tenha constru´ıdo um conjunto com k elementos, {b}nk,i.
2. Avaliar a energia potencial de par uparj,i para cada uma das orienta¸c˜oes e calcular o factor de Rosenbluth do conjunto, wn
i
{b}nk,i(equa¸c˜ao (2.41)). Seleccionar uma das orienta¸c˜oes segundo a probabilidade dada pela equa¸c˜ao (2.40). Para isso, gera-se um n´umero aleat´orio, rand, e selecciona-se uma orienta¸c˜ao bs que
satisfa¸ca a seguinte condi¸c˜ao:
s≤k
X
j=1
exp −βuparj,i ≥ rand · wi({b} n
k) . (2.50)
O segmento produzido torna-se, assim, o segmento i da conforma¸c˜ao tentativa. 3. Repetir os passos 1, 2 e 3 at´e que se obtenha uma cadeia completa.
4. Calcular o factor de Rosenbluth da nova conforma¸c˜ao, W (n) (equa¸c˜ao (2.48)).
Agora que constru´ımos a nova conforma¸c˜ao e calcul´amos o factor de Rosenbluth, W (n), temos de fazer um rastreio dos segmentos da conforma¸c˜ao antiga para deter- minar o factor de Rosenbluth, W (o). O rastreio de um segmento geral i ser´a feito da seguinte forma:
1. Gerar k − 1 orienta¸c˜oes alternativas para o segmento. Essas orienta¸c˜oes se- r˜ao geradas, novamente, com distribui¸c˜ao de probabilidade dada pela equa¸c˜ao (2.39). O processo de gera¸c˜ao de orienta¸c˜oes ´e an´alogo ao que foi descrito acima na inser¸c˜ao de novos segmentos. As novas orienta¸c˜oes, juntamente com a orienta¸c˜ao do segmento, ir˜ao formar o conjunto {b}ok,i.
2. Para cada uma das orienta¸c˜oes do conjunto {b}ok,i, calcular a energia potencial de par e determinar o factor de Rosenbluth wo
i
{b}ok,i (equa¸c˜ao (2.41)). 3. Calcular o factor de Rosenbluth de toda a cadeia, W (o)(equa¸c˜ao (2.48)) re-
petindo os passos 1 e 2 para todos os segmentos.
Depois de calculados os factores de Rosenbluth, a nova conforma¸c˜ao ´e aceite com probabilidade
min [1, W (n) /W (o)] . (2.51)
Na Figura 2.11 encontra-se a descri¸c˜ao do algoritmo MCCB, para a inser¸c˜ao de segmentos, em linguagem algor´ıtmica.
Ainda sobre a inser¸c˜ao de segmentos h´a que referir os casos especiais da inser- ¸c˜ao do primeiro, segundo e terceiro centros de interac¸c˜ao da mol´ecula. No caso do primeiro ´e de salientar que as contribui¸c˜oes para a energia potencial s˜ao exclusiva- mente inter-moleculares. No caso do segundo, e assumindo que estamos a utilizar um modelo de comprimentos de liga¸c˜ao fixos, tamb´em n˜ao h´a contribui¸c˜oes intra- moleculares, o que faz com que com que a distribui¸c˜ao de orienta¸c˜oes para este primeiro segmento seja uma distribui¸c˜ao uniforme numa esfera. No caso do terceiro centro (introdu¸c˜ao do segundo segmento) as contribui¸c˜oes intra-moleculares vˆem da abertura e fecho do ˆangulo com o primeiro segmento. A partir daqui a inser¸c˜ao de segmentos processa-se normalmente.
A selec¸c˜ao e reconstru¸c˜ao das cadeias pode ser efectuada de v´arios modos. Nor- malmente, a selec¸c˜ao de uma cadeia ´e feita de forma aleat´oria. A reconstru¸c˜ao da cadeia pode ser total ou parcial. No caso da reconstru¸c˜ao ser total, o primeiro centro de interac¸c˜ao da mol´ecula ´e colocado atrav´es de uma transla¸c˜ao como se tratasse de uma part´ıcula simples. No caso da reconstru¸c˜ao n˜ao ser total, seleccionam-se, aleatoriamente, um centro e uma direc¸c˜ao de reconstru¸c˜ao. Neste caso, o rastreio da conforma¸c˜ao antiga tamb´em s´o se faz a partir do centro e na direc¸c˜ao seleccionados. Para mol´eculas mais complexas como, por exemplo, cadeias ramificadas ou c´ı- clicas, o m´etodo tem de ser adaptado para lidar com os constrangimentos intra- moleculares. Al´em disso, existem ainda situa¸c˜oes em que os movimentos de algumas
W ← 1 Factor de Rosenbluth da cadeia
ciclo i ← n até l
sumW ← 0 Factor de Rosenbluth do segmento
j ← 1
Gerar conjunto de k configurações:
ciclo enquanto j ≠ k
rit é uma variável vector [x,y,z]
randr() retorna vector aleatório unitário com dist. orient. unif. norm() retorna a norma de um vector
rit ← randr()*norm(ri) Uit ← Uang + Udied
Incluir energia de pares intramoleculares:
ciclo m ← 1 até n-5 Uit ← Uit + Umnt
fim de ciclo
∆Uit ← Uit – Ui
se exp(-β*∆Uit) > rand() então
Orientação aceite!
j ← j + 1
trials[j] ← rit
Calcular mudança na energia inter-molecular: ∆Uinter ← Uinter_t - Uinter
Wtrial[j] ← exp(-β∆Uinter) sumW ← sumW + Wtrial[j]
fim de ciclo
Seleccionar uma orientação:
selW ← rand() * sumW sw ← Wtrial[1]
rnd ← rand() j ← 1
ciclo enquanto sw < selW
j ← j + 1
sw ← sw + Wtrial[j]
fim de ciclo
Orientação de indice j seleccionada!
W ← W * sumW
Guardar orientação!
Tseg[i] ← trials[j]
fim de ciclo
sec¸c˜oes das mol´eculas est˜ao mais limitados (em rela¸c˜ao ao resto da cadeia) como no caso de mol´eculas em cadeia cujos extremos est˜ao fixos por adsor¸c˜ao qu´ımica em substractos cristalinos. Para mol´eculas com cadeias muito extensas, como no caso dos pol´ımeros, pode tamb´em ser interessante adaptar o m´etodo MCCB para que apenas se modifiquem sec¸c˜oes interm´edias das cadeias num processo denominado de “rebridging”. [2, 14]
De uma forma intuitiva, j´a se percebe que este m´etodo deve tornar poss´ıvel a simula¸c˜ao, por MC, de sistemas moleculares com um grande n´umero de graus de liberdade intra-moleculares que de outra forma s´o seriam poss´ıveis de simular pelo m´etodo DM.