OGS
MathLib::EigenOption Struct Referencefinal

Detailed Description

Option for Eigen sparse solver.

Definition at line 11 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 28 of file EigenOption.h.

29 {
30 NONE,
31 DIAGONAL,
32 LeastSquareDIAGONAL,
33 ILUT
34 };

◆ SolverType

enum class MathLib::EigenOption::SolverType : short
strong

Solver type.

Enumerator
CG 
LeastSquareCG 
BiCGSTAB 
BiCGSTABL 
IDRS 
IDRSTABL 
SparseLU 
PardisoLU 
GMRES 

Definition at line 14 of file EigenOption.h.

15 {
16 CG,
17 LeastSquareCG,
18 BiCGSTAB,
19 BiCGSTABL,
20 IDRS,
21 IDRSTABL,
22 SparseLU,
23 PardisoLU,
24 GMRES
25 };

◆ TriangularMatrixType

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

triangular matrix type

Enumerator
Lower 
Upper 
LowerUpper 

Definition at line 37 of file EigenOption.h.

38 {
39 Lower,
40 Upper,
41 LowerUpper
42 };

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 10 of file EigenOption.cpp.

11{
14 max_iterations = static_cast<int>(1e6);
15 error_tolerance = 1.e-16;
17#ifdef USE_EIGEN_UNSUPPORTED
18 scaling = false;
19 restart = 30;
20 l = 2;
21 s = 4;
22 angle = 0.7;
23 smoothing = false;
24 residualupdate = false;
25#endif
26}
static const double s
PreconType precon_type
Preconditioner type.
Definition EigenOption.h:47
TriangularMatrixType triangular_matrix_type
Triangular Matrix Type.
Definition EigenOption.h:49
SolverType solver_type
Linear solver type.
Definition EigenOption.h:45
double error_tolerance
Error tolerance.
Definition EigenOption.h:53
int max_iterations
Maximum iteration count.
Definition EigenOption.h:51

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 139 of file EigenOption.cpp.

140{
141 switch (precon_type)
142 {
143 case PreconType::NONE:
144 return "NONE";
146 return "DIAGONAL";
148 return "LeastSquareDIAGONAL";
149 case PreconType::ILUT:
150 return "ILUT";
151 }
152 return "Invalid";
153}

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 71 of file EigenOption.cpp.

73{
74 if (precon_name == "NONE")
75 {
76 return PreconType::NONE;
77 }
78 if (precon_name == "DIAGONAL")
79 {
81 }
82 if (precon_name == "LeastSquareDIAGONAL")
83 {
85 }
86 if (precon_name == "ILUT")
87 {
88 return PreconType::ILUT;
89 }
90
91 OGS_FATAL("Unknown Eigen preconditioner type `{:s}'", precon_name);
92}
#define OGS_FATAL(...)
Definition Error.h:19

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 113 of file EigenOption.cpp.

114{
115 switch (solver_type)
116 {
117 case SolverType::CG:
118 return "CG";
120 return "LeastSquareCG";
122 return "BiCGSTAB";
124 return "BiCGSTABL";
125 case SolverType::IDRS:
126 return "IDRS";
128 return "IDRSTABL";
130 return "SparseLU";
132 return "PardisoLU";
134 return "GMRES";
135 }
136 return "Invalid";
137}

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 28 of file EigenOption.cpp.

30{
31 if (solver_name == "CG")
32 {
33 return SolverType::CG;
34 }
35 if (solver_name == "LeastSquareCG")
36 {
38 }
39 if (solver_name == "BiCGSTAB")
40 {
42 }
43 if (solver_name == "BiCGSTABL")
44 {
46 }
47 if (solver_name == "IDRS")
48 {
49 return SolverType::IDRS;
50 }
51 if (solver_name == "IDRSTABL")
52 {
54 }
55 if (solver_name == "SparseLU")
56 {
58 }
59 if (solver_name == "PardisoLU")
60 {
62 }
63 if (solver_name == "GMRES")
64 {
65 return SolverType::GMRES;
66 }
67
68 OGS_FATAL("Unknown Eigen solver type `{:s}'", solver_name);
69}

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 155 of file EigenOption.cpp.

157{
159 {
161 return "Lower";
163 return "Upper";
165 return "LowerUpper";
166 }
167 return "Invalid";
168}

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 94 of file EigenOption.cpp.

96{
97 if (triangular_matrix_name == "Lower")
98 {
100 }
101 if (triangular_matrix_name == "Upper")
102 {
104 }
105 if (triangular_matrix_name == "LowerUpper")
106 {
108 }
109
110 OGS_FATAL("Unknown triangular matrix type `{:s}'", triangular_matrix_name);
111}

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

TriangularMatrixType MathLib::EigenOption::triangular_matrix_type

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