gutzwiller

Tools for Gutzwiller projecting MPS to a smaller on-site Hilbert space.

abrikosov_ph

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 of FermionSite.

  • 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:

None | MPS

Returns:

The Gutzwiller projected mps, if inplace is False.

Note

Currently, no symmetry quantum numbers other than fermion number or parity can be handled.