Conditions d'utilisation de l'opérateur
Ce module regroupe des routines qui agissent sur les termes individuels d'un opérateur, en les classant en fonction de leur structure. Les sous-modules ci-dessous regroupent des fonctionnalités connexes.
Regroupement
Veuillez vous reporter aux conditions d'utilisation des opérateurs de groupe : utilisez la structure des opérateurs pour obtenir une explication détaillée des fonctionnalités de ce module.
Affectation
Plutôt que de toujours compter sur l'utilisateur pour fournir lui-même les indices de groupe, ce module propose un ensemble de fonctions qui déterminent automatiquement les informations de regroupement.
Chronique « 1 » | Chronique « 2 » |
|---|---|
group_terms_by_electronic_structure(op,...) | Regroupe les termes d'un opérateur en fonction de leur structure électronique. |
Analyse
Les indices de groupe n'ont aucune signification intrinsèque : le tableau indique uniquement quels termes vont ensemble, jamais pourquoi. Par conséquent, aucune des fonctions ci-dessous n'indique si un regroupement est « correct » : chacune répond à une question précise et bien définie concernant un regroupement existant, vous laissant le soin d'en tirer vos propres conclusions. Ils sont fournis afin de permettre de vérifier dès le départ une hypothèse formulée par un consommateur en aval concernant un regroupement, plutôt que d'avoir à payer pour cela à chaque appel.
Chronique « 1 » | Chronique « 2 » |
|---|---|
group_coeff_means(op) | Renvoie la moyenne de l'amplitude absolue des coefficients de chaque groupe. |
groups_are_hermitian(op, *[, atol]) | Indique, pour chaque groupe, si l'opérateur formé par les éléments de ce groupe est hermitien. |
groups_have_uniform_coeffs(op, *[, atol, abs]) | Renvoie, pour chaque groupe, si tous ses coefficients sont numériquement égaux. |
Filtrage
Ce module fournit des fonctions pratiques permettant de supprimer d'un opérateur les termes qui ne contribuent pas de manière significative au calcul en aval.
Membres
Chronique « 1 » | Chronique « 2 » |
|---|---|
filter_diagonal_terms(op) | Élimine les termes d'un opérateur qui sont diagonaux dans la base des nombres d'occupation. |
Ordre
Ce module fournit des fonctions permettant de réorganiser les termes d'un opérateur. Bien que les opérateurs ainsi obtenus soient mathématiquement identiques, l'ordre des termes peut avoir des implications importantes sur le comportement de l'algorithme lors de l'exécution, en raison de l'ordre d'itération des termes.
Les indices de groupe sont des balises attribuées à chaque terme qui ne donnent aucune indication sur l'emplacement de ces termes; ainsi, les termes d'un même groupe sont généralement dispersés dans l'ensemble d'un opérateur. group_order() rassemble chaque groupe en une seule séquence contiguë, ce qui permet de localiser split_out_groups() un groupe recherché par recherche binaire plutôt que de parcourir chaque terme.
Contrairement à canonical_order(), n'a order_terms() pas d'équivalent dans l'API C.
Membres
Chronique « 1 » | Chronique « 2 » |
|---|---|
canonical_order(op) | Renvoie une copie d'un opérateur dont les termes sont classés selon un ordre canonique. |
group_order(op) | Renvoie une copie d'un opérateur dont les termes sont classés par indice de groupe. |
order_terms(op, clé, *[, inverse] ) | Renvoie une copie d'un opérateur dont les termes ont été réorganisés selon une clé fournie par l'utilisateur. |