Class qsymmetry#
Defined in File qsymmetry.hpp
Class Documentation#
-
class qsymmetry#
Manages quantum number symmetries and conservation laws.
qsymmetry is a base class that tracks and manages quantum number symmetries of a system’s Hamiltonian. In NRG calculations, symmetries are used to:
Block-diagonalize the Hamiltonian for computational efficiency
Classify states by conserved quantum numbers (e.g., particle number, spin)
Reduce Hilbert space dimension
Common symmetries include:
Particle number conservation (charge)
Spin conservation (S_z, S^2)
Orbital angular momentum
Charge parity
Public Functions
-
inline qsymmetry()#
Default constructor initializes base symmetry identifier.
Creates an empty symmetry object with only the base “qsymmetry” label. Additional symmetries should be added via add_symmetry().
-
inline void add_symmetry(const std::string &_id)#
Add a quantum number symmetry to the system.
Registers a new conserved quantum number/symmetry for this system. Examples: “charge”, “spin”, “particle_number”, “parity”
Note
Multiple identical symmetries can be added; no uniqueness checking
Note
Order of addition is preserved for later reference
- Parameters:
_id – String identifier for the symmetry (should be descriptive)
-
inline size_t get_symmetry_size() const#
Get the total number of symmetries (excluding base).
Note
Does not include the base “qsymmetry” identifier
- Returns:
Number of symmetries that have been added via add_symmetry()
-
inline void print_symmetry() const#
Print all symmetries to console output.
Displays a formatted list of all symmetries including the base identifier. Useful for debugging and verifying symmetry setup.
Note
Output format: “Symmetry of this model:” followed by indented list