1#ifndef DUNE_FEM_SOLVERPARAMETER_HH
2#define DUNE_FEM_SOLVERPARAMETER_HH
24 static const int cg = 1 ;
29 static const int loop = 6 ;
31 static const int bicg = 8 ;
35 std::string methods[] =
36 {
"cg",
"bicgstab",
"gmres",
"minres",
"gradient",
"loop",
"superlu",
"bicg",
"preonly" };
40 static const int none = 1 ;
41 static const int ssor = 2 ;
42 static const int sor = 3 ;
43 static const int ilu = 4 ;
48 static const int ildl = 9 ;
49 static const int oas = 10;
50 static const int icc = 11;
53 static const std::string methods[]
54 = {
"none",
"ssor",
"sor",
"ilu",
"gauss-seidel",
"jacobi",
"amg-ilu",
"amg-jacobi",
"ildl",
"oas",
"icc" };
84 return bool(verbose_);
89 verbose_ = verb ? 1 : 0;
94 const std::string errorTypeTable[] =
95 {
"absolute",
"relative",
"residualreduction" };
104 double defaultTol = 1e-8;
115 tolerance_ = absoluteTol__();
117 tolerance_ = reductionTol__();
119 else tolerance_ = defaultTol;
127 assert( eps >= 0.0 );
133 if( maxIterations_ < 0 )
137 std::cout <<
"WARNING: Parameter " +
keyPrefix_ +
"maxlineariterations is deprecated. Please use " +
keyPrefix_ +
"maxiterations instead." << std::endl;
143 return maxIterations_;
148 assert( maxIter >= 0 );
149 maxIterations_ = maxIter;
153 const std::vector<int> standardMethods,
154 const std::vector<std::string> &additionalMethods = {},
155 int defaultMethod = 0
158 std::vector<std::string> methodTable(standardMethods.size()+additionalMethods.size());
159 for (std::size_t i=0;i<standardMethods.size();++i)
161 for (std::size_t i=0;i<additionalMethods.size();++i)
162 methodTable[standardMethods.size()+i] = additionalMethods[i];
170 std::cout <<
"WARNING: using old parameter name 'krylovmethod' "
171 <<
"please switch to '" <<
keyPrefix_ <<
"method'\n";
173 if (method < standardMethods.size())
174 return standardMethods[method];
176 return -(method-standardMethods.size());
181 int defaultRestart = 20;
186 const std::vector<int> standardMethods,
187 const std::vector<std::string> &additionalMethods = {},
188 int defaultMethod = 0
191 std::vector<std::string> methodTable(standardMethods.size()+additionalMethods.size());
192 for (std::size_t i=0;i<standardMethods.size();++i)
194 for (std::size_t i=0;i<additionalMethods.size();++i)
195 methodTable[standardMethods.size()+i] = additionalMethods[i];
197 if (method < standardMethods.size())
198 return standardMethods[method];
200 return -(method-standardMethods.size());
219 virtual double absoluteTol__ ( )
const
221 if( absoluteTol_ < 0 )
225 std::cout <<
"WARNING: Parameter " +
keyPrefix_ +
"linabstol is deprecated. Please use " +
keyPrefix_ +
"absolutetol instead." << std::endl;
230 std::cout <<
"WARNING: Parameter " +
keyPrefix_ +
"absolutetol is deprecated. Please use " +
keyPrefix_ +
"tolerance instead." << std::endl;
237 virtual double reductionTol__ ( )
const
239 if( reductionTol_ < 0 )
243 std::cout <<
"WARNING: Parameter " +
keyPrefix_ +
"linreduction is deprecated. Please use " +
keyPrefix_ +
"reductiontol instead." << std::endl;
248 std::cout <<
"WARNING: Parameter " +
keyPrefix_ +
"reductiontol is deprecated. Please use " +
keyPrefix_ +
"tolerance instead." << std::endl;
252 return reductionTol_;
255 mutable int verbose_ = -1;
256 mutable int maxIterations_ = -1;
257 mutable double absoluteTol_ = -1.;
258 mutable double reductionTol_ = -1.;
259 mutable double tolerance_ = -1.;
Definition: bindguard.hh:11
static ParameterContainer & container()
Definition: io/parameter.hh:193
Definition: io/parameter.hh:551
int getEnum(const std::string &key, const std::string(&values)[n]) const
Definition: reader.hh:225
T getValue(const std::string &key) const
get mandatory parameter
Definition: reader.hh:159
bool exists(const std::string &key) const
check, whether a parameter is defined
Definition: reader.hh:44
Definition: solver/parameter.hh:15
virtual int errorMeasure() const
Definition: solver/parameter.hh:92
static const int loop
Definition: solver/parameter.hh:29
static const std::string solverMethodTable(int i)
Definition: solver/parameter.hh:33
static const int none
Definition: solver/parameter.hh:40
static const int cg
Definition: solver/parameter.hh:24
static const int icc
Definition: solver/parameter.hh:50
static const std::string preconditionMethodTable(int i)
Definition: solver/parameter.hh:51
virtual double tolerance() const
Definition: solver/parameter.hh:100
virtual void setVerbose(const bool verb)
Definition: solver/parameter.hh:87
static const int gmres
Definition: solver/parameter.hh:26
virtual void setMaxIterations(const int maxIter)
Definition: solver/parameter.hh:146
SolverParameter(const ParameterReader ¶meter=Parameter::container())
Definition: solver/parameter.hh:58
static const int bicg
Definition: solver/parameter.hh:31
virtual int preconditionMethod(const std::vector< int > standardMethods, const std::vector< std::string > &additionalMethods={}, int defaultMethod=0) const
Definition: solver/parameter.hh:185
virtual int preconditionerLevel() const
Definition: solver/parameter.hh:213
static const int ssor
Definition: solver/parameter.hh:41
SolverParameter(const std::string keyPrefix, const ParameterReader ¶meter=Parameter::container())
Definition: solver/parameter.hh:62
virtual int gmresRestart() const
Definition: solver/parameter.hh:179
virtual void setTolerance(const double eps)
Definition: solver/parameter.hh:125
virtual double relaxation() const
Definition: solver/parameter.hh:203
static const int sor
Definition: solver/parameter.hh:42
static const int ildl
Definition: solver/parameter.hh:48
static const int minres
Definition: solver/parameter.hh:27
static const int gradient
Definition: solver/parameter.hh:28
static const int gauss_seidel
Definition: solver/parameter.hh:44
virtual int preconditionerIteration() const
Definition: solver/parameter.hh:208
static const int ilu
Definition: solver/parameter.hh:43
virtual int solverMethod(const std::vector< int > standardMethods, const std::vector< std::string > &additionalMethods={}, int defaultMethod=0) const
Definition: solver/parameter.hh:152
static const int bicgstab
Definition: solver/parameter.hh:25
static const int superlu
Definition: solver/parameter.hh:30
const ParameterReader & parameter() const
Definition: solver/parameter.hh:68
ParameterReader parameter_
Definition: solver/parameter.hh:20
static const int jacobi
Definition: solver/parameter.hh:45
static const int amg_ilu
Definition: solver/parameter.hh:46
virtual int maxIterations() const
Definition: solver/parameter.hh:131
virtual bool verbose() const
Definition: solver/parameter.hh:78
virtual void reset()
Definition: solver/parameter.hh:70
const std::string keyPrefix_
Definition: solver/parameter.hh:18
static const int amg_jacobi
Definition: solver/parameter.hh:47
const std::string & keyPrefix() const
Definition: solver/parameter.hh:66
static const int preonly
Definition: solver/parameter.hh:32
static const int oas
Definition: solver/parameter.hh:49