You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
5.1 KiB
122 lines
5.1 KiB
#pragma once
|
|
|
|
#include "storm/settings/modules/ModuleSettings.h"
|
|
#include "storm/solver/SolverSelectionOptions.h"
|
|
|
|
namespace storm {
|
|
namespace settings {
|
|
namespace modules {
|
|
|
|
/*!
|
|
* This class represents the settings for Eigen.
|
|
*/
|
|
class EigenEquationSolverSettings : public ModuleSettings {
|
|
public:
|
|
// An enumeration of all available methods for solving linear equations.
|
|
enum class LinearEquationMethod { SparseLU, BiCGSTAB, DGMRES, GMRES };
|
|
|
|
// An enumeration of all available preconditioning methods.
|
|
enum class PreconditioningMethod { Ilu, Diagonal, None };
|
|
|
|
/*!
|
|
* Creates a new set of Eigen settings.
|
|
*/
|
|
EigenEquationSolverSettings();
|
|
|
|
/*!
|
|
* Retrieves whether the linear equation system method has been set.
|
|
*
|
|
* @return True iff the linear equation system method has been set.
|
|
*/
|
|
bool isLinearEquationSystemMethodSet() const;
|
|
|
|
/*!
|
|
* Retrieves whether the linear equation system method has been set from the default value.
|
|
*
|
|
* @return True iff the linear equation system method has been set from the default value.
|
|
*/
|
|
bool isLinearEquationSystemMethodSetFromDefault() const;
|
|
|
|
/*!
|
|
* Retrieves the method that is to be used for solving systems of linear equations.
|
|
*
|
|
* @return The method to use.
|
|
*/
|
|
storm::solver::EigenLinearEquationSolverMethod getLinearEquationSystemMethod() const;
|
|
|
|
/*!
|
|
* Retrieves whether the preconditioning method has been set.
|
|
*
|
|
* @return True iff the preconditioning method has been set.
|
|
*/
|
|
bool isPreconditioningMethodSet() const;
|
|
|
|
/*!
|
|
* Retrieves the method that is to be used for preconditioning solving systems of linear equations.
|
|
*
|
|
* @return The method to use.
|
|
*/
|
|
storm::solver::EigenLinearEquationSolverPreconditioner getPreconditioningMethod() const;
|
|
|
|
/*!
|
|
* Retrieves whether the restart iteration count has been set.
|
|
*
|
|
* @return True iff the restart iteration count has been set.
|
|
*/
|
|
bool isRestartIterationCountSet() const;
|
|
|
|
/*!
|
|
* Retrieves the number of iterations after which restarted methods are to be restarted.
|
|
*
|
|
* @return The number of iterations after which to restart.
|
|
*/
|
|
uint_fast64_t getRestartIterationCount() const;
|
|
|
|
/*!
|
|
* Retrieves whether the maximal iteration count has been set.
|
|
*
|
|
* @return True iff the maximal iteration count has been set.
|
|
*/
|
|
bool isMaximalIterationCountSet() const;
|
|
|
|
/*!
|
|
* Retrieves the maximal number of iterations to perform until giving up on converging.
|
|
*
|
|
* @return The maximal iteration count.
|
|
*/
|
|
uint_fast64_t getMaximalIterationCount() const;
|
|
|
|
/*!
|
|
* Retrieves whether the precision has been set.
|
|
*
|
|
* @return True iff the precision has been set.
|
|
*/
|
|
bool isPrecisionSet() const;
|
|
|
|
/*!
|
|
* Retrieves the precision that is used for detecting convergence.
|
|
*
|
|
* @return The precision to use for detecting convergence.
|
|
*/
|
|
double getPrecision() const;
|
|
|
|
bool check() const override;
|
|
|
|
// The name of the module.
|
|
static const std::string moduleName;
|
|
|
|
private:
|
|
// Define the string names of the options as constants.
|
|
static const std::string techniqueOptionName;
|
|
static const std::string preconditionOptionName;
|
|
static const std::string maximalIterationsOptionName;
|
|
static const std::string maximalIterationsOptionShortName;
|
|
static const std::string precisionOptionName;
|
|
static const std::string restartOptionName;
|
|
};
|
|
|
|
std::ostream& operator<<(std::ostream& out, EigenEquationSolverSettings::LinearEquationMethod const& method);
|
|
|
|
} // namespace modules
|
|
} // namespace settings
|
|
} // namespace storm
|