/
solver.hpp
40 lines (34 loc) · 1.32 KB
/
solver.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*****************************************************************************
*
* Rokko: Integrated Interface for libraries of eigenvalue decomposition
*
* Copyright (C) 2012-2013 by Tatsuya Sakashita <t-sakashita@issp.u-tokyo.ac.jp>,
* Synge Todo <wistaria@comp-phys.org>
*
* Distributed under the Boost Software License, Version 1.0. (See accompanying
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
*
*****************************************************************************/
#ifndef ROKKO_SOLVER_HPP
#define ROKKO_SOLVER_HPP
#include <rokko/solver_factory.hpp>
#include <rokko/distributed_matrix.hpp>
#include <boost/shared_ptr.hpp>
namespace rokko {
class solver {
public:
solver(std::string const& solver_name) {
solver_impl_ = solver_factory::instance()->make_solver(solver_name);
}
void initialize(int& argc, char**& argv) { solver_impl_->initialize(argc, argv); }
void finalize() { solver_impl_->finalize(); }
template<typename MATRIX_MAJOR>
void diagonalize(rokko::distributed_matrix<MATRIX_MAJOR>& mat, Eigen::VectorXd& eigvals,
rokko::distributed_matrix<MATRIX_MAJOR>& eigvecs) {
solver_impl_->diagonalize(mat, eigvals, eigvecs);
}
private:
solver_factory::solver_pointer_type solver_impl_;
};
} // end namespace rokko
#endif // ROKKO_SOLVER_HPP