Skip to main content
IBM Quantum Platform

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 ( ai†aia^\dagger_i a_i ). Dazu gehören der Konstantenausdruck (ein Produkt aus null Zahlenoperatoren), einzelne Zahlenoperatoren sowie Produkte höherer Ordnung wie beispielsweise ninj=ai†aj†ajain_i n_j = a^\dagger_i a^\dagger_j a_j a_i.

Tipp

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.

Vorsicht

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);
Anmerkung

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.
War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.