group_terms_by_electronic_structure
group_terms_by_electronic_structure(op, num_modes, *, two_body_physicist_order=False)
Raggruppa i termini di un operatore in base alla loro struttura elettronica.
Questa funzione popola automaticamente l'attributo groups del fornito in modo tale FermionOperator che i termini che soddisfano una perturbazione simmetrica presente negli hamiltoniani della struttura elettronica vengano raggruppati.
L'operatore fornito deve essere ordinato secondo l'ordine normale! Si tratta di un presupposto di fondo dell'implementazione che non viene verificato! Vedi normal_ordered() per sapere come ottenere un operatore di quella forma.
Più concretamente, dato un hamiltoniano della struttura elettronica della forma
questa funzione raggrupperà i termini a un corpo con simmetria permutazionale di (i, j) nonché i termini a due corpi con simmetria permutazionale di (i, j, k, l). Per quanto riguarda i termini a due corpi, non tutte le permutazioni saranno raggruppate. Al contrario, il determina two_body_physicist_order il modo in cui i quattro indici vengono raggruppati in coppie all’interno delle quali esistono simmetrie permutazionali:
two_body_physicist_order=False(impostazione predefinita):(i, l)e(j, k)two_body_physicist_order=True: e(i, k)(j, l)
from qiskit_fermions.operators import FermionOperator
from qiskit_fermions.operators.library import FCIDump
fcidump = FCIDump.from_file("molecule.fcidump")
operator = FermionOperator.from_fcidump(fcidump)
normal = op.normal_ordered().simplify(atol=0.0)
group_terms_by_electronic_structure(normal, 2 * fcidump.norb, two_body_physicist_order=False)
assert normal.has_groups()Parametri
- op – l'operatore con ordinamento normale i cui termini devono essere raggruppati.
- num_modes – il numero di modi fermionici privi di spin presenti nel sistema.
- two_body_physicist_order – indica se i termini a due corpi sono memorizzati nell'ordine dei fisici.
Aumenti
ValueError – nel caso in cui si incontri un termine inaspettato.