22 #ifndef __HERMES_COMMON_AMESOS_SOLVER_H_
23 #define __HERMES_COMMON_AMESOS_SOLVER_H_
24 #include "../config.h"
26 #include "linear_matrix_solver.h"
30 #include <Amesos_BaseSolver.h>
39 template<
typename Scalar>
40 class HERMES_API AmesosSolver :
public DirectSolver<Scalar>
43 static bool is_available(
const char *name);
48 void set_use_transpose(
bool use_transpose);
50 AmesosSolver(
const char *solver_type, EpetraMatrix<Scalar> *m, EpetraVector<Scalar> *rhs);
52 virtual ~AmesosSolver();
54 virtual int get_matrix_size();
56 static Amesos factory;
57 Amesos_BaseSolver *solver;
58 Epetra_LinearProblem problem;
59 EpetraMatrix<Scalar> *m;
60 EpetraVector<Scalar> *rhs;
62 bool setup_factorization();
63 template<
typename T>
friend LinearMatrixSolver<T>*
create_linear_solver(Matrix<T>* matrix, Vector<T>* rhs);