コード例 #1
0
ファイル: BelosOperator.cpp プロジェクト: Danniel-UCAS/lifev
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);
    }

}
コード例 #2
0
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