35 #include "ac/sys_sysinfo.h" 
   90 #ifdef USE_NAIVE_MULTITHREAD 
  103 #ifdef USE_SUPERLU_MT 
  114         { 
"Umfpack", 
"umfpack3", 
 
  119 #ifdef UMFPACK_DROPTOL 
  146 #if defined(USE_UMFPACK) 
  148 #elif  defined(USE_KLU) 
  157 : currSolver(
LinSol::defaultSolver),
 
  184         if ((::solver[t].s_flags & f) != f) {
 
  240                 silent_cerr(::solver[t].s_name << 
" unavailable" << std::endl);
 
  283         if ((::solver[
currSolver].s_flags & f) == f) {
 
  294         if ((::solver[
currSolver].s_flags & f) == f) {
 
  305         if ((::solver[
currSolver].s_flags & f) == f) {
 
  374         if (::solver[
currSolver].s_pivot_factor == -1.) {
 
  386         if (::solver[
currSolver].s_drop_tolerance == -1.) {
 
  478                         typedef Y12SparseCCSolutionManager<DirCColMatrixHandler<1> > CCSM;
 
  485                         typedef Y12SparseCCSolutionManager<CColMatrixHandler<1> > CCSM;
 
  493                                 Y12SparseSolutionManager,
 
  494                                 Y12SparseSolutionManager(iNLD, iLWS,
 
  500                 silent_cerr(
"Configure with --with-y12 " 
  501                         "to enable Y12 solver" << std::endl);
 
  507 #ifdef USE_SUPERLU_MT 
  510                         typedef ParSuperLUSparseCCSolutionManager<DirCColMatrixHandler<0> > CCSM;
 
  517                         typedef ParSuperLUSparseCCSolutionManager<CColMatrixHandler<0> > CCSM;
 
  525                                 ParSuperLUSparseSolutionManager,
 
  526                                 ParSuperLUSparseSolutionManager(
nThreads, iNLD,
 
  533                         silent_cerr(
"warning, using multithread SuperLU with only one thread; " 
  538                         silent_cerr(
"multithread SuperLU solver support not compiled; " 
  544                         typedef SuperLUSparseCCSolutionManager<DirCColMatrixHandler<0> > CCSM;
 
  551                         typedef SuperLUSparseCCSolutionManager<CColMatrixHandler<0> > CCSM;
 
  559                                 SuperLUSparseSolutionManager,
 
  560                                 SuperLUSparseSolutionManager(iNLD,
 
  567                 silent_cerr(
"Configure with --with-superlu " 
  568                         "to enable superlu solver" << std::endl);
 
  575                         MeschachSparseSolutionManager,
 
  576                         MeschachSparseSolutionManager(iNLD, iLWS,
 
  580                 silent_cerr(
"Configure with --with-meschach " 
  581                         "to enable Meschach solver" << std::endl);
 
  588                         LapackSolutionManager,
 
  592                 silent_cerr(
"Configure with --with-lapack " 
  593                         "to enable Lapack dense solver" << std::endl);
 
  601                         typedef TaucsSparseCCSolutionManager<DirCColMatrixHandler<0> > CCSM;
 
  607                         typedef TaucsSparseCCSolutionManager<CColMatrixHandler<0> > CCSM;
 
  614                                 TaucsSparseSolutionManager,
 
  615                                 TaucsSparseSolutionManager(iNLD));
 
  620                 silent_cerr(
"Configure with --with-taucs " 
  621                         "to enable Taucs sparse solver" << std::endl);
 
  628                         HarwellSparseSolutionManager,
 
  629                         HarwellSparseSolutionManager(iNLD, iLWS,
 
  633                 silent_cerr(
"Configure with --with-harwell " 
  634                         "to enable Harwell solver" << std::endl);
 
  643                         typedef UmfpackSparseCCSolutionManager<DirCColMatrixHandler<0> > CCSM;
 
  650                         typedef UmfpackSparseCCSolutionManager<CColMatrixHandler<0> > CCSM;
 
  658                                 UmfpackSparseSolutionManager,
 
  659                                 UmfpackSparseSolutionManager(iNLD,
 
  665                 silent_cerr(
"Configure with --with-umfpack " 
  666                         "to enable Umfpack solver" << std::endl);
 
  675                         typedef KLUSparseCCSolutionManager<DirCColMatrixHandler<0> > CCSM;
 
  682                         typedef KLUSparseCCSolutionManager<CColMatrixHandler<0> > CCSM;
 
  690                                 KLUSparseSolutionManager,
 
  691                                 KLUSparseSolutionManager(iNLD,
 
  699                 silent_cerr(
"Configure with --with-klu " 
  700                         "to enable KLU solver" << std::endl);
 
  711 #ifdef USE_NAIVE_MULTITHREAD 
  713                                         ParNaiveSparsePermSolutionManager,
 
  716                                 silent_cerr(
"multithread naive solver support not compiled; " 
  717                                         "you can configure --enable-multithread-naive " 
  718                                         "on a linux ix86 to get it" 
  724 #ifdef HAVE_BOOST_GRAPH_CUTHILL_MCKEE_ORDERING_HPP 
  731 #ifdef USE_NAIVE_MULTITHREAD 
  734                                         ParNaiveSparsePermSolutionManager,
 
  737                                 silent_cerr(
"multithread naive solver with" 
  738                                         "reverse Cuthill-McKee permutation not" 
  739                                         "available yet. Patches welcome" 
  743                                 silent_cerr(
"multithread naive solver support not compiled; " 
  744                                         "you can configure --enable-multithread-naive " 
  745                                         "on a linux ix86 to get it" 
  759 #ifdef USE_NAIVE_MULTITHREAD 
  762                                         ParNaiveSparsePermSolutionManager,
 
  765                                 silent_cerr(
"multithread naive solver with" 
  766                                         "approximate minimum degree permutation not" 
  767                                         "available yet. Patches welcome" 
  771                                 silent_cerr(
"multithread naive solver support not compiled; " 
  772                                         "you can configure --enable-multithread-naive " 
  773                                         "on a linux ix86 to get it" 
  780 #ifdef HAVE_BOOST_GRAPH_KING_ORDERING_HPP 
  787 #ifdef USE_NAIVE_MULTITHREAD 
  790                                         ParNaiveSparsePermSolutionManager,
 
  793                                 silent_cerr(
"multithread naive solver with" 
  794                                         "king permutation not" 
  795                                         "available yet. Patches welcome" 
  799                                 silent_cerr(
"multithread naive solver support not compiled; " 
  800                                         "you can configure --enable-multithread-naive " 
  801                                         "on a linux ix86 to get it" 
  808 #ifdef HAVE_BOOST_GRAPH_SLOAN_ORDERING_HPP 
  815 #ifdef USE_NAIVE_MULTITHREAD 
  818                                         ParNaiveSparsePermSolutionManager,
 
  821                                 silent_cerr(
"multithread naive solver with" 
  822                                         "sloan permutation not" 
  823                                         "available yet. Patches welcome" 
  827                                 silent_cerr(
"multithread naive solver support not compiled; " 
  828                                         "you can configure --enable-multithread-naive " 
  829                                         "on a linux ix86 to get it" 
  836 #ifdef HAVE_BOOST_GRAPH_MINIMUM_DEGREE_ORDERING_HPP 
  843 #ifdef USE_NAIVE_MULTITHREAD 
  846                                         ParNaiveSparsePermSolutionManager,
 
  849                                 silent_cerr(
"multithread naive solver with" 
  851                                         "available yet. Patches welcome" 
  855                                 silent_cerr(
"multithread naive solver support not compiled; " 
  856                                         "you can configure --enable-multithread-naive " 
  857                                         "on a linux ix86 to get it" 
  872 #ifdef USE_NAIVE_MULTITHREAD 
  875                                         ParNaiveSparsePermSolutionManager,
 
  878                                 silent_cerr(
"multithread naive solver with" 
  879                                         "nested dissection permutation not" 
  880                                         "available yet. Patches welcome" 
  884                                 silent_cerr(
"multithread naive solver support not compiled; " 
  885                                         "you can configure --enable-multithread-naive " 
  886                                         "on a linux ix86 to get it" 
  892                         silent_cerr(
"you should not get here("<< __FILE__ << 
":" <<
 
  893                                 __LINE__ << 
")" << std::endl);
 
  903 #ifdef USE_NAIVE_MULTITHREAD 
  905                                         ParNaiveSparseSolutionManager,
 
  908                                 silent_cerr(
"multithread naive solver support not compiled; " 
  909                                         "you can configure --enable-multithread-naive " 
  910                                         "on a linux ix86 to get it" 
bool SetScale(const SolutionManager::ScaleOpt &scale)
static SolverType defaultSolver
bool SetPivotFactor(const doublereal &d)
unsigned GetSolverFlags(void) const 
bool MaskSolverFlags(unsigned f)
#define MBDYN_EXCEPT_ARGS
unsigned GetNumThreads(void) const 
SolutionManager *const GetSolutionManager(integer iNLD, integer iLWS=0) const 
bool SetNumThreads(unsigned nt)
const doublereal & dGetDropTolerance(void) const 
bool SetSolver(SolverType t, unsigned f=SOLVER_FLAGS_NONE)
const LinSol::solver_t solver[]
integer GetMaxIterations(void) const 
bool SetSolverFlags(unsigned f)
bool SetMaxIterations(integer iMaxIter)
bool SetWorkSpaceSize(integer)
bool AddSolverFlags(unsigned f)
const doublereal & dGetPivotFactor(void) const 
SolutionManager::ScaleOpt scale
#define ASSERT(expression)
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
bool SetBlockSize(unsigned bs)
SolverType GetSolver(void) const 
doublereal dDropTolerance
integer iGetWorkSpaceSize(void) const 
bool SetDropTolerance(const doublereal &d)
unsigned GetBlockSize(void) const 
const char *const GetSolverName(void) const