Condiciones del operador
Este módulo reúne rutinas que actúan sobre los términos individuales de un operador, dividiéndolos en función de su estructura. Los submódulos que figuran a continuación agrupan funcionalidades relacionadas.
Agrupación
Consulta las condiciones del operador de grupo: utiliza la estructura del operador para obtener una explicación detallada del funcionamiento de este módulo.
Asignación
En lugar de depender siempre de que el usuario introduzca los índices de grupo por sí mismo, este módulo ofrece un conjunto de funciones que determinan la información de agrupación de forma automática.
Columna « 1 » | Columna « 2 » |
|---|---|
group_terms_by_electronic_structure(op,...) | Agrupa los términos de un operador según su estructura electrónica. |
Análisis
Los índices de grupo no tienen ningún significado intrínseco: la matriz solo indica qué términos van juntos, pero nunca por qué. Por lo tanto, ninguna de las funciones que se indican a continuación indica si una agrupación es «correcta»: cada una responde a una pregunta concreta y específica sobre una agrupación existente, dejando la interpretación en tus manos. Se proporcionan para que se pueda comprobar de antemano una suposición que hace un consumidor posterior sobre una agrupación, en lugar de tener que pagar por ello en cada llamada.
Columna « 1 » | Columna « 2 » |
|---|---|
group_coeff_means(op) | Devuelve la media de la magnitud absoluta del coeficiente de cada grupo. |
groups_are_hermitian(op, *[, atol]) | Indica, para cada grupo, si el operador formado por los elementos de ese grupo es hermitiano. |
groups_have_uniform_coeffs(op, *[, atol, abs]) | Devuelve, para cada grupo, si todos sus coeficientes son numéricamente iguales. |
Filtrado
Este módulo ofrece funciones prácticas para eliminar de un operador aquellos términos que no contribuyen de manera significativa al cálculo posterior.
Miembros
Columna « 1 » | Columna « 2 » |
|---|---|
filter_diagonal_terms(op) | Filtra los términos de un operador que son diagonales en la base de números de ocupación. |
Ordenación
Este módulo ofrece funciones para reordenar los términos de un operador. Aunque los operadores resultantes son matemáticamente idénticos, el orden de los términos puede tener implicaciones significativas en el comportamiento del algoritmo en tiempo de ejecución, debido al orden de iteración de los términos.
Los índices de grupo son una etiqueta por término que no indica en qué parte se encuentran dichos términos, por lo que los términos de un grupo suelen estar dispersos a lo largo de un operador. group_order() agrupa cada grupo en una secuencia contigua, lo que permite localizar split_out_groups() un grupo solicitado mediante búsqueda binaria, en lugar de tener que examinar todos los términos.
A diferencia de canonical_order(), no order_terms() tiene equivalente en la API de C.
Miembros
Columna « 1 » | Columna « 2 » |
|---|---|
canonical_order(op) | Devuelve una copia de un operador con sus términos ordenados según un orden canónico. |
group_order(op) | Devuelve una copia de un operador con sus términos ordenados por índice de grupo. |
order_terms(op, clave, *[, inverso] ) | Devuelve una copia de un operador cuyos términos se han reordenado según una clave proporcionada por el usuario. |