iterative-solver 0.0
 
Loading...
Searching...
No Matches
SubspaceData.h
1#ifndef LINEARALGEBRA_SRC_MOLPRO_LINALG_ITSOLV_SUBSPACE_SUBSPACEDATA_H
2#define LINEARALGEBRA_SRC_MOLPRO_LINALG_ITSOLV_SUBSPACE_SUBSPACEDATA_H
3#include <map>
4#include <molpro/linalg/itsolv/subspace/Matrix.h>
5#include <vector>
6
14enum class EqnData { H, S, rhs, value, M };
15
17template <typename T = double>
18using SubspaceData = std::map<EqnData, Matrix<T>>;
19
21template <typename T>
22std::vector<EqnData> square_blocks(const SubspaceData<T>& data) {
23 auto blocks = std::vector<EqnData>{EqnData::H, EqnData::S};
24 if (data.count(EqnData::M))
25 blocks.push_back(EqnData::M);
26 return blocks;
27}
28
29template <typename T = double, EqnData... DataTypes>
30auto null_data() {
31 return SubspaceData<T>{std::make_pair<EqnData, Matrix<T>>(DataTypes, {})...};
32}
33} // namespace molpro::linalg::itsolv::subspace
34
35#endif // LINEARALGEBRA_SRC_MOLPRO_LINALG_ITSOLV_SUBSPACE_SUBSPACEDATA_H
EqnData
Kinds of equation data in the subspace.
Definition SubspaceData.h:14
std::map< EqnData, Matrix< T > > SubspaceData
Equation data blocks of the subspace, in the scalar type of the problem.
Definition SubspaceData.h:18
std::vector< EqnData > square_blocks(const SubspaceData< T > &data)
The square matrices, H, S and, if present, M, among the equation data.
Definition SubspaceData.h:22
auto null_data()
Definition SubspaceData.h:30
std::unique_ptr< LinearEigensystem< R, Q, P > > create_LinearEigensystem(const LinearEigensystemOptions &options, const std::shared_ptr< ArrayHandlers< R, Q, P > > &handlers=std::make_shared< molpro::linalg::itsolv::ArrayHandlers< R, Q, P > >())
Definition SolverFactory.h:111