/* Copyright (C) 2006-2011 Evgenii Rudnyi, http://Evgenii.Rudnyi.Ru/ This software is a copyrighted work licensed under the terms, described in the file "FREE_LICENSE". */ //#include #include "solvers.h" #ifdef USETAUCS LinearSolver* make_TAUCSllt(); LinearSolver* make_TAUCSldlt(); LinearSolver* make_TAUCSllt_mf(); LinearSolver* make_TAUCSllt_ll(); LinearSolver* make_TAUCSllt_ooc(); LinearSolver* make_TAUCSlu(); #endif #ifdef USEUMFPACK LinearSolver* make_UMFPACK(); #endif #ifdef USEMUMPS LinearSolver* make_MUMPS(); #endif #ifdef USEPARDISO LinearSolver* make_ClassPARDISO(); #endif LinearSolver* LinearSolver::create(const string &s) { typedef LinearSolver*(*func)(); map solvers; #ifdef USETAUCS solvers["TAUCSllt"] = &make_TAUCSllt; solvers["TAUCSldlt"] = &make_TAUCSldlt; solvers["TAUCSlltmf"] = &make_TAUCSllt_mf; solvers["TAUCSlltll"] = &make_TAUCSllt_ll; solvers["TAUCSlltooc"] = &make_TAUCSllt_ooc; solvers["TAUCSlu"] = &make_TAUCSlu; #endif #ifdef USEUMFPACK solvers["UMFPACK"] = &make_UMFPACK; #endif #ifdef USEMUMPS solvers["MUMPS"] = &make_MUMPS; #endif #ifdef USEPARDISO solvers["PARDISO"] = &make_ClassPARDISO; #endif map::const_iterator i = solvers.find(s); if (i == solvers.end()) throw SolverError::General(string("No such solver ") + s); return (*((*i).second))(); }