5.3. Araştırma ve Sonuçlar
5.3.2. msKanal programı ile çözüm
O programa utilizado inicia-se com um passo de definição da superfície inicial, seguido de um passo de loop, subdividido em quatro fases distintas: fase de adsorção (primeira transferência de elétrons), fase de fixação (segunda transferência de elétrons, ou deposição eletroquímica), fase de dessorção e fase de difusão superficial.
O passo inicial (linhas 21 a 82) é guiado pelo parâmetro theta0 e define o recobrimento inicial da superfície de C, isto é, se há ou não defeitos superficiais. Trata- se de uma versão simplificada do processo de geração de defeitos utilizado, pois aqui não há predileção por formação de defeitos dos tipos canto e degrau, o que ocorre quando os átomos da superfície são resfriados abruptamente a partir de uma temperatura elevada em que podem difundir superficialmente [105]. Esse passo já se dá seguindo o método de MC: por exemplo, caso lsize = 55, os sítios são descritos por uma matriz 55x55 e cada um dos 3.025 sítios é comparado a um número aleatório entre 0 e 1. O
89 programa analisa sítio por sítio, alocando o número de ocupação 0 (sítio vazio) àqueles sítios cujo número aleatório sorteado é maior que o valor determinado por theta0 e número de ocupação 3 àqueles cujo número aleatório é menor ou igual a theta0, criando os defeitos, que se tornam fixos e imutáveis na superfície após a inicialização.
Definida a configuração inicial da superfície, inicia-se o loop, o ciclo de operações repetidas que constituem as iterações do programa. O primeiro passo do loop (linhas 84 a 92) define as velocidades que vão guiar todos os processos a partir daquele ponto. Observa-se que todas as velocidades envolvem uma constante de velocidade e a quantidade de sítios ativos que podem sofrer uma dada transformação (Theta(i), que indica o grau de recobrimento da superfície no passo i). É a relação entre as velocidades e os números aleatórios sorteados que vai determinar qual fase do loop ocorrerá em cada iteração do programa. A soma de todas as velocidades de todos os processos que podem ocorrer (a, definida na linha 92) pode ser entendida como um vetor unidimensional multisegmentado, sendo o tamanho dos segmentos proporcional à velocidade daquele tipo de processo. O número aleatório (é essencial para a seleção de um ponto desse vetor, que corresponderá ao evento que irá efetivamente ser processado. Tal seleção ocorrerá pela multiplicação do número aleatório sorteado pelo valor de a.
A primeira fase do loop (linhas 95 a 130) é a de adsorção. Caso a. resulte em um produto menor que a_ads (definida na linha 88 como a constante de velocidade de adsorção multiplicada pela concentração relativa de sítios ativos vazios no meio), ocorre, então, a adsorção. No entanto, esse fenômeno ocorre apenas se a condição dada na linha 98 (if counter_ads > 0) for atendida. Se essa inequação for verdadeira, então significa que há sítios ainda livres e que podem receber o metal. Um sítio marcado com 0 é, então, selecionado ao acaso de acordo com a superfície de energia potencial do sistema e atualizado para um número de ocupação 1, indicando que agora, naquela
90 posição, existe um átomo de metal adsorvido. Atualizam-se os três counters e as vizinhanças daquele sítio e de seus vizinhos (como indicado na linha 121). O programa
getneighbour_2 é aquele em que estão armazenadas as energias de todas as possíveis
configurações, como já explicado anteriormente. Esse programa é bastante extenso e, por isso, não é mostrado, preferindo-se manter o foco apenas no módulo de KMC.
As linhas 131-156 marcam a segunda fase do programa, de fixação (ou deposição eletroquímica), que pode ocorrer caso as condições para a primeira fase não tenham sido atingidas. Para que ocorra esse processo, o produto do vetor velocidade global a por deve corresponder ao segmento correspondente a a_ads2 (esta é definida na linha 91 como o produto de a_ads multiplicado pela exponencial do overpot, que representa o sobrepotencial catódico relativo aplicado ao sistema). No vetor, tal segmento de reta corresponde ao trecho entre a_ads e “a_ads + a_ads2”. Aqui, pode-se observar que, quanto maior for o overpot, maior é a janela de números associada a
a_ads2 e maior é a chance de que a fase de deposição ocorra. Isso já era de se esperar, pois o overpot representa um sobrepotencial catódico aplicado e, quanto maior ele for, mais deposição é observada na superfície. Ao ser executada a segunda fase, um sítio de ocupação 1, escolhido ao acaso, é marcado com um número de ocupação 2, indicando fixação do átomo de Co naquela posição. A seleção do sítio específico se dá de acordo com a distribuição de probabilidades associada à superfície de energia potencial do sistema.
De maneira análoga, a terceira fase (linhas 157 a 189) é a de dessorção e ocorre quando o produto a. se encontra entre “a_ads + a_ads2” e “a_ads + a_ads2 + a_des”. Ao ser executada, essa fase marca um sítio de ocupação 1 com 0, indicando que o sítio agora está desocupado e disponível para adsorção ou destino de uma difusão superficial.
91 A última fase (linhas 193 a 249), de difusão, ocorre caso o produto a. não tenha se encaixado em nenhuma das condições anteriores. Ao ser executada, essa fase troca de 1 para 0 o número de ocupação do sítio em que se iniciou a difusão, e de 0 para 1 o número de ocupação do sítio final (vizinho ao inicial), indicando que o átomo adsorvido se movimentou de um local para outro.
Depois que o programa roda uma vez seu loop, e em todas as iterações subsequentes, deve-se atualizar o tempo decorrido durante o evento executado. Isso está descrito nas linhas 252 a 254. A fórmula de tempo apresentada na linha 252 é a Equação (14). O tempo é uma variável determinante para a continuação do loop, como visto na linha 87.
A linha 267 soma 1 aos passos totais, variável que também define a continuação do loop. Tais condições implicam que o programa deve continuar executando o loop enquanto o tempo decorrido for menor que o tempo máximo estipulado (tf), e enquanto o número de passos decorridos for menor que o de passos máximos estipulados (maxsteps). Caso qualquer uma dessas condições seja desobedecida, o loop termina e o programa entra em sua finalização (linhas 271 a 298), fase em que se determina qual era a configuração inicial (271) e quantos sítios estão ocupados com 0, 1 e 2, e qual a configuração final da superfície (275 a 286), além de salvar os parâmetros (298).
Todos os parâmetros counter que aparecem no programa são indicativos da possibilidade de algum evento ocorrer. Sempre que, por exemplo, o counter_ads for positivo, significa que há possibilidade de adsorção, ou seja, há um sítio desocupado na superfície. Esses parâmetros não devem ser confundidos com contadores do número de posições na matriz ocupadas por 0, 1 ou 2, que se encontram no fim do programa, nas linhas 276 a 286.
92