void BelosOperator::doSetParameterList() { if ( !M_pList->sublist ( "Trilinos: Belos List" ).isParameter ( "Verbosity" ) ) M_pList->sublist ( "Trilinos: Belos List" ).set ( "Verbosity", Belos::Errors + Belos::Warnings + Belos::TimingDetails + Belos::StatusTestDetails ); if ( M_tolerance > 0 ) { M_pList->sublist ( "Trilinos: Belos List" ).set ( "Convergence Tolerance", M_tolerance ); } std::string solverType ( M_pList->get<std::string> ( "Solver Manager Type" ) ); allocateSolver ( getSolverManagerTypeFromString ( solverType ) ); M_solverManager->setParameters ( sublist ( M_pList, "Trilinos: Belos List", true ) ); std::string precSideStr ( M_pList->get<std::string> ( "Preconditioner Side" ) ); PreconditionerSide precSide ( getPreconditionerSideFromString ( precSideStr ) ); switch (precSide) { case None: break; case Left: M_linProblem->setLeftPrec ( M_belosPrec ); break; case Right: M_linProblem->setRightPrec ( M_belosPrec ); break; default: exit (1); } }
Pointer<StaggeredStokesSolver> StaggeredStokesSolverManager::allocateSolver(const std::string& solver_type, const std::string& solver_object_name, Pointer<Database> solver_input_db, const std::string& solver_default_options_prefix, const std::string& precond_type, const std::string& precond_object_name, Pointer<Database> precond_input_db, const std::string& precond_default_options_prefix) const { Pointer<StaggeredStokesSolver> solver = allocateSolver( solver_type, solver_object_name, solver_input_db, solver_default_options_prefix); Pointer<KrylovLinearSolver> p_solver = solver; if (p_solver) p_solver->setPreconditioner(allocateSolver(precond_type, precond_object_name, precond_input_db, precond_default_options_prefix)); return solver; } // allocateSolver