Condizioni per gli operatori
L'API C mette a disposizione varie funzioni per operare sui singoli termini di un operatore, suddividendoli in base alla loro struttura.
Raggruppamento
Si veda la sezione “Termini relativi agli operatori di gruppo”: consultare la struttura degli operatori per una spiegazione dettagliata delle funzionalità di questo modulo.
Assegnazione
Anziché affidarsi sempre all'utente per l'inserimento degli indici di gruppo, l'API C mette a disposizione una serie di funzioni che determinano automaticamente le informazioni relative al raggruppamento.
Rubrica 1 | Rubrica 2 |
|---|---|
qf_ferm_op_group_terms_by_electronic_structure() | Raggruppa i termini di un operatore in base alla loro struttura elettronica. |
Analisi
Gli indici di gruppo non hanno alcun significato intrinseco: indicano solo quali termini vanno raggruppati insieme, ma mai il motivo. Di conseguenza, nessuna funzione indica se un raggruppamento sia “corretto”. L'API C, invece, fornisce una serie di funzioni, ciascuna delle quali risponde a una domanda specifica e ben definita relativa a un raggruppamento esistente, in modo che un'ipotesi formulata da un utente a valle possa essere verificata in anticipo, anziché comportare un costo ad ogni chiamata. Poiché utilizzano rappresentazioni generiche degli operatori, sono documentate nella pagina dedicata alle funzioni di raggruppamento.
Filtro
L'API C fornisce una serie di funzioni che consentono di rimuovere da un operatore i termini che non contribuiscono in modo significativo al calcolo successivo.
Membri
Rubrica 1 | Rubrica 2 |
|---|---|
qf_ferm_op_filter_diagonal_terms() | Esclude i termini di un operatore che si trovano sulla diagonale. |
Ordinamento
L'API C fornisce funzioni che consentono di riordinare i termini di un operatore, sia secondo un ordine canonico indipendente dai coefficienti, sia in base all'indice di gruppo.
Gli indici di gruppo sono un'etichetta assegnata a ciascun termine che non fornisce alcuna indicazione sulla posizione di tali termini; pertanto, i termini di un gruppo sono in genere sparsi all'interno di un operatore. L'ordinamento per gruppi raggruppa ciascuno di essi in una sequenza contigua, il che consente di individuare qf_op_type_split_out_groups un gruppo richiesto tramite ricerca binaria anziché scansionare ogni termine.
Membri
Rubrica 1 | Rubrica 2 |
|---|---|
qf_ferm_op_canonical_order() | Riordina canonicamente i termini di un operatore fermionico. |
qf_maj_op_canonical_order() | Riordina canonicamente i termini di un operatore di Majorana. |
qf_edge_op_canonical_order() | Riordina canonicamente i termini di un operatore arco-vertice. |
qf_transfer_op_canonical_order() | Riordina canonicamente i termini di un operatore di trasferimento di vertici. |
qf_ferm_op_group_order() | Riordina i termini di un operatore fermionico in base all'indice di gruppo. |
qf_maj_op_group_order() | Riordina i termini di un operatore di Majorana in base all’indice di gruppo. |
qf_edge_op_group_order() | Riordina i termini di un operatore bordo-vertice in base all'indice di gruppo. |
qf_transfer_op_group_order() | Riordina i termini di un operatore di trasferimento di vertici in base all'indice di gruppo. |