00001 // fabric class for Pardiso 00002 00003 #ifndef pardisoFabric_hh 00004 #define pardisoFabric_hh 00005 00006 #include "pardiso.hh" 00007 #include "solverFabric.hh" 00008 00009 namespace concepts { 00010 00011 // ********************************************************* PardisoFabric ** 00012 00016 class PardisoFabric : public SolverFabric<Real> { 00017 public: 00018 PardisoFabric(enum Pardiso::MATRIX_TYPE type) : type_(type) {} 00019 virtual Operator<Real>* operator()(Operator<Real>& matrix) { 00020 return new Pardiso(matrix, type_); 00021 } 00022 virtual Operator<Real>* operator()(SparseMatrix<Real>& matrix) { 00023 return new Pardiso(matrix, type_); 00024 } 00025 protected: 00026 virtual std::ostream& info(std::ostream& os) const { 00027 return os << "PardisoFabric(" << type_ << ')'; 00028 } 00029 private: 00030 enum Pardiso::MATRIX_TYPE type_; 00031 }; 00032 00033 } // concepts 00034 00035 #endif // pardisoFabric_hh