1#ifndef CHITECH_CHI_MATH_LINEAR_SOLVER_H
2#define CHITECH_CHI_MATH_LINEAR_SOLVER_H
13template <
class MatType,
class VecType>
14struct LinearSolverContext;
17template <
class MatType,
class VecType,
class SolverType>
66 std::string iterative_method,
virtual void SetSystem()=0
bool GetKSPSolveSuppressionFlag() const
virtual void SetSystemSize()=0
virtual void PreSetupCallback()
virtual void SetInitialGuess()=0
void SetKSPSolveSuppressionFlag(bool flag)
virtual void PreSolveCallback()
virtual void SetOptions()
const std::string iterative_method_
LinSolveContextPtr & GetContext()
void ApplyToleranceOptions()
virtual void SetPreconditioner()
LinSolveContextPtr context_ptr_
const std::string solver_name_
virtual void SetConvergenceTest()
virtual void SetSolverContext()
virtual void PostSetupCallback()
LinearSolverContext< MatType, VecType > LinSolveContext
std::shared_ptr< LinSolveContext > LinSolveContextPtr
virtual void PostSolveCallback()
struct chi_math::LinearSolver::ToleranceOptions tolerance_options_
LinearSolver(std::string solver_name, std::string iterative_method, LinSolveContextPtr context_ptr)
ToleranceOptions & ToleranceOptions()
virtual void SetMonitor()
LinearSolver(const std::string &iterative_method, LinSolveContextPtr context_ptr)
double gmres_breakdown_tolerance
int gmres_restart_interval
double residual_divergence