Funciones de filtrado
qf_ferm_op_filter_diagonal_terms
void qf_ferm_op_filter_diagonal_terms(QfFermionOperator *op)
Filtra los términos de un operador que son diagonales en la base de números de ocupación.
Esto elimina todos los términos de la expresión proporcionada que QfFermionOperator sean un producto de operadores numéricos ( ). Esto incluye el término constante (un producto de cero operadores numéricos), los operadores numéricos simples, así como los productos de orden superior, como .
Una de las principales razones para filtrar dichos términos surge durante la evolución temporal de los operadores, en la que dichos términos diagonales no afectan a la evolución temporal, salvo por la introducción de una fase global. Por consiguiente, las cadenas de bits muestreadas a partir de un estado que ha evolucionado con el tiempo no se ven afectadas. Por lo tanto, se recomienda eliminarlos, por ejemplo, al preparar un hamiltoniano de estructura electrónica para la evolución temporal « qDRIFT » utilizada por SqDRIFT,, ya que así se evita una sobrecarga de muestreo que, de otro modo, sería innecesaria.
¡El operador proporcionado debe estar ordenado de forma normal! ¡Se trata de una suposición subyacente de la implementación que no se está verificando! Consulta qf_ferm_op_normal_ordered() aquí cómo obtener un operador de esa 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);El operador se modifica in situ. Si se tienen en cuenta los índices de grupo (véase qf_ferm_op_get_groups()), los términos que se conservan mantienen su agrupación relativa, pero los índices de grupo se reasignan a un intervalo contiguo que comienza en 0. Por lo tanto, no debes dar por sentado que el índice de grupo específico de ningún término se mantenga durante la llamada a esta función.
Parámetros
- op – Un puntero al operador fermiónico ordenado normalmente cuyos términos se van a filtrar (modificar in situ).