GEOS
LinearSolverParameters.hpp
Go to the documentation of this file.
1 /*
2  * ------------------------------------------------------------------------------------------------------------
3  * SPDX-License-Identifier: LGPL-2.1-only
4  *
5  * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
6  * Copyright (c) 2018-2024 TotalEnergies
7  * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
8  * Copyright (c) 2023-2024 Chevron
9  * Copyright (c) 2019- GEOS/GEOSX Contributors
10  * All rights reserved
11  *
12  * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
13  * ------------------------------------------------------------------------------------------------------------
14  */
15 
20 #ifndef GEOS_PHYSICSSOLVERS_LINEARSOLVERPARAMETERS_HPP_
21 #define GEOS_PHYSICSSOLVERS_LINEARSOLVERPARAMETERS_HPP_
22 
23 #include "dataRepository/Group.hpp"
25 
26 namespace geos
27 {
28 
43 {
44 public:
45 
47  LinearSolverParametersInput( string const & name, Group * const parent );
48 
50  static string catalogName() { return "LinearSolverParameters"; }
51 
53  virtual void postInputInitialization() override;
54 
55  void print();
56 
57  virtual Group * createChild( string const & childKey, string const & childName ) override final;
58 
59  LinearSolverParameters const & get() const
60  { return m_parameters; }
61 
63  { return m_parameters; }
64 
67  {
69  static constexpr char const * solverTypeString() { return "solverType"; }
71  static constexpr char const * preconditionerTypeString() { return "preconditionerType"; }
73  static constexpr char const * stopIfErrorString() { return "stopIfError"; }
74 
76  static constexpr char const * directCheckResidualString() { return "directCheckResidual"; }
78  static constexpr char const * directEquilString() { return "directEquil"; }
80  static constexpr char const * directColPermString() { return "directColPerm"; }
82  static constexpr char const * directRowPermString() { return "directRowPerm"; }
84  static constexpr char const * directReplTinyPivotString() { return "directReplTinyPivot"; }
86  static constexpr char const * directIterRefString() { return "directIterRef"; }
88  static constexpr char const * directParallelString() { return "directParallel"; }
89 
91  static constexpr char const * krylovMaxIterString() { return "krylovMaxIter"; }
93  static constexpr char const * krylovMaxRestartString() { return "krylovMaxRestart"; }
95  static constexpr char const * krylovTolString() { return "krylovTol"; }
97  static constexpr char const * krylovAdaptiveTolString() { return "krylovAdaptiveTol"; }
99  static constexpr char const * krylovWeakTolString() { return "krylovWeakestTol"; }
101  static constexpr char const * krylovStrongTolString() { return "krylovStrongestTol"; }
103  static constexpr char const * adaptiveGammaString() { return "adaptiveGamma"; }
105  static constexpr char const * adaptiveExponentString() { return "adaptiveExponent"; }
106 
108  static constexpr char const * relaxationWeightString() { return "relaxationWeight"; }
109 
111  static constexpr char const * chebyshevOrderString() { return "chebyshevOrder"; }
113  static constexpr char const * chebyshevEigNumIterString() { return "chebyshevEigNumIter"; }
114 
116  static constexpr char const * amgNumCyclesString() { return "amgNumCycles"; }
118  static constexpr char const * amgNumSweepsString() { return "amgNumSweeps"; }
120  static constexpr char const * amgSmootherString() { return "amgSmootherType"; }
122  static constexpr char const * amgRelaxWeight() { return "amgRelaxWeight"; }
124  static constexpr char const * amgCoarseString() { return "amgCoarseSolver"; }
126  static constexpr char const * amgThresholdString() { return "amgThreshold"; }
128  static constexpr char const * amgNullSpaceTypeString() { return "amgNullSpaceType"; }
130  static constexpr char const * amgCoarseningString() { return "amgCoarseningType"; }
132  static constexpr char const * amgInterpolationString() { return "amgInterpolationType"; }
134  static constexpr char const * amgInterpMaxNonZerosString() { return "amgInterpolationMaxNonZeros"; }
136  static constexpr char const * amgNumFunctionsString() { return "amgNumFunctions"; }
138  static constexpr char const * amgAggressiveNumPathsString() { return "amgAggressiveCoarseningPaths"; }
140  static constexpr char const * amgAggressiveNumLevelsString() { return "amgAggressiveCoarseningLevels"; }
142  static constexpr char const * amgAggressiveInterpTypeString() { return "amgAggressiveInterpType"; }
144  static constexpr char const * amgSeparateComponentsString() { return "amgSeparateComponents"; }
146  static constexpr char const * amgMaxCoarseSizeString() { return "amgMaxCoarseSize"; }
147 
149  static constexpr char const * iluFillString() { return "iluFill"; }
151  static constexpr char const * iluThresholdString() { return "iluThreshold"; }
152  };
153 
156  {
157  static constexpr char const * blockString() { return "Block"; }
158  };
159 
160 private:
161 
162  LinearSolverParameters m_parameters;
163 
164 };
165 
166 } // namespace geos
167 
168 #endif //GEOS_PHYSICSSOLVERS_LINEARSOLVERPARAMETERS_HPP_
Linear solver parameters with Group capabilities.
LinearSolverParametersInput(string const &name, Group *const parent)
Constructor.
virtual Group * createChild(string const &childKey, string const &childName) override final
Creates a new sub-Group using the ObjectCatalog functionality.
static string catalogName()
Catalog name.
virtual void postInputInitialization() override
Postprocessing of input.
Set of parameters for a linear solver or preconditioner.
static constexpr char const * krylovMaxRestartString()
Krylov max iterations key.
static constexpr char const * iluFillString()
ILU fill key.
static constexpr char const * krylovTolString()
Krylov tolerance key.
static constexpr char const * amgRelaxWeight()
AMG smoother relax factor key.
static constexpr char const * krylovMaxIterString()
Krylov max iterations key.
static constexpr char const * directColPermString()
direct solver columns permutation key
static constexpr char const * directEquilString()
direct solver equilibrate key
static constexpr char const * solverTypeString()
Solver type key.
static constexpr char const * chebyshevOrderString()
Chebyshev order key.
static constexpr char const * amgSeparateComponentsString()
AMG separate components flag.
static constexpr char const * iluThresholdString()
ILU threshold key.
static constexpr char const * amgSmootherString()
AMG smoother type key.
static constexpr char const * directIterRefString()
direct solver iterative refinement key
static constexpr char const * directParallelString()
direct solver parallelism key
static constexpr char const * amgMaxCoarseSizeString()
AMG coarse grid threshold key.
static constexpr char const * amgInterpolationString()
AMG interpolation key.
static constexpr char const * amgNumCyclesString()
AMG number of sweeps key.
static constexpr char const * amgCoarseString()
AMG coarse solver key.
static constexpr char const * amgInterpMaxNonZerosString()
AMG max. nonzero entries per row.
static constexpr char const * amgNumSweepsString()
AMG number of sweeps key.
static constexpr char const * directReplTinyPivotString()
direct solver replace tiny pivot key
static constexpr char const * amgNumFunctionsString()
AMG number of functions for unknown-based approach.
static constexpr char const * adaptiveExponentString()
Adaptive exponent parameter key.
static constexpr char const * relaxationWeightString()
Relaxation weight key.
static constexpr char const * amgThresholdString()
AMG threshold key.
static constexpr char const * directCheckResidualString()
direct solver check residual key
static constexpr char const * preconditionerTypeString()
Preconditioner type key.
static constexpr char const * chebyshevEigNumIterString()
Number of eigenvalue estimation CG iterations key.
static constexpr char const * adaptiveGammaString()
Adaptive gamma parameter key.
static constexpr char const * krylovStrongTolString()
Krylov strongest tolerance key.
static constexpr char const * amgCoarseningString()
AMG coarsening key.
static constexpr char const * krylovWeakTolString()
Krylov weakest tolerance key.
static constexpr char const * krylovAdaptiveTolString()
Krylov adaptive tolerance key.
static constexpr char const * stopIfErrorString()
stop if error key
static constexpr char const * amgAggressiveNumLevelsString()
AMG number of levels for aggressive coarsening.
static constexpr char const * amgAggressiveNumPathsString()
AMG number of paths for aggressive coarsening.
static constexpr char const * amgAggressiveInterpTypeString()
AMG interpolation type during aggressive coarsening.
static constexpr char const * directRowPermString()
direct solver rows permutation key
static constexpr char const * amgNullSpaceTypeString()
AMG near null space type key.