gutzwiller
Tools for Gutzwiller projecting MPS to a smaller on-site Hilbert space.
Gutzwiller projections
Projection from Abrikosov fermions to a spin-1/2 Hilbert space. |
|
Projection from particle-hole rotated Abrikosov fermions to a spin-1/2 Hilbert space. |
Helper functions
Generates a mask selecting the physical parity blocks for a given fermionic leg. |
|
Generates a mask selecting the physical charge block for a fermionic leg. |
Gutzwiller projections of Abrikosov fermions
- temfpy.gutzwiller.abrikosov(mps, *, inplace=False, return_canonical=True, cutoff=1e-12)[source]
Projection from Abrikosov fermions to a spin-1/2 Hilbert space.
The input MPS must contain an even number of sites, sites \(2i\) and \(2i+1\) representing modes \(f_{i\uparrow}\) and \(f_{i\downarrow}\), respectively. These pairs are projected to a spin-1/2 Hilbert space using the following rules:
Single occupation of \(f_{i\uparrow}\) orbital → spin-up state
Single occupation of \(f_{i\downarrow}\) orbital → spin-down state
Zero and double occupation → unphysical states, dropped
Since the only conserved quantity in the input MPS is expected to be (the parity of) the particle number, no spin quantum numbers are kept in the output.
- 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.
- temfpy.gutzwiller.abrikosov_ph(mps, *, inplace=False, return_canonical=True, cutoff=1e-12)[source]
Projection from particle-hole rotated Abrikosov fermions to a spin-1/2 Hilbert space.
The input MPS must contain an even number of sites, sites \(2i\) and \(2i+1\) representing modes \(f_{i\uparrow}\) and \(f_{i\downarrow}^\dagger\), respectively. These pairs are projected to a spin-1/2 Hilbert space using the following rules:
Zero occupation → spin-down state
Double occupation of → spin-up state
Single occupation → unphysical states, dropped
Depending on the conserved charge of the input MPS, the following spin quantum numbers are kept in the output:
'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.
Helper functions
- temfpy.gutzwiller.parity_mask(leg, parity=0)[source]
Generates a mask selecting the physical parity blocks for a given fermionic leg.
The physical parity blocks depend on the conserved charge of the given
leg:'N'→ even/odd particle charge blocks'parity'→ even/odd parity charge block