32namespace triqs::atom_diag {
34 using namespace triqs::gfs;
91 template <
bool Complex>
112 template <
bool Complex>
131 template <
bool Complex>
148 template <
bool Complex>
Provides a lightweight exact diagonalization solver for fermionic Hamiltonians.
Lightweight exact diagonalization solver for finite fermionic Hamiltonians.
triqs::operators::many_body_operator_generic< scalar_t > many_body_op_t
Many-body operator type compatible with scalar_t.
vector< scalar_t > full_hilbert_space_state_t
State vector type of the full Hilbert space.
std::vector< matrix_t > block_matrix_t
Block-diagonal matrix type, one dense block per invariant subspace.
std::conditional_t< Complex, std::complex< double >, double > scalar_t
Scalar type of the matrix elements: double or std::complex<double>.
double partition_function(atom_diag< Complex > const &atom, double beta)
Compute the atomic partition function at inverse temperature .
atom_diag< Complex >::block_matrix_t atomic_density_matrix(atom_diag< Complex > const &atom, double beta)
Compute the atomic density matrix at inverse temperature .
atom_diag< Complex >::scalar_t trace_rho_op(typename atom_diag< Complex >::block_matrix_t const &density_matrix, typename atom_diag< Complex >::many_body_op_t const &op, atom_diag< Complex > const &atom)
Compute the trace of a many-body operator weighted by a block-diagonal density matrix.
std::vector< std::vector< quantum_number_t > > quantum_number_eigenvalues_checked(typename atom_diag< Complex >::many_body_op_t const &op, atom_diag< Complex > const &atom)
Tabulate the eigenvalues of a quantum-number operator , also checking that the operator is diagonal ...
std::vector< std::vector< quantum_number_t > > quantum_number_eigenvalues(typename atom_diag< Complex >::many_body_op_t const &op, atom_diag< Complex > const &atom)
Tabulate the eigenvalues of a quantum-number operator over all eigenstates of the Hamiltonian.
atom_diag< Complex >::full_hilbert_space_state_t act(typename atom_diag< Complex >::many_body_op_t const &op, typename atom_diag< Complex >::full_hilbert_space_state_t const &st, atom_diag< Complex > const &atom)
Act with a many-body operator on a state vector, .