Class sparseEigen#

Class Documentation#

class sparseEigen#

Sparse matrix eigenvalue solver using Eigen + Spectra libraries.

Solves sparse eigenvalue problems efficiently for large systems. Uses Spectra library for sparse iterative eigensolvers with shift-invert method to find eigenvalues near a target shift point.

The solver finds the eigenvector with eigenvalue having minimum absolute value (ground state), normalized so components sum to 1.

Note

Uses Spectra shift-invert which is efficient for interior eigenvalues

Note

Memory-efficient for sparse matrices with O(nnz) storage

Note

Suitable for large systems N > 5000 with low density

Note

Requires matrix to be stored in COO (coordinate) format internally

Public Functions

inline explicit sparseEigen(size_t n = 0)#

Initialize sparse solver with matrix size.

Parameters:

n – Dimension of square matrix (default: 0)

inline void set(size_t i, size_t j, double value)#

Add a matrix element (cumulative).

Elements are stored in triplet format until getMatrix() or solve() is called, at which point they’re compressed into CSR format.

Note

Accumulates: a(i,j) += value if element (i,j) added multiple times

Parameters:
  • i – Row index

  • j – Column index

  • value – Value to add at (i,j)

inline auto getMatrix()#

Get the compressed sparse matrix.

Converts triplet format to compressed sparse row (CSR) format.

Note

Must be called before operations if matrix was modified

Returns:

Reference to compressed Eigen sparse matrix

inline auto solve()#

Solve sparse eigenvalue problem and return ground state eigenvector.

Uses Spectra GenEigsRealShiftSolver with shift-invert transform. Finds 1 eigenvalue with magnitude closest to zero (ground state).

Note

Number of Lanczos vectors used: column/2

Note

Shift point: 0 (finds eigenvalue closest to 0)

Note

Tolerance: 1e-6 for eigenvalue convergence

Throws:

std::runtime_error – If Spectra eigenvalue computation fails

Returns:

Normalized ground state eigenvector (sum = 1.0)

inline auto vectorDot(const std::vector<double> &X)#

Compute sparse matrix-vector product y = H·x.

Manually iterates through sparse matrix structure for matrix-vector product.

Note

Uses manual iteration for maximum control and efficiency

Note

O(nnz) complexity where nnz is number of non-zeros

Parameters:

X – Input vector of length column

Returns:

Result vector containing H·X