grado de licenciado en ciencias químicas
TRANSCRIPT
Departamento de Química Física Facultad de Ciencias Universidad de Cádiz
ESTUDIO COMPARATIVO DE DIVERSOS MÉTODOS DE OPTIMIZACIÓN DE GEOMETRÍAS MOLECULARES EN
COORDENADAS CARTESIANAS
Memoria presentada por David Sánchez Peña para optar al
Grado de Licenciado en Ciencias Químicas
Cádiz, Abril de 2000
1
Este trabajo ha sido realizado en el Departamento de Química Física de la Universidad de Cádiz durante los cursos 1997/99.
Deseo expresar mi agradecimiento al Dr. D. Manuel Fernández Núñez
por su dirección y constante apoyo, que ha permitido que esta tesina
pudiera llevarse a cabo.
2
ÍNDICE
ÍNDICE............................................................................................................................ 2
INTRODUCCIÓN.......................................................................................................... 4
1 OPTIMIZACIÓN DE GEOMETRÍAS MOLECULARES................................. 6
1.1 Superficie de energía potencial y optimización geométrica .............................. 8 1.2 Búsqueda de los mínimos de la superficie de energía potencial........................ 9 1.3 El uso de las coordenadas cartesianas .......................................................... 100 1.4 Criterios de convergencia .............................................................................. 122 1.5 Determinación de direcciones de desplazamiento ........................................... 12 1.6 Minimización a lo largo de la dirección elegida ............................................. 13 1.7 Métodos analizados en este trabajo ................................................................. 16
2 FUNDAMENTOS DE LOS MÉTODOS DE OPTIMIZACIÓN ...................... 17
2.1 Método de la Máxima Pendiente...................................................................... 19 2.2 Método Newton-Raphson ................................................................................. 20
2.2.1 La matriz hessiana ...................................................................................... 20 2.2.2 Uso de coordenadas no redundantes........................................................... 21 2.2.3 Una mejora: el método de la función racional............................................ 23
2.3 Métodos de Gradientes Conjugados ................................................................ 24 2.4 Métodos de Métrica Variable........................................................................... 30
3 PROGRAMACIÓN DE LOS MÉTODOS DE OPTIMIZACIÓN ................... 33
3.1 Uso del programa AVEMO .............................................................................. 35 3.2 La subrutina de optimización ........................................................................... 39 3.3 Programación del método de máxima pendiente ............................................. 46 3.4 Programación de los métodos de gradientes conjugados................................ 48 3.5 Programación de los métodos de métrica variable.......................................... 48 3.6 Cálculo del gradiente ....................................................................................... 53
3
4 RESULTADOS Y DISCUSIÓN ........................................................................... 55
4.1 Optimización del desplazamiento máximo inicial y del factor de reducción... 57 4.2 Optimización de la tolerancia en el gradiente de energía ............................... 62 4.3 Comparación de la eficiencia de los métodos ensayados ................................ 67 4.4 Comparación con resultados estándar............................................................. 72 4.5 El caso del NO2 ................................................................................................ 79
RESUMEN Y CONCLUSIONES ............................................................................... 80
APÉNDICE: GEOMETRÍAS MOLECULARES INICIALES ............................... 84
BIBLIOGRAFÍA .......................................................................................................... 86
4
INTRODUCCIÓN
Este trabajo ha sido desarrollado en el Laboratorio de Química Cuántica de la
Universidad de Cádiz. Una de las líneas de investigación de dicho laboratorio es el
cálculo teórico de propiedades moleculares, tales como energías moleculares, distancias
y ángulos de enlace, constantes de fuerza, momentos dipolares o potenciales de
ionización. Para calcular estas propiedades por vía teórica, es necesario suministrar al
programa de cálculo la geometría molecular para la que ha de realizarse el cálculo. Esta
geometría puede ser la experimental, si se conoce, o bien una geometría aproximada
según criterios químicos. Pero el procedimiento más recomendable consiste en
determinar qué geometría molecular hace mínima la energía del sistema, y es en este
caso cuando se hace necesario un programa que efectúe la minimización de la energía
molecular respecto de los parámetros geométricos de la molécula. La optimización
geométrica es un tema bien tratado desde hace tiempo: desde los años cincuenta han ido
desarrollándose diversos métodos de minimización (o maximización, que en el fondo es
equivalente) de funciones de varias variables que intentan alcanzar el extremo local más
próximo a un punto de partida, en el menor número posible de pasos. Estos métodos
matemáticos han sido aplicados en Química Teórica para optimizar geometrías
moleculares, con bastante éxito.
En este trabajo se ha llevado a cabo un estudio detallado de algunos métodos de
optimización geométrica ampliamente utilizados y simultáneamente se ha desarrollado
nuestro propio programa de optimización. Casi todos los programas “comerciales” de
cálculo teórico de propiedades moleculares pueden llevar a cabo optimizaciones
geométricas. Entonces, ¿por qué estudiar unos métodos sobre los que ya hay tanto
escrito? ¿Para qué desarrollar un programa más de optimización?. La razón más
inmediata para nosotros radica en la utilidad de disponer de un programa de
optimización escrito en un lenguaje claro y asequible a cualquiera que sepa programar,
y por tanto, susceptible de ser usado prácticamente sabiendo lo que el programa está
haciendo. Esto evita el inconveniente que presentan los programas habituales, que la
5
mayoría de las veces deben ser usados como caja negra, (sólo investigadores muy
especializados -y en cierto sentido “valerosos”- se atreverían a hurgar, por ejemplo, en
el código de un programa como el Gaussian). Además brinda al usuario la posibilidad
de modificar el programa adaptándolo a sus necesidades. Esta visión de escribir un
programa de forma sencilla también tiene una clara utilidad didáctica que disfrutarán los
alumnos de nuestra Facultad, quienes serán sus primeros usuarios.
La organización de este trabajo es la siguiente. En el primer capítulo se explica
en qué consiste la optimización de geometrías moleculares y se introducen los
conceptos necesarios para los desarrollos que se realizan posteriormente. En el capítulo
2 se exponen los fundamentos teóricos de los métodos de optimización estudiados. Se
ha tratado de desarrollar los fundamentos matemáticos de un modo razonablemente
riguroso, pero sobre todo procurando que se entiendan de una forma intuitiva. Los
capítulos 3 y 4 contienen la parte más original del trabajo. En el capítulo 3 se describe el
programa que ha sido realizado y el modo de usarlo. Incluye la transcripción de las
subrutinas que forman el proceso de optimización, por si se diera el caso de que este
trabajo fuera leído por alguna persona que no disponga del disquete adjunto. En el
capítulo 4 se exponen los resultados de aplicar el programa a un conjunto de moléculas
de prueba que contienen los elementos de mayor interés en la Química Orgánica:
carbono, hidrógeno, oxígeno y nitrógeno, en diferentes situaciones de enlace. También
se determinan valores óptimos para los parámetros usados por el programa (aunque éste
permite que el usuario los modifique a voluntad): desplazamientos atómicos, factor de
reducción y tolerancia en fuerzas. Por último, se presentan las conclusiones y se da un
esbozo de la dirección que en el futuro puede tomar nuestra investigación sobre el tema:
extensión del programa a coordenadas internas, búsqueda de varios mínimos, etc.
6
CAPÍTULO 1
1 OPTIMIZACIÓN DE GEOMETRÍAS MOLECULARES
7
Introducción al Capítulo 1
Se comienza este trabajo con la exposición de los
conceptos necesarios para comprender los desarrollos
posteriores. La superficie de energía potencial se visualiza
como una función definida en un espacio de configuración
de las coordenadas cartesianas de los núcleos, cuyos
mínimos se pueden determinar. Después se da una ligera
idea de la necesidad de un criterio de convergencia óptimo
para los procesos de minimización. Por último se exponen
los algoritmos básicos que se usarán en todo el trabajo: el
desplazamiento a lo largo de cierto vector de dirección y la
minimización lineal por deslizamiento.
8
1.1 Superficie de energía potencial y optimización geométrica
Los métodos mecanocuánticos (Ab Initio y Semiempíricos) permiten calcular de
forma teórica las propiedades moleculares. Por ejemplo las energías moleculares, las
energías de ionización, los momentos dipolares, etc. También se usan para determinar la
geometría más estable de las moléculas, esto es, aquélla que hace mínima su energía. Es
bien sabido que la energía de una molécula depende de sus distancias y ángulos de
enlace. En muchos casos existe una geometría molecular para la cual esta energía es
mínima. Pero en otros casos existen varias, que corresponden a diversas conformaciones
estables de la molécula en estudio. Las moléculas de cierta complejidad suelen tener
más de una conformación estable y resulta importante saber cual de ellas es la de menor
energía. Por otro lado, los cálculos teóricos reproducen esta dependencia de una forma
más o menos realista según sea el método elegido para calcular la función de onda. La
energía calculada y la geometría a la que corresponde su mínimo dependen pues de cual
sea el método usado para obtenerlas, aproximándose más o menos a las experimentales
según sea la calidad del método (y también la calidad del procedimiento de
determinación experimental). Existen métodos de cálculo de funciones de onda de
diferente complejidad, desde los más simples (Mecánica Molecular) hasta los Ab Initio
con bases grandes e incluso con correlación electrónica. Evidentemente, en general,
Figura 1. El caso más simple de superficie de energía potencial, correspondiente a una molécula diatómica con la distancia internuclear r como única coordenada.
9
cuanto más sofisticado sea el método usado para calcular la función de onda, tanto más
aproximará las propiedades calculadas a las experimentales, aunque también invertirá
más tiempo en calcularlas y requerirá mayor potencia de cálculo. No obstante, es
importante subrayar que para que esta aproximación teoría-experiencia se produzca, es
necesario que el cálculo teórico y la determinación experimental se refieran realmente al
mismo parámetro, y esto no siempre está claro.
Lo dicho nos conduce a considerar la energía molecular como una función de las
distancias y ángulos de enlace, o de cualquier conjunto de coordenadas que permitan
definir la geometría de la molécula, como pueden ser las coordenadas cartesianas de
cada uno de sus átomos. Esta función es lo que se llama superficie de energía potencial
de la molécula (Figura 1).
1.2 Búsqueda de los mínimos de la superficie de energía potencial
Una de las aplicaciones más estandarizadas de la Química Cuántica es la
determinación teórica de geometrías moleculares estables. Como se dijo más arriba,
éstas corresponden a las conformaciones para las que la energía calculada resulta
mínima, o lo que es lo mismo, a los puntos donde la superficie de energía potencial
presenta sus mínimos. El objetivo de este trabajo no es encontrar mínimos que se
aproximen lo más posible a las geometrías moleculares experimentales1, sino comparar,
optimizar y mejorar algunos de los métodos usados para encontrar esos mínimos.
Tampoco se plantea aquí el desarrollo de un método de minimización que conduzca al
mínimo absoluto de la superficie de energía potencial. De hecho, éste es un problema
aún no del todo resuelto. Los métodos de optimización que vamos a estudiar buscan
simplemente el mínimo “más cercano” a una geometría de partida que se estima en base
a la intuición química y que no tiene porqué ser el más estable de todos los mínimos
existentes.
La minimización se lleva a cabo partiendo de una geometría molecular razonable
y desplazando todos los átomos en direcciones adecuadas (Figura 2) y con una cierta
longitud de paso de forma que la energía calculada para sucesivas geometrías vaya
1 Ya se ha explicado que el grado de aproximación entre la geometría obtenida y la experimental depende del método de cálculo mecanocuántico que se use para generar la función de onda.
10
decreciendo. Cada método de optimización conlleva una forma propia de escoger las
direcciones en que los átomos deben moverse. En este trabajo vamos a centrarnos en la
optimización del paso con que se busca el mínimo una vez decidida la dirección en que
debe desplazarse cada átomo. Un método de minimización se considerará eficiente si
llega al mínimo buscado en pocos pasos y de forma segura, sin perderse y sin conducir a
otro mínimo no deseado.
1.3 El uso de las coordenadas cartesianas
Aunque hay otras clases de coordenadas muy usadas en optimización
geométrica, en este trabajo se van a usar las coordenadas cartesianas, que son las más
sencillas de construir y manejar. Además, los programas de representación gráfica de
moléculas, tan usados en la actualidad, dan habitualmente las coordenadas atómicas en
forma de matriz de 3N coordenadas cartesianas. Se comprende pues la comodidad que
supone para el químico el poder optimizar la geometría partiendo directamente de la
molécula que acaba de dibujar en su ordenador.
En coordenadas cartesianas la superficie de energía potencial es una función de
3N variables, donde N es el número de átomos de la molécula. Estas 3N variables son
las coordenadas donde están centrados los átomos de la molécula:
E = E ( x1 , y1 , z1 , x2 , y2 , z2 , ... , xN , yN , zN )
O
H H
90º
1 Å O
H H
104º
0.96 Å
Figura 2. Movimiento de los átomos desde una geometríamolecular groseramente aproximada hasta la de energíamínima según el método semiempírico CNDO.
11
Nótese que la superficie de energía potencial está definida en un espacio de
configuración, en el que se trata la molécula como si fuera un sistema de partículas
clásico.
Para moléculas aisladas, estas 3N coordenadas cartesianas contienen
necesariamente varias redundancias respecto al cálculo de la energía, pues ésta no
puede depender de la localización global de la molécula en el espacio, ni de su
orientación respecto al sistema de referencia. Al tratar la molécula como un sistema de
partículas aislado, se podrían aplicar las condiciones de invariabilidad del centro de
masas y de los ejes principales de inercia [Refs.16-18]. Así se pueden obtener 6
relaciones entre los desplazamientos atómicos (5 si la molécula es lineal) y reducir el
número de grados de libertad a 3N–6 (ó 3N–5). Sin embargo, hemos comprobado que
empleando el conjunto completo de 3N coordenadas se llega normalmente al mínimo
con seguridad y en un número razonable de ciclos. La programación de los algoritmos
también se facilita al trabajar directamente con todo el bloque de coordenadas sin
preocuparse de resolver el sistema de ecuaciones que liga los desplazamientos atómicos
dependientes (sección 2.2.2). Por ello, salvo en un caso (método de Newton-Raphson)
en el que ha sido imprescindible usar coordenadas no redundantes, en todos los demás
se ha usado las 3N coordenadas.
Como ya se ha dicho, existen otras coordenadas aún más usadas que las
cartesianas en optimización geométrica, como por ejemplo las que forman la matriz Z,
las coordenadas internas naturales, o las coordenadas internas deslocalizadas
[Refs. 6-14]. Para moléculas no cíclicas éstas parecen ser más eficientes que las
cartesianas, aunque suelen resultar más difíciles de definir. Pero en moléculas cíclicas
sus variaciones presentan acoplamientos indeseables, es decir, pueden no ser
independientes, de manera que para tratar un caso general nos ha parecido preferible el
empleo de coordenadas cartesianas.
El empleo de las 3N coordenadas cartesianas resulta especialmente
recomendable para optimizar moléculas sometidas a campos eléctricos. En este caso la
energía molecular sí que depende de la orientación de la molécula en el espacio, y si el
campo no es constante, también de su posición global respecto al mismo. De hecho, el
estudio teórico de moléculas adsorbidas sobre redes cristalinas (simuladas mediante la
12
adición de campos eléctricos a las moléculas) es una de las líneas de investigación del
Laboratorio de Química Cuántica de la Universidad de Cádiz.
1.4 Criterios de convergencia
En un mínimo de la superficie de energía potencial es necesario que las
derivadas de ésta respecto a todas las variables sean nulas. Para identificar cuándo nos
hemos acercado lo suficiente al mínimo, en cada punto del camino se calculan esas
derivadas, deteniendo la minimización cuando la mayor de ellas en valor absoluto sea
menor que una tolerancia establecida de antemano. Uno de los objetivos de este trabajo
es establecer cual es la tolerancia aceptable. Si ésta es demasiado pequeña, para
alcanzarla se necesitan demasiados pasos, de los cuales los últimos resultarán
superfluos, pues la geometría molecular (y la energía) variarían ya muy poco respecto al
mínimo exacto. Por el contrario, si la tolerancia se elige demasiado grande, la geometría
obtenida al dar por finalizada la minimización diferirá demasiado de la verdadera
geometría en el mínimo. En este trabajo se ha supuesto que el máximo error aceptable
respecto de la geometría correspondiente al mínimo exacto debe cifrarse en las
milésimas de angstrom para las distancias de enlace y en las décimas de grado para los
ángulos, ya que es difícil encontrar métodos teóricos ni datos experimentales que
suministren estos parámetros con mayor precisión.
1.5 Determinación de direcciones de desplazamiento
Como ya se ha dicho, la optimización geométrica es un proceso iterativo. Cada
punto del espacio de configuración está determinado por un vector x = (x1 , x2 , ..., x3N),
y cada nuevo punto (en nuestro programa) se obtiene a partir del anterior moviendo los
núcleos según un cierto vector de dirección dk cuyas componentes son unos coeficientes
determinados de forma diferente según el método de optimización de que se trate.
Generalmente su determinación necesita una evaluación del gradiente de la energía
potencial. Todos nuestros métodos de optimización siguen el siguiente algoritmo
general:
kmax
kk ddxx δ+=+1 (1)
13
donde dmax es el máximo de los valores absolutos de los coeficientes di y δ es el máximo
desplazamiento efectuado, que se realiza a lo largo de la coordenada correspondiente a
dmax. El valor de este desplazamiento máximo es un factor importante en la eficacia de
las optimizaciones. En general, tanto valores demasiado pequeños como demasiado
grandes de δ obligan a efectuar muchas iteraciones, en el primer caso porque en cada
paso se avanza muy poco hacia el mínimo y en el segundo porque “nos pasamos de
largo”, viéndonos abocados a una convergencia oscilante. En este trabajo
determinaremos un valor óptimo para este desplazamiento máximo.
Para evitar posibles problemas de desbordamiento en los ordenadores, en nuestro
programa se normaliza el vector dk. Este detalle no afecta para nada al desarrollo aquí
efectuado.
1.6 Minimización a lo largo de la dirección elegida
Una vez fijado el valor de δ, tenemos dos alternativas:
a) Efectuar cada etapa aplicando una sola vez la ecuación (1) recalculando en cada
etapa la dirección de desplazamiento dk, hasta alcanzar la convergencia (en nuestro
programa, hasta que la mayor componente del gradiente en valor absoluto caiga por
debajo de la tolerancia establecida). Si en alguna etapa se produjera un ascenso en la
energía, significa que se ha sobrepasado la mínima energía correspondiente a la
dirección a lo largo de la cual se está buscando. En ese caso es mejor mover sólo una
fracción de δ, cuyo valor óptimo hay que determinar. Esta forma de proceder tiene la
desventaja de que, al no aprovechar la dirección de desplazamiento obtenida hasta
alcanzar su mínimo, se necesita calcular muchas veces el vector dk. y por tanto, el
gradiente de energía. Nuestro programa calcula las derivadas de la energía
numéricamente, lo que implica un tiempo de cálculo excesivamente largo para la
determinación de cada gradiente.
b) Tratar de encontrar, o por lo menos, acercarse lo más posible al mínimo a lo largo de
la dirección de búsqueda antes de plantearse un cambio de dirección. De esta forma
se aprovechan al máximo las direcciones obtenidas en cada cálculo de dk y
normalmente se ahorra tiempo. Para buscar este mínimo provisional hay que usar
14
algún algoritmo de minimización monodimensional. Aunque hay abundante
bibliografía sobre minimización de funciones de una variable [Refs. 1,2], hemos
preferido desarrollar un método adaptado a las peculiaridades del problema concreto
de la optimización geométrica molecular.
El método propuesto utiliza un ajuste polinómico. En vez de usar una sola vez la
ecuación (1) y recalcular la dirección d, repetimos los pasos siempre a lo largo de la
misma dirección calculada, evaluando en cada paso sólo la energía, hasta que se llegue a
un aumento de la misma (Figura 3). En este momento, el penúltimo punto calculado es
el que tiene la energía mínima. Podría tomarse como mínimo provisional a lo largo de la
dirección escogida este penúltimo punto, pero hemos comprobado que ajustar los tres
últimos puntos obtenidos a una parábola de variables
− k
maxk
max dddd δδ ,0, , (donde
se ha trasladado el origen de coordenadas a este penúltimo punto) mejora mucho la
exactitud en la estimación de este mínimo y reduce el número de etapas necesario para
d
M m
A
Figura 3. Interpretación gráfica en dos dimensiones de una etapa de deslizamiento. Desde el punto A, donde se ha calculado la dirección de desplazamiento, deslizamos en sentido descendente hasta llegar a un incremento positivo de la energía. En ese momento, el punto de menor energía m es el penúltimo de los calculados.
d
m
A
x1
x2
15
llegar al mínimo definitivo de la hipersuperficie de energía potencial. Esto es lo que se
ha hecho en este trabajo. Llamaremos deslizamiento a esta repetición de los pasos sin
recalcular la dirección dk. Las coordenadas de un nuevo punto calculado mediante
deslizamiento vienen dadas pues por la siguiente ecuación:
kmax
jj ddxx δ+=+1 (2)
donde no se debe confundir el subíndice j, que indica el número de deslizamiento, con
el k, correspondiente al número de iteración (llamando iteración a cada nuevo cambio de
dirección).
En cuanto al ajuste parabólico, fácilmente se demuestra que el mínimo de la
parábola ajustada al trío de puntos
− k
maxk
max dddd δδ ,0, se encuentra en el punto
1
2
3
4
5
6
7
8
9
10
11
12 13
14
Figura 4. Esquema de una reducción de δ. Después de llegar al punto 4 por deslizamiento, se calcula el nuevo vector de dirección y la energía en los puntos 6 y 7. Resulta que el punto central 4 sigue siendo el de menor energía. Para salir de esta situación se reduce el desplazamiento δ, calculándose la energía en los puntos 8 y 9. Se puede efectuar un paso de deslizamiento, alcanzándose el punto 10. En este momento el punto de menor energía es el 9 y podemos seguir deslizando por una nueva dirección hasta llegar al 13.
16
( )( ) k
maxmin EEEd
EE dx022 −+
−=+−
+−δ (3)
respecto de xj. En esta expresión, E– es la energía correspondiente al punto de
coordenadas kmaxd
dδ− respecto de xj, E+ es la del punto de coordenadas kmaxd
dδ y E0
corresponde al punto central del ajuste parabólico, xj.
Por supuesto, en este caso también podemos encontrarnos con una situación en
que la energía aumente hacia ambos lados al intentar el primer paso de deslizamiento a
lo largo de la dirección recién calculada (Figura 4). En este caso debemos reducir el
valor de δ hasta poder deslizar. En este trabajo se han determinado los valores del factor
de reducción y de δ que permiten alcanzar el mínimo de la superficie de energía
potencial en el mínimo número de etapas, al menos para nuestro conjunto de 24
moléculas de prueba.
1.7 Métodos analizados en este trabajo
En este trabajo se ha realizado un estudio comparativo de algunos métodos
ampliamente usados en optimización geométrica de moléculas. Se ha comparado
métodos de Quenching (Máxima Pendiente y Newton-Raphson), de gradientes
conjugados (Fletcher-Reeves y Polak-Ribiere) y de métrica variable (Davidon-Fletcher-
Powell y Broyden-Fletcher-Goldfarb-Shanno). A éstos se podría añadir el método del
simplex, pero por los pésimos resultados que hemos encontrado al aplicarlo, no lo
recomendamos en absoluto para la optimización de geometrías moleculares.
La eficiencia de los diferentes métodos de optimización se ha verificado sobre
un conjunto de 24 moléculas que contienen carbono, hidrógeno, nitrógeno y oxígeno, en
diferentes situaciones de enlace que podrían representar las más usuales en Química
Orgánica. De cada método interesa comparar el tiempo empleado en converger al
mínimo, el número de iteraciones necesario, y su seguridad. Esto último significa que
sólo comparamos métodos que conducen al mismo mínimo, lo que queda atestiguado
por la geometría y energía moleculares obtenidas.
17
Pasaremos a explicar los métodos de optimización, desde el más sencillo (pero
poco eficiente) al más complejo.
18
CAPÍTULO 2
2 FUNDAMENTOS DE LOS MÉTODOS DE OPTIMIZACIÓN
19
Introducción al Capítulo 2
En este capítulo se exponen los fundamentos teóricos de
los métodos de optimización comparados en este trabajo.
Se comienza por el método de la Máxima Pendiente, por
ser el más sencillo. Tras poner de manifiesto sus
inconvenientes, se analizan los métodos que hacen uso de
la aproximación cuadrática de la superficie de energía
potencial: Newton-Raphson, Gradientes Conjugados y
Métrica Variable. Se ha pretendido dar un enfoque lo más
intuitivo posible al desarrollo, por lo que creemos que se
puede seguir sin poseer conocimientos matemáticos
demasiado profundos.
20
2.1 Método de la Máxima Pendiente
Suponiendo que dispusiéramos de las 3N derivadas parciales de la energía
molecular respecto de las coordenadas nucleares, se podrían interpretar las tres
derivadas calculadas sobre cada núcleo i,
( ) ( ) ( )g iEx
g iEy
g iEzx
iy
iz
i= = =
∂∂
∂∂
∂∂
(4)
como las componentes de un gradiente de energía, con lo cual cada núcleo estaría
sometido a una fuerza dirigida en contra de su gradiente:
( ) ( )f gi i Ei= − = − ∇ (5)
A primera vista, si se quiere buscar el mínimo de energía, parece lógico mover todos los
núcleos en las direcciones de las fuerzas que actúen sobre ellos, y mover más aquéllos
que estén sometidos a mayores fuerzas. En definitiva, avanzar sobre cada una de las 3N
coordenadas en una cantidad proporcional a la derivada de la energía molecular respecto
de esa coordenada. La distorsión de la molécula asegura un descenso inicial en la
energía, pasando por un mínimo en esa dirección (al que llamaremos mínimo
provisional) hasta llegar a un ascenso (Figura 5).
Éste es el método de optimización más sencillo de los que hemos estudiado. El
g
M m
A
Figura 5. Un paso del método de máxima pendiente. Nótese cómo, partiendo del punto A en sentido contrario al gradiente, se marcha en sentido descendente en energía hasta alcanzar el mínimo provisional m.
21
vector de dirección va en sentido contrario al gradiente, dk = –gk, con lo que el nuevo
punto se obtiene modificanco (1):
kmax
kk ggxx δ−=+1 (6)
Las minimizaciones lineales siguen el esquema de deslizamiento ya explicado en la
sección 1.6.
2.2 Método Newton-Raphson
Este método de optimización no ha sido implementado en nuestro programa, ya
que requiere calcular las segundas derivadas de la energía, siendo éste un trabajo que
exige demasiado tiempo cuando se emplea la derivación numérica. De todas formas
debemos revisarlo, pues los métodos de métrica variable, que han resultado ser los más
eficaces de los métodos de optimización ensayados, tienen su origen en el
Newton-Raphson.
2.2.1 La matriz hessiana
El método de Newton-Raphson se basa en el desarrollo de Taylor limitado al
segundo grado de la hipersuperficie de energía potencial:
( ) ( ) ( ) ( ) ( ) ( ) ( )000000 21 xxxxxxxxgxx −−+−+= ••• HttEE (7)
donde x0 es el punto del espacio de configuración donde se hace el desarrollo, x un
punto cercano a él, g(x0) el vector gradiente de la superficie de energía potencial
evaluado en x0
( )0
0x
x
=
ii x
Eg∂∂ (8)
y H (x0) la matriz hessiana, cuadrada y simétrica, que contiene las segundas derivadas
de la energía calculadas también en x0:
22
( )0
2
0x
x
=
ijij xx
EH∂∂
∂ (9)
En el desarrollo teórico de los métodos de minimización llevado a cabo en este
trabajo, los vectores se interpretan como matrices columna si no llevan superíndice, y
como matrices fila si llevan la t de trasposición.
Derivando la expresión de la energía (7) respecto de las coordenadas xi se
obtiene:
( ) ( ) ( ) ( )000 • xxxxgxg −+= H (10)
De donde se pueden despejar las coordenadas del mínimo, teniendo en cuenta que en
este punto el gradiente se anula:
( ) ( )001
0 • xgxxx −−= H (11)
Si la hipersuperficie de energía potencial fuera una función verdaderamente cuadrática,
la aplicación de la ecuación (11) conduciría al mínimo en un solo paso cualquiera que
fuere el punto de partida. Sin embargo, en la práctica la aproximación (7) sólo es válida
si x y x0 están “suficiente próximos”, lo cual obliga a buscar el mínimo iterativamente.
2.2.2 Uso de coordenadas no redundantes
Para que los pasos del método de Newton-Raphson converjan hacia el mínimo,
es imprescindible que la matriz hessiana sea definida positiva. Hemos comprobado que
esto no ocurre cuando se usa un conjunto de 3N coordenadas cartesianas, debido a las
coordenadas redundantes que contiene. Las segundas derivadas respecto de estas
coordenadas “distorsionan” la matriz hessiana. Para eliminar las 6 (ó 5) coordenadas
redundantes se pueden usar las conocidas condiciones de la mecánica de sistemas
aislados de partículas clásicas: invariabilidad del centro de masas y de los ejes
principales de inercia [Ref. 16-18]. Recordemos brevemente estas condiciones:
23
a) Invariabilidad traslacional.
Tomemos como referencia el centro de masas molecular. Distorsionamos la molécula
desplazando cada átomo sobre su vector ∆ra. Para que la posición del centro de masas
permanezca invariable debe cumplirse:
maa
N
a=∑ =
10∆r (12)
De esta ecuación se obtienen tres ecuaciones escalares, cada una de las cuales contiene
N variables del espacio de configuración:
m x m y m zaa
N
a aa
N
a aa
N
a= = =∑ ∑ ∑= = =
1 1 10 0 0∆ ∆ ∆; ; (13)
b) Invariancia de rotación
Por otro lado, la condición de invariabilidad de los ejes principales de inercia exige que:
01
=∆×∑=
aa
N
aam rr (14)
de donde se obtienen otras tres ecuaciones escalares:
( )
( )
( )
m y z z y
m x z z x
m x y y x
aa
N
a a a a
aa
N
a a a a
aa
N
a a a a
=
=
=
∑
∑
∑
− =
− =
− =
1
1
1
0
0
0
∆ ∆
∆ ∆
∆ ∆
(15)
En moléculas lineales estas ecuaciones equivalen a sólo dos, ya que una de ellas resulta
ser combinación lineal de las otras dos.
Si se emplean como coordenadas las variaciones de las distancias y ángulos de
enlace, el hessiano resulta ser la matriz de constantes de fuerza, que se puede usar como
hessiano aproximado cuando es conocida. De esta forma se evita el mayor
24
inconveniente de este método: la extremada lentitud del cálculo de las segundas
derivadas. El hessiano se puede calcular también mediante ecuaciones empíricas
[Refs. 19, 20], mediante doble derivación analítica de las expresiones de la energía
[Refs. 21-29] y mediante derivación numérica de las primeras derivadas analíticas de la
energía [Refs. 30, 31]. Aunque estos últimos procedimientos son mucho más rápidos
que la doble derivación numérica, también presentan inconvenientes. Un hessiano
empírico depende demasiado del tipo de estructuras moleculares que pretenda
modelizar, y las derivadas analíticas son complicadas de programar y dependen del
método de cálculo mecanocuántico que se esté usando para obtener la energía.
2.2.3 Una mejora: el método de la función racional
Como ya se ha dicho, el método de Newton-Raphson necesita que la matriz
hessiana sea definida positiva para converger hacia un mínimo. Esto no siempre ocurre,
sobre todo en las primeras etapas de la minimización, cuando aún se está lejos del
mínimo. En geometrías muy distorsionadas respecto a la de energía mínima, los efectos
de anarmonicidad en la superficie de energía potencial pueden ser importantes, dando
como resultado un hessiano con uno o más valores propios negativos. Mediante el
método de la función racional [Refs. 32-34] se fuerza la obtención de una matriz
hessiana definida positiva, permitiendo proseguir la minimización.
Si el hessiano no es definido positivo, podemos modificar el desarrollo de Taylor
(7) añadiendo un término ½λ(x – x0)t (x – x0), con el parámetro λ convenientemente
elegido. La minimización de la funcional resultante da:
( )( ) ( )01
00 • xgxxx −+−= IH λ (16)
donde I es la matriz unidad. Un valor suficientemente alto de λ hace que la matriz
( ) IH λ+0x sea definida positiva, pero restringe la longitud de paso a una cierta región
donde la nueva aproximación del desarrollo (7) sea razonable.
La versión más simple del método de función racional reemplaza la ecuación
(16) por una de valores propios:
25
( ) ( )( )
−−=
−
110
00
0
00 xxxxxg
xgxλt
H (17)
donde la matriz
( ) ( )( )
00
00
xgxgx
tH
se llama hessiano aumentado y tiene dimensión n+1 (n es la dimensión del hessiano,
que como hemos visto, en el método de Newton-Raphson debe ser 3N – 6)
La ecuación de valores propios (17) es equivalente a dos ecuaciones, una escalar
y la otra matricial:
( ) ( )
( ) ( )( ) ( ) 0••
000
00
=−++−−=
xxxxgxxxg
IH λλ t
(18)
De la segunda de estas ecuaciones se puede despejar el vector de coordenadas del nuevo
punto x, resultando una ecuación semejante a la original del método de
Newton-Raphson (11):
( )( ) ( )01
00 xgxxx −+−= IH λ (19)
De la ecuación (19) se deduce que se debe elegir como λ uno de los valores propios del
hessiano aumentado cambiado de signo. Se suele elegir el menor de ellos. El
correspondiente vector propio podría darnos directamente la longitud del paso,
escalándolo para que su última componente sea 1, pero se ha comprobado que este salto
muchas veces es demasiado largo, igual que ocurría al aplicar directamente la ecuación
(11). Por esta razón, normalmente se acepta sólo la dirección del desplazamiento,
determinando su longitud mediante técnicas de minimización lineal. Éste es el método
de optimización usado por el programa Gaussian 94 [Ref. 42], con el cual hemos
comparado nuestros resultados (capítulo 4).
26
2.3 Métodos de Gradientes Conjugados
Es bien conocido, y nosotros lo comprobado también, que el método de la
Máxima Pendiente resulta ser uno de los menos eficientes, junto con el de
Newton-Raphson. La razón de su poca eficacia puede intuirse mediante la Figura 6. En
ella vemos que al ser cada nuevo desplazamiento perpendicular al anterior, cuando la
superficie de energía potencial presente un valle estrecho, la minimización se verá
obligada a seguir una trayectoria “zigzagueante” (y recordemos que el zigzag se hace en
un espacio ¡de 3N dimensiones!). Pues bien, este zigzagueo es lo que se atenúa en los
métodos de gradientes conjugados.
Estos métodos [Refs. 1-5] se basan en el desarrollo de Taylor de la
hipersuperficie de energía potencial (7). Según este desarrollo, el gradiente de la energía
potencial en un punto x es:
( ) ( ) ( ) ( )000 • xxxxgxg −+= H (20)
y su variación con el punto x:
( ) ( ) xxxg ∆=∆ •0H (21)
Figura 6. Comportamiento del método de Máxima Pendiente ante un valle estrecho. La mutua perpendicularidad de los desplazamiento obliga a seguir una trayectoria zigzagueante.
M
27
Supongamos que hemos llegado desde el punto xk–1 al punto xk a lo largo de un
cierto vector de dirección dk–1. Sean xk son las coordenadas del mínimo de la
hipersuperficie de energía potencial a lo largo de la dirección dk–1. Por tanto, el
gradiente gk, en el punto xk, es perpendicular a dk–1. Queremos proseguir buscando el
mínimo a lo largo de un nuevo vector dk, lo que expresamos en la forma:
xk+1 = xk + λk dk
Si el gradiente en el punto xk+1 se mantuviera perpendicular a dk–1, entonces
(Figura 7) es evidente que la variación del gradiente también debe ser perpendicular a
dk–1:
( ) ( ) ( )( ) 0•• 111 =−=∆ +−− kktk
tk xgxgdxgd (22)
de donde, según la ecuación (20):
xk+1
xk
gk
gk+1
dk
dk–1
gk+1 – gk
Figura 7. Si el gradiente en el punto xk+1 es perpendicular al plano quecontiene a dk y dk–1, entonces el vector diferencia gk+1 – gknecesariamente debe estar contenido en un plano perpendicular a dk–1.
28
01 =− ktk dd H (23)
Cuando dos vectores cumplen esta condición, se dice que son conjugados. Un conjunto
de vectores que la cumplan está formado por vectores mutuamente conjugados. Existe
un teorema [Ref. 4, pág. 242] según el cual una sucesión de n desplazamientos
mutuamente conjugados llevan al mínimo exacto de una función cuadrática definida
positiva de n variables. Entonces una forma de minimización más ventajosa que el
método de la Máxima Pendiente consiste en avanzar a lo largo de direcciones que sean
mutuamente conjugadas. Para determinar la dirección de desplazamiento, vamos a
definir dos secuencias de vectores:
1
111
−
−−−
+−=+=
kkkk
kkkk
dgddgg
γλ H
(24)
Nótese que la primera de estas ecuaciones no es más que una adaptación de la ecuación
xk+1
xk gk
gk+1
dk
dk–1
gk+1 – gk
Figura 8. Si dk es combinación lineal de gk y dk–1 (están los tresvectores en el mismo plano), entonces necesariamentegk+1 y gk deben ser perpendiculares entre sí.
29
(20), y la segunda, un algoritmo propuesto para determinar la nueva dirección de
búsqueda.
Para determinar λk–1 imponemos la condición de que los sucesivos gradientes
sean perpendiculares entre sí:
0•1 =− ktk gg (25)
Esta condición se deduce de la segunda ecuación de (24), como muestra la Figura 8,
donde se han dibujado en el mismo plano dk, gk y dk–1. Con esta condición y la primera
ecuación de (24), resulta:
11
111
•
−−
−−− −=
ktk
ktk
k dggg
Hλ (26)
El otro parámetro, γk, se puede calcular a partir de la segunda ecuación de (24), usando
la condición de desplazamientos conjugados (23), resultando:
11
1
−−
−=k
tk
ktk
k ddgd
HHγ (27)
Si pudiésemos determinar γk, usando la segunda ecuación de (24) tendríamos la nueva
dirección a seguir. La ecuación (27) exige la evaluación del hessiano, que como se ha
estudiado anteriormente, es demasiado costosa. Por suerte, hay una forma alternativa de
calcular γk. Multiplicando la primera ecuación de (24) por tkg y usando la condición de
ortogonalidad (25) se encuentra otra forma de calcular λk–1, obteniéndose
1
1•
−− =
ktk
ktk
k dggg
Hλ (28)
Igualando las dos expresiones de λk–1, (26) y (28), se llega a:
kk
tk
ktk
ktk
ktk
ktk
ktk
ktk
ktk γ==−=−=
−−
−
−−
−
−−
−
−− 11
1
11
1
11
1
11 ••
ddgd
gdgd
dgdg
gggg
HH
HH
HH
La tercera igualdad se deduce de la segunda ecuación de (24). Multiplicándola por
30
Htkd y usando la condición de conjugación, resulta:
ktkk
tk gddd HH −=
Encontramos así una forma de calcular γk que no requiere la evaluación del hessiano,
sino sólo del gradiente actual y del anterior:
11 •
•
−−=
ktk
ktk
k ggggγ (29)
El algoritmo para obtener un nuevo punto sería pues:
111
1
••
−−−
+
+−=
+=
kk
tk
ktk
kk
kmax
kk d
dgggggd
dxx δ
(30)
donde δ vuelve a ser el desplazamiento máximo inicial y dmax el máximo de los valores
absolutos de las componentes del vector de dirección dk. La realización de sucesivos
deslizamientos a lo largo de dk, según lo explicado en la Sección 1.6 hasta llegar al
mínimo en esa dirección equivale a un solo paso de longitud λk. Preferimos efectuar el
deslizamiento porque la hipersuperficie de energía potencial en la práctica no es una
función cuadrática, lo que limita los razonamientos aquí realizados a una región
restringida.
El método aquí deducido ha sido el de Fletcher-Reeves. Existe una ligera
variación de éste, donde se toma
( )11
1
••
−−
−−=k
tk
ktk
tk
k gggggγ (31)
Esta forma de calcular γk constituye el método de Polak-Ribiere. Parece que los valores
de γk obtenidos a partir de las ecuaciones (29) y (31) debieran ser iguales debido a la
perpendicularidad de gk–1 y gk. Lo serían si la superficie de energía potencial fuera
verdaderamente cuadrática. Al serlo sólo de forma aproximada, gk–1 y gk sólo son ”más
31
o menos” perpendiculares, igual que en la práctica, dk–1 y dk sólo resultan “más o
menos” conjugados.
Nuestros resultados, mostrados en la Sección 4.3, muestran que los métodos de
gradientes conjugados son mucho más eficientes que el método de la Máxima
Pendiente. Pensamos que ello se debe a que al usar una combinación del gradiente
actual con el desplazamiento anterior, la trayectoria seguida para alcanzar el mínimo es
menos zigzagueante (Figura 9). No se obliga a que cada nueva dirección sea
perpendicular a la anterior.
2.4 Métodos de Métrica Variable
También llamados métodos Cuasi Newton-Raphson, son los métodos de
minimización más eficientes . Los nuevos puntos se obtienen según el algoritmo del
método de Newton-Raphson,
( ) ( )kkmax
kk dxgxxx •1 Bδ−=+ (32)
en donde por comodidad se ha escrito B = H –1, la inversa del hessiano. Como siempre,
dmax vuelve a ser el máximo de los valores absolutos de las componentes del vector
Figura 9. Comportamiento de un método de GradientesConjugados ante un valle estrecho. El zigzagueo del métodode Máxima Pendiente queda amortiguado al determinar lasdirecciones a seguir mediante una combinación lineal delgradiente actual y el desplazamiento anterior.
M
g1
g2
g3
g4
32
( ) ( )kkk xgxd •B= En los métodos de métrica variable realmente no se calcula el
hessiano ni su inversa, sino que se va construyendo una aproximación a él teniendo en
cuenta los pasos anteriores de la minimización, de forma parecida a como se hace en los
métodos de gradientes conjugados. Desde su aparición en 1959 se han desarrollado
varios algoritmos, todos ellos basados en una relación de recurrencia de tipo
Bk = Bk-1 + C, donde C es una matriz de corrección. La relación de recurrencia debe
satisfacer la condición (21) resultante de aproximar la hipersuperficie de energía
potencial mediante en desarrollo de segundo grado:
( )11 • −− −=− kkkk ggxx B
Los métodos más conocidos son los de Davidon-Fletcher-Powell
[Refs. 1-5, 35, 37] y Broyden-Fletcher-Goldfarb-Shanno [Refs. 1-5]. En el método DFP,
la relación de recurrencia es la siguiente:
1
1
1
111 ·
······
−
−
−
−−−
−=−=
+−=
kkk
kkk
ktk
tkk
kktk
ktkkk
kk
xxsggy
ysss
yyyy
BBBBB
(33)
En el BFGS es parecida, aunque con un término más:
kktk
kk
ktk
kk
kkk
kkk
tkkkk
tk
ktk
tkk
kktk
ktkkk
kk
yyy
yssu
xxsggy
uuyyysss
yyyy
···
·
······
·····
1
1
1
1
11
111
−
−
−
−
−−
−−−
−=
−=−=
++−=
BB
BBBBBB
(34)
Multiplicando ambos miembros por yk se comprueba fácilmente que ambos
algoritmos satisfacen la condición (21).
En nuestro programa la dirección de búsqueda se determina mediante la fórmula
(32), donde la matriz Bk se calcula mediante (33) o (34) según el método empleado,
salvo en el primer paso. En éste se usa como hessiano la matriz identidad, resultando así
33
este primer paso análogo a los del método de Máxima Pendiente. Existen versiones de
los métodos de métrica variable que comienzan con un hessiano cuyas componentes son
valores medios de constantes de fuerza, determinados espectroscópicamente o
calculados por vía teórica para cada tipo de enlace, aunque esta estimación inicial del
hessiano sólo se puede efectuar en coordenadas internas. Tras la determinación de la
dirección, sigue la minimización lineal por deslizamiento, de la misma forma que en los
demás métodos estudiados.
La gran ventaja de los métodos de métrica variable es que en pocos pasos
podemos llegar a tener una buena aproximación del hessiano, sin perder tiempo en
calcularlo rigurosamente. Por ello son los métodos más eficaces para la optimización
geométrica.
34
CAPÍTULO 3
3 PROGRAMACIÓN DE LOS MÉTODOS DE OPTIMIZACIÓN
35
Introducción al Capítulo 3
Con objeto de verificarlos y compararlos entre sí, hemos
programado en Fortran todos los métodos de optimización
estudiados. En este capítulo se explican los códigos de la
subrutina general de optimización y de las subrutinas
correspondientes a cada uno de los métodos, cuya
diferencia principal radica en el modo de calcular las
direcciones de desplazamiento de los núcleos. También se
incluye la subrutina que calcula numéricamente el
gradiente de la superficie de energía potencial. La lectura
de este capítulo requiere por tanto ciertos conocimientos
del lenguaje Fortran.
36
Los métodos de optimización explicados en el capítulo anterior han sido
programados por nosotros en lenguaje Fortran e incorporados al paquete de cálculos
semiempíricos AVEMO [Ref. 41], desarrollado en el Departamento de Química Física
de la Universidad de Cádiz. El programa AVEMO permite calcular propiedades
moleculares mediante métodos semiempíricos de tipo NDO con parametrización
arbitraria. Nosotros le hemos incorporado una subrutina general de optimización
geométrica que a su vez llama a otras específicas para cada uno de los métodos de
optimización estudiados. Tanto para facilitar su programación como su lectura por
terceras personas, se ha procurado que el código escrito refleje en la medida de lo
posible el fundamento explicado para cada método. A continuación se describe el
programa AVEMO y la forma de usarlo.
3.1 Uso del programa AVEMO
El paquete AVEMO está formado por siete archivos: AVELG.EXE,
AVEMO.EXE, AVEPPAL.EXE, AVEMO8.PAR, AVEMO9.PAR, POPLE.PAR y
AVEMO.TXT. El primer archivo contiene simplemente la portada inicial.
AVEMO.EXE es un manejador que permite crear y editar archivos de datos.
AVEPPAL.EXE es el programa principal, encargado de realizar los cálculos. Está
formado por un conjunto de módulos escritos en Fortran que se compilan juntos. Los
archivos con extensión PAR contienen algunas parametrizaciones típicas, y por último,
AVEMO.TXT es el archivo de ayuda del programa.
Los módulos que al ser compilados forman el AVEPPAL.EXE son los
siguientes:
AVEPPAL.F90: Lleva el control general del programa. Además contiene las subrutinas
de optimización y de cálculo del gradiente. Las subrutinas de optimización objetos de
este trabajo se encuentran en este archivo.
AVECL.F90: Realiza el cálculo SCF para sistemas de capa cerrada.
AVEOP.F90: Realiza el cálculo SCF para sistemas de capa abierta.
AVEIN.F90: Calcula las integrales necesarias.
37
AVEOW.F90: Calcula las poblaciones electrónicas y los índices de enlace.
EIGEN.F90: Diagonaliza matrices simétricas.
El programa dispone de un generador de datos y editor de resultados que tiene
en cuenta los cambios realizados en la parte de optimización geométrica, y que permite
un uso sencillo del programa. En adelante nos referiremos al generador/editor como “el
manejador”. Aunque los cálculos se pueden realizar directamente desde el manejador,
sin necesidad de conocer la estructura del archivo de datos, creemos útil conocer dicha
estructura, por ejemplo para poderla modificar directamente si se quiere.
Un archivo de datos típico obtenido con el generador de datos es el siguiente,
que corresponde a un cálculo de las propiedades de la molécula de agua:
H2O Archivo de datos 3 0 1 / 'CNDO' 'CLSD' 0 0 0 0 0 0 0 0 0 0 / 0.00000000 0.00000000 0.00000000 8 0.00000000 0.00000000 0.95000000 1 0.00000000 0.95000000 0.00000000 1 ***** DATOS POTENCIAL: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 ***** DATOS PARAMETRIZACION: POPLE.PAR 1.00000 1.00000 0.00000 0.00000 / 25.39017 9.11100 0.00000 2.27500 –31.00000 22.48900 / 7.17610 0.00000 0.00000 1.20000 -9.00000 20.40900 / 7.17610 0.00000 0.00000 1.20000 -9.00000 20.40900 / ***** DATOS OPTIMIZACION: 1 1 1 / Polak-Ribiere .01 .95 .001 50 / 1 1 1 0 / ***** FINAL DATOS
La primera parte del archivo de datos (hasta la etiqueta ***** DATOS POTENCIAL:)
contiene la siguiente información:
• Línea 1: Un título arbitrario.
38
• Línea 2: Número de átomos, carga y multiplicidad de la molécula.
• Línea 3: Método de cálculo semiempírico, cálculo de capa cerrada (CLSD) o abierta
(OPEN) y una serie de 0 y/o 1 correspondientes a diferentes opciones que se pueden
elegir mediante el manejador.
• Líneas siguientes: Coordenadas cartesianas y número atómico de cada uno de los
átomos.
Bajo la etiqueta ***** DATOS POTENCIAL: aparecen los coeficientes de un posible
potencial eléctrico externo y bajo ***** DATOS PARAMETRIZACION: los datos
correspondiente a la parametrización empleada. Por último, bajo la etiqueta ***** DATOS
OPTIMIZACION: aparecen los datos correspondiente a la optimización geométrica. Este
segmento del archivo de datos se compone de cuatro líneas, cuyo significado es el
siguiente:
• Línea 1: Aquí aparecen tres claves que pueden valer 1 ó 0, correspondientes a las
direcciones x, y, z. Se minimiza sólo a lo largo de aquellas direcciones marcadas con
1. Por ejemplo, 1 1 0 indica una minimización restringida al plano xy.
• Línea 2: Indica el método de optimización a emplear. Los valores aceptados por el
programa son:
Maxima pendiente
Fletcher-Reeves
Polak-Ribiere
DFP
BFGS
• Línea 3: Contiene los siguientes parámetros necesarios para la optimización:
desplazamiento inicial, factor de reducción, tolerancia en fuerzas y número máximo
de iteraciones. Los valores recomendados, que hemos obtenido a partir del estudio
que luego presentamos, son 0.007, 0.9, 0.001 y 50 respectivamente. Estos valores
pueden variarse a gusto del usuario, lo que puede ser recomendable en casos
especiales.
39
• Línea 4: Contiene tantos claves 1/0 como átomos tenga la molécula tratada. Se
incluyen en la optimización sólo aquellos átomos que tengan asignado un 1. Al final
se incluye un número que indica el átomo donde se colocará el origen de
coordenadas (si se desea que el origen esté sobre el centro de masas molecular,
aparecerá un 0).
Los datos situados bajo cada etiqueta se leen en diferentes segmentos del
programa principal (archivo AVEPPAL9.F90). En concreto, los datos para la
optimización geométrica se leen en el siguiente segmento:
! ---- LECTURA DE DATOS PARA CALCULO DE LA GEOMETRIA DE ENERGIA MINIMA: if(OPCION.EQ.datos6)then IF(TOLENEL.GT.1.D-12)TOLENEL=1.D-12 IOPG=6 DO 36 I=1,NATOMS 36 NFOR(I)=0 READ(5,*)(NFOR(I),I=1,NATOMS) READ(5,'(A16)')metopt READ(5,*)DELTA,FRED,TOLFOR,nitopt delta=delta/fdist READ(5,*)IOP(1),IOP(2),IOP(3),IREF if(NIT.lt.900)NIT=900 if(NIT.lt.900)NCOM=901 ndens=1 endif
Donde las variables metopt, DELTA, FRED, TOLFOR y nitopt
corresponden respectivamente al método de optimización, desplazamiento máximo
inicial, factor de reducción, tolerancia en fuerzas y número máximo de iteraciones.
Como ya se ha mencionado, el cálculo se puede realizar desde el propio
manejador, o editando directamente un archivo de datos cuya estructura sea la descrita
anteriormente. El programa de cálculo (AVEPPAL.EXE) lee el archivo de datos con el
nombre DAT. En caso de realizar el cálculo desde el manejador, éste se encargará de
generar un archivo con este nombre, mientras que si deseamos ejecutar el programa
directamente, deberemos tener el fichero DAT en el mismo directorio que el programa
AVEPPAL.EXE.
Al realizar el cálculo se genera un archivo de resultados llamado RES que
podemos editar desde el manejador o mediante cualquier editor de textos. Este archivo
contiene información sobre los datos de entrada, las propiedades moleculares calculadas
40
y el transcurso de la optimización geométrica en el caso de que ésta se hubiera pedido.
Para el ejemplo de la molécula de agua que nos ocupa, una vez efectuada la
optimización geométrica, queda escrita la siguiente información en el archivo RES:
----------------------------------------------------------------- ----------------------------------------------------------------- RESUMEN DE LA MINIMIZACION REALIZADA: ----------------------------------------------------------------- METODO DE OPTIMIZACION: Polak-Ribiere DESPLAZAMIENTO INICIAL (A): 0.0100 FACTOR DE REDUCCION: 0.9500 TOLERANCIA EN LAS FUERZAS: 0.0010 NUMERO MAXIMO DE ITERACIONES: 50 ENSAYO DELTA(A) ENERGIA (U.A.) FUERZA MAXIMA DIAMETRO 0 0.000000 -19.85233392 0.2200 1.3435 1 0.010000 -19.88121570 0.0324 1.4114 2 0.010000 -19.88874675 0.0581 1.5810 3 0.010000 -19.89083190 0.0086 1.6236 4 0.010000 -19.89087577 0.0006 1.6222 Numero de calculos de fuerzas: 5 Numero de deslizamientos: 15 ----------------------------------------------------------------- ----------------------------------------------------------------- PROPIEDADES EN LA GEOMETRIA ESTIMADA : ----------------------------------------------------------------- MATRIZ DE DISTANCIAS INTERNUCLEARES EN ANGSTROM: 1 2 3 1 0.0000 1.0288 1.0291 2 1.0288 0.0000 1.6222 3 1.0291 1.6222 0.0000 ANGULOS DE ENLACE CON VERTICE EN EL NUCLEO 1 2 1 3 = 104.05 -----------------------------------------------------------------
DELTA es el desplazamiento nuclear máximo realizado en cada iteración
(llamado δ en la teoría, capítulos 1 y 2) y DIAMETRO es la mayor de las distancias
internucleares en la molécula.
41
3.2 La subrutina de optimización
Como se indicó al principio, el programa principal del paquete AVEMO,
AVEPPAL.EXE, es el resultado de la compilación de seis módulos escritos en
Fortran 90: AVEPPAL.F90, AVECL.F90, AVEOP.F90, AVEOW.F90, AVEIN.F90 y
EIGEN.F90. En ellos se encuentran distribuidas todas las subrutinas necesarias para el
cálculo. El archivo AVEPPAL.F90 contiene el programa principal y algunas subrutinas,
entre ellas la subrutina OPTGEOM, que es llamada cuando en el archivo de datos se
pide una optimización de geometría. La subrutina es la siguiente:
! -------------------------------------------------------------------------- ! -------------------------------------------------------------------------- ! --- SUBRUTINA PARA OPTIMIZAR LAS POSICIONES DE LOS NUCLEOS: ! -------------------------------------------------------------------------- ! LAS MINIMIZACIONES LINEALES SE HACEN DESLIZANDO A LO LARGO DE LA ! DIRECCION ELEGIDA HASTA ACOTAR UN MINIMO, QUE SE REFINA AJUSTANDO ! A UNA PARABOLA ! SE OPERA HASTA QUE TODAS LAS FUERZAS SE HACEN INFERIORES A <TOLFOR> ! NITOPT=NUMERO MAXIMO DE ITERACIONES ! METOPT=METODO ELEGIDO PARA LA MINIMIZACION ! E0= ENERGIA DEL PUNTO INICIAL (CALCULADA ANTES DE ENTRAR) ! TOLFOR= LIMITE EN QUE UNA FUERZA SE CONSIDERA DESPRECIABLE. ! DELTA= DESLIZAMIENTO INICIAL (TENTATIVO) ! FRED= FACTOR DE REDUCCION ENTRE DESLIZAMIENTOS SUCESIVOS. ! (...TODO DEBE ENTRAR EN UNIDADES ATOMICAS.) ! --------------------------------------------------------------------------- SUBROUTINE OPTGEOM(E0,TOLFOR,DELTA,FRED,metopt,nitopt) ! --------------------------------------------------------------------------- IMPLICIT DOUBLE PRECISION(A-H,O-Z) COMMON/INFO/CERO,PI,FDIST,C(20,3),NATOMS,CHARGE,MULTIP,AN(20),N COMMON/OPGEOM/NFOR(20),IOP(3),IOPG COMMON/GRADCONJ/foldPR(20,3),coefoldPR(20,3) COMMON/METVAR/foldBFGS(60),coldBFGS(60) INTEGER AN,CHARGE CHARACTER*10 ETIPO CHARACTER*16 metopt DIMENSION FMAX(3),COEF(20,3) DIMENSION ECAL(1000),DELTVTA(1000),FMAX3(1000),DIAM(1000) ivta=1 DELTVTA(1)=0.D0 ECAL(1)=E0 ETIPO='INICIAL ' NCALP=0 NCALF=0 WRITE(4,350) ! ---------------------------------------------------- ! CALCULO DE LAS FUERZAS SOBRE LOS NUCLEOS y ! determinacion de su maxima componente. 1 WRITE(4,400) FMAX(1)=0.D0
42
FMAX(2)=0.D0 FMAX(3)=0.D0 NCALF=NCALF+1 ! -------------------------------------------------------------------- ! ELECCION DEL MÉTODO DE MINIMIZACION IF(metopt.EQ.'Maxima pendiente')CALL MAXIMA_PENDIENTE(coef,fmax,ivta,e0) IF(metopt.EQ.'Fletcher-Reeves '.OR.metopt.EQ.'Polak-Ribiere ') & CALL GRADIENTES_CONJUGADOS(metopt,coef,fmax,ivta,e0) IF(metopt.EQ.'DFP '.OR.metopt.EQ.'BFGS ') & CALL METRICA_VARIABLE(metopt,coef,fmax,ivta,e0) FMAX3(ivta)=DMAX1(FMAX(1),FMAX(2),FMAX(3)) !---------------------------------------------------------------------- ! CALCULO DEL DIAMETRO DE LA MOLECULA DIAM(ivta)=0.D0 DO 75 I=1,NATOMS DO 75 J=I+1,NATOMS XX=C(I,1)-C(J,1) YY=C(I,2)-C(J,2) ZZ=C(I,3)-C(J,3) DIST=FDIST*DSQRT(XX**2+YY**2+ZZ**2) IF(DIST.GT.DIAM(ivta))DIAM(ivta)=DIST 75 CONTINUE ! -------------------------------------------------------------- ! SI TODAS LAS COMPONENTES DE FUERZAS SON DESPRECIABLES (O SI SE AGOTA EL NUMERO ! DE ITERACIONES), TERMINA: IF(FMAX3(ivta).LT.TOLFOR.OR.ivta.GT.nitopt)THEN IF(ivta.GT.nitopt)WRITE(4,650)nitopt WRITE(4,559)metopt,deltvta(2),fred,TOLFOR,nitopt WRITE(4,566)(I-1,DELTVTA(I),ECAL(I),FMAX3(I),DIAM(I),I=1,ivta) WRITE(4,300)NCALF,NCALP RETURN ENDIF ivta=ivta+1 WRITE(4,450)ivta-1,DELTA*FDIST DELTVTA(ivta)=DELTA*FDIST ETIPO='FUERZA ' ECAL(ivta)=E0 ! --------------------------------------------------------------------- ! INFORMA EN PANTALLA DEL AVANCE DE LA MINIMIZACION: CALL LINEAS(25) WRITE(*,510)ivta-1 WRITE(*,566)((I-1),DELTVTA(I),ECAL(I),FMAX3(I),DIAM(I),I=1,ivta-1) ! --------------------------------------------------------------- ! DETERMINACION DE LOS COEFICIENTES NORMALIZADOS ! DE LA COORDENADA INTERNA: CNORM=0.D0 DO 26 I=1,NATOMS DO 26 J=1,3 CNORM=CNORM+COEF(I,J)**2 26 CONTINUE CNORM=1.D0/DSQRT(CNORM) CMAX=0.D0
43
DO 27 I=1,NATOMS DO 27 J=1,3 COEF(I,J)=CNORM*COEF(I,J) IF(DABS(COEF(I,J)).GT.CMAX)CMAX=DABS(COEF(I,J)) 27 CONTINUE ! EL DESPLAZAMIENTO EN LA COORDENADA INTERNA SE ELIGE DE FORMA ! QUE EL DESPLAZAMIENTO CARTESIANO MAXIMO SEA EL PROPUESTO: 28 DLT=DELTA/CMAX ! ------------------------------------------------------------ ! ESTIMACION DEL SENTIDO DE MOVIMIENTO RESPECTO A Q : DO 41 I=1,NATOMS DO 41 J=1,3 IF(NFOR(I).EQ.1.AND.IOP(J).EQ.1)C(I,J)=C(I,J)-DLT*COEF(I,J) 41 CONTINUE CALL PUNTO(E1,0) DO 43 I=1,NATOMS DO 43 J=1,3 IF(NFOR(I).EQ.1.AND.IOP(J).EQ.1)C(I,J)=C(I,J)+2.d0*DLT*COEF(I,J) 43 CONTINUE CALL PUNTO(E2,0) ! Se llevan las coordenadas a las del punto central: DO 45 I=1,NATOMS DO 45 J=1,3 IF(NFOR(I).EQ.1.AND.IOP(J).EQ.1)C(I,J)=C(I,J)-DLT*COEF(I,J) 45 CONTINUE ECAL(ivta)=DMIN1(E1,E0,E2) IF(E1.LT.E0.AND.E2.LT.E0)THEN WRITE(*,*)' ' WRITE(4,*)' Geometria de partida PROXIMA A UN MAXIMO' WRITE(4,*)' ( Quiza conviniese PROBAR OTRA )' IF(E1.LT.E2)GOTO 50 IF(E2.LT.E1)GOTO 60 ENDIF 46 IF(E0.LE.E1.AND.E0.LE.E2)GOTO 90 !----------------------------------------------------------------------- ! SI E1<E2 NOS MOVEMOS A LA IZQUIERDA: IF(E1.LT.E0.AND.E2.GT.E0)THEN 50 E2=E0 E0=E1 DO 52 I=1,NATOMS DO 52 J=1,3 IF(NFOR(I).EQ.1.AND.IOP(J).EQ.1)C(I,J)=C(I,J)-2.d0*DLT*COEF(I,J) 52 CONTINUE CALL PUNTO(E1,0) NCALP=NCALP+1 ETIPO='<- DESLIZ '
44
! Se llevan las coordenadas a las del punto central: DO 54 I=1,NATOMS DO 54 J=1,3 IF(NFOR(I).EQ.1.AND.IOP(J).EQ.1)C(I,J)=C(I,J)+DLT*COEF(I,J) 54 CONTINUE ECAL(ivta)=E0 GOTO 46 ENDIF !----------------------------------------------------------------------- ! SI E2<E1 NOS MOVEMOS A LA DERECHA: IF(E2.LT.E0.AND.E1.GT.E0)THEN 60 E1=E0 E0=E2 DO 62 I=1,NATOMS DO 62 J=1,3 IF(NFOR(I).EQ.1.AND.IOP(J).EQ.1)C(I,J)=C(I,J)+2.D0*DLT*COEF(I,J) 62 CONTINUE CALL PUNTO(E2,0) NCALP=NCALP+1 ETIPO='DESLIZ -> ' ! Se llevan las coordenadas a las del punto central: DO 64 I=1,NATOMS DO 64 J=1,3 IF(NFOR(I).EQ.1.AND.IOP(J).EQ.1)C(I,J)=C(I,J)-DLT*COEF(I,J) 64 CONTINUE ECAL(ivta)=E0 GOTO 46 ENDIF 90 CONTINUE !----------------------------------------------------------------------- ! REFINAMIENTO DEL MINIMIO POR AJUSTE DE E1,E0,E2 A UNA PARABOLA: QMIN=0.5D0*DLT*(E1-E2)/(E1+E2-2.D0*E0) DO 92 I=1,NATOMS DO 92 J=1,3 IF(NFOR(I).EQ.1.AND.IOP(J).EQ.1)C(I,J)=C(I,J)+QMIN*COEF(I,J) 92 CONTINUE CALL PUNTO(E0,0) ECAL(ivta)=E0 !----------------------------------------------------------------------- ! REDUCE DELTA (si procede) Y VUELVE A CALCULAR LAS FUERZAS: IF(ETIPO.EQ.'FUERZA ')DELTA=DELTA*FRED GOTO 1
45
!----------------------------------------------------------------------- ! FORMATOS CITADOS 300 FORMAT(/,5x,' Numero de calculos de fuerzas:',I4,& /,5x,' Numero de deslizamientos: ',I4,//) 305 FORMAT(/,5X,' ENERGIA TOTAL CALCULADA =',F14.8,' U.A.'//,5x,65('-'),/) 310 FORMAT(/,5X,' X, Y, Z CALCULADAS, ATOMO ',I2,' :',3F11.7) 350 FORMAT(5X,65('-'),/5X,65('-'),/24X,'OPTIMIZACION GEOMETRICA'/5X,65('-')/) 400 FORMAT(12X,' FUERZAS EN UNIDADES ATOMICAS:'//,& 12X,' ATOMO: Fx: Fy: Fz:'/) 410 FORMAT(14X,I3,4X,3F11.4) 450 FORMAT(//,5X,65('-')/,5X,' ITERACION',I2,' (DELTA =',F7.5,')'/) 500 FORMAT(/,5X,' CALCULANDO LA FUERZA SOBRE EL ATOMO NUMERO',I3) 510 FORMAT(/,5X,' ESTIMANDO NUEVA GEOMETRIA'/,5X,' ENSAYO ',I3) 558 FORMAT(//,5X,' LA MAYOR COMPONENTE DE LAS FUERZAS CALCULADAS'/,& 5X,' RESULTA INFERIOR A',F8.5,' U.A.'//) 559 FORMAT(/5X,65('-'),/5X,65('-'),/8X,'RESUMEN DE LA MINIMIZACION REALIZADA:'/5X,65('-')//,& 8X,'METODO DE OPTIMIZACION: ',A16,/,& 8X,'DESPLAZAMIENTO INICIAL (A): ',F6.4/,& 8X,'FACTOR DE REDUCCION: ',F6.4/,& 8X,'TOLERANCIA EN LAS FUERZAS: ',F6.4/,& 8X,'NUMERO MAXIMO DE ITERACIONES: ',I3/) 566 FORMAT(/3X,' ENSAYO DELTA(A) ENERGIA (U.A.) FUERZA MAXIMA DIAMETRO'& /,(7X,I3,4X,F10.6,3X,F14.8,3X,F12.4,7X,F7.4)) 650 FORMAT(//,5X,65('*')/,5X,'A T E N C I O N :'/, & 5X,'LA OPTIMIZACION NO CONVERGIO DESPUES DE',I3,' ITERACIONES'/& 5X,65('*')) RETURN END
La subrutina PUNTO efectúa el cálculo autoconsistente de la energía para las
posiciones nucleares almacenadas en la variable C(I,J) en el momento en que se la
llama. Debemos señalar que existen pequeñas diferencias entre la forma en que el
programa ha sido escrito y la teoría aquí desarrollada. Por ejemplo, el programa no
maneja las coordenadas nucleares como un vector de 3N componentes, sino como una
matriz bidimensional C(I,J) en la que el primer subíndice indica el número de átomo
y el segundo la coordenada (x, y, z). También la llamada a la subrutina FUERZA de
cálculo del gradiente se realiza por separado para cada átomo y el vector de dirección se
vuelve a guardar en una matriz bidimensional: COEF(átomo, coordenada).
El programa está escrito de forma que puede seguirse sin dificultad. Su esquema
de trabajo es el siguiente:
1. Se entra en la subrutina OPTGEOM con una geometría molecular inicial definida
por el usuario, cuya energía ya ha sido calculada por el programa.
2. Según el método de optimización elegido, se llama a diferentes subrutinas
46
(transcritas más adelante en este mismo capítulo), las cuales calculan el gradiente y
determinan la dirección a seguir.
3. Se calcula el “diámetro” de la molécula (máxima distancia internuclear), magnitud
que proporciona información útil acerca de la marcha de la minimización.
4. Si la mayor componente del gradiente es menor que la tolerancia establecida, se da
por concluida la minimización. Se escribe la información en el archivo de resultados
y abandonamos la subrutina.
5. En caso contrario, comienza una nueva iteración. Se escribe en pantalla información
relativa a las iteraciones anteriores y se normalizan los coeficientes que definen la
dirección a seguir, calculados en el paso 2.
6. Se determina el sentido del deslizamiento (a favor o en contra de los coeficientes)
calculando la energía molecular en ambos sentidos y eligiendo el sentido en que ésta
desciende. Si el punto central es un máximo, se advierte sobre ello y deslizamos
hacia el lado de menor energía. Si la energía correspondiente al punto central es
menor que las dos laterales, vamos al paso 8.
7. Etapa de deslizamiento hacia el lado de menor energía. En cada deslizamiento se
calcula la energía del nuevo punto y se la compara con las dos anteriores, hasta que
se produce un ascenso.
8. Los tres puntos con que hemos acotado el mínimo lineal se ajustan a una parábola,
según lo dicho en el capítulo 1. Se calcula la energía correspondiente a su vértice,
que se usa como energía de partida en el siguiente paso.
9. Si no hemos pasado por la etapa de deslizamiento, se reduce la longitud de paso
según el factor de reducción deseado. La reducción es necesaria para evitar caer en
un ciclo sin fin, pues en la próxima iteración volveríamos a estar en la misma
situación, con los mismos tres puntos, volviendo a ser el central el punto de menor
energía (ver sección 1.6).
10. Vuelta al paso 2.
47
Los métodos de optimización implementados de forma definitiva son: máxima
pendiente, Fletcher-Reeves, Polak-Ribière, Davidon-Fletcher-Powell (DFP) y
Broyden-Fletcher-Goldfarb-Shanno (BFGS). Se ha estudiado el método de
Newton-Raphson, pero se ha preferido no incluirlo en la versión definitiva, pues invierte
demasiado tiempo en el cálculo numérico del hessiano y además conduce a veces a una
matriz hessiana singular.
3.3 Programación del método de máxima pendiente
La subrutina MAXIMA_PENDIENTE situada en el archivo fuente
AVEPPAL9.F90 es la encargada del cálculo de la dirección de movimiento. El código
es el siguiente:
!----------------------------------------------------------------------------- SUBROUTINE MAXIMA_PENDIENTE(coef,fmax,ivta,e0) !----------------------------------------------------------------------------- ! CALCULA LOS COEFICIENTES QUE DETERMINAN LA DIRECCION A LO LARGO DE LA ! CUAL SE MINIMIZA LA ENERGIA RESPECTO DE LAS COORDENADAS NUCLEARES, ! (SEGUN EL METODO DE LA MAXIMA PENDIENTE) ! ------------------------------------------------------------------------- IMPLICIT DOUBLE PRECISION (A-H,O-Z) COMMON/INFO/CERO,PI,FDIST,C(20,3),NATOMS,CHARGE,MULTIP,AN(20),N COMMON/OPGEOM/NFOR(20),IOP(3),IOPG INTEGER AN,CHARGE DIMENSION FMAX(3),COEF(20,3) ! ---------------------------------------------------------------------------- ! CALCULO DE LAS FUERZAS SOBRE CADA ATOMO DO 25 N1=1,NATOMS COEF(N1,1)=0.d0 COEF(N1,2)=0.d0 COEF(N1,3)=0.d0 IF(NFOR(N1).EQ.0)GOTO 25 WRITE(*,500)N1 CALL FUERZA(N1,E0,FXN,FYN,FZN,CXN,CYN,CZN) WRITE(4,410)N1,FXN,FYN,FZN ! LOS COEFICIENTES (SIN NORMALIZAR) DE LA COORDENADA INTERNA ! SE TOMAN PROPORCIONALES A LA FUERZA F EN CARTESIANAS: COEF(N1,1)=FXN COEF(N1,2)=FYN COEF(N1,3)=FZN IF(DABS(FXN).GT.FMAX(1))FMAX(1)=DABS(FXN) IF(DABS(FYN).GT.FMAX(2))FMAX(2)=DABS(FYN) IF(DABS(FZN).GT.FMAX(3))FMAX(3)=DABS(FZN)
48
25 CONTINUE 500 FORMAT(/,5X,' CALCULANDO LA FUERZA SOBRE EL ATOMO NUMERO',I3) 410 FORMAT(14X,I3,4X,3F11.4) RETURN END
Esta subrutina es bastante simple, pues se limita a calcular el gradiente de
energía (fuerza para cada átomo y coordenada cartesiana) y almacenarlo en la matriz de
coeficientes COEF(átomo, coordenada). En la Sección 3.6 se explica el funcionamiento
de la subrutina FUERZA, encargada del cálculo del gradiente.
3.4 Programación de los métodos de gradientes conjugados
Para ambos métodos (Fletcher-Reeves y Polak-Ribière) se usa la subrutina
GRADIENTES_CONJUGADOS:
!----------------------------------------------------------------------------- SUBROUTINE GRADIENTES_CONJUGADOS(metopt,coef,fmax,ivta,e0) !----------------------------------------------------------------------------- ! CALCULA LOS COEFICIENTES QUE DETERMINAN LA DIRECCION A LO LARGO DE LA ! CUAL SE MINIMIZA LA ENERGIA RESPECTO DE LAS COORDENADAS NUCLEARES, ! SEGUN EL METODO GRADIENTES CONJUGADOS. ESTAN DISPONIBLES LAS VERSIONES DE ! FLETCHER-REEVES Y POLAK-RIBIERE ! ------------------------------------------------------------------------- IMPLICIT DOUBLE PRECISION (A-H,O-Z) COMMON/INFO/CERO,PI,FDIST,C(20,3),NATOMS,CHARGE,MULTIP,AN(20),N COMMON/OPGEOM/NFOR(20),IOP(3),IOPG COMMON/GRADCONJ/foldPR(20,3),coefoldPR(20,3) INTEGER AN,CHARGE CHARACTER*16 metopt DIMENSION FMAX(3),COEF(20,3) PROD=0.d0 PRODOLD=0.d0 ! ---------------------------------------------------------------------------- ! CALCULO DE LAS FUERZAS SOBRE CADA ATOMO DO 25 N1=1,NATOMS COEF(N1,1)=0.d0 COEF(N1,2)=0.d0 COEF(N1,3)=0.d0 IF(NFOR(N1).EQ.0)GOTO 25 WRITE(*,500)N1 CALL FUERZA(N1,E0,FXN,FYN,FZN,CXN,CYN,CZN) WRITE(4,410)N1,FXN,FYN,FZN COEF(N1,1)=FXN COEF(N1,2)=FYN COEF(N1,3)=FZN
49
IF(DABS(FXN).GT.FMAX(1))FMAX(1)=DABS(FXN) IF(DABS(FYN).GT.FMAX(2))FMAX(2)=DABS(FYN) IF(DABS(FZN).GT.FMAX(3))FMAX(3)=DABS(FZN) ! Si se elige el metodo de Fletcher-Reeves, se calculan los productos escalares ! f(k)*f(k) y f(k-1)*f(k-1) IF(metopt.EQ.'Fletcher-Reeves ') & PROD=PROD+FXN**2+FYN**2+FZN**2 ! Si el metodo elegido es el de Polak-Ribiere, se calculan ! (f(k)-f(k-1))*f(k) y f(k-1)*f(k-1) IF(metopt.EQ.'Polak-Ribiere ') & PROD=PROD+(FXN-foldPR(N1,1))*FXN+(FYN-foldPR(N1,2))*FYN+(FZN-foldPR(N1,3))*FZN PRODOLD=PRODOLD+foldPR(N1,1)**2+foldPR(N1,2)**2+foldPR(N1,3)**2 ! Los f(k) se van guardando inmediatamente para la siguiente iteracion foldPR(N1,1)=FXN foldPR(N1,2)=FYN foldPR(N1,3)=FZN 25 CONTINUE ! Los coeficientes de desplazamiento se calculan segun ! ! f(k)*f(k) ! d(k) = f(k) + --------------- * d(k-1) ! f(k-1)*f(k-1) ! ! en el metodo de Fletcher-Reeves y segun ! ! (f(k)-f(k-1))*f(k) ! d(k) = f(k) + -------------------- * d(k-1) ! f(k-1)*f(k-1) ! ! en el de Polak-Ribiere IF(ivta.GT.1)THEN DO N1=1,NATOMS COEF(N1,1)=COEF(N1,1)+PROD/PRODOLD*coefoldPR(N1,1) COEF(N1,2)=COEF(N1,2)+PROD/PRODOLD*coefoldPR(N1,2) COEF(N1,3)=COEF(N1,3)+PROD/PRODOLD*coefoldPR(N1,3) ENDDO ENDIF ! Los coeficientes se guardan para la siguiente iteracion DO N1=1,NATOMS coefoldPR(N1,1)=COEF(N1,1) coefoldPR(N1,2)=COEF(N1,2) coefoldPR(N1,3)=COEF(N1,3) ENDDO 500 FORMAT(/,5X,' CALCULANDO LA FUERZA SOBRE EL ATOMO NUMERO',I3) 410 FORMAT(14X,I3,4X,3F11.4) RETURN END
50
3.5 Programación de los métodos de métrica variable
Al igual que en el caso de gradientes conjugados, dada la similitud entre los
métodos DFP y BFGS se usa la misma subrutina para ambos:
!--------------------------------------------------------------------------------- SUBROUTINE METRICA_VARIABLE(metopt,coef,fmax,ivta,e0) !--------------------------------------------------------------------------------- ! CALCULA LOS COEFICIENTES QUE DETERMINAN LA DIRECCION A LO LARGO DE LA ! CUAL SE MINIMIZA LA ENERGIA RESPECTO DE LAS COORDENADAS NUCLEARES, ! SEGUN EL METODO DE METRICA VARIABLE. ESTAN DISPONIBLES LAS VERSIONES DE ! BROYDEN-FLETCHER-GOLDFARB-SHANNO Y DAVIDON-FLETCHER-POWELL) ! ------------------------------------------------------------------------- IMPLICIT DOUBLE PRECISION (A-H,O-Z) COMMON/INFO/CERO,PI,FDIST,C(20,3),NATOMS,CHARGE,MULTIP,AN(20),N COMMON/OPGEOM/NFOR(20),IOP(3),IOPG COMMON/METVAR/foldBFGS(60),coldBFGS(60) INTEGER AN,CHARGE CHARACTER*16 metopt DIMENSION FMAX(3),COEF(20,3) DIMENSION BK(60,60),BOLD(60,60) DIMENSION FK(60),YK(60),SK(60),CK(60),UK(60) DIMENSION YTB(60),YYTB(60,60),BYYTB(60,60),SST(60,60) DIMENSION BY(60),UUT(60,60),X(60,60) ! ---------------------------------------------------------------------------------- ! EN LA PRIMERA ITERACION LA MATRIZ HESSIANA ES LA UNIDAD: IF(ivta.EQ.1)THEN DO I=1,3*NATOMS DO J=1,3*NATOMS BOLD(I,J)=0.D0 IF(I.EQ.J)BOLD(I,J)=1.D0 ENDDO ENDDO ENDIF ! -------------------------------------------------------------------------------- ! CALCULO DE LAS FUERZAS SOBRE CADA ATOMO DO 35 N1=1,NATOMS COEF(N1,1)=0.d0 COEF(N1,2)=0.d0 COEF(N1,3)=0.d0 IF(NFOR(N1).EQ.0)GOTO 35 WRITE(*,500)N1 CALL FUERZA(N1,E0,FXN,FYN,FZN,CXN,CYN,CZN) WRITE(4,410)N1,FXN,FYN,FZN IF(DABS(FXN).GT.FMAX(1))FMAX(1)=DABS(FXN) IF(DABS(FYN).GT.FMAX(2))FMAX(2)=DABS(FYN) IF(DABS(FZN).GT.FMAX(3))FMAX(3)=DABS(FZN) ! LOS COEFICIENTES (SIN NORMALIZAR) DE LA COORDENADA INTERNA ! SE TOMAN PROPORCIONALES A LA FUERZA F EN CARTESIANAS (en la 1 iteracion)
51
COEF(N1,1)=FXN COEF(N1,2)=FYN COEF(N1,3)=FZN ! Las fuerzas calculadas se usan para formar una matriz de 3n ! componentes que contiene al gradiente: g = -f FK(3*(N1-1)+1)=-FXN FK(3*(N1-1)+2)=-FYN FK(3*(N1-1)+3)=-FZN ! Se crean tambien matrices de 3n componentes que contienen las ! coordenadas y las restas: y(k)=f(k)-f(k-1), s(k)=c(k)-c(k-1) DO I=1,3 CK(3*(N1-1)+I)=C(N1,I) YK(3*(N1-1)+I)=FK(3*(N1-1)+I)-foldBFGS(3*(N1-1)+I) SK(3*(N1-1)+I)=CK(3*(N1-1)+I)-coldBFGS(3*(N1-1)+I) ENDDO 35 CONTINUE IF(IVTA.GE.2)THEN ! Se calcula la matriz fila yt*B y la matriz columna B*y DO 5 I=1,3*NATOMS YTB(I)=0.D0 BY(I)=0.D0 DO 5 J=1,3*NATOMS YTB(I)=YTB(I)+YK(J)*BOLD(J,I) BY(I)=BY(I)+BOLD(I,J)*YK(J) 5 CONTINUE ! Se calculan las matrices 3n*3n, y*yt*B, y s*st DO 10 I=1,3*NATOMS DO 10 J=1,3*NATOMS YYTB(I,J)=YK(I)*YTB(J) SST(I,J)=SK(I)*SK(J) 10 CONTINUE ! Se calcula la matriz 3n*3n, B*y*yt*B DO 15 I=1,3*NATOMS DO 15 J=1,3*NATOMS BYYTB(I,J)=0.D0 DO 15 K=1,3*NATOMS BYYTB(I,J)=BYYTB(I,J)+BOLD(I,K)*YYTB(K,J) 15 CONTINUE ! Se calculan los denominadores escalares, yt*B*y, y st*y YTBY=0.D0 STY=0.D0 DO I=1,3*NATOMS YTBY=YTBY+YTB(I)*YK(I) STY=STY+SK(I)*YK(I) ENDDO ! Si se elige el metodo de Broyden-Fletcher-Goldfarb-Shanno, hay que calcular las ! matrices u y X: IF(metopt.EQ.'BFGS ')THEN ! s B*y ! Se calcula la matriz columna u = ------ - -------- ! st*y yt*B*y DO I=1,3*NATOMS
52
UK(I)=SK(I)/STY-BY(I)/YTBY ENDDO ! Se calcula las matrices 3n*3n, u*ut, y X = yt*B*y*u*ut DO 20 I=1,3*NATOMS DO 20 J=1,3*NATOMS UUT(I,J)=UK(I)*UK(J) X(I,J)=YTBY*UUT(I,J) 20 CONTINUE ENDIF ! Si el metodo elegido es el Davidon-Fletcher-Powell, la matriz X es nula: IF(metopt.EQ.'DFP ')THEN DO 22 I=1,3*NATOMS DO 22 J=1,3*NATOMS X(I,J)=0. 22 CONTINUE ENDIF ! Se actualiza la matriz hessiana B, como ! ! B*y*yt*B s*st ! B(k+1) = B - ---------- + ------ + X ! yt*B*y st*y ! ! e inmediatamente se guarda la matriz obtenida para usarla en la ! siguiente iteracion DO 25 I=1,3*NATOMS DO 25 J=1,3*NATOMS BK(I,J)=BOLD(I,J)-BYYTB(I,J)/YTBY+SST(I,J)/STY+X(I,J) BOLD(I,J)=BK(I,J) 25 CONTINUE ! El producto del hessiano obtenido por el gradiente se usa como ! matriz de coeficientes DO 30 N1=1,NATOMS COEF(N1,1)=0.D0 COEF(N1,2)=0.D0 COEF(N1,3)=0.D0 DO 30 I=1,3*NATOMS COEF(N1,1)=COEF(N1,1)-BK(3*(N1-1)+1,I)*FK(I) COEF(N1,2)=COEF(N1,2)-BK(3*(N1-1)+2,I)*FK(I) COEF(N1,3)=COEF(N1,3)-BK(3*(N1-1)+3,I)*FK(I) 30 CONTINUE ENDIF ! Se guardan para la siguiente iteracion el gradiente y las posiciones ! atomicas DO I=1,3*NATOMS foldBFGS(I)=FK(I) ENDDO DO N1=1,NATOMS coldBFGS(3*(N1-1)+1)=C(N1,1) coldBFGS(3*(N1-1)+2)=C(N1,2) coldBFGS(3*(N1-1)+3)=C(N1,3) ENDDO 500 FORMAT(/,5X,' CALCULANDO LA FUERZA SOBRE EL ATOMO NUMERO',I3)
53
410 FORMAT(14X,I3,4X,3F11.4) RETURN END
3.6 Cálculo del gradiente
Como ya se dijo, el gradiente se calcula numéricamente, mediante la subrutina
FUERZA, situada en el archivo AVEPPAL9.F90. Esta subrutina fue programada en
primer lugar para calcular la fuerza a la que están sometidos los átomos, de manera que
sus resultados son las componentes del gradiente de la hipersuperficie de energía
potencial, con signo cambiado. El método de cálculo es muy simple: para cada átomo y
cada coordenada se efectúa un incremento hacia adelante y otro hacia atrás, con una
longitud de paso muy pequeña (DEL = 10–5 u.a.). La correspondiente fuerza se calcula
entonces como un cociente de incrementos:
DEL
DELDEL
2−+ −
−= xxx
EEf (35)
Como la energía del punto de partida E0 se conoce, se podría haber calculado la fuerza
simplemente usando Ex+DEL o Ex–DEL, lo que nos ahorraría un calculo de la energía.
Hemos preferido no obrar así, pues calcular la fuerza efectuando el incremento en
ambos sentidos conduce normalmente a un resultado mucho más exacto2.
La subrutina FUERZA se encarga de calcular la fuerza sobre cada átomo y
coordenada:
! ---------------------------------------------------------------------- SUBROUTINE FUERZA(N1,ECERO,FUX,FUY,FUZ,DXN,DYN,DZN) ! ---------------------------------------------------------------------- ! CALCULA LA FUERZA SOBRE EL ATOMO CON NUMERO DE ORDEN "N1" ! ---------------------------------------------------------------------- ! EL PROCEDIMIENTO ES DETERMINAR EL GRADIENTE DE ETOT ! AJUSTANDO UNA PARABOLA EN CADA DIRECCION X, Y o Z. ! Atencion: Se parte de la matriz densidad correspondiente ! al punto en que se calculan las fuerzas (ECERO). ! --------------------------------------------------------------------- IMPLICIT DOUBLE PRECISION(A-H,O-Z)
2 Existen otros métodos mucho más precisos para el cálculo numérico de derivadas, como la extrapolaciónn de Richardson, pero requieren muchas más evaluaciones de la energía y no nos ha parecido que compensen el incremento en tiempo de cálculo.
54
INTEGER OPTION,OPNCLO,HUCKEL,CNDO,INDO,CLOSED CHARACTER*10 PARTIPO CHARACTER*4 ORB,EL INTEGER AN,CHARGE,CZ,U,ULIM,OCCA,OCCB COMMON/INFO/CERO,PI,FDIST,C(20,3),NATOMS,CHARGE,MULTIP,AN(20),N COMMON/IMPRES/NWIB,NSOL,NCOU,NCOR,NFOC,NAUT,NDEN,NDENT,NDENS,NUAT COMMON/OPGEOM/NFOR(20),IOP(3),IOPG ! ---- Se cambian las opciones de calculo que sean ! --- inadecuadas para la derivacion numerica: nit0=NIT if(NIT.lt.999)NIT=999 tolenel0=TOLENEL if(TOLENEL.GT.1.D-12)TOLENEL=1.D-12 NDENT0=NDENT NDENS0=NDENS NDENT=1 NDENS=0 ! ---- incremento en la derivacion numerica: DEL=1.0D-05 IF(IOPG.EQ.2.AND.IOP(1).EQ.0)GOTO 20 CX0=C(N1,1) C(N1,1)=C(N1,1)+DEL CALL PUNTO(EMAS,0) C(N1,1)=C(N1,1)-2.D0*DEL CALL PUNTO(EMENOS,0) FUX=-(EMAS-EMENOS)/(2.D0*DEL) DXN=(EMAS+EMENOS-2.D0*ECERO)/DEL**2 C(N1,1)=CX0 20 IF(IOPG.EQ.2.AND.IOP(2).EQ.0)GOTO 30 CY0=C(N1,2) C(N1,2)=C(N1,2)+DEL CALL PUNTO(EMAS,0) C(N1,2)=C(N1,2)-2.D0*DEL CALL PUNTO(EMENOS,0) FUY=-(EMAS-EMENOS)/(2.D0*DEL) DYN=(EMAS+EMENOS-2.D0*ECERO)/DEL**2 C(N1,2)=CY0 30 IF(IOPG.EQ.2.AND.IOP(3).EQ.0)GOTO 40 CZ0=C(N1,3) C(N1,3)=C(N1,3)+DEL CALL PUNTO(EMAS,0) C(N1,3)=C(N1,3)-2.D0*DEL CALL PUNTO(EMENOS,0) FUZ=-(EMAS-EMENOS)/(2.D0*DEL) DZN=(EMAS+EMENOS-2.D0*ECERO)/DEL**2 C(N1,3)=CZ0 40 CONTINUE ! --- se dejan las opciones como estaban: NDENT=NDENT0 NDENS=NDENS0 TOLENEL=tolenel0
55
NIT=nit0 RETURN END
El cálculo autoconsistente de las energías moleculares EMAS y EMENOS (Ex+DEL y
Ex–DEL) se realiza usando como matriz densidad de partida la correspondiente al
punto central E0. Al ser el incremento de distancia muy pequeño (10–5 u.a.), el hecho de
partir de una matriz densidad parecida a la que se espera que resulte del cálculo ahorra
iteraciones y disminuye la posibilidad de que el cálculo autoconsistente lleve a estados
electrónicos diferentes para los distintos puntos, en cuyo caso las fuerzas calculadas
carecerían de sentido.
En nuestro programa existen dos variables que controlan la escritura y lectura de
matrices densidad: NDENS y NDENT. Si es NDENS=1, entonces tras ejecutar la
subrutina PUNTO para calcular la función de onda, la matriz densidad resultante
quedará guardada en el archivo PMAT. Por otro lado, si es NDENT=1, entonces el
cálculo de la función de onda comenzará leyendo el archivo PMAT y usará la matriz
densidad que contenga como matriz densidad inicial. Así, para usar la matriz densidad
del punto inicial en el cálculo de las fuerzas, no hay más que hacer NDENT=1 y
NDENS=0 (para que cada vez que se calcule la función de onda no se escriba una nueva
matriz densidad en PMAT) al comienzo de la subrutina. Por supuesto, en la salida, tras
calcular todas las fuerzas, estas variables se dejan con los valores que tenían.
56
CAPÍTULO 4
4 RESULTADOS Y DISCUSIÓN
57
Introducción al Capítulo 4
En este capítulo se determinan los valores óptimos de los
parámetros usados por nuestro programa: desplazamiento
máximo inicial, factor de reducción y tolerancia en fuerzas
para dar por finalizada la minimización. Una vez fijados
estos parámetros se comparan todos los métodos de
optimización analizados con el fin de decidir cual es el
más adecuado para optimizar geometrías moleculares.
El método más eficiente de los programados por nosotros
se compara finalmente con el empleado por el programa
Gaussian 94, encontrando idénticas geometrías
moleculares en todas las moléculas de prueba excepto en
la de NO2. La diferencia se debe a un problema del
método CNDO que pasa inadvertido durante la
optimización de esta molécula con Gaussian.
58
Hemos examinado el funcionamiento de nuestro programa mediante la
optimización de un conjunto de 24 moléculas que contienen carbono, hidrógeno,
oxígeno y nitrógeno en las situaciones de enlace más frecuentes en Química Orgánica.
Sus geometrías iniciales se han establecido a partir de la tabla de distancias y ángulos de
enlace estándar contenida en Ref. 40 (pág. 386). Para las moléculas con posibilidad de
rotación interna se han elegido como conformaciones estándar las que más se acercan a
las de mínima energía experimental:
• C2H6, CH3NH2 y CH3OH: alternada
• N2H4: conformación gauche
• H2O2: ángulo diedro de 120º
Los valores óptimos para los parámetros usados por el programa (longitud de
paso inicial, factor de reducción y tolerancia en fuerzas) se han calculado a partir de los
citados 24 casos. Se usó un ordenador Pentium-133 con sistema operativo Windows 95,
realizándose todos los cálculos en sesión de MS-DOS a pantalla completa.
4.1 Optimización del desplazamiento máximo inicial y del factor de reducción
La buena elección de los valores de estas dos variables resulta crucial para la
eficiencia de las optimizaciones. Como medida de la eficiencia vamos a usar el tiempo
total requerido para optimizar las 24 moléculas de prueba. El desplazamiento máximo
inicial δ (o DELTA que es su nombre de variable en el programa) y el factor de
reducción deben ser optimizados conjuntamente, pues el número de iteraciones
necesario para llevar a cabo la optimización de una molécula depende de ambos a la
vez.
Como único criterio de convergencia (aunque hay otros, ver sección 4.2),
usaremos el gradiente de energía. Hemos establecido una tolerancia en fuerzas de
0.001 u.a. como máximo en cualquier componente del gradiente. Como se verá más
adelante, este valor es razonable para las exigencias habituales en cuanto a precisión de
las geometrías obtenidas. El método de optimización elegido es el DFP. En la Sección
4.3 se verá que este método es el mejor. Para cada pareja de valores de DELTA y FRED
59
ensayada se ha optimizado la geometría de todas las moléculas, tabulando para cada una
de ellas el tiempo invertido, el número de iteraciones necesario y el de deslizamientos.
Como serían demasiadas tablas, se ha preferido no incluirlas en la exposición impresa
de este trabajo, toda vez que su contenido se puede reproducir fácilmente usando el
propio programa. En su lugar, se incluyen en el fichero TABLAS.DOC del disquete,
dándose aquí sólo las tablas de resultados generales.
Mediante los procedimientos indicados, hemos constatado que tienen lugar los
siguientes hechos:
• En general (Tabla 1), cuanto mayor sea el desplazamiento máximo inicial, más
pequeño debe ser el factor de reducción (FRED) para obtener una buena eficiencia.
Esto ocurre porque aunque al principio un desplazamiento inicial grande lleve a una
buena aproximación al mínimo, pronto resulta ser demasiado grande para afinarlo,
siendo entonces necesaria una disminución del paso tanto más acusada cuanto
mayor haya sido éste.
• El aumento de eficacia obtenido usando un desplazamiento inicial grande
acompañado por un factor de reducción muy pequeño, tiene un límite. A partir de
DELTA=0.03 Å empieza a disminuir la eficiencia, incluso usando un factor de
reducción de 0.1. Afinando con factores de reducción muy pequeños, se acaba
llegando a desplazamientos también muy pequeños, lo que aumenta el número de
deslizamientos necesarios para alcanzar el mínimo. Aunque en principio sea
preferible que aumente el número deslizamientos a costa del de cálculos del
gradiente, se acaba llegando a una situación en la que se efectúan ya tantos
deslizamientos que vuelve a aumentar el tiempo de cálculo (Tabla 2 y Tabla 3).
• Por otro lado, si optamos por valores pequeños de DELTA (entre 0.005 y 0.01 Å), la
eficacia aumenta cuanto mayor sea el factor de reducción, pero dependiendo mucho
menos del valor de éste que en el caso de usar una DELTA grande. La causa de esta
menor dependencia radica en que siendo pequeño el desplazamiento inicial, se hace
menos necesario usar la reducción. Incluso hay moléculas en las que no llega a ser
precisa.
60
• Cuanto menor es el desplazamiento inicial, menos iteraciones (cálculos del
gradiente) se necesitan para optimizar, pero aumenta el número de deslizamientos
necesarios. Se avanza a pequeños pasitos, lo que aumenta la precisión con que se
localizan los sucesivos mínimos lineales. Así se reducen las desviaciones en el
cálculo de las sucesivas direcciones de desplazamiento, lo que redunda en una
disminución del número de iteraciones.
• Esta forma de obrar es en principio favorable en tiempo, pues un paso de
deslizamiento consume mucho menos esfuerzo que un cálculo del gradiente. Pero si
se disminuye suficientemente el desplazamiento inicial (más o menos alrededor de
0.003 Å) acaba llegándose a una situación en la que el número de deslizamientos se
hace tan elevado que los tiempos de cálculo vuelven a aumentar.
Tabla 1. Optimización de DELTA y FRED. Tiempos totales
Factor de reducción
0.9 0.7 0.5 0.3 0.1
0.003 5 m 21 s. 5 m 21 s. 5 m 21 s. 0.005 5 m 00 s. 5 m 01 s. 5 m 02 s. 0.007 4 m 33 s. 4 m 35 s. 4 m 38 s. 4 m 42 s. 0.009 5 m 13 s. 5 m 09 s. 4 m 52 s. 4 m 56 s. 0.010 5 m 07 s. 5 m 09 s. 5 m 12 s. 0.020 5 m 28 s. 4 m 59 s. 4 m 59 s. 5 m 11 s. 0.030 5 m 26 s. 5 m 25 s. 5 m 11 s. 0.040 5 m 54 s. 5 m 32 s. 5 m 38 s.
DELTA
(Ang
stro
m)
0.050 6 m 24 s. 5 m 54 s. 5 m 32 s.
61
Tabla 2. Optimización de DELTA y FRED. Número total de cálculos del gradiente
Factor de reducción
0.9 0.7 0.5 0.3 0.1
0.003 100 100 100 0.005 101 101 101 0.007 101 101 102 101 0.009 115 111 109 109 0.010 111 108 108 0.020 142 130 124 124 0.030 136 128 121 0.040 144 132 124
DELTA
(Ang
stro
m)
0.050 149 137 120
Tabla 3. Optimización de DELTA y FRED. Número total de deslizamientos
Factor de reducción
0.9 0.7 0.5 0.3 0.1
0.003 459 460 461 0.005 272 277 277 0.007 198 207 227 265 0.009 155 164 181 194 0.010 141 158 188 0.020 79 96 110 206 0.030 78 131 207 0.040 62 83 201
DELTA
(Ang
stro
m)
0.050 56 103 447
Según lo anterior, estimamos conveniente un valor de DELTA de alrededor de
0.007 Å, con un factor de reducción próximo a la unidad, del orden de 0.9 a 0.5. Con
estos valores se ha obtenido la convergencia más rápida en todas las moléculas de
prueba.
62
4.2 Optimización de la tolerancia en el gradiente de energía
Se puede emplear diversos criterios para decidir cuándo dar por finalizada una
optimización geométrica. Podemos definir una tolerancia en el gradiente, ya sea
considerando la mayor de sus componentes o la propia norma del vector, una tolerancia
en la diferencia entre energías consecutivas, o en el desplazamiento nuclear máximo.
Naturalmente, también se puede exigir el cumplimiento simultáneo de todos los
criterios. Nos ha parecido suficiente usar únicamente el criterio del gradiente de energía,
considerando que la geometría molecular ha sido optimizada cuando la mayor
componente del gradiente se haga menor que una tolerancia TOLFOR. Se hace necesario
determinar un valor óptimo para esta tolerancia: si la establecemos muy exigente
llevaremos la minimización muy cerca del mínimo exacto, es decir, obtendremos mayor
precisión en la geometría calculada. Pero a cambio aumentará el número de iteraciones
y por tanto el tiempo de cálculo. Incluso se puede llegar, si la tolerancia exigida fuese
demasiado pequeña, a perder el tiempo en la fase final de la minimización realizando
iteraciones totalmente inútiles, debido a que las variaciones sucesivas de geometría
resultan insignificantes.
Para determinar un valor óptimo de TOLFOR hemos empezado por tratar nuestro
conjunto de moléculas (usando el método DFP con DELTA = 0.007 Å y FRED = 0.9,
que son valores óptimos de estos parámetros, según el apartado anterior) permitiendo
sólo una tolerancia pequeñísima (TOLFOR = 10–6 u.a.) lo que aseguraba una gran
precisión en los mínimos encontrados. Las geometrías moleculares así obtenidas se
tomaron como referencia y se repitieron las optimizaciones aumentando
progresivamente la tolerancia, hasta que el error máximo en los parámetros geométricos
obtenidos alcanzase un nivel de exactitud parecido al que suele corresponder a una
buena determinación experimental de estos parámetros: 0.001 Å en las distancias de
enlace y 0.5º en los ángulos. La diferencia entre las energías obtenidas con diferentes
tolerancias y las que corresponden a la tolerancia de referencia no se ha tenido en
cuenta, pues nuestro interés se centra por el momento en la obtención de las geometrías
moleculares únicamente.
63
En las Tablas 4, 5 y 6 se recogen los parámetros geométricos obtenidos para
algunos valores de TOLFOR. Se encuentra que un valor adecuado de esta tolerancia es
0.001 u.a. Con este valor, el máximo error cometido en las distancias de enlace es de
0.001 Å y en los ángulos, de 0.4º.
Tabla 4. Distancias (en Angstrom) y ángulos de enlace obtenidos con diferentes valores de TOLFOR
TOLFOR: 0.000001 0.0005 0.0010 0.0050
Molécula Distancia o ángulo
Valor de referencia Valor Error Valor Error Valor Error
H2 H–H 0.746 0.746 0.000 0.746 0.000 0.746 0.000
CH C–H 1.109 1.109 0.000 1.109 0.000 1.109 0.000
CH4 C–H 1.114 1.114 0.000 1.114 0.000 1.114 0.000
NH N–H 1.061 1.061 0.000 1.061 0.000 1.061 0.000
N–H 1.067 1.067 0.000 1.067 0.000 1.069 0.002 NH3
HNH 105.1 105.1 0.0 105.1 0.0 105.0 -0.1 OH O–H 1.026 1.026 0.000 1.026 0.000 1.026 0.000
O–H 1.029 1.029 0.000 1.029 0.000 1.029 0.000 H2O
HOH 104.2 104.2 0.0 104.2 0.0 105.3 1.1
C2 C–C 1.146 1.146 0.000 1.146 0.000 1.146 0.000
C–C 1.197 1.197 0.000 1.197 0.000 1.198 0.001 C2H2
C–H 1.093 1.093 0.000 1.093 0.000 1.092 -0.001
C–C 1.310 1.310 0.000 1.311 0.000 1.310 0.000 C–H 1.112 1.112 0.000 1.112 0.000 1.112 0.000 C2H4 HCH 111.7 111.7 0.0 111.8 0.1 111.8 0.1
C–C 1.458 1.458 0.000 1.458 0.000 1.457 -0.001 C–H 1.120 1.120 0.000 1.120 0.000 1.120 0.000 CCH 112.1 112.1 0.0 112.1 0.0 111.6 -0.5
C2H6
HCH 106.7 106.7 0.0 106.7 0.0 107.3 0.6
64
Tabla 5. Distancias (en Angstrom) y ángulos de enlace obtenidos con diferentes valores de TOLFOR (continuación)
TOLFOR: 0.000001 0.0005 0.0010 0.0050
Molécula Distancia o ángulo
Valor de referencia Valor Error Valor Error Valor Error
CN C–N 1.169 1.169 0.000 1.169 0.000 1.169 0.000 C–N 1.181 1.181 0.000 1.181 0.000 1.181 0.000
HCN H–C 1.092 1.092 0.000 1.092 0.000 1.092 0.000
C–N 1.405 1.405 0.000 1.405 0.000 1.405 0.000
C–H 1.121 1.121 0.000 1.121 0.000 1.124 0.003
N–H 1.072 1.072 0.000 1.072 0.000 1.071 -0.001
HCH 107.2 107.2 0.0 107.2 0.0 107.4 0.2
HNH 104.1 104.2 0.0 104.0 -0.1 104.8 0.7
HNC 107.7 107.7 0.0 107.8 0.1 109.1 1.4
NCH1* 114.0 114.0 0.0 114.2 0.2 113.7 -0.3
CH3NH2
NCH 110.4 110.4 0.0 110.4 0.0 110.4 0.0 CO C–O 1.191 1.191 0.000 1.191 0.000 1.191 0.000
C–O 1.247 1.247 0.000 1.247 0.000 1.247 0.000 C–H 1.114 1.114 0.000 1.114 0.000 1.114 0.000 H2CO HCH 115.8 115.8 0.0 115.8 0.0 115.8 0.0
C–O 1.368 1.368 0.000 1.368 0.000 1.367 -0.001 O–H 1.033 1.033 0.000 1.033 0.000 1.034 0.001 C–H 1.120 1.120 0.000 1.120 0.000 1.120 0.000 COH 105.2 105.2 0.0 105.6 0.4 106.1 0.9 HCH 108.2 108.2 0.0 108.3 0.1 108.1 -0.1 HCO 111.8 111.8 0.0 111.8 0.0 112.3 0.5
CH3OH
H4CO** 108.5 108.5 0.0 108.1 -0.4 107.9 -0.6
* El plano NCH1 es el que pasa entre los dos H del grupo amino. ** El plano H4CO es el que contiene el enlace O-H.
65
Tabla 6. Distancias (en Angstrom) y ángulos de enlace obtenidos con diferentes valores de TOLFOR (continuación)
TOLFOR: 0.000001 0.0005 0.0010 0.0050
Molécula Distancia o ángulo
Valor de referencia Valor Error Valor Error Valor Error
N2 N–N 1.140 1.140 0.000 1.140 0.000 1.140 0.000 N–N 1.334 1.334 0.000 1.334 0.000 1.334 0.000 N–H 1.074 1.074 0.000 1.074 0.000 1.073 -0.001 HNH 103.2 103.2 0.0 103.4 0.2 102.6 -0.6 HNN 106.9 106.9 0.0 106.8 -0.1 106.9 0.0
N2H4
HNN 110.9 110.9 0.0 110.9 0.0 112.7 1.8
NO N–O 1.152 1.152 0.000 1.152 0.000 1.152 0.000
N–O1 1.193 1.193 0.000 1.194 0.000 1.193 0.000 N–O2 1.230 1.230 0.000 1.231 0.000 1.230 0.000 NO2 ONO 119.9 119.9 0.0 119.7 -0.2 119.7 -0.2
O2 O–O 1.132 1.132 0.000 1.132 0.000 1.132 0.000
O–O 1.167 1.167 0.000 1.167 0.000 1.167 0.000 O3
OOO 119.5 119.5 0.0 119.5 0.0 119.7 0.2
O–O 1.219 1.219 0.000 1.219 0.000 1.220 0.001
O–H 1.039 1.039 0.000 1.039 0.000 1.037 -0.002 H2O2
HOO 108.5 108.5 0.0 108.5 0.0 107.3 -1.2
Error máximo (distancias) Error máximo (ángulos)
0.000
0.0
0.000 0.4
0.003
1.8
66
Tabla 7. Comparación de los tiempos empleados para cada tolerancia en fuerzas
TOLFOR: 0.0005 0.0010 0.0050 Molécula Tiempo Iterac. Tiempo Iterac. Tiempo Iterac.
H2 0.8 s. 2 0.8 s. 2 0.8 s. 2 CH CH4
1.1 s. 1.9 s.
2 2
1.1 s. 1.9 s.
2 2
1.1 s. 1.9 s.
2 2
NH NH3
1.2 s. 3.4 s.
2 5
1.2 s. 3.4 s.
2 5
1.2 s. 2.9 s.
2 4
OH H2O
1.2 s. 2.5 s.
2 5
1.2 s. 2.0 s.
2 4
1.2 s. 1.3 s.
2 2
C2 C2H2 C2H4 C2H6
1.8 s. 3.4 s.
11.0 s. 18.2 s.
4 4 6 6
1.1 s. 3.4 s. 9.6 s.
18.2 s.
2 4 5 6
1.1 s. 2.8 s. 9.6 s.
10.6 s.
2 3 5 3
CN HCN
CH3NH2
6.3 s. 2.7 s.
25.6 s.
2 3
10
6.3 s. 2.7 s.
21.2 s.
2 3 8
6.3 s. 2.7 s.
11.9 s.
2 3 4
CO H2CO
CH3OH
3.2 s. 6.0 s.
19.7 s.
6 8
10
1.4 s. 5.1 s.
16.1 s.
2 4 8
1.4 s. 5.0 s.
12.6 s.
2 4 6
N2 N2H4
2.4 s. 26.6 s.
7 13
0.8 s. 17.1 s.
2 8
0.8 s. 13.3 s.
2 6
NO NO2
13.6 s. 2 m 37.1 s.
7 7
9.1 s. 2 m 0.0 s.
4 5
6.0 s. 1 m 59.6 s.
2 5
O2 O3
H2O2
3.4 s. 11.3 s. 19.6 s.
8 7
14
1.1 s. 10.0 s. 18.7 s.
2 6
13
1.1 s. 8.7 s. 9.4 s.
2 5 6
Totales 5 m 44 s. 142 4 m 33 s. 103 3 m 53 s. 78
67
4.3 Comparación de la eficiencia de los métodos ensayados
Los métodos de optimización analizados por nosotros (Máxima Pendiente,
Fletcher-Reeves, Polak-Ribiere, DFP y BFGS) se aplicaron a la obtención de las
geometrías de nuestro conjunto de moléculas de prueba. Los resultados se muestran en
las Tablas 8 a 13. Se han usado los parámetros (desplazamiento inicial, factor de
reducción y tolerancia en fuerzas) determinados como óptimos en las secciones 4.1 y
4.2: DELTA = 0.007 Å, FRED = 0.9 y TOLFOR = 0.001 u.a. Se encuentra que los
métodos más eficientes en optimización de geometrías moleculares son los de métrica
variable, y de ellos el DFP es ligeramente más eficiente que el BFGS. El menos
eficiente es el método de la Máxima Pendiente, por las razones que se argumentaron en
la sección 2.3.
68
Tabla 8. Resultados obtenidos con el método de Máxima Pendiente
Molécula Tiempo Iteraciones Deslizamientos Energía
H2 0.8 s. 2 0 –1.474609
CH CH4
1.1 s. 1.9 s.
2 2
2 3
–7.156816 –10.115684
NH NH3
1.2 s. 6.0 s.
2 10
4 10
–12.019088 –13.889457
OH H2O
1.2 s. 4.0 s.
2 9
5 6
–18.991107 –19.890873
C2 C2H2 C2H4 C2H6
1.1 s. 10.4 s. 32.2 s. 28.1 s.
2 14 20 10
4 4
16 7
–13.333039 –15.344426 –17.072681 –18.824972
CN HCN
CH3NH2
6.3 s. 8.9 s.
38.4 s.
2 13 16
1 5
11
–18.117250 –19.156701 –22.590578
CO H2CO
CH3OH
1.4 s. 42.2 s. 44.3 s.
2 41 24
2 17 16
–25.061680 –26.838191 –28.575337
N2 N2H4
0.8 s. 1 m 26.7 s.
2 46
3 32
–23.090236 –26.397031
NO NO2
9.0 s. 3 m 13.8 s.
4 9
5 3
–29.893537 –48.433902
O2 O3
H2O2
1.1 s. 39.2 s.
6 m 24.0 s.
2 27
255
6 4
252
–36.804346 –55.308322 –38.464750
Totales 15 m 44 s. 518 418
69
Tabla 9. Resultados obtenidos con el método Fletcher-Reeves
Molécula Tiempo Iteraciones Deslizamientos Energía
H2 0.8 s. 2 0 –1.474609
CH CH4
1.1 s. 1.9 s.
2 2
2 3
–7.156816 –10.115684
NH NH3
1.2 s. 3.4 s.
2 5
4 9
–12.019088 –13.889459
OH H2O
1.2 s. 2.1 s.
2 4
5 7
–18.991107 –19.890876
C2 C2H2 C2H4 C2H6
1.1 s. 3.5 s.
12.5 s. 18.3 s.
2 4 7 6
4 5
13 8
–13.333039 –15.344426 –17.072707 –18.824998
CN HCN
CH3NH2
6.4 s. 2.7 s.
25.5 s.
2 3
10
1 5
13
–18.117250 –19.156701 –22.590596
CO H2CO
CH3OH
1.4 s. 6.1 s.
22.9 s.
2 5
12
2 8
11
–25.061680 –26.838193 –28.575348
N2 N2H4
0.9 s. 18.8 s.
2 9
3 19
–23.090236 –26.397035
NO NO2
9.1 s. 6 m 41.0 s.
4 20
5 4
–29.893537 –48.433910
O2 O3
H2O2
1.1 s. 10.2 s. 28.1 s.
2 6
22
6 7
58
–36.804346 –55.308325 –38.464881
Totales 9 m 41 s. 137 202
70
Tabla 10. Resultados obtenidos con el método Polak-Ribière
Molécula Tiempo Iteraciones Deslizamientos Energía
H2 0.8 s. 2 0 –1.474609
CH CH4
1.1 s. 1.9 s.
2 2
2 3
–7.156816 –10.115684
NH NH3
1.2 s. 3.4 s.
2 5
4 9
–12.019088 –13.889460
OH H2O
1.2 s. 2.5 s.
2 5
5 7
–18.991107 –19.890876
C2 C2H2 C2H4 C2H6
1.1 s. 3.5 s.
12.6 s. 18.2 s.
2 4 7 6
4 5
14 8
–13.333039 –15.344426 –17.072706 –18.824998
CN HCN
CH3NH2
6.3 s. 2.7 s.
23.4 s.
2 3 9
1 5
13
–18.117250 –19.156701 –22.590595
CO H2CO
CH3OH
1.4 s. 6.0 s.
22.7 s.
2 5
12
2 8
11
–25.061680 –26.838194 –28.575348
N2 N2H4
0.9 s. 18.8 s.
2 9
3 19
–23.090236 –26.397035
NO NO2
9.1 s. 2 m 57.5 s.
4 8
5 5
–29.893537 –48.433910
O2 O3
H2O2
1.1 s. 8.8 s.
24.0 s.
2 5
18
6 7
57
–36.804346 –55.308325 –38.464842
Totales 5 m 50 s. 120 203
71
Tabla 11. Resultados obtenidos con el método DFP
Molécula Tiempo Iteraciones Deslizamientos Energía
H2 0.8 s. 2 0 –1.474609
CH CH4
1.1 s. 1.9 s.
2 2
2 3
–7.156816 –10.115684
NH NH3
1.2 s. 3.4 s.
2 5
4 9
–12.019088 –13.889459
OH H2O
1.2 s. 2.0 s.
2 4
5 7
–18.991107 –19.890876
C2 C2H2 C2H4 C2H6
1.1 s. 3.4 s. 9.6 s.
18.2 s.
2 4 5 6
4 5
13 8
–13.333039 –15.344426 –17.072706 –18.824998
CN HCN
CH3NH2
6.3 s. 2.7 s.
21.2 s.
2 3 8
1 5
13
–18.117250 –19.156701 –22.590595
CO H2CO
CH3OH
1.4 s. 5.1 s.
16.1 s.
2 4 8
2 8
12
–25.061680 –26.838193 –28.575337
N2 N2H4
0.8 s. 17.1 s.
2 8
3 19
–23.090236 –26.397037
NO NO2
9.1 s. 2 m 0.0 s.
4 5
5 4
–29.893537 –48.433909
O2 O3
H2O2
1.1 s. 10.0 s. 18.7 s.
2 6
13
6 7
53
–36.804346 –55.308325 –38.464909
Totales 4 m 33 s. 103 198
72
Tabla 12. Resultados obtenidos con el método BFGS
Molécula Tiempo Iteraciones Deslizamientos Energía
H2 0.7 s. 2 0 –1.474609
CH CH4
1.1 s. 2.0 s.
2 2
2 3
–7.156816 –10.115684
NH NH3
1.2 s. 3.4 s.
2 5
4 9
–12.019088 –13.889459
OH H2O
1.3 s. 2.1 s.
2 4
5 7
–18.991107 –19.890876
C2 C2H2 C2H4 C2H6
1.2 s. 3.5 s. 9.6 s.
18.2 s.
2 4 5 6
4 5
13 8
–13.333039 –15.344426 –17.072706 –18.824998
CN HCN
CH3NH2
6.3 s. 2.7 s.
21.1 s.
2 3 8
1 5
13
–18.117250 –19.156701 –22.590595
CO H2CO
CH3OH
1.4 s. 5.1 s.
16.3 s.
2 4 8
2 8
12
–25.061680 –26.838193 –28.575337
N2 N2H4
0.8 s. 17.2 s.
2 8
3 19
–23.090236 –26.397037
NO NO2
9.1 s. 2 m 37.3 s.
4 7
5 4
–29.893537 –48.433910
O2 O3
H2O2
1.1 s. 8.7 s.
18.7 s.
2 5
13
6 7
53
–36.804346 –55.308325 –38.464909
Totales 5 m 10 s. 104 198
73
Tabla 13. Comparación de los tiempos empleados por cada método
Molécula Máxima Pendiente
Fletcher Reeves
Polak Ribiere DFP BFGS
H2 0.8 s. 0.8 s. 0.8 s. 0.8 s. 0.7 s.
CH CH4
1.1 s. 1.9 s.
1.1 s. 1.9 s.
1.1 s. 1.9 s.
1.1 s. 1.9 s.
1.1 s. 2.0 s.
NH NH3
1.2 s. 6.0 s.
1.2 s. 3.4 s.
1.2 s. 3.4 s.
1.2 s. 3.4 s.
1.2 s. 3.4 s.
OH H2O
1.2 s. 4.0 s.
1.2 s. 2.1 s.
1.2 s. 2.5 s.
1.2 s. 2.0 s.
1.3 s. 2.1 s.
C2 C2H2 C2H4 C2H6
1.1 s. 10.4 s. 32.2 s. 28.1 s.
1.1 s. 3.5 s.
12.5 s. 18.3 s.
1.1 s. 3.5 s.
12.6 s. 18.2 s.
1.1 s. 3.4 s. 9.6 s.
18.2 s.
1.2 s. 3.5 s. 9.6 s.
18.2 s.
CN HCN
CH3NH2
6.3 s. 8.9 s.
38.4 s.
6.4 s. 2.7 s.
25.5 s.
6.3 s. 2.7 s.
23.4 s.
6.3 s. 2.7 s.
21.2 s.
6.3 s. 2.7 s.
21.1 s.
CO H2CO
CH3OH
1.4 s. 42.2 s. 44.3 s.
1.4 s. 6.1 s.
22.9 s.
1.4 s. 6.0 s.
22.7 s.
1.4 s. 5.1 s.
16.1 s.
1.4 s. 5.1 s.
16.3 s.
N2 N2H4
0.8 s. 1 m 26.7 s.
0.9 s. 18.8 s.
0.9 s. 18.8 s.
0.8 s. 17.1 s.
0.8 s. 17.2 s.
NO NO2
9.0 s. 3 m 13.8 s.
9.1 s. 6 m 41.0 s.
9.1 s. 2 m 57.5 s.
9.1 s. 2 m 0.0 s.
9.1 s. 2 m 37.3 s.
O2 O3
H2O2
1.1 s. 39.2 s.
6 m 24.0 s.
1.1 s. 10.2 s. 28.1 s.
1.1 s. 8.8 s.
24.0 s.
1.1 s. 10.0 s. 18.7 s.
1.1 s. 8.7 s.
18.7 s.
Totales 15 m 44 s. 9 m 41 s. 5 m 50 s. 4 m 33 s. 5 m 10 s.
74
4.4 Comparación con resultados estándar
Aunque nuestro programa siempre sigue un camino descendente en energía, en
realidad no ha incluido ninguna comprobación para decidir si el punto en que se da por
finalizada la optimización geométrica es realmente un mínimo y no un punto de silla de
la superficie de energía potencial. En principio, acabar en un punto de silla cuando lo
que se está buscando es un mínimo resulta posible, aunque con nuestra forma de operar
sea muy poco probable. Para comprobar que en todos los casos se había llegado a un
verdadero mínimo, se ha repetido las mismas optimizaciones de geometría con el
programa Gaussian 94 [Ref. 42]. Éste efectúa las optimizaciones en coordenadas
internas redundantes [Refs. 9, 12]. Las direcciones de desplazamiento se determinan
según el método de la Función Racional y las minimizaciones lineales siguen el
algoritmo Berny [Ref. 15]. Para garantizar que el punto estacionario encontrado sea
realmente un mínimo, el Gaussian diagonaliza la matriz hessiana, comprobando así que
es definida positiva.
En las Tablas 14 y 15 se comparan las geometrías y energías finales obtenidas
con ambos programas: el Gaussian y el nuestro, en su versión más rápida (método DFP
con DELTA = 0.007 Å y FRED = 0.9). Las energías obtenidas por el Gaussian son en
todos los casos algo menores que las nuestras debido a que aquel programa usa unos
criterios de convergencia algo más exigentes de lo que nosotros hemos considerado
necesario. Para que el Gaussian dé por finalizadas las optimizaciones, se deben cumplir
todas y cada una de las siguientes condiciones:
a) La máxima componente del gradiente (en coordenadas internas) debe ser menor que
0.00045 u.a.
b) La raíz cuadrada de la media de los cuadrados de las fuerzas debe ser menor
que 0.00030 u.a.
c) El máximo desplazamiento nuclear debe ser menor que 0.0018 u.a.
d) La raíz cuadrada de la media de los desplazamientos debe ser menor que 0.0012 u.a.
75
Las geometrías obtenidas mediante el Gaussian concuerdan exactamente con las
que obtenemos nosotros, excepto para la molécula de NO2 (por razones que estudiamos
más adelante), lo que confirma que en todos los casos hemos alcanzado un mínimo y
que podemos usar nuestro programa con entera confianza.
La Tabla 16 muestra que la convergencia se alcanza más o menos con el mismo
número de pasos en ambos programas. En principio, dado que el Gaussian calcula el
gradiente analíticamente, debería invertir menos tiempo que nuestro programa. La causa
de que no sea así radica en la gran cantidad de tiempo que invierte en determinar una
serie de propiedades moleculares que nosotros no necesitamos, pero que el Gaussian
calcula por defecto. Así ocurre con la simetría de los orbitales moleculares, los
momentos multipolares hasta orden 4, las cargas de Mulliken, etc. También escribe
abundante información acerca del progreso del cálculo SCF en cada iteración, lo que
consume tiempo y alarga el archivo de resultados. En cualquier caso queda claro que
aunque el Gaussian permita llevar a cabo cálculos semiempíricos, resulta poco eficiente
para su realización.
76
Tabla 14. Comparación entre las geometrías obtenidas con el AVEMO9 y con el Gaussian 94
Molécula Distancia o ángulo
Valor AVEMO9
Valor Gaussian Energía AVEMO9 Energía Gaussian
H2 H–H 0.746 0.746 –1.474609 –1.474667
CH C–H 1.109 1.108 –7.156816 –7.156956
CH4 C–H 1.114 1.114 –10.115684 –10.115989
NH N–H 1.061 1.061 –12.019088 –12.019274
N–H 1.067 1.067 NH3
HNH 105.1 105.1 –13.889459 –13.889752
OH O–H 1.026 1.026 –18.991107 –18.991352
O–H 1.029 1.029 H2O
HOH 104.2 104.2 –19.890876 –19.891175
C2 C–C 1.146 1.146 –13.333039 –13.333339
C–C 1.197 1.197 C2H2
C–H 1.093 1.093 –15.344426 –15.344827
C–C 1.311 1.310 C–H 1.112 1.112 C2H4 HCH 111.8 111.7
–17.072706 –17.073184
C–C 1.458 1.457 C–H 1.120 1.120 CCH 112.1 112.1
C2H6
HCH 106.7 106.7
–18.824998 –18.825554
CN C–N 1.169 1.169 –18.117250 –18.117583
C–N 1.181 1.181 HCN
H–C 1.092 1.092 –19.156701 –19.157091
C–N 1.405 1.405
C–H 1.121 1.121
N–H 1.072 1.071
HCH 107.2 107.2
HNH 104.1 104.1
HNC 107.7 107.7
NCH1 114.0 114.0
CH3NH2
NCH 110.5 110.4
–22.590595 –22.591145
77
Tabla 15. Comparación entre las geometrías obtenidas con el AVEMO9 y con el Gaussian 94 (continuación)
Molécula Distancia o ángulo
Valor AVEMO9
Valor Gaussian Energía AVEMO9 Energía Gaussian
CO C–O 1.191 1.191 –25.061680 –25.062063
C–O 1.247 1.247 C–H 1.114 1.114 H2CO HCH 115.8 115.8
–26.838193 –26.838664
C–O 1.368 1.368 O–H 1.033 1.033 C–H 1.120 1.120 COH 105.2 105.2 HCH 108.2 108.2 HCO 111.8 111.8
CH3OH
H4CO 108.5 108.5
–28.575337 –28.575898
N2 N–N 1.140 1.140 –23.090236 –23.090621
N–N 1.334 1.334 N–H 1.074 1.074 HNH 103.2 103.2 HNN 106.9 106.9
N2H4
HNN 110.9 110.9
–26.397037 –26.397641
NO N–O 1.152 1.151 –29.893537 –29.893959
N–O1 1.193 1.192 N–O2 1.230 1.192 NO2 ONO 119.9 138.4
–48.433909 –48.428288
O2 O–O 1.132 1.132 –36.804346 –36.804816
O–O 1.167 1.167 O3
OOO 119.5 119.5 –55.308325 –55.309050
O–O 1.219 1.218
O–H 1.039 1.038 H2O2
HOO 108.5 108.5
–38.464909 –38.465458
78
Tabla 16. Comparación entre los tiempos e iteraciones empleados por el AVEMO9 y por el Gaussian 94
Tiempo (segundos) Iteraciones Molécula
AVEMO9 Gaussian AVEMO9 Gaussian
H2 0.8 24.0 2 3
CH CH4
1.1 1.9
25.0 23.0
2 2
3 3
NH NH3
1.2 3.4
25.0 29.0
2 5
3 4
OH H2O
1.2 2.0
24.0 26.0
2 4
3 4
C2 C2H2 C2H4 C2H6
1.1 3.4 9.6
18.2
24.0 29.0 33.0 35.0
2 4 5 6
3 5 6 6
CN HCN
CH3NH2
6.3 2.7
21.2
22.0 30.0 37.0
2 3 8
3 5 7
CO H2CO
CH3OH
1.4 5.1
16.1
23.0 33.0 37.0
2 4 8
3 6 7
N2 N2H4
0.8 17.1
23.0 38.0
2 8
3 7
NO NO2
9.1 120.0
26.0 58.0
4 5
4 6
O2 O3
H2O2
1.1 10.0 18.7
24.0 30.0 47.0
2 6
13
4 5
10
Totales 4 m 33 s. 12 m 5 s. 103 103
79
4.5 El caso del NO2
Como se vio en la sección anterior, las geometrías moleculares obtenidas con
nuestro programa y con Gaussian 94 concuerdan perfectamente excepto en la
optimización de la molécula de dióxido de nitrógeno. Para esta molécula, el programa
AVEMO9 obtiene una geometría que no parece razonable, con las dos distancias N-O
diferentes (1.193 y 1.230 Å). Por su parte, si se usa el Gaussian con las opciones que
trae por defecto, la geometría obtenida parece más razonable, con ambas distancias de
enlace iguales a 1.192 Å. Sin embargo, a esta geometría corresponde una energía de
-48.428288 u.a., que es superior a las -48.433909 u.a. que obtenemos usando el
AVEMO9. Esta discrepancia de resultados se debe a dos razones:
• Nuestro programa es más exigente en la convergencia del cálculo SCF. Para dar por
terminado cada cálculo autoconsistente se requiere una diferencia entre energías
electrónicas de 10-12 u.a., frente a las 10-8 u.a. del Gaussian. Las energías
electrónicas calculadas por nosotros son pues más exactas. No obstante, en el
Gaussian se puede controlar la convergencia en el cálculo de la energía electrónica,
simplemente escribiendo en la sección Route Section lo siguiente:
SCF(MaxCycle=300,Conver=12)
Esto hace que el cálculo de la energía electrónica converja sólo cuando la diferencia
entre energías electrónicas consecutivas sea menor que 10-12 u.a., con un máximo
de 300 iteraciones.
• Aunque especifiquemos una tolerancia en energía electrónica pequeña, si partimos
de una geometría inicial de distancias N-O iguales, el Gaussian las mantiene
iguales durante toda la optimización. El hecho de que el método de optimización
usado por el Gaussian mantiene la simetría inicial viene mencionado en la ayuda
del programa [Ref. 42] y hemos comprobado que sigue haciéndolo aunque
desactivemos los cálculos de simetría escribiendo NoSymm en la Route Section. Sin
embargo, si partimos de una geometría inicial con las dos distancias ligeramente
diferentes, aunque sólo difieran en 10-5 Å, el Gaussian converge ya hacia nuestro
mínimo.
80
Tras estas consideraciones, lo más adecuado es comparar ambos programas en
su camino hacia el mismo mínimo, obteniéndose los resultados de la Tabla 17:
Tabla 17. Comparación de resultados obtenidos por el AVEMO9 y por el Gaussian 94 para el NO2
Distancia o ángulo
Valor AVEMO9
Valor Gaussian Energía AVEMO9 Energía Gaussian
N–O1 1.193 1.193
N–O2 1.230 1.230
ONO 119.9 119.9
–48.433909 –48.434580
Tiempo (segundos) Iteraciones AVEMO9 Gaussian AVEMO9 Gaussian
120.0 59.0 5 7
Estos resultados nos muestran un fallo del modelo CNDO, que erróneamente
predice una estructura asimétrica para la molécula de NO2. Este fallo ha sido puesto de
manifiesto gracias a que nuestro programa efectúa las optimizaciones sin imponer
ninguna restricción de simetría. En este momento no tenemos constancia de ningún
trabajo donde se haya reparado en este hecho: más bien al contrario, en la literatura
habitual [Ref. 41] la estructura prevista por el método CNDO para esta molécula
presenta las dos distancias iguales a 1.192 Å.
81
RESUMEN Y CONCLUSIONES
82
El trabajo que se presenta ha consistido fundamentalmente en elaborar un
módulo de programa para optimizar geometrías moleculares en coordenadas cartesianas
e implementarlo en el programa AVEMO de cálculo semiempírico (desarrollado con
anterioridad en la Universidad de Cádiz). Aunque por sencillez hemos realizado todos
los cálculos de prueba usando el método CNDO, nuestro optimizador geométrico puede
ser usado con cualquier otros tipo de método químicocuantico, ya que calcula las
derivadas de la energía numéricamente. Su única limitación puede ser el alto coste en
tiempo de cálculo requerido por los cálculos Ab Initio con bases grandes, pues necesita
evaluar muchas veces la función de onda para calcular el gradiente.
Nuestro programa usa las 3N coordenadas (x, y, z de cada núcleo) sin eliminar
las coordenadas redundantes. Esta forma de operar ocasionaría problemas al intentar
combinarlo con el método de optimización de Newton-Raphson, pues la superficie de
energía potencial resultante se aleja demasiado de una aproximación cuadrática. De
todas formas, hemos preferido mantener las 3N coordenadas no sólo por sencillez de
programación, sino porque nuestro laboratorio está interesado en estudiar el
comportamiento de moléculas en presencia de campos eléctricos externos, en cuyo caso
la energía molecular depende de su posición y orientación respecto al campo (y debe
describirse necesariamente con 3N coordenadas).
Los siguientes métodos han sido programados y ensayados sobre un conjunto de
moléculas de prueba:
• Máxima Pendiente
• Método Fletcher-Reeves
• Método Polak-Ribiere
• Método Davidon-Fletcher-Powell
• Método Broyden-Fletcher-Goldfarb-Shanno
Nuestro trabajo ha permitido comprobar que ninguno de los métodos indicados
se ve entorpecido por el uso de coordenadas cartesianas. También hemos optimizado los
parámetros usados por nuestro optimizador (desplazamiento inicial, factor de reducción
y tolerancia en fuerzas) para obtener su máxima eficiencia, entendida ésta como mínimo
tiempo de cálculo requerido.
83
El método más eficiente de todos los estudiados resultó ser el
Davidon-Fletcher-Powell y el menos eficiente el de Máxima Pendiente, aunque todos
resultaron ser seguros, convergiendo en todos los casos y en un número aceptable de
pasos. Los valores hallados como óptimos para los parámetros, con el método más
eficiente (BFGS) fueron:
• Desplazamiento inicial: DELTA = 0.007 Å
• Factor de reducción: FRED = 0.9
• Tolerancia en fuerzas: TOLFOR = 0.001 u.a.
Este último parámetro fue elegido de manera que los errores en las geometrías
resultantes sean del orden de los experimentales: 0.001 Å en las distancias de enlace y
0.5º en los ángulos. De todas formas, el programa elaborado permite cambiar fácilmente
el método de optimización y los valores de los parámetros DELTA, FRED y TOLFOR.
La comparación entre nuestro programa y los programas estándar, representados
por el Gaussian 94 mostró una concordancia absoluta entre las geometrías obtenidas
con ambos, lo que ratifica que el nuestro conduce a resultados correctos. Sólo para la
molécula de NO2 hubo alguna discrepancia, pues nuestro programa conducía a
resultados que nos parecieron incialmente incorrectos, ya que resultaban diferentes las
dos distancias de enlace (aunque nuestra estructura tenía menor energía que la obtenida
con el Gaussian). Esta discrepancia fue resuelta cuando repetimos el cálculo Gaussian
aumentando la precisión exigida a la energía electrónica en el cálculo SCF hasta el valor
usado por el AVEMO, 10-12 u.a. En este caso, y partiendo de distancias internucleares
N-O ligeramente diferentes, el programa Gaussian llega a la misma geometría obtenida
por el nuestro. Si se parte de una geometría inicial de distancias de enlace exactamente
iguales, se mantienen iguales durante toda la optimización, pues el algoritmo usado por
el Gaussian mantiene la simetría molecular que se haya supuesto inicialmente. De esta
forma hemos puesto de manifiesto un error del método CNDO y otro del optimizador
geométrico empleado por el Gaussian, que al mantener fija la simetría inicial pasó por
alto el verdadero mínimo de energía.
84
Para el futuro quedan diversas cuestiones de interés que iremos abordando
sucesivamente. Por ejemplo:
1. Programación de las optimizaciones en coordenadas internas.
2. Programación de derivadas analíticas de la energía.
3. Sustitución del deslizamiento por otro método más eficiente y seguro.
4. Aplicación de nuestro programa de optimización a moléculas en presencia de
campos eléctricos que simulen los provocados por redes cristalinas.
5. Elaboración de un manejador que permita usar el programa AVEMO de forma
más cómoda que el actual.
85
APÉNDICE: GEOMETRÍAS MOLECULARES INICIALES
Las longitudes de enlace recomendadas para cálculos CNDO, según Ref. 40,
pág. 386, se pueden tomar como primera aproximación para efectuar optimizaciones
geométricas. Para los ángulos, pueden emplearse los valores 109.5º, 120º ó 180º según
sea el número de enlaces formados por el átomo del vértice. El número que acompaña a
cada símbolo es el número de enlaces formados, incluyendo los pares de electrones no
compartidos como si fueran enlaces.
ENLACES SENCILLOS Enlace Longitud (Å) Enlace Longitud (Å)
H–H C4–H C3–H C2–H N3–H N2–H O2–H F1–H
C4–C4 C4–C3 C4–C2 C4–N3 C4–N2 C4–O2 C4–F1 C3–C3 C3–C2 C3–N3
0.74 1.09 1.08 1.06 1.01 0.99 0.96 0.92 1.54 1.52 1.46 1.47 1.47 1.43 1.36 1.46 1.45 1.40
C3–N2 C3–O2 C3–F1 C2–C2 C2–N3 C2–N2 C2–O2 C2–F1 N3–N3 N3–N2 N3–O2 N3–F1 N2–N2 N2–O2 N2–F1 O2–O2 O2–F1 F1–F1
1.40 1.36 1.33 1.38 1.33 1.33 1.36 1.30 1.45 1.45 1.36 1.36 1.45 1.41 1.36 1.48 1.42 1.42
86
ENLACES DOBLES Enlace Longitud (Å) Enlace Longitud (Å) C3–C3 C3–C2 C3–N2 C3–O1 C2–C2 C2–N2
1.34 1.31 1.32 1.22 1.28 1.32
C2–O1 N3–O1 N2–N2 N2–O1 O1–O1
1.16 1.24 1.25 1.22 1.21
ENLACES TRIPLES Enlace Longitud (Å) C2–C2 C2–N1 N1–N1
1.20 1.16 1.10
ENLACES AROMÁTICOS Enlace Longitud (Å) C3–C3 C2–N2 N2–N2
1.40 1.34 1.35
87
BIBLIOGRAFÍA
Optimización en general
1. Optimization, ed. R. Fletcher (Academic Press, London, 1969)
2. W.H. Press, B.P. Flannery, S.A. Teukolsky, W.T. Vetterling, Numerical Recipes,
(Cap. 10), Cambridge University Press, Cambridge, 1986
3. H.B. Schlegel, Optimization of Equilibrium Geometries and Transition Structures,
Adv. Chem. Phys., 67, 249 (1987)
4. D.E. Luenberger, Programación Lineal y no Lineal, Addison Wesley
Iberoamericana, 1989
5. J.D. Head, M.C. Zerner, Newton Based Optimization Methods for Obtaining
Molecular Conformation, Adv. Quantum Chem., 20, 239 (1989)
Sistemas de coordenadas
6. P. Pulay, G. Fogarasi, F. Pang, J.E. Boggs, Systematic ab Initio Gradient
Calculation of Molecular Geometries, Force Constants, and Dipole Moment
Derivatives, J. Am. Chem. Soc., 101, 2550 (1979)
7. J. Baker, W.J. Hehre, Geometry Optimization in Cartesian Coordinates: The End of
the Z-Matrix?, J. Comp. Chem., 12, 606 (1991)
8. G. Fogarasi, X. Zhou, P.W. Taylor, P. Pulay, The Calculation of ab Initio Molecular
Geometries: Efficient Optimization by Natural Internal Coordinates and Empirical
Correction by Offset Forces, J. Am. Chem. Soc., 114, 8191 (1992)
9. P. Pulay, G. Fogarasi, Geometry Optimization in Redundant Internal Coordinates, J.
Chem. Phys., 96, 2856 (1992)
10. H.B. Schlegel, A Comparison of Geometry Optimization with Internal, Cartesian
and Mixed Coordinates, Int. J. Quantum Chem., 26, 243 (1992)
11. J. Baker, Techniques for Geometry Optimization: A Comparison of Cartesian and
Natural Internal Coordinates, J. Comp. Chem., 14, 1085 (1993)
12. C. Peng, P.Y. Ayala, H.B. Schlegel, Using Redundant Internal Coordinates to
Optimize Equilibrium Geometries and Transition States, J. Comp. Chem., 17, 49
(1996)
88
13. J. Baker, A. Kessi, B. Delley, The Generation and Use of Internal Coordinates in
Geometry Optimization, J. Chem. Phys., 105, 192 (1996)
14. J. Baker, Constrained Optimization in Delocalized Internal Coordinates, J. Comp.
Chem., 18, 1079 (1997)
Algoritmo de minimización lineal
15. H.B. Schlegel, Optimization of Equilibrium Geometries and Transition Structures,
J. Comp. Chem., 3, 214 (1982)
Condiciones de Eckart
16. C. Eckart, Some Studies Concerning Rotating Axes and Polyatomic Molecules,
Physical Review, 47, 552 (1935)
17. A. Sayvetz, The Kinetic Energy of Polyatomic Molecules, J. Chem. Phys., 7, 383
(1939)
18. F. Jørgensen, Orientation of the Eckart Frame in a Polyatomic Molecule by
Symmetric Orthonormalization, Int. J. Quantum Chem., 14, 55 (1978)
Estimación empírica del hessiano
19. H.B. Schlegel, Estimating the Hessian for Gradient-Type Geometry Optimizations,
Theoret. Chim. Acta, 66, 333 (1984)
20. R. Lindh, A. Bernhardsson, G. Karlström, P. Malmqvist, On the Use of a Hessian
Model Function in Molecular Geometry Optimizations, Chem. Phys. Letters, 241,
423 (1995)
Cálculo analítico de gradiente y hessiano
21. P. Pulay, Ab Initio Calculation of Force Constants and Equilibrium Geometries in
Polyatomic Molecules. I. Theory, Mol. Phys., 17, 197 (1969)
22. P. Pulay, Ab Initio Calculation of Force Constants and Equilibrium Geometries in
Polyatomic Molecules. II. Force Constants of Water, Mol. Phys., 18, 473 (1970)
23. J.W. McIver, A. Komornicki, Rapid Geometry Optimization for Semi-Empirical
Molecular Orbital Methods, Chem. Phys. Letters, 10, 303 (1971)
24. W.L. Bloemer, B.L. Bruner, Prediction of Vibrational Force Fields Using Extended
Hückel Theory, J. Mol. Spec., 43, 452 (1972)
89
25. J.A. Pople, R. Krishnan, H.B. Schlegel, J.S. Binkley, Derivative Studies in
Hartree-Fock and Møller-Plesset Theories, Int. J. Quantum Chem., 13, 225 (1979)
26. G. Fogarasi, P. Pulay, Ab Initio Calculation of Force Fields and Vibrational
Spectra, Vibrational Spectra and Structure, 14, 125 (1985)
27. H.F. Schaefer, Y. Yamaguchi, A New Dimension to Quantum Chemistry:
Theoretical Methods for the Analityc Evaluation of First, Second, and Third
Derivatives of the Molecular Electronic Energy with respect to Nuclear
Coordinates, J. Mol. Struct., 135, 369 (1986)
28. P. Pulay, Analytical Derivative Methods in Quantum Chemistry, Adv. Chem. Phys.,
69, 241 (1987)
29. V. Botella, Determinación de Espectros Infrarrojos mediante Cálculos Ab Initio
(Tesis Doctoral), Universidad Complutense de Madrid, 1988
Cálculo numérico del hessiano
30. P. Pulay, W. Meyer, Ab Initio Calculation of the Force Field of Ethylene, J. Mol.
Spec., 40, 59 (1971)
31. W. Meyer, P. Pulay, Hartree-Fock Calculation of the Harmonic Force Constants
and Equilibrium Geometry of Formaldehyde, Theoret. Chim. Acta, 32, 253 (1974)
Método de la Función Racional
32. Banerjee, N. Adams, J. Simons, R. Shepard, Search for Stationary Points on
Surfaces, J. Phys. Chem., 89, 52 (1985)
33. J.D. Head, B. Weiner, M.C. Zerner, A Survey of Optimization Procedures for Stable
Structures and Transition States, Int. J. Quantum Chem., 33, 177 (1988)
34. F. Eckert, P. Pulay, H.J. Werner, Ab Initio Geometry Optimization for Large
Molecules, J. Comp. Chem., 18, 1473 (1997)
Métodos de Métrica Variable
35. W.C. Davidon, Variance Algorithm for Minimization, The Computer J., 10, 406
(1968)
36. B.A. Murtagh, R.W.H. Sargent, Computational Experience with Quadratically
Convergent Minimisation Methods, The Computer J., 13, 185 (1970)
90
37. R. Fletcher, A New Approach to Variable Metric Algorithms, The Computer J., 13,
317 (1970)
Comparación de algoritmos de minimización
38. J.D. Head, M.C. Zerner, A Broyden-Fletcher-Goldfarb-Shanno Optimization
Procedure for Molecular Geometries, Chem. Phys. Letters, 122, 264 (1985)
39. J. Papadakis, G.S. Fanourgakis, S.C. Farantos, M. Founargiotakis, Comparison of
Line Search Minimization Algorithms for Exploring Topography of
Multidimensional Potential Energy Surfaces: Mg+Arn Case, J. Comp. Chem., 18,
1011 (1997)
Geometrías moleculares iniciales
40. M. Fernández, P. Ríus, Elementos de Mecánica Cuántica Molecular, (Cap. 12),
Universidad de Cádiz, 1998
Geometrías previstas por el método CNDO estándar
41. J.A. Pople, D.I. Beveridge, Approximate Molecular Orbital Theory, McGraw-Hill,
New York, 1970
Programas utilizados
42. Gaussian 94, Revision B.2, M. J. Frisch, G. W. Trucks, H. B. Schlegel, P. M. W.
Gill, B. G. Johnson, M. A. Robb, J. R. Cheeseman, T. Keith, G. A. Petersson, J. A.
Montgomery, K. Raghavachari, M. A. Al-Laham, V. G. Zakrzewski, J. V. Ortiz, J.
B. Foresman, C. Y. Peng, P. Y. Ayala, W. Chen, M. W. Wong, J. L. Andres, E. S.
Replogle, R. Gomperts, R. L. Martin, D. J. Fox, J. S. Binkley, D. J. Defrees, J.
Baker, J. P. Stewart, M. Head-Gordon, C. Gonzalez, and J. A. Pople, Gaussian, Inc.,
Pittsburgh PA, 1995
43. All Valence Electrons Molecular Orbitals, M. Fernández, D. Sánchez, Universidad
de Cádiz, 1998