Option to project n-site terms onto the conserved sector instead of refusing them

Aperta
#274 0 commenti 0 reazioni 1 assegnatario Vedi su GitHub

I maintainer di solito rispondono entro 3 giorni

@marcusr2ML ci sta già lavorando.

Dal 30/10/2026.

Valutazione

Questa issue non è ancora stata valutata.

Descrizione

area:dmrg area:ed enhancement

fulldiag, sparsediag and dmrg refuse an <NSITETERM> that changes the total of a quantum number in CONSERVED_QUANTUMNUMBERS. That catches mistakes in hand-written models. For a generated Hamiltonian (e.g. one built from integrals or by a script), the user may instead want the Hamiltonian projected onto the chosen sector.

The projection only needs the existing check. The term is split into products of site operators, and each product has a definite change in each quantum number (nsite_matrix::nonconserved). With P the projector onto the sector fixed by CONSERVED_QUANTUMNUMBERS and the *_total values, a product that changes a conserved total maps the sector out of itself, so P T P = 0. So P H P is H with those products dropped.

Proposal:

  • A parameter (name to be decided, e.g. PROJECT_NSITE_TERMS=1) under which a product that changes a conserved quantum number is dropped instead of refused.
  • Print one note naming the quantum number and the number of products dropped, so a model bug doesn't pass silently.
  • Behave the same in fulldiag, sparsediag and dmrg.
  • Unchanged: a product that changes a quantum number not in CONSERVED_QUANTUMNUMBERS is still refused in dmrg (#263). With no sector fixed there is nothing to project onto, and dropping the product would change the model.
  • Tests: an ED and a dmrg case where the projected result matches a model written without the dropped products.
Lingua principale
C++
Stelle
32
Fork
10
Merge medio
4g 6h
PR unite (30g)
51

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di ALPSim/ALPS

Tutte le issue di ALPSim/ALPS

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.