FCIDump
QfFCIDump
struct QfFCIDump
Un hamiltonien de structure électronique au format FCIDump.
Définition
Le format FCIDump a été défini à l'origine par Knowles et Handy, en 1989 [1]. Il s'agit d'un format très répandu permettant d'exporter les hamiltoniens de structure électronique dans un fichier au format texte brut.
La structure de données actuelle ne stocke que les informations nécessaires à la construction de l'opérateur de seconde quantification. Toutefois, cette implémentation va au-delà de la définition initiale, puisqu’elle permet de charger des données de spin sans aucune restriction. Le tableau ci-dessous présente la correspondance entre les intégrales et les espèces de spin en fonction des intervalles dans lesquels se situent les indices (en supposant un en-tête avec NORB=n) :
Type intégral | i | j | k | l |
|---|---|---|---|---|
| Constante | ||||
| alpha à un corps | ||||
| bêta à un corps | ||||
| alpha-alpha à deux corps | ||||
| alpha-bêta à deux corps | ||||
| β-β à deux corps |
Les seules valeurs requises sont les intégrales d'alpha-spin à un corps.
[ 1 ]
-
- Knowles et N. C. Handy, Computer Physics Communications 54 (1989), p. 75-83.
Membres
qf_fcidump_from_file
QfFCIDump *qf_fcidump_from_file(char *file_path)
Analyse un fichier FCIDump.
Exemple
En supposant que vous disposiez d'un fichier FCIDump nommé molecule.fcidump, vous utilisez cette fonction comme suit :
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");Paramètres
- file_path – Chemin d'accès au fichier FCIDump.
Retours
Un pointeur vers la structure de données FCIDump.
qf_fcidump_free
void qf_fcidump_free(QfFCIDump *fcidump)
Libère une structure de données FCIDump existante.
Exemple
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2qf_fcidump_free(fcidump);Paramètres
- fcidump – Un pointeur vers la structure de données FCIDump à libérer.
qf_fcidump_norb
uint32_t qf_fcidump_norb(const QfFCIDump *fcidump)
Récupère le nombre d'orbitales à partir d'un fichier FCIDump.
Ce numéro, , est extrait du champ NORB=n situé dans l'en-tête du fichier FCIDump.
Exemple
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2uint32_t norb = qf_fcidump_norb(fcidump);Paramètres
- fcidump – Un pointeur vers la structure de données FCIDump à libérer.
Retours
Le nombre d'orbitales.
qf_fcidump_nelec
uint32_t qf_fcidump_nelec(const QfFCIDump *fcidump)
Récupère le nombre d'électrons à partir d'un fichier FCIDump.
Ce numéro, , est extrait du champ NELEC=n situé dans l'en-tête du fichier FCIDump.
Exemple
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2uint32_t nelec = qf_fcidump_nelec(fcidump);Paramètres
- fcidump – Un pointeur vers la structure de données FCIDump à libérer.
Retours
Le nombre d'électrons.
qf_fcidump_ms2
uint32_t qf_fcidump_ms2(const QfFCIDump *fcidump)
Récupère le nombre quantique de spin à partir d'un fichier FCIDump.
Ce numéro, , est extrait du champ MS2=S situé dans l'en-tête du fichier FCIDump.
Exemple
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2uint32_t ms2 = qf_fcidump_ms2(fcidump);Paramètres
- fcidump – Un pointeur vers la structure de données FCIDump à libérer.
Retours
Le nombre quantique de spin (multiplié par 2 pour garantir une valeur entière).
Conversion
Les représentations d'opérateurs pouvant être construites à partir d'une instance de fournissent QfFCIDump une fonction qf_*_from_fcidump :
qf_ferm_op_from_fcidump
QfFermionOperator *qf_ferm_op_from_fcidump(const QfFCIDump *fcidump)
Crée une :c:struct:QfFermionOperator à partir d'une :c:structQfFCIDump:.
Exemple
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2QfFermionOperator *op = qf_ferm_op_from_fcidump(fcidump);Paramètres
- fcidump – Un pointeur vers la structure de données FCIDump.
Retours
Un pointeur vers l'opérateur créé.