Filterfunktionen
qf_ferm_op_filter_diagonal_terms
void qf_ferm_op_filter_diagonal_terms(QfFermionOperator *op)
Filtert die Terme eines Operators heraus, die in der Besetzungszahlbasis diagonal sind.
Dadurch werden alle Terme aus dem angegebenen Ausdruck entfernt, QfFermionOperator die ein Produkt von Zahlenoperatoren sind ( ). Dazu gehören der Konstantenausdruck (ein Produkt aus null Zahlenoperatoren), einzelne Zahlenoperatoren sowie Produkte höherer Ordnung wie beispielsweise .
Ein wichtiger Grund für das Herausfiltern solcher Terme ergibt sich im Rahmen der Zeitentwicklung von Operatoren, bei der solche Diagonalterme – abgesehen von der Einführung einer globalen Phase – keinen Einfluss auf die Zeitentwicklung haben. Folglich bleiben Bitstrings, die aus einem zeitlich entwickelten Zustand entnommen wurden, davon unberührt. Es wird daher empfohlen, diese zu entfernen, beispielsweise bei der Erstellung eines Hamilton-Operators für die Elektronenstruktur im Rahmen der von SqDRIFT, verwendeten Zeitentwicklung „ qDRIFT “, da dadurch ein ansonsten unnötiger Abtast-Overhead vermieden wird.
Der angegebene Operator muss normal geordnet sein! Dies ist eine Grundannahme der Implementierung, die nicht überprüft wird! Siehe qf_ferm_op_normal_ordered() für eine Anleitung, wie man einen Operator dieser Form erhält.
1QfFCIDump *fcidump = NULL;
2qf_fcidump_from_file("molecule.fcidump", &fcidump);
3QfFermionOperator *op = qf_ferm_op_from_fcidump(fcidump);
4
5QfFermionOperator *normal = qf_ferm_op_normal_ordered(op, NULL);
6
7qf_ferm_op_filter_diagonal_terms(normal);Der Operator wird an Ort und Stelle geändert. Wenn Gruppenindizes nachverfolgt werden (siehe qf_ferm_op_get_groups()), behalten die verbleibenden Terme ihre relative Gruppierung bei, die Gruppenindizes werden jedoch einem zusammenhängenden Bereich neu zugewiesen, der bei 0 beginnt. Sie dürfen sich daher nicht darauf verlassen, dass der spezifische Gruppenindex eines Begriffs bei einem Aufruf dieser Funktion beibehalten wird.
Parameter
- op – Ein Zeiger auf den normalgeordneten fermionischen Operator, dessen Terme gefiltert (an Ort und Stelle modifiziert) werden sollen.