FCIDump
QfFCIDump
struct QfFCIDump
Un hamiltoniano della struttura elettronica in formato FCIDump.
Definizione
Il formato FCIDump è stato originariamente definito da Knowles e Handy nel 1989 [1]. Si tratta di un formato molto diffuso per l'esportazione degli hamiltoniani della struttura elettronica in un file di testo semplice.
L'attuale struttura dei dati memorizza solo le informazioni rilevanti per la costruzione dell'operatore di seconda quantizzazione. Tuttavia, questa implementazione va oltre la definizione originale, in quanto consente il caricamento di dati di spin senza alcuna restrizione. La tabella seguente illustra come gli integrali siano associati alle specie di spin in base agli intervalli in cui ricadono gli indici (ipotizzando un’intestazione con NORB=n):
Tipo integrale | i | j | k | l |
|---|---|---|---|---|
| Costante | ||||
| alfa a 1 corpo | ||||
| beta a 1 corpo | ||||
| Alfa-alfa a due corpi | ||||
| Alfa-beta a due corpi | ||||
| beta-beta a due corpi |
Gli unici valori richiesti sono gli integrali di spin alfa a un corpo.
[ 1 ]
-
- Knowles e N. C. Handy, Computer Physics Communications 54 (1989) 75-83.
Membri
qf_fcidump_from_file
QfFCIDump *qf_fcidump_from_file(char *file_path)
Analizza un file FCIDump.
Esempio
Supponendo che tu abbia un file FCIDump denominato molecule.fcidump, puoi utilizzare questa funzione nel modo seguente:
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");Parametri
- file_path – Il percorso del file FCIDump.
Risultati
Un puntatore alla struttura dati FCIDump.
qf_fcidump_free
void qf_fcidump_free(QfFCIDump *fcidump)
Libera una struttura dati FCIDump esistente.
Esempio
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2qf_fcidump_free(fcidump);Parametri
- fcidump – Un puntatore alla struttura dati FCIDump da liberare.
qf_fcidump_norb
uint32_t qf_fcidump_norb(const QfFCIDump *fcidump)
Recupera il numero di orbitali da un FCIDump.
Questo numero, , è tratto dal campo NORB=n presente nell'intestazione del file FCIDump.
Esempio
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2uint32_t norb = qf_fcidump_norb(fcidump);Parametri
- fcidump – Un puntatore alla struttura dati FCIDump da liberare.
Risultati
Il numero di orbitali.
qf_fcidump_nelec
uint32_t qf_fcidump_nelec(const QfFCIDump *fcidump)
Recupera il numero di elettroni da un FCIDump.
Questo numero, , è tratto dal campo NELEC=n presente nell'intestazione del file FCIDump.
Esempio
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2uint32_t nelec = qf_fcidump_nelec(fcidump);Parametri
- fcidump – Un puntatore alla struttura dati FCIDump da liberare.
Risultati
Il numero di elettroni.
qf_fcidump_ms2
uint32_t qf_fcidump_ms2(const QfFCIDump *fcidump)
Recupera il numero quantico di spin da un FCIDump.
Questo numero, , è tratto dal campo MS2=S presente nell'intestazione del file FCIDump.
Esempio
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2uint32_t ms2 = qf_fcidump_ms2(fcidump);Parametri
- fcidump – Un puntatore alla struttura dati FCIDump da liberare.
Risultati
Il numero quantico di spin (moltiplicato per 2 per garantire che il valore sia intero).
Conversione
Le rappresentazioni dell’operatore che possono essere costruite a partire da un’istanza di forniscono QfFCIDump una funzione qf_*_from_fcidump :
qf_ferm_op_from_fcidump
QfFermionOperator *qf_ferm_op_from_fcidump(const QfFCIDump *fcidump)
Crea una :c:struct:QfFermionOperator a partire da una :c:structQfFCIDump:.
Esempio
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2QfFermionOperator *op = qf_ferm_op_from_fcidump(fcidump);Parametri
- fcidump – Un puntatore alla struttura dati FCIDump.
Risultati
Un puntatore all'operatore creato.