24template <EigenValueSolverType tag,
typename MATA,
typename MATB>
25requires(Concepts::DenseOrSparseEigenMatrix<std::remove_cvref_t<MATA>> &&
26 std::same_as<std::remove_cvref_t<MATA>, std::remove_cvref_t<MATB>> &&
29 using MatrixType = std::remove_cvref_t<MATA>;
44template <EigenValueSolverType tag, Concepts::FlatAssembler AssemblerA, Concepts::FlatAssembler AssemblerB>
45requires(std::same_as<typename AssemblerA::MatrixType, typename AssemblerB::MatrixType> &&
48 const std::shared_ptr<AssemblerB> assemblerB) {
60template <EigenValueSolverType tag,
typename MATA>
61requires(Concepts::DenseOrSparseEigenMatrix<std::remove_cvref_t<MATA>> &&
64 using MatrixType = std::remove_cvref_t<MATA>;
65 MatrixType I = MatrixType(A.rows(), A.cols());
78template <EigenValueSolverType tag, Concepts::FlatAssembler AssemblerA>
79requires(Concepts::DenseOrSparseEigenMatrix<typename AssemblerA::MatrixType> &&
82 return makeIdentitySymEigenSolver<tag>(assemblerA->matrix());
94template <Concepts::FlatAssembler AssemblerA, Concepts::FlatAssembler AssemblerB>
95requires(std::same_as<typename AssemblerA::MatrixType, typename AssemblerB::MatrixType>)
97 std::shared_ptr<AssemblerB> assemblerB, Eigen::Index nev) {
108template <
typename MATA,
typename MATB>
109requires(Concepts::DenseOrSparseEigenMatrix<std::remove_cvref_t<MATA>> &&
110 std::same_as<std::remove_cvref_t<MATA>, std::remove_cvref_t<MATB>>)
112 using MatrixType = std::remove_cvref_t<MATA>;
123template <
typename MATA>
124requires(Concepts::DenseOrSparseEigenMatrix<std::remove_cvref_t<MATA>>)
126 using MatrixType = std::remove_cvref_t<MATA>;
127 MatrixType I = MatrixType(A.rows(), A.cols());
140template <Concepts::FlatAssembler AssemblerA>
Implementation of wrapper classes for solving a generalized eigenvalue problem.
Definition: assemblermanipulatorbuildingblocks.hh:22
auto makeGeneralizedSymEigenSolver(MATA &&A, MATB &&B)
Factory function to create a GeneralizedSymEigenSolver for a specific backend (Eigen or Spectra) with...
Definition: generalizedeigensolverfactory.hh:28
auto makePartialIdentitySymEigenSolver(MATA &&A, Eigen::Index nev)
Factory function to create a PartialGeneralizedSymEigenSolver with a provided matrix and an identity ...
Definition: generalizedeigensolverfactory.hh:125
auto makeIdentitySymEigenSolver(MATA &&A)
Factory function to create a GeneralizedSymEigenSolver with a provided matrix and an identity matrix.
Definition: generalizedeigensolverfactory.hh:63
auto makePartialGeneralizedSymEigenSolver(std::shared_ptr< AssemblerA > assemblerA, std::shared_ptr< AssemblerB > assemblerB, Eigen::Index nev)
Factory function to create a PartialGeneralizedSymEigenSolver with provided assemblers for both quant...
Definition: generalizedeigensolverfactory.hh:96
Definition: generalizedeigensolver.hh:33
This class implements a wrapper to the Spectra generalized eigen solver for square real symmetric mat...
Definition: generalizedeigensolver.hh:281