Class twoChannel#

Class Documentation#

class twoChannel#

Represents a two-channel spin-1/2 impurity model.

This class models a quantum impurity with two independent conduction channels, each with spin-up and spin-down electrons. It can be used to construct multi-channel Single Impurity Anderson Models (SIAM).

The model conserves total particle number and total spin z-component across both channels.

See also

spinhalf - The single-channel version of this model.

See also

twoChannelSiam - An example of a SIAM model built with this class.

Public Functions

twoChannel()#

Constructs a twoChannel object.

Initializes the basis and operators for a two-channel spin-1/2 impurity. The Hamiltonian for the impurity itself is zero, as interactions are typically defined when coupling to a bath in a larger model.

std::vector<std::vector<int>> get_basis()#

Get the basis quantum numbers for all eigenstates.

Returns all valid (N_ch1, S_z_ch1, N_ch2, S_z_ch2) quantum number combinations.

Returns:

Vector of quantum number vectors.

std::vector<std::vector<double>> get_eigenvaluesQ()#

Get the ground state energy for each quantum number sector.

For the bare impurity, all eigenvalues are zero.

Returns:

Vector of eigenvalue vectors.

std::vector<double> get_chi_Q()#

Get the fermion parity factor for each quantum number sector.

Returns (-1)^N for each sector, where N is the total particle number.

Returns:

Vector of fermion signs: ±1 for each quantum number block.

Public Members

std::vector<qOperator> f_dag_operator#

Fermion creation operators f† in the quantum-number block basis.

A vector of qOperator objects for each spin and channel combination.

std::vector<std::vector<double>> eigenvalues_Q#

Eigenvalues of the Hamiltonian in each quantum number sector.

For the bare impurity, all eigenvalues are zero.

std::vector<double> chi_Q#

Fermion parity sign for each basis quantum number sector.

std::vector<std::vector<int>> n_Q#

Quantum numbers labeling each Hamiltonian block.