21#include "rheolef/solver.h"
22#include "rheolef/pretty_name.h"
38template <
class T,
class M>
47template<
class T,
class M>
63 return new_macro (rep(a,opt));
72#ifdef _RHEOLEF_HAVE_MUMPS
75 return new_macro (rep(a,opt));
79#if defined(_RHEOLEF_HAVE_CHOLMOD)
80 if (lib ==
"suitesparse" && a.is_symmetric() && a.is_definite_positive()) {
82 return new_macro (rep(a,opt));
86#if defined(_RHEOLEF_HAVE_UMFPACK)
87 if (lib ==
"suitesparse") {
89 return new_macro (rep(a,opt));
93#ifdef _RHEOLEF_HAVE_EIGEN
96 return new_macro (rep(a,opt));
106#define _RHEOLEF_instanciation(T,M) \
107template solver_abstract_rep<T,M>* solver_abstract_rep<T,M>::make_solver_ptr (const csr<T,M>&, const solver_option&); \
108template std::string solver_abstract_rep<T,M>::name() const;
111#ifdef _RHEOLEF_HAVE_MPI
114#undef _RHEOLEF_instanciation
#define _RHEOLEF_instanciation(T, M, A)
see the Float page for the full documentation
see the csr page for the full documentation
virtual std::string name() const
static solver_abstract_rep< T, M > * make_solver_ptr(const csr< T, M > &a, const solver_option &opt)
see the solver_option page for the full documentation
static const long int decide
static std::string used_library(const csr< T, M > &a, const solver_option &sopt=solver_option())
#define error_macro(message)
This file is part of Rheolef.
std::string typeid_name(const char *name, bool do_indent)