6 votos

Limitar el ángulo de enlace En la optimización de estructuras moleculares de Gaussian

Estoy calculando la estructura molecular optimizada de una molécula orgánica en el paquete de química computacional Gaussian 09.
Tal y como lo tengo ahora, no creo que la estructura optimizada que obtengo de Gaussian sea correcta, en parte debido a la simetría de algunos de los enlaces. Para intentar corregir esto, quiero fijar dos de los ángulos de enlace en la molécula para ayudar/forzarla a producir una estructura más creíble. Aunque quiero fijar estos ángulos de enlace, quiero dejar todo lo demás variable y abierto a la optimización, incluyendo esas longitudes de enlace.

¿Cómo puedo especificar esto en el archivo de entrada?

Fijar el ángulo de enlace a un valor determinado parece una solución extrema a este problema. Tal vez pueda limitar el ángulo dentro de un cierto rango, ¿es esto posible?

Después de mucho trabajo y de jugar con los ajustes, he descubierto cómo fijar los ángulos de enlace, pero ahora mi dificultad es fijarlos a 180 grados (mi valor deseado), para los enlaces lineales. Parece que esto es muy difícil de hacer.

Al fijar el ángulo de enlace en 179 grados (o 179,9 grados), aparece un error que dice "Error en el sistema de coordenadas interno". Mucha gente en Internet dice que esto se debe a los enlaces lineales/casi lineales en la molécula que se está optimizando. Algunas personas también dicen que esto podría evitarse si trato de optimizar en coordenadas cartesianas, en lugar de coordenadas internas, utilizando el cartesian parámetro después de opt . Sin embargo, no creo que pueda utilizar ModRedundant et cartesian parámetros al mismo tiempo.

¿Cómo puedo fijar un ángulo de enlace para que sea lineal, pero seguir optimizando el resto de la estructura en coordenadas cartesianas? ¿Es posible incluso fijar los ángulos a 180 grados?

7voto

maccullt Puntos 1555

Fijar el ángulo de unión a un valor determinado parece una solución extrema a este problema.

Lo es. Para ser sinceros, fijar los parámetros en un cálculo es casi siempre no solución en absoluto. La geometría resultante tiene poco o ningún significado y todas las propiedades derivadas son para un caso puramente hipotético. Si la geometría localizada no es un punto estacionario, ¿qué significa eso? Una solución errónea es peor que ninguna solución. Hay que tener mucho cuidado con lo que se fija y cuándo se fija, y siempre hay que confirmar lo que se ha encontrado con una optimización completa y un cálculo de la frecuencia. (En varios niveles de la teoría).

Creo que el consejo de Greg también es muy importante. La simetría puede ser una herramienta muy poderosa si se utiliza correctamente, pero hay que asegurarse de que la simetría implícita es correcta. También hay que comprobar si su metodología se ajusta al sistema que está calculando.

Dicho esto, no cabe duda de que hay algunos usos muy productivos para las optimizaciones parciales:

  • encontrar mínimos locales más altos o inusuales
  • exploración de la superficie de energía potencial
  • modificación de las geometrías convergentes
  • fijación de los modos de transición
  • etc.

Hay algunas posibilidades de cómo hacer optimizaciones parciales en gaussian. Todas tienen algunas advertencias y todas pueden conducir a resultados no deseados. Ciertamente hay restricciones para todas ellas. Voy a dar una breve visión general de los más comunes con algunos ejemplos prácticos.

Ya se ha dado cuenta de que fijar un ángulo de unión de 180 grados es un reto. Esto se debe al hecho de que es un requisito tener variables linealmente independientes, lo que simplemente no es posible con tres puntos en una línea. Sin embargo, hay ciertas formas de evitar el problema. Alerta de spoiler: Sólo es posible con matrices z o simetría muy rígida (donde se fija la simetría, no el ángulo de enlace).

Optimizaciones parciales con matrices z

Empecemos con algo muy sencillo. Una optimización completa del metanol sin restricciones de simetría.

%chk=bp86svp.chk
#p BP86/def2SVP/W06
DenFit
opt
int(ultrafinegrid)
sym(none)

title card required

0 1
 c
 h    1 hc2
 h    1 hc3         2 hch3
 h    1 hc4         2 hch4          3 dih4
 o    1 oc5         2 och5          3 dih5
 h    5 ho6         1 hoc6          2 dih6

hc2           1.1
hc3           1.1
hch3        109.5
hc4           1.1
hch4        109.5
dih4        120.0
oc5           1.4
och5        109.5
dih5       -120.0
ho6           0.9
hoc6        109.5
dih6        180.0

El resultado será la siguiente geometría optimizada:

 c
 o    1 oc2
 h    1 hc3         2 hco3
 h    1 hc4         2 hco4          3 dih4
 h    1 hc5         2 hco5          4 dih5
 h    2 ho6         1 hoc6          3 dih6

oc2           1.414851
hc3           1.109697
hco3        107.476
hc4           1.118853
hco4        113.586
dih4       -118.329
hc5           1.118853
hco5        113.586
dih5       -123.342
ho6           0.974680
hoc6        107.408
dih6        179.999

Fijar un ángulo en una matriz z es sencillo. Hay que especificar que se está haciendo una optimización parcial ( popt ) y mover el parámetro fijo a la sección de constantes. Como ejemplo, estoy fijando el ángulo COH, y también invocar la simetría.

%chk=bp86svp.chk
#p BP86/def2SVP/W06
DenFit
popt
int(ultrafinegrid)

title card required

0 1
 c
 h    1 hc2
 h    1 hc3         2 hch3
 h    1 hc3         2 hch3          3 dih4
 o    1 oc5         2 och5          3 dih5
 h    5 ho6         1 coh           2 dih6
  Variables:
hc2           1.100000
hc3           1.100000
hch3        109.5
dih4        120.000
oc5           1.400000
och5        109.5
dih5       -120.000
ho6           0.900000
dih6        180.000
  Constants:
coh          90.0

Esto le dará la siguiente lista de parámetros optimizados:

       hc2         1.1104 
       hc3         1.1173 
      hch3       107.0973 
      dih4       116.0195 
       oc5         1.4471 
      och5       108.92   
      dih5      -121.9694 
       ho6         0.9796 
      dih6       180.0092 
       coh        90.0    

Ahora intentaremos lo mismo, pero haremos que el ángulo de unión sea de 180 grados. Aquí tenemos que introducir átomos ficticios:

%chk=bp86svp.chk
#p BP86/def2SVP/W06
DenFit
popt
int(ultrafinegrid)

title card required

0 1
 c
 h    1 hc2
 h    1 hc3         2 hch3
 h    1 hc3         2 hch3          3 dih4
 o    1 oc5         2 och5          3 dih5
xx    5 xxo6        1 xxoc6         2 dih6
 h    5 ho7         6 xxoc6         1 dih7
  Variables
hc2           1.100000
hc3           1.100000
hch3        109.500
dih4        120.000
oc5           1.400000
och5        109.500
dih5       -120.000
dih6        180.000
ho7           0.950000
  Constants
xxo6          1.000000
xxoc6        90.000
dih7        180.000

Lo que le dará de nuevo el siguiente conjunto de parámetros:

       hc2         1.1209
       hc3         1.1211
      hch3       106.3981
      dih4       113.09  
       oc5         1.3644
      och5       112.3772
      dih5      -123.4351
      dih6       180.0   
       ho7         0.9465
      xxo6         1.0   
      xxoc6       90.0   
      dih7       180.0   

Y las siguientes coordenadas cartesianas:

    6
scf done:  -115.581115
 C     0.000000     0.000000     0.000000
 H     0.000000     0.000000     1.120932
 H     1.075500     0.000000    -0.316498
 H    -0.421786    -0.989342    -0.316498
 O    -0.695163     1.052866    -0.519431
 H    -1.177401     1.783245    -0.879763

Fijación rápida y sucia con coordenadas cartesianas

Añadiendo -1 a un elemento de una fila en el bloque de coordenadas cartesianas lo arreglará. Este es un enfoque muy rápido y sucio, que puede llevar a un cálculo de fuerza bruta. Básicamente estás restringiendo el algoritmo para rotar la molécula, lo que lleva a cálculos menos efectivos. Fijar las coordenadas cartesianas también fija la longitud del enlace, pero es la única manera de forzar un ángulo de 180 grados con esta elección de entrada. Aquí hay un ejemplo de entrada:

%chk=bp86svp.chk
#p BP86/def2SVP/W06
DenFit
popt
int(ultrafinegrid)
symm(loose)

title card required

0 1
 C  -1    0.000000     0.000000     0.000000
 H        0.000000     0.000000     1.300000
 H        1.221600     0.000000    -0.444626
 H       -0.479083    -1.123738    -0.444626
 O  -1   -0.695162     1.052869    -0.519426
 H  -1   -1.177400     1.783250    -0.879755

El resultado será la siguiente geometría optimizada:

    6
scf done:  -115.581115
 C    -0.663620    -0.000005     0.000000
 H    -1.090591     0.003267    -1.036538
 H    -1.090556     0.896080     0.521076
 H    -1.090648    -0.899281     0.515456
 O     0.700780    -0.000004     0.000001
 H     1.647272    -0.000004     0.000001

Tenga en cuenta que este cálculo tarda unas cinco veces más.

Fijación de parámetros con modredundant

Esta opción se describe de forma bastante sencilla en el Manual en línea de Gaussian . Pero hagamos un ejemplo en el que intentemos restringir el ángulo COH a 90 grados.

%chk=bp86svp.chk
#p BP86/def2SVP/W06
DenFit
opt(modredundant)
int(ultrafinegrid)

title card required

0 1
 C     0.000000     0.000000     0.000000
 O    -0.659966     1.143095    -0.466667
 H    -0.000000     0.000000     1.089000
 H     1.026720     0.000002    -0.362997
 H    -0.513360    -0.889165    -0.363000
 H    -0.502133     0.869719    -1.359507

A 5 6 1 F

Con esta opción es imposible fijar el ángulo a 180 grados, ya que éste no es un valor permitido. Tampoco puede utilizar átomos ficticios, ya que éstos no existen en el sistema de coordenadas redundante. Puede ser una buena idea, matar esta variable completamente, para asegurar que el programa no fallará tratando de construirla, o cuando una optimización se acerque a ese valor.

También se puede restringir el ángulo mediante una curva lineal. Esta es la mejor opción, si se sabe que el ángulo es de 180,0 grados.

%chk=bp86svp.chk
#p BP86/def2SVP/W06
DenFit
opt(Modredundant)
int(ultrafinegrid)
sym(none)

title card required

0 1
C        0.000000000      0.000000000      0.736983516
H        1.037151577      0.000000000      1.103476471
H       -0.518575789     -0.898199613      1.103476471
H       -0.518575789      0.898199613      1.103476471
O        0.000000000      0.000000000     -0.663016475
H        0.000000000      0.000000000     -1.563016262

L 1 5 6 2 F

La última línea congela el ángulo lineal entre los átomos 1, 5 y 6. Es necesario especificar el átomo 2 para determinar el plano en el que se encuentra la curva lineal, o es ortogonal a ella.

Fijación de ángulos lineales con coordenadas internas generales (GIC)

Con Gaussian 16 se introdujo una nueva forma de manejar el sistema de coordenadas: coordenadas internas generalizadas . En muchos aspectos es superior a las versiones anteriores, pero también es un poco más difícil de aprender. No obstante, merece la pena probarlo.

Este es un ejemplo de entrada de oxoketeno $\ce{O=C=C=O}$ . En este caso he especificado el conjunto completo de coordenadas necesarias.

#p PM6
opt geom(AddGIC)
scf(xqc,MaxCycle=250)
int(ultrafinegrid)
symmetry(none)

Oxoketene (constrained)

0 1
O        0.000000000      0.000000000     -2.210000000
C        0.000000000      0.000000000     -0.770000000
C        0.000000000      0.000000000      0.770000000
O        0.000000000      0.000000000      2.210000000

BondC1O1(Active)=R(2,1)
BondC2O2(Active)=R(3,4)
BondC1C2(Active)=R(2,3)
LinBend1O1C1C2(Freeze)=L(1,2,3,0,-1)
LinBend2O1C1C2(Freeze)=L(1,2,3,0,-2)
LinBend1C1C2O2(Freeze)=L(2,3,4,0,-1)
LinBend2C1C2O2(Freeze)=L(2,3,4,0,-2)

El formato es

L(     i,      j,      k,      l,                                 M)
L(Atom 1, Atom 2, Atom 3, <Atom 4 | Orthogonal to Plane>, component)

Por lo tanto, la curva lineal se define entre i , j , k como Atom 1 , Atom 2 , Atom 3 y no deben ser átomos ficticios (y con GIC éstos ya casi no son necesarios). El cuarto valor l puede ser otro átomo para determinar la ortogonalidad/plano a, o puede definirse como un plano donde l = 0, -1, -2, -3 de pie para el automático, $yz$ , $xz$ , $xy$ respectivamente. El último valor M da el componente, de los cuales dos son necesarios, y debe ser M = -1, -2 .

El ejemplo del metanol es el siguiente:

#p PM6
DenFit
opt(AddGIC)
int(ultrafinegrid)
sym(none)

title card required

0 1
C        0.000000000      0.000000000      0.736983516
H        1.037151577      0.000000000      1.103476471
H       -0.518575789     -0.898199613      1.103476471
H       -0.518575789      0.898199613      1.103476471
O        0.000000000      0.000000000     -0.663016475
H        0.000000000      0.000000000     -1.563016262

L(1, 5, 6, 2, -1) Freeze
L(1, 5, 6, 2, -2) Freeze

3voto

Sergey Puntos 391

Como se ha mencionado, la entrada de la matriz Z es una solución. También puede restringir el ángulo (y otros vairable) de las estructuras cartesianas utilizando opt(ModRedundant) Manual gaussiano

Si su problema está relacionado con la simetría, debe tener cuidado con otras dos cosas:

  • ¿Impone una simetría (probablemente incorrecta)? Gaussian puede recoger una simetría incorrecta debido a una mala geometría de entrada. Puede comprobarlo desde su archivo de salida, y ver a qué simetría está restringido. Puede desactivar la simetría (tanto para la optimización como para la parte SCF) o puede modificar su entrada para que Gaussian pueda encontrar la simetría correcta.

  • ¿Tienes el método correcto para representar tu función de onda? A menudo nos encontramos con el error de que utilizamos un método de un solo determinante para un problema multideterminante o no nos damos cuenta de la presencia del efecto Jahn-Teller estático o dinámico. Si su estructura es muy diferente de la esperada, puede tener este problema.

Sobre la pregunta relacionada: No que yo sepa, pero en general no tiene mucho sentido de todos modos. Si quieres fijar, por ejemplo, el ángulo HOH en el agua entre 80 y 90 grados, será 90 de todos modos - lo mismo que si lo fijas a 90 grados.

2voto

kathy Puntos 61

Gracias por todas las respuestas, me han ayudado mucho. Por cierto, todos los enlaces que se ha dado anteriormente se murió así que aquí está el nuevo enlace manual de Gauss para la matriz z: http://gaussian.com/zmat/

Generé mi archivo de matriz z utilizando el software Avagadro (desde el menú extensiones->> Gaussian) aquí está el enlace de descarga: https://sourceforge.net/projects/avogadro/files/latest/download Espero que le sirva a alguien.

0voto

no comprende Puntos 26

Creo que se puede lograr esto dando la entrada de la geometría en forma de matriz z, y utilizando las palabras clave "constantes" y "variables". Este page del manual de Gaussian 09 muestra en detalle cómo se pueden utilizar estas palabras clave.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X