Function opensn::CreateCommonKrylovSolverSetup

Function Documentation

PETScSolverSetup opensn::CreateCommonKrylovSolverSetup(Mat matrix, const std::string &solver_name = "KSPSolver", const std::string &solver_type = KSPGMRES, const std::string &preconditioner_type = PCNONE, double rel_tol = PETSC_DEFAULT, double abs_tol = PETSC_DEFAULT, int64_t maximum_iterations = 100)

Creates a common Krylov-solver setup.

This is a macro for:

PETScSolverSetup setup;

KSPCreate(opensn::mpi_comm,&setup.ksp);
KSPSetOperators(setup.ksp,ref_matrix,ref_matrix);
KSPSetType(setup.ksp,in_solver_type.c_str());

KSPSetOptionsPrefix(setup.ksp,in_solver_name.c_str());

KSPGetPC(setup.ksp,&setup.pc);
PCSetType(setup.pc,in_preconditioner_type.c_str());

KSPSetTolerances(setup.ksp,1.e-50,
                 in_relative_residual_tolerance,1.0e50,
                 in_maximum_iterations);
KSPSetInitialGuessNonzero(setup.ksp,PETSC_TRUE);

KSPMonitorSet(setup.ksp,&KSPMonitorRelativeToRHS,NULL,NULL);

return setup;