|
Espectro eletrônico da molécula I2: uma breve introdução à programação científica Electronic spectrum of the I2 molecule: a brief introduction to scientific programming |
Antonio G. Sampaio de Oliveira FilhoII,*; Ana Paula de Lima BatistaII
IDepartamento de Química, Faculdade de Filosofia, Ciências e Letras de Ribeirão Preto, Universidade de São Paulo, Avenida Bandeirantes, 3900, 14040-901 Ribeirão Preto - SP, Brasil Recebido em: 15/07/2015 *e-mail: antoniogsof@ffclrp.usp.br This study proposes an activity to introduce scientific programming. In particular, the multidisciplinary concepts of scientific programming, quantum mechanics, and spectroscopy are presented in the study of the electronic spectrum of the I2 molecule. We use Python programming language and the IPython command shell, in particular, for their user friendliness and versatility. INTRODUÇÃO A vida acadêmica e científica, seja de grupos que trabalham exclusivamente com problemas computacionais, quanto daqueles que desenvolvem trabalho experimental em laboratório ou no campo, tem exigido um crescente envolvimento com o mundo da computação.1 Desde o tratamento dos dados coletados até a execução de cálculos quânticos, é certo que no campo da química, bem como em muitos outros, os computadores se mostraram ser ferramentas revolucionárias.2-5 Os computadores, entretanto, não seriam capazes de realizar todas as inúmeras tarefas que lhe são conferidas se não fosse pela existência dos vários softwares (programas) específicos, conjunto de instruções executadas pelo computador. Há, no entanto, determinadas situações que requerem o uso de programas que, infelizmente, não são acessíveis. Existem programas com licença comercial de alto custo, outros são limitados aos seus desenvolvedores e uma infinidade deles nem mesmo foram escritos. Esta última situação é bastante comum, principalmente, quando se deseja um programa capaz de realizar uma tarefa que é específica demais. Nestes casos, muitos acabam obrigados a escrever o seu próprio software, com o intuito de sanar a determinada carência. Apesar da crescente necessidade por programação, em especial para a química, grande parte da comunidade não se sente à vontade com o assunto e a outra, que consegue desenvolver seus próprios programas, em sua maioria, acabou aprendendo sobre o assunto de maneira autodidata.6,7 Estes fatos indicam a enorme necessidade de se desenvolver materiais didáticos auxiliadores, voltados para a área de química e que não só ajudem no processo de aprendizagem, mas também estimulem o interesse pelo mundo das ferramentas de programação computacional. Neste sentido, o presente trabalho tem como objetivo geral trabalhar conceitos iniciais e fundamentais de programação, a partir do estudo de um sistema químico. Escolheu-se aplicar a mecânica quântica a um problema realístico, a fim de se destacar a necessidade do uso de ferramentas de programação e evidenciar as potencialidades das mesmas durante a solução de tarefas familiares ao químico. No campo de programação computacional científica, uma das ferramentas mais promissoras é o Python. O uso crescente desta linguagem de programação se justifica pela sua simplicidade, é uma linguagem fácil de aprender e que, de uma maneira elegante, incentiva a leitura e interpretação do código escrito. Além disso, por ser bastante utilizada nesta área, tem a disposição um grande número de pacotes numéricos8-11 para propósitos específicos e constante lançamento de pacotes com novas funcionalidades, desenvolvidos e aprimorados por uma comunidade ativa.12-14 O que se pode fazer com uma determinada linguagem de programação, entretanto, nem sempre é o único ponto importante. Para que o processo de programação seja o mais amigável possível, é de grande valia o uso de uma plataforma interativa, compreensível e clara, como é o caso do IPython.15 Com ele, é possível criar uma interface com gráficos, fórmulas, textos, comentários e execução de código, evitando a intimidadora linha de comando e o acúmulo de diferentes ferramentas complementares. No IPython, a lógica de programação está acessível ao aprendiz, linha a linha, bem como a tradução das fórmulas em código. Assim se consegue uma proposta bastante atrativa para um primeiro contato entre os iniciantes e a programação. Neste contexto, este trabalho tem como objetivos mais específicos introduzir e construir conceitos básicos de programação a partir do estudo do espectro eletrônico da molécula de I2. Vale a pena mencionar que a molécula de I2 é um sistema químico bastante didático. Por exemplo, a abordagem experimental da molécula de I2 realizada por Sala16 permitiu a obtenção de curvas de energia potencial e valores de constantes espectroscópicas, a partir do espectro vibrônico. Na presente abordagem teórica, a metodologia é inversa, obtém-se o espectro eletrônico a partir de curvas de energia potencial. Este aspecto revela como os procedimentos experimentais e teóricos podem ser trabalhados em conjunto de modo a complementar um ao outro. Além do trabalho envolvendo a linguagem de programação Python, conceitos e princípios de mecânica quântica e espectroscopia, ligados ao problema, são revisados e discutidos.
FUNDAMENTOS TEÓRICOS O espectro eletrônico é um conjunto de transições, absorções ou emissões, entre estados eletrônicos. Em sistemas moleculares ocorrem, adicionalmente, transições entre os estados vibracionais e rotacionais associados aos estados eletrônicos envolvidos.17 Assumindo a existência de energias bem definidas para os estados do sistema e a separabilidade completa entre seus graus de liberdade rotacionais, vibracionais e eletrônicos, as frequências (v) associadas a estas transições são dadas por: em que, Ee', Ev' e Er' são, respectivamente, as energias eletrônica, vibracional e rotacional do estado de energia mais alta; Ee'', Ev'' e Er'' são as energias eletrônica, vibracional e rotacional do estado de energia mais baixa, respectivamente, e h é a constante de Planck. Estas energias são prontamente obtidas a partir das soluções da equação de Schrödinger independente do tempo, escrita como: em que, Ĥtot é o Hamiltoniano completo do sistema, escrito como uma soma dos Hamiltonianos eletrônico (Ĥe), vibracional (Ĥv) e rotacional (Ĥr) e ψ é a função de onda para um dado estado do sistema, podendo ser descrita como o produto das funções de onda eletrônica (Ψe), vibracional (ψv) e rotacional (ψr). Deve-se enfatizar que a equação 2 descreve um sistema não-relativístico com momentos angulares eletrônicos orbitais e de spin resultantes nulos. A intensidade de uma absorção é comumente dada em termos da lei de Beer, porém é mais conveniente expressá-la em quantidades fundamentais relacionadas com a probabilidade absoluta de transição. Do ponto de vista dinâmico, a absorção de radiação é um processo de espalhamento, sendo sua "intensidade" expressa em termos da "área efetiva" da molécula, ou seja, a seção de choque. Para uma transição entre um estado inicial i e um estado final f, a seção de choque de absorção (σ) é dada por: em que, ε0 é a constante de permissividade do vácuo, c é a velocidade da luz, g(v) é uma função de forma de linha, ou seja, uma função que descreve o formato da linha de absorção do espectro, tipicamente Gaussiana ou Lorentziana; vif é a frequência da transição (vif = (Ef - Ei)/h) e µif é a integral do momento de transição: em que, Ψi e Ψf são, respectivamente, as funções de onda dos estados inicial e final, e é o operador momento dipolo de transição. A expressão para a seção de choque (equação 3) é obtida por meio da mecânica quântica independente do tempo, mas é possível obter uma expressão equivalente numa forma dependente do tempo.18 Este último procedimento é conveniente, porque a equação de Schrödinger dependente do tempo é uma equação diferencial de primeira ordem no tempo, de modo que para resolvê-la é necessário conhecer as condições inicias do sistema e propagar o estado do sistema no tempo. Neste tipo de abordagem, chamada de dinâmica de pacote de onda, o estado do sistema é definido em termos de uma função de onda localizada no espaço, pacote de onda, que tem a sua dinâmica determinada pela equação de Schrödinger dependente do tempo. Define-se o pacote de onda inicial (Φ(t = 0)) como: Esta expressão indica que o sistema, no estado inicial i, determinado pela função de onda Ψi, absorveu radiação e foi excitado para o estado f. Portanto, este pacote de onda deve ser propagado no potencial do estado excitado, de modo que num instante t, o estado do sistema seja dado, de acordo com a equação de Schrödinger dependente do tempo, por: em que i é a unidade imaginária, Ĥf é o Hamiltoniano do estado excitado, Û (t) é o operador propagador que relaciona pacotes de onda em instantes distintos e ħ é a constante de Planck dividida por 2π. Vale a pena notar que o pacote de onda inicial não é autoestado do Hamiltoniano do estado excitado. A seção de choque de absorção entre os estados inicial i e final f é dada por: ou seja, a seção de choque é proporcional a transformada de Fourier da função de autocorrelação (C(t)), definida como: Esta expressão indica a projeção do pacote de onda do instante t no pacote de onda do instante t = 0. A equação 7, de forma equivalente à equação 3, permite a determinação do espectro molecular de absorção a partir da transformada de Fourier de uma integral, a função de autocorrelação, que envolve um estado inicial e sua propagação no tempo no potencial do estado excitado.
ABORDAGEM COMPUTACIONAL E DISCUSSÃO Nesta seção, a implementação de uma determinação numérica do espectro de absorção da molécula de I2 é discutida. O código foi escrito em Python e está disponível como material suplementar, na forma de um "IPython notebook" que pode ser executado pela internet no site do projeto Jupyter.19 Visando uma abordagem eficiente e didática, o código faz uso de métodos numéricos tais como integração numérica e transformada de Fourier, implementados nos módulos SciPy10 e NumPy,9 bem como emprega o módulo Matplotlib8 para promover uma visualização integrada ao código. A descrição da dinâmica de excitação começa pela construção do pacote de onda inicial, Φ(t = 0), definido na equação 5. Para isto, é necessário determinar a função de onda do sistema no estado inicial, Ψi. Para a molécula de I2, usaremos como estado inicial o estado vibracional fundamental (v = 0) do estado eletrônico fundamental X1Σg+. Para simplificar os cálculos, o grau de liberdade rotacional é ignorado. Esta aproximação não prejudica a determinação do espectro, porque a estrutura fina rotacional exige uma resolução da ordem de 0,01 cm−1 para ser observada. A determinação da função de onda do estado inicial é feita resolvendo-se a equação de Schrödinger para o movimento vibracional da molécula de I2 no potencial que corresponde ao estado eletrônico fundamental. Explicitamente, temos: em que, e são, respectivamente, os operadores energia cinética e energia potencial e µ é a massa reduzida. A dependência do potencial V(r) e da função de onda em relação a distância internuclear r estão evidenciadas. A resolução da equação 9 depende do potencial V(r) que deve descrever a energia interna da molécula de I2 em função da distância internuclear r, no estado eletrônico fundamental X1Σg+. Para este potencial será utilizada uma função de Morse, dada por: em que, De é a energia de dissociação, re é a distância internuclear de equilíbrio e o parâmetro α pode ser calculado a partir de outras constantes espectroscópicas pela seguinte expressão: em que, k é a constante de força da ligação e se relaciona com a constante vibracional harmônica ωe por: A energia de dissociação pode ser estimada a partir das constantes espectroscópicas vibracionais pela seguinte expressão: em que, ωexe é a constante de anarmonicidade. Portanto, para determinar o potencial V(r), empregando a equação 10, são necessários os valores da distância internuclear de equilíbrio re, da constante vibracional harmônica ωe, da constante vibracional de anarmonicidade ωexe e da massa reduzida µ. Para a molécula de I2, no estado eletrônico fundamental X1Σg+, os valores obtidos experimentalmente são: re = 2,666 Å, ωe = 214,50 cm−1, ωexe = 0,614 cm−1.20 O trabalho de Sala16 traz uma descrição clara e didática de como obter estes valores a partir de dados experimentais. Uma forma bastante conveniente de resolver numericamente a equação 9 é a Representação de Variável Discreta (Discrete Variable Representation - DVR).21 Nesta representação, o operador Hamiltoniano é transformado em uma matriz, cujos elementos correspondem a integrais de funções de base, definidas em uma grade igualmente espaçada das coordenadas. Os elementos da matriz Hamiltoniana DVR são dados por: em que, ∆r é o espaçamento entre os pontos da grade na distância internuclear r, isto é, ∆r = ri+1 - ri e V(ri) é o potencial calculado no ponto ri. Uma vez calculada a matriz, os correspondentes autovalores (energias) e autovetores (funções de onda) são prontamente determinados por procedimentos padrão de álgebra linear. Especificamente, empregamos a rotina "numpy.linalg.eigh", do módulo NumPy,9 que calcula os autovalores e autovetores de uma matriz Hermitiana. A Figura 1 mostra a curva de energia potencial para o estado eletrônico fundamental da molécula de I2 em torno da região de equilíbrio e as correspondentes funções de onda dos estados vibracionais. O código, escrito em Python, é apresentado no material suplementar. Esta figura sumariza os resultados obtidos nesta etapa, permitindo a visualização de importantes resultados intermediários para o cálculo do espectro. Em especial, este tipo de visualização de potenciais e suas funções de onda é bastante comum em livros texto, porém, neste caso, a figura pode ser construída e modificada pelo estudante.
Figura 1. Curva de energia potencial para a molécula de I2 no estado eletrônico fundamental (X1Σg+). As correspondentes funçoes de onda para os estados vibracionais com números quânticos de zero a quatro sao plotadas. Note que as funçoes de onda foram deslocadas verticalmente de acordo com a energia de cada estado vibracional
Uma vez determinada a função de onda do estado vibracional fundamental no potencial do estado eletrônico fundamental da molécula I2, é necessário normalizá-la. O cálculo da constante de normalização (N) é prontamente feito a partir de sua definição: em que, é a função de onda não-normalizada. A integral no denominador da equação 15 é calculada, no código, empregando o método de Simpson,22 implementado na rotina "integrate.simps" do módulo SciPy.10 A função de onda normalizada, Ψi, dada por: é utilizada para construir o pacote de onda inicial, definido na equação 5. Nesta expressão, é conveniente aproximar a integral do momento de transição (µij), que é função da distância internuclear, pelo valor do momento de transição em torno da distância de equilíbrio. Para a transição B-X foi utilizado o valor de 0,396 e a0,22 determinado a partir de dados experimentais. O pacote de onda num determinado instante t é construído empregando-se o propagador Û (t), definido na equação 6 e reescrito como: em que fica explícita a discretização da variável contínua t em intervalos ∆t, de modo que o propagador, Û (∆t) é utilizado de forma iterativa para obter a evolução do pacote de onda ao longo do tempo. O propagador é calculado diretamente a partir do Hamiltoniano do estado excitado (Ĥf) que, de maneira análoga ao estado fundamental, na representação DVR é uma matriz cujos elementos são dados pela equação 14. As constantes espectroscópicas necessárias para calcular o Hamiltoniano para o estado eletrônico B3Πu são, re = 3,024 Å, ωe = 125,69 cm−1, ωexe = 0,764 cm−1 e energia de excitação Te = 15 769,01 cm−1.20 Vale a pena observar que o propagador e os pacotes de onda são quantidades complexas e que o módulo NumPy9 possui os tipos de variáveis apropriados para estas quantidades. A Figura 2 mostra o módulo dos pacotes de onda, em diferentes instantes, evidenciando o comportamento do pacote de onda no estado excitado.
Figura 2. Evoluçao do pacote de onda no potencial do estado excitado (B3Πu)
A função de autocorrelação C(t), definida na equação 8 e mostrada na Figura 3, pode ser interpretada em termos da sobreposição de pacotes de onda em função do tempo. As características do espectro são determinadas pelo seu comportamento: há um valor máximo no instante inicial, seguido de um decaimento devido a uma diminuição da sobreposição com o pacote onda inicial conforme o pacote de onda é propagado e se desloca para distâncias internucleares maiores. As oscilações da parte real e imaginária da função de autocorrelação se devem a um fator de fase do tipo exp{-i(∆V)t/ћ} , em que ∆V é a diferença de energia de excitação eletrônica. A escolha do valor do tempo total de propagação está baseado no fato de que o espectro eletrônico é observado na região do visível e do ultravioleta, ou seja, transições na ordem de 20 000 cm−1, e, de acordo com o princípio da incerteza energia-tempo, a escala de tempo para estas excitações são da ordem de 10-16 s. Portanto, a obtenção da função de autocorrelação na escala de tempo de subpicosegundos é suficiente para a descrição do espectro eletrônico.
Figura 3. Funçao de autocorrelaçao em funçao do tempo. Sao plotados o módulo, a parte real e a parte imaginária da funçao de autocorrelaçao
Uma vez determinada a função de autocorrelação, a seção de choque de absorção em função da frequência da radiação, é obtida pela Equação 7, em que a transformada de Fourier é calculada pelo módulo "fft" do NumPy.9 O resultado obtido é comparado aos dados experimentais23 determinados em fase gasosa a 273 K, na Figura 4. É evidente a excelente concordância entre os valores calculados e os determinados experimentalmente, tanto em relação ao formato, quanto à posição da banda de absorção. Obviamente, o espectro calculado se baseia, em grande parte, em dados experimentais, porém a modelagem numérica apresenta uma interpretação direta, que complementa o experimento ao evidenciar os processos dinâmicos associados à absorção de radiação.
Figura 4. Seçao choque de absorçao da molécula de I2
CONSIDERAÇÕES FINAIS O desenvolvimento de materiais didáticos que auxiliem e estimulem o processo de aprendizagem de programação científica é de grande importância dentro do campo da química. A familiarização com tais ferramentas oferece vários meios de potencializar o trabalho diário do químico, tais como coleta e tratamento de dados, além da análise de resultados. No presente estudo, buscou-se trabalhar, de maneira introdutória e mais geral, a lógica de programação científica, partindo do estudo do espectro eletrônico da molécula I2, em que conceitos relacionados à mecânica quântica e espectroscopia também são revisados e discutidos. Espera-se que o trabalho apresentado seja mais que um tutorial introdutório, despertando o interesse pelo mundo da programação científica. MATERIAL SUPLEMENTAR O código comentado, descrevendo o problema abordado está disponível em http://quimicanova.sbq.org.br, na forma de arquivo do IPython notebook (.ipynb), com acesso livre.
AGRADECIMENTOS Os autores agradecem ao Prof. Dr. F. R. Ornellas por todo apoio recebido. A. P. L. Batista agradece a FAPESP, processo 13/22235-0.
REFERÊNCIAS 1. Merali, Z.; Nature 2010, 467, 775. DOI: http://dx.doi.org/10.1038/467775a PMID: 20944712 2. Jacoby, M.; Chem. Eng. News 2013, 91, 51. 3. Jorgensen, W. L.; Science 2004, 303, 1813. DOI: http://dx.doi.org/10.1126/science.1096361 PMID: 15031495 4. Deglmann, P.; Schäfer, A.; Lennartz, C.; Int. J. Quantum Chem. 2015, 115, 107. DOI: http://dx.doi.org/10.1002/qua.24811 5. Cheng, G.-J.; Zhang, X.; Chung, L. W.; Xu, L.; Wu, Y.-D.; J. Am. Chem. Soc. 2015, 137, 1706. DOI: http://dx.doi.org/10.1021/ja5112749 PMID: 25568962 6. Lo, C.-A.; Lin, Y.-T.; Wu, C.-C.; International Conference on Learning and Teaching in Computing and Engineering (LaTiCE), Taipei, Taiwan, 2015 7. Carter, L.; Little, T.; Mathews, C.; J. Comput. Sci. Coll. 2015, 30, 83. 8. Hunter, J. D.; Comput. Sci. Eng. 2007, 9, 90. DOI: http://dx.doi.org/10.1109/MCSE.2007.116 9. van der Walt, S.; Colbert, S. C.; Varoquaux, G.; Comput. Sci. Eng. 2011, 13, 22. DOI: http://dx.doi.org/10.1109/MCSE.2010.145 10. SciPy: Open source scientific tools for Python, http://www.scipy.org/, acessada em Setembro de 2015. 11. Kinder, J. M.; Nelson, P.; A Student's Guide to Python for Physical Modeling, Princeton University Press: New Jersey, 2015. 12. Field, M. J.; A Pratical Introduction to the Simulation of Molecular Systems, 2nd ed., Cambridge University Press: New York, 2007. 13. Oliphant, T. E.; Comput. Sci. Eng. 2007, 9, 10. DOI: http://dx.doi.org/10.1109/MCSE.2007.114 14. Millman, K. J.; Aivazis, M.; Comput. Sci. Eng. 2011, 13, 9. DOI: http://dx.doi.org/10.1109/MCSE.2011.15 15. Perez, F.; Granger, B. E.; Comput. Sci. Eng. 2007, 9, 21. DOI: http://dx.doi.org/10.1109/MCSE.2007.38 16. Sala, O.; Quim. Nova 2008, 31, 914. DOI: http://dx.doi.org/10.1590/S0100-40422008000400033 17. Bernath, P. F.; Spectra of Atoms and Molecules, 2nd ed., Oxford University Press: New York, 2005. 18. Schatz, G. C.; Ratner, M. A.; Quantum Mechanics in Chemistry. Dover: Mineola, NY, 2002. 19. Jupyter Project. https://try.jupyter.org, acessada em Setembro de 2015. 20. Huber, K. P.; Herzberg, G.; Molecular Spectra and Molecular Structure IV. Constants of Diatomic Molecules. Van Nostrand Reinhold: New York, 1979. 21. Colbert, D. T.; Miller, W. H.; J. Chem. Phys. 1992, 96, 1982. DOI: http://dx.doi.org/10.1063/1.462100 22. Press, W. H.; Teukolsky, S. A.; Vetterling, W. T.; Flannery, B. P.; Numerical Recipes 3rd Edition: The Art of Scientific Computing, 3rd ed., Cambridge University Press: New York, 2007. 23. Tellinghuisen, J.; J. Chem. Phys. 2011, 135, 054301. DOI: http://dx.doi.org/10.1063/1.3616039 PMID: 21823694 |
On-line version ISSN 1678-7064 Printed version ISSN 0100-4042
Qu�mica Nova
Publica��es da Sociedade Brasileira de Qu�mica
Caixa Postal: 26037
05513-970 S�o Paulo - SP
Tel/Fax: +55.11.3032.2299/+55.11.3814.3602
Free access