Class spinhalf#
Defined in File spinhalf.hpp
Class Documentation#
-
class spinhalf#
Single orbital with spin-up and spin-down electrons (spin-1/2 impurity).
Represents a single-site impurity with both spin-up and spin-down orbitals. This is the fundamental quantum dot model used to construct NRG problems like the Single Impurity Anderson Model (SIAM) and Kondo model.
The Hamiltonian includes:
Onsite energy (ε_d) for the orbital
Coulomb interaction energy (U) between spin-up and spin-down
Magnetic field coupling (h) for Zeeman splitting
Quantum numbers:
Conserved: particle number and spin z-component (N, S_z)
Symmetry basis block-diagonalizes the space
Public Functions
-
inline spinhalf(double teps, double tUint, double tmag = 0)#
-
inline std::vector<std::vector<int>> get_basis() const#
Get the basis quantum numbers for all eigenstates.
Returns all valid (N, S_z) quantum number pairs where:
N is total particle number (0, 1, or 2)
S_z is z-component of spin (-1, 0, +1 in half-unit spacing)
See also
get_eigenvaluesQ() - energies for each quantum number sector
Note
Ordered by construction; corresponds to Hamiltonian block structure
- Returns:
Vector of quantum number vectors: each element is [N, S_z]
-
inline std::vector<std::vector<double>> get_eigenvaluesQ() const#
Get the ground state energy for each quantum number sector.
Returns lowest eigenvalue of the spin-1/2 Hamiltonian in each (N, S_z) sector. Multiple energies per sector indicate degeneracy.
See also
get_basis() - quantum numbers corresponding to each sector
Note
Eigenvalues within each sector are sorted in ascending order
- Returns:
Vector of eigenvalue vectors: eigenvalues_Q[i] = all eigenvalues in sector i
-
inline std::vector<double> get_chi_Q() const#
Get the fermion parity factor for each quantum number sector.
Fermionic operators anticommute, resulting in sign factors ±1 when ordering. Returns (-1)^N for each sector, where N is particle number.
Note
Used for correct anticommutation relations in fermionic algebra
- Returns:
Vector of fermion signs: ±1 for each quantum number block
-
inline auto getDoubleOcc() const#
Get the double occupancy operator for computing correlations.
The double occupancy operator D = n↑·n↓ projects onto states with both spin-up and spin-down electrons present simultaneously. Useful for:
Computing correlation functions and susceptibilities
Static properties like charge susceptibility
Comparison with experimental charge compressibility
Note
Only has weight in sectors with N=2 (doubly-occupied state)
- Returns:
Vector of qOperator objects representing D in quantum number basis
Public Members
-
std::vector<qOperator> f_dag_operator#
Get fermion creation operators f† in quantum-number block basis.
Returns f† operators block-diagonalized by (N, S_z) quantum numbers. Useful for computing spectral functions and Green’s functions.
- Return:
Vector of qOperator: f†_spin for spin ∈ {up, down} channels
-
std::vector<std::vector<double>> eigenvalues_Q#
Eigenvalues of the Hamiltonian in each quantum number sector.
eigenvalues_Q[i] contains all eigenvalues for the i-th quantum number block. Used for FDM calculations and spectral density computations.
-
std::vector<double> chi_Q#
Fermion parity sign for each basis quantum number sector.
Returns (-1)^N where N is the particle number in that sector. This sign is essential for fermionic anticommutation relations.
-
std::vector<std::vector<int>> n_Q#
Quantum numbers (N, S_z) labeling each Hamiltonian block.
Used to organize eigenstates and operators by conserved quantum numbers. Allows block-diagonal structure exploited for computational efficiency.