Funzioni di filtraggio
qf_ferm_op_filter_diagonal_terms
void qf_ferm_op_filter_diagonal_terms(QfFermionOperator *op)
Esclude i termini di un operatore che sono diagonali nella base dei numeri di occupazione.
In questo modo vengono rimossi tutti i termini dall'espressione fornita QfFermionOperator che siano un prodotto di operatori numerici ( ). Ciò include il termine costante (un prodotto di zero operatori numerici), i singoli operatori numerici, nonché i prodotti di ordine superiore come .
Una delle ragioni principali per filtrare tali termini emerge nel corso dell'evoluzione temporale degli operatori, dove tali termini diagonali non influenzano l'evoluzione temporale se non introducendo una fase globale. Di conseguenza, le stringhe di bit campionate da uno stato che ha subito un’evoluzione temporale non subiscono alcuna variazione. Si raccomanda quindi di rimuoverli, ad esempio quando si prepara un hamiltoniano della struttura elettronica per l’evoluzione temporale qDRIFT utilizzata da SqDRIFT,, poiché ciò evita un sovraccarico di campionamento altrimenti superfluo.
L'operatore fornito deve essere ordinato secondo l'ordine normale! Si tratta di un presupposto fondamentale dell'implementazione che non viene verificato! Vedi qf_ferm_op_normal_ordered() per sapere come ottenere un operatore di quella forma.
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2QfFermionOperator *op = qf_ferm_op_from_fcidump(fcidump);
3
4QfFermionOperator *normal = qf_ferm_op_normal_ordered(op, NULL);
5
6qf_ferm_op_filter_diagonal_terms(normal);L'operatore viene modificato direttamente. Se tiene traccia degli indici di gruppo (vedi qf_ferm_op_get_groups()), i termini rimanenti mantengono il loro raggruppamento relativo, ma gli indici di gruppo vengono riassegnati a un intervallo contiguo a partire da 0. Non bisogna quindi fare affidamento sul fatto che l'indice specifico di gruppo di un termine venga mantenuto durante l'esecuzione di questa funzione.
Parametri
- op – Un puntatore all’operatore fermionico ordinato normalmente i cui termini devono essere filtrati (modificati in loco).