Skip to main content
IBM Quantum Platform

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.

Attenzione

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

H=ijcijaiaj+ijklcijklaiajakal,\mathcal{H} = \sum_{ij} c_{ij} a^\dagger_i a_j + \sum_{ijkl} c_{ijkl} a^\dagger_i a^\dagger_j a_k a_l \, ,

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.

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.