Loading [MathJax]/extensions/MathMenu.js
OGS
MathLib::EigenOption Struct Referencefinal

Detailed Description

Option for Eigen sparse solver.

Definition at line 18 of file EigenOption.h.

#include <EigenOption.h>

Public Types

enum class  SolverType : short {
  CG , LeastSquareCG , BiCGSTAB , BiCGSTABL ,
  IDRS , IDRSTABL , SparseLU , PardisoLU ,
  GMRES
}
 Solver type. More...
 
enum class  PreconType : short { NONE , DIAGONAL , LeastSquareDIAGONAL , ILUT }
 Preconditioner type. More...
 
enum class  TriangularMatrixType : short { Lower , Upper , LowerUpper }
 triangular matrix type More...
 

Public Member Functions

 EigenOption ()
 

Static Public Member Functions

static SolverType getSolverType (const std::string &solver_name)
 
static PreconType getPreconType (const std::string &precon_name)
 
static TriangularMatrixType getTriangularMatrixType (const std::string &triangular_matrix_name)
 
static std::string getSolverName (SolverType const solver_type)
 return a linear solver name from the solver type
 
static std::string getPreconName (PreconType const precon_type)
 return a preconditioner name from the preconditioner type
 
static std::string getTriangularMatrixName (TriangularMatrixType const triangular_matrix_type)
 return a triangular matrix name from the preconditioner type
 

Public Attributes

SolverType solver_type
 Linear solver type.
 
PreconType precon_type
 Preconditioner type.
 
TriangularMatrixType triangular_matrix_type
 Triangular Matrix Type.
 
int max_iterations
 Maximum iteration count.
 
double error_tolerance
 Error tolerance.
 

Member Enumeration Documentation

◆ PreconType

enum class MathLib::EigenOption::PreconType : short
strong

Preconditioner type.

Enumerator
NONE 
DIAGONAL 
LeastSquareDIAGONAL 
ILUT 

Definition at line 35 of file EigenOption.h.

◆ SolverType

◆ TriangularMatrixType

enum class MathLib::EigenOption::TriangularMatrixType : short
strong

triangular matrix type

Enumerator
Lower 
Upper 
LowerUpper 

Definition at line 44 of file EigenOption.h.

Constructor & Destructor Documentation

◆ EigenOption()

MathLib::EigenOption::EigenOption ( )

Constructor

Default options are CG, no preconditioner, iteration count 500 and tolerance 1e-10. Default matrix storage type is CRS.

Definition at line 17 of file EigenOption.cpp.

18{
21 max_iterations = static_cast<int>(1e6);
22 error_tolerance = 1.e-16;
24#ifdef USE_EIGEN_UNSUPPORTED
25 scaling = false;
26 restart = 30;
27 l = 2;
28 s = 4;
29 angle = 0.7;
30 smoothing = false;
31 residualupdate = false;
32#endif
33}
static const double s
PreconType precon_type
Preconditioner type.
Definition EigenOption.h:54
TriangularMatrixType triangular_matrix_type
Triangular Matrix Type.
Definition EigenOption.h:56
SolverType solver_type
Linear solver type.
Definition EigenOption.h:52
double error_tolerance
Error tolerance.
Definition EigenOption.h:60
int max_iterations
Maximum iteration count.
Definition EigenOption.h:58

References error_tolerance, Lower, max_iterations, NONE, precon_type, MathLib::s, solver_type, SparseLU, and triangular_matrix_type.

Member Function Documentation

◆ getPreconName()

std::string MathLib::EigenOption::getPreconName ( PreconType const precon_type)
static

return a preconditioner name from the preconditioner type

Definition at line 146 of file EigenOption.cpp.

147{
148 switch (precon_type)
149 {
150 case PreconType::NONE:
151 return "NONE";
153 return "DIAGONAL";
155 return "LeastSquareDIAGONAL";
156 case PreconType::ILUT:
157 return "ILUT";
158 }
159 return "Invalid";
160}

References DIAGONAL, ILUT, LeastSquareDIAGONAL, NONE, and precon_type.

Referenced by MathLib::details::EigenIterativeLinearSolver< T_SOLVER >::computeImpl(), and MathLib::details::EigenIterativeLinearSolver< T_SOLVER >::solveImpl().

◆ getPreconType()

EigenOption::PreconType MathLib::EigenOption::getPreconType ( const std::string & precon_name)
static

return a preconditioner type from the name

Parameters
precon_name
Returns
a preconditioner type If there is no preconditioner type matched with the given name, NONE is returned.

Definition at line 78 of file EigenOption.cpp.

80{
81 if (precon_name == "NONE")
82 {
83 return PreconType::NONE;
84 }
85 if (precon_name == "DIAGONAL")
86 {
88 }
89 if (precon_name == "LeastSquareDIAGONAL")
90 {
92 }
93 if (precon_name == "ILUT")
94 {
95 return PreconType::ILUT;
96 }
97
98 OGS_FATAL("Unknown Eigen preconditioner type `{:s}'", precon_name);
99}
#define OGS_FATAL(...)
Definition Error.h:26

References DIAGONAL, ILUT, LeastSquareDIAGONAL, NONE, and OGS_FATAL.

Referenced by MathLib::LinearSolverOptionsParser< EigenLinearSolver >::parseNameAndOptions().

◆ getSolverName()

std::string MathLib::EigenOption::getSolverName ( SolverType const solver_type)
static

return a linear solver name from the solver type

Definition at line 120 of file EigenOption.cpp.

121{
122 switch (solver_type)
123 {
124 case SolverType::CG:
125 return "CG";
127 return "LeastSquareCG";
129 return "BiCGSTAB";
131 return "BiCGSTABL";
132 case SolverType::IDRS:
133 return "IDRS";
135 return "IDRSTABL";
137 return "SparseLU";
139 return "PardisoLU";
141 return "GMRES";
142 }
143 return "Invalid";
144}

References BiCGSTAB, BiCGSTABL, CG, GMRES, IDRS, IDRSTABL, LeastSquareCG, PardisoLU, solver_type, and SparseLU.

Referenced by MathLib::details::EigenDirectLinearSolver< T_SOLVER >::computeImpl(), MathLib::details::EigenIterativeLinearSolver< T_SOLVER >::computeImpl(), MathLib::details::EigenDirectLinearSolver< T_SOLVER >::solveImpl(), and MathLib::details::EigenIterativeLinearSolver< T_SOLVER >::solveImpl().

◆ getSolverType()

EigenOption::SolverType MathLib::EigenOption::getSolverType ( const std::string & solver_name)
static

return a linear solver type from the solver name

Parameters
solver_name
Returns
a linear solver type If there is no solver type matched with the given name, INVALID is returned.

Definition at line 35 of file EigenOption.cpp.

37{
38 if (solver_name == "CG")
39 {
40 return SolverType::CG;
41 }
42 if (solver_name == "LeastSquareCG")
43 {
45 }
46 if (solver_name == "BiCGSTAB")
47 {
49 }
50 if (solver_name == "BiCGSTABL")
51 {
53 }
54 if (solver_name == "IDRS")
55 {
56 return SolverType::IDRS;
57 }
58 if (solver_name == "IDRSTABL")
59 {
61 }
62 if (solver_name == "SparseLU")
63 {
65 }
66 if (solver_name == "PardisoLU")
67 {
69 }
70 if (solver_name == "GMRES")
71 {
72 return SolverType::GMRES;
73 }
74
75 OGS_FATAL("Unknown Eigen solver type `{:s}'", solver_name);
76}

References BiCGSTAB, BiCGSTABL, CG, GMRES, IDRS, IDRSTABL, LeastSquareCG, OGS_FATAL, PardisoLU, and SparseLU.

Referenced by MathLib::LinearSolverOptionsParser< EigenLinearSolver >::parseNameAndOptions().

◆ getTriangularMatrixName()

std::string MathLib::EigenOption::getTriangularMatrixName ( TriangularMatrixType const triangular_matrix_type)
static

return a triangular matrix name from the preconditioner type

Definition at line 162 of file EigenOption.cpp.

164{
166 {
168 return "Lower";
170 return "Upper";
172 return "LowerUpper";
173 }
174 return "Invalid";
175}

References Lower, LowerUpper, triangular_matrix_type, and Upper.

◆ getTriangularMatrixType()

EigenOption::TriangularMatrixType MathLib::EigenOption::getTriangularMatrixType ( const std::string & triangular_matrix_name)
static

return a triangular matrix type from the name

Parameters
triangular_matrix_name
Returns
a triangular_matrix type If there is no triangular matrix type matched with the given name, NONE is returned.

Definition at line 101 of file EigenOption.cpp.

103{
104 if (triangular_matrix_name == "Lower")
105 {
107 }
108 if (triangular_matrix_name == "Upper")
109 {
111 }
112 if (triangular_matrix_name == "LowerUpper")
113 {
115 }
116
117 OGS_FATAL("Unknown triangular matrix type `{:s}'", triangular_matrix_name);
118}

References Lower, LowerUpper, OGS_FATAL, and Upper.

Referenced by MathLib::LinearSolverOptionsParser< EigenLinearSolver >::parseNameAndOptions().

Member Data Documentation

◆ error_tolerance

◆ max_iterations

◆ precon_type

◆ solver_type

◆ triangular_matrix_type


The documentation for this struct was generated from the following files: