1#ifndef _RHEOLEF_SOLVER_TRILINOS_IFPACK_H
2#define _RHEOLEF_SOLVER_TRILINOS_IFPACK_H
26#include "rheolef/config.h"
28#if defined(_RHEOLEF_HAVE_TRILINOS) && defined(_RHEOLEF_HAVE_MPI)
30#include "rheolef/solver.h"
32#ifdef _RHEOLEF_HAVE_MPI
34# include "Epetra_MpiComm.h"
36# include "Epetra_SerialComm.h"
38#include "Epetra_CrsMatrix.h"
39#include "Ifpack_Preconditioner.h"
46template<
class T,
class M>
47class solver_trilinos_ifpack_rep :
public solver_abstract_rep<T,M> {
52 solver_trilinos_ifpack_rep()
53 : solver_abstract_rep<
T,
M>(solver_option()),
55 _petra_ownership_ptr(0)
57 explicit solver_trilinos_ifpack_rep (
const csr<T,M>& a,
const solver_option& opt = solver_option());
58 void update_values (
const csr<T,M>& a);
59 bool initialized()
const {
return true; }
60 ~solver_trilinos_ifpack_rep ();
64 vec<T,M> trans_solve (
const vec<T,M>& rhs)
const;
65 vec<T,M>
solve (
const vec<T,M>& rhs)
const;
69 void destroy_values ();
70 void solve (
const vec<T,M>& rhs,
bool transpose, vec<T,M>& x)
const;
72 Ifpack_Preconditioner* _ilu_ptr;
73 Epetra_Map* _petra_ownership_ptr;
This file is part of Rheolef.
void solve(tiny_matrix< T > &a, tiny_vector< size_t > &piv, const tiny_vector< T > &b, tiny_vector< T > &x)