9 votos

El orden de las columnas, los signos de MO coeficientes y de la matriz de densidad de construcción en Hartree-Fock

Estoy tratando de hacer un Hartree-Fock solver, usando Python, siguiendo Daniel Crawford guía.

He tenido éxito con los primeros cuatro pasos. Sin embargo, estoy teniendo algunos problemas con esta parte en el paso 5:

$$ F^0_c C^{'}_0 = C^{'}_0 \epsilon_0 $$

I have the correct transformed Fock matrix (I can verify this as the site as step-by-step matrices that you can check against). My problem is that the MO coefficient matrix I get does not quite match the one on the site. I obtain it by multiplying the above equation by $C^{' -1}_0$ on the right:

$$ F^0_c = C^{'}_0 \epsilon_0 C^{' -1}_0 $$

Now it's in diagonalized form, which means $C^{'}_0$, the transformed MO coefficients, is the eigenvectors of $F^0_c$ and $\epsilon_0$ is a diagonal matrix of the eigenvalues. After I obtain $C^{'}_0$, I obtain the original untransformed MO coefficients $C_0$ using the next equation on the site:

$$ C_0 = S^{-1/2} C^{'}_0 $$

where $S^{-1/2}$ is the transformation matrix used to get the transformed Fock matrix from earlier. My transformation matrix, by the way, matches exactly the one on the site.

This is where my problem comes in. The $C_0$ matrix I get is this:

my Cij

The one the website has as a reference is this:

reference Cij

If you look carefully, you will notice that mine and the reference one have the same columns; however, some are swapped around, and some have sign flips. This causes problems with the next steps, such as finding the density matrix.

I thought maybe the order should be such that $\epsilon_0$ is in order. The $\epsilon_0$ matrix I get is indeed out of order, and the same permutations and sign flips that will make it in order also makes my $C_0$ match the reference one in terms of where each column is, but NOT sign. Sadly the reference site does not have a $\epsilon_0$ matrix or $C{'}_0$ for me to compare with, only the final $C_0$, so I'm not sure if those are coming out of order also.

My first question is, will these sign flips matter? Is ordering the $C_0$ matrix in terms of getting $\epsilon_0$ the right thing to do?

I am carrying out these matrix operations with basic NumPy functions such as numpy.linalg.eig and numpy.dot. Nothing fancy there. It's worth noting that finding the transformation matrix, $S^{-1/2}$, requires diagonalizing in a similar way, but I didn't have any column switching problems there. It came out exactly as expected.

My second question relates to building the density matrix at the end of step 5. The website has this equation:

$$ D^0_{\mu\nu} = \sum_{m}^{oc} (C_0)^m_\mu (C_0)^m_\nu $$

It says sum over the occupied MOs. The molecule being used in the example calculation is water, so two H's, and one O, so there are 10 electrons, so 5 orbitals. If I sum using the correct $C_0$ matrix I get on the reference website, from m = 1 to 5, I get the correct $D^0_{\mu\nu}$ result. However my textbook (Szabo and Ostlund, Modern Quantum Chemistry) has this equation (changing some of the notation to match):

$$ D^0_{\mu\nu} = 2 \sum_{m}^{N/2} (C_0)^m_\mu (C_0)^m_\nu $$

Donde N es el número de electrones. Bueno, 10/5 es 5, así que me voy a sumar de 1 a 5, de nuevo, pero ahora hay un 2 en la parte delantera, por lo que la suma será doble. Ahora, usando la una en la web me pone la respuesta correcta, pero ¿podría este 2 en el libro significa?

7voto

Adam Haile Puntos 12576

En el futuro, este debería ser en realidad dos cuestiones distintas, pero voy a tratar y abordar tanto.

MO coeficiente de la columna de ordenación y signos

La energía electrónica es invariante a orbital de intercambio dentro de los subespacios. Si la intersección de un orbital ocupado con otro, la energía total de un moleculares no va a cambiar. Lo mismo va para virtual-virtual. Ahora, usted sabe que la MO coeficientes son por convención en forma de $C_{\mu i}$, donde las filas son las denominaciones de origen y las columnas son los MOs. Lo que esto significa es que para $\ce{H2O}$ STO-3G de la base, donde hay 7 AOs formando 7 MOs donde 5 son doblemente ocupados y 2 desocupado, cambiar el orden de los primeros 5 columnas no debe cambiar la energía electrónica. Lo mismo va para la final de 2 columnas.

Como usted dice, el $\epsilon_i$ siga el mismo orden que las columnas de a $C_{\mu i}$; esto se debe a que la coincidencia de valores y vectores propios de diagonalizing el operador de Fock. Los vectores propios son no van a verse afectados por un cambio de signo, que no cambiar la forma en que se vincula el espacio.

Respecto a por qué el orden no es lo que esperabas, no hay ninguna garantía de NumPy o el subyacente LAPACK rutina DGEEV que los resultados serán ordenados, sólo que el vector/pares de valores en el mismo orden. Si desea ordenar los resultados, usted puede utilizar argsort:

idx = energies.argsort()
energies = energies[idx]
eigvecs = eigvecs[:, idx]

Asegúrese de que el orden de los MO energías se mantiene a lo largo de con el orden de la MO coeficiente de la matriz de columnas.

La construcción de la matriz de densidad

Este es un muy irritante diferencia en la convención, entre muchas fuentes. Ver más adelante, para calcular la parte electrónica del momento dipolar:

$$ \left<\vec{\mu}\right> = 2 \sum_{\mu\nu} D_{\mu\nu} \left< \phi_{\mu} | \hat{\mu} | \phi_{\nu} \right>, $$ ...

  1. El factor 2 que aparecen por encima surge debido a que la definición de la densidad utilizada en este proyecto difiere de la utilizada en Szabo & Ostlund.

Esto también puede tener un efecto sobre si existe o no un 1/2 en la parte delantera de la $2J - K$ parte de el operador de Fock.

4voto

Sonic Lee Puntos 253

Para tu primera pregunta: ya que (si $A x = \lambda x$)

$$A (- x) = - A x = - (\lambda x) = \lambda (- x)\text{,}$$

un autovalor con signo volcó aún es un autovalor. (De hecho, en álgebra lineal, cualquier multiplicativo constante estaría bien, pero ya que estamos interesados en la cantidad normalizada de los estados esto se reduce a $\pm 1$).

Así que no hay problema que no coincidan con los signos.

Para tu segunda pregunta: estás mezclando cosas. Su primera ecuación sumas

$$\sum_m^{occ}$$

lo que significa que de 10 términos en su caso. Dado que todos los $\alpha$ spin-orbital contribuye la misma que la de otra espacialmente coincidencia de $\beta$ spin-orbital, al final sumar 10 términos en que cada una de las dos son numéricamente la misma.

Su segunda ecuación sumas

$$2 \sum_m^{N/2}$$

que simplemente esto se evita la doble contabilización: suma 5 términos, cada uno siendo dos veces los valores de la última suma.

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