FCIDump
QfFCIDump
struct QfFCIDump
Un hamiltoniano de estructura electrónica en formato FCIDump.
Definición
El formato FCIDump fue definido originalmente por Knowles y Handy en 1989 [1]. Es un formato muy extendido para exportar hamiltonianos de estructura electrónica en un archivo de texto sin formato.
La estructura de datos actual solo almacena la información relevante para construir el operador de segunda cuantización. Sin embargo, esta implementación va más allá de la definición original, ya que permite cargar datos de espín sin restricciones. La tabla siguiente resume cómo se asocian las integrales con las especies de espín en función de los intervalos en los que se encuentran los índices (suponiendo un encabezado con NORB=n):
Tipo integral | i | j | k | l |
|---|---|---|---|---|
| Constante | ||||
| alfa de 1 cuerpo | ||||
| beta de 1 cuerpo | ||||
| Alfa-alfa de dos cuerpos | ||||
| Alfa-beta de dos cuerpos | ||||
| beta-beta de dos cuerpos |
Los únicos valores obligatorios son las integrales de espín alfa de un cuerpo.
[ 1 ]
-
- Knowles y N. C. Handy, «Computer Physics Communications», vol. 54 (1989), págs. 75-83.
Miembros
qf_fcidump_from_file
QfFCIDump *qf_fcidump_from_file(char *file_path)
Analiza un archivo FCIDump.
Ejemplo
Suponiendo que tengas un archivo FCIDump llamado molecule.fcidump, esta función se utiliza de la siguiente manera:
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");Parámetros
- file_path – La ruta al archivo FCIDump.
Devuelve
Un puntero a la estructura de datos FCIDump.
qf_fcidump_free
void qf_fcidump_free(QfFCIDump *fcidump)
Libera una estructura de datos FCIDump ya existente.
Ejemplo
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2qf_fcidump_free(fcidump);Parámetros
- fcidump – Un puntero a la estructura de datos FCIDump que se va a liberar.
qf_fcidump_norb
uint32_t qf_fcidump_norb(const QfFCIDump *fcidump)
Obtiene el número de orbitales a partir de un FCIDump.
Este número, , se extrae del campo NORB=n de la cabecera del archivo FCIDump.
Ejemplo
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2uint32_t norb = qf_fcidump_norb(fcidump);Parámetros
- fcidump – Un puntero a la estructura de datos FCIDump que se va a liberar.
Devuelve
El número de orbitales.
qf_fcidump_nelec
uint32_t qf_fcidump_nelec(const QfFCIDump *fcidump)
Obtiene el número de electrones a partir de un FCIDump.
Este número, , se extrae del campo NELEC=n de la cabecera del archivo FCIDump.
Ejemplo
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2uint32_t nelec = qf_fcidump_nelec(fcidump);Parámetros
- fcidump – Un puntero a la estructura de datos FCIDump que se va a liberar.
Devuelve
El número de electrones.
qf_fcidump_ms2
uint32_t qf_fcidump_ms2(const QfFCIDump *fcidump)
Obtiene el número cuántico de espín a partir de un FCIDump.
Este número, , se extrae del campo MS2=S de la cabecera del archivo FCIDump.
Ejemplo
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2uint32_t ms2 = qf_fcidump_ms2(fcidump);Parámetros
- fcidump – Un puntero a la estructura de datos FCIDump que se va a liberar.
Devuelve
El número cuántico de espín (multiplicado por 2 para garantizar que el resultado sea un número entero).
Conversión
Las representaciones de operadores que pueden construirse a partir de una instancia de QfFCIDump proporcionan una función qf_*_from_fcidump :
qf_ferm_op_from_fcidump
QfFermionOperator *qf_ferm_op_from_fcidump(const QfFCIDump *fcidump)
Crea una :c:struct:QfFermionOperator a partir de una :c:structQfFCIDump:.
Ejemplo
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2QfFermionOperator *op = qf_ferm_op_from_fcidump(fcidump);Parámetros
- fcidump : un puntero a la estructura de datos FCIDump.
Devuelve
Un puntero al operador creado.