6.1. Hilbert Space Construction¶
This section describes how \({\mathcal H}\Phi\) constructs and manages the Hilbert space.
6.1.1. Bit Representation¶
\({\mathcal H}\Phi\) uses bit representation to efficiently store and manipulate quantum states.
- Hubbard model (4 states per site):
Each site has 4 possible states: empty, spin-up, spin-down, and doubly occupied. These are encoded using 2 bits per site:
00: empty01: spin-up electron10: spin-down electron11: doubly occupied
- Spin-1/2 model (2 states per site):
Each site has 2 possible states: spin-up and spin-down. These are encoded using 1 bit per site:
0: spin-down1: spin-up
- SpinlessFermion model (2 states per site):
Each site is either empty or occupied by one fermion:
0: empty1: occupied
6.1.2. State Indexing¶
States are indexed by converting the bit representation to an integer. For a system with \(N\) sites, the total number of states is:
Hubbard: \(4^N\)
Spin-1/2: \(2^N\)
SpinlessFermion: \(2^N\)
6.1.3. Symmetry Restrictions¶
To reduce the computational cost, \({\mathcal H}\Phi\) can restrict the Hilbert space using conserved quantum numbers.
- Particle number conservation:
For canonical ensembles, the total number of electrons is fixed. Only states with the specified particle number are included.
- Sz conservation:
For spin systems, the total \(S_z\) can be fixed. This reduces the Hilbert space dimension significantly.
- Example:
For a half-filled 8-site Hubbard model with \(S_z = 0\):
Full Hilbert space: \(4^8 = 65,536\) states
With particle conservation (4 electrons): reduced
With \(S_z = 0\) (2 up, 2 down): \(\binom{8}{2}^2 = 784\) states
6.1.4. List Arrays¶
\({\mathcal H}\Phi\) uses list arrays to map between state indices and bit representations:
list_1[i]Maps state index \(i\) to its bit representation
list_2_1[b],list_2_2[b]Inverse mapping from bit representation to state index (split for efficiency in large systems)
These arrays are essential for applying operators and performing MPI communication.