gutzwiller
Tools for Gutzwiller projecting MPS to a smaller on-site Hilbert space.
Gutzwiller projection from Abrikosov fermions to a spin-1/2 Hilbert space. |
- temfpy.gutzwiller.abrikosov_ph(mps, *, inplace=False, return_canonical=True, cutoff=1e-12)[source]
Gutzwiller projection from Abrikosov fermions to a spin-1/2 Hilbert space.
The input MPS is assumed to describe Abrikosov fermions, with the down spins particle-hole transformed; i.e.:
\[c_{i,\uparrow} := f_{i,\uparrow}, \qquad \qquad c_{i,\downarrow} := f_{i,\downarrow}^\dagger.\]Therefore, it must contain an even number of spinless fermion sites: sites \(2i\) and \(2i+1\) represent modes \(c_{i\uparrow}\) and \(c_{i\downarrow}\), respectively. These pairs are projected to a spin-1/2 Hilbert space using the following rules:
Zero occupation → spin-down state
Single occupation → unphysical states, dropped
Double occupation → spin-up state
Therefore, depending on the conserved charge of the input MPS, only the following charge blocks of the virtual legs are kept:
'N'(particle number) → even'N'blocks →'S_z'conserved'parity'→ even'parity'blocks → no conserved charge
- Parameters:
mps (
MPS) – MPS representing the wave function to be projected. Must be of even length and every site must be an instance ofFermionSite.inplace (
bool) – Whether to transform the original MPS in place.return_canonical (
bool) – Whether to transform the output MPS to right canonical form.cutoff (
float) – Cutoff for Schmidt values to keep in the canonical form.
- Return type:
- Returns:
The Gutzwiller projected
mps, ifinplaceisFalse.
Note
Currently, no symmetry quantum numbers other than fermion number or parity can be handled.