• Nenhum resultado encontrado

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.