Source code for femorph_solver.solvers.eigen._base

"""Common base class for eigen-solver backends."""

from __future__ import annotations

from typing import ClassVar

import numpy as np
import scipy.sparse as sp


[docs] class EigenSolverBase: """Every eigen solver implements ``solve(K, M, n_modes, ...)``.""" name: ClassVar[str] = "" kind: ClassVar[str] = "sparse" spd_only: ClassVar[bool] = True install_hint: ClassVar[str] = "" @staticmethod def available() -> bool: return True
[docs] @staticmethod def solve( K: sp.spmatrix | sp.sparray, M: sp.spmatrix | sp.sparray, n_modes: int, *, sigma: float = 0.0, linear_solver: str = "auto", tol: float = 0.0, ) -> tuple[np.ndarray, np.ndarray]: """Return ``(eigenvalues, eigenvectors)`` sorted ascending by λ.""" raise NotImplementedError