Belos Package Browser (Single Doxygen Collection) Development
Private Types | Private Attributes
Belos::MinresSolMgr< ScalarType, MV, OP > Class Template Reference

MINRES linear solver solution manager. More...

#include <BelosMinresSolMgr.hpp>

Inheritance diagram for Belos::MinresSolMgr< ScalarType, MV, OP >:
Inheritance graph
[legend]

List of all members.

Private Types

typedef MultiVecTraits
< ScalarType, MV > 
MVT
typedef OperatorTraits
< ScalarType, MV, OP > 
OPT
typedef Teuchos::ScalarTraits
< ScalarType > 
SCT
typedef Teuchos::ScalarTraits
< ScalarType >::magnitudeType 
MagnitudeType
typedef Teuchos::ScalarTraits
< MagnitudeType
MT

Private Attributes

Teuchos::RCP< LinearProblem
< ScalarType, MV, OP > > 
problem_
 Linear problem to solve.
Teuchos::RCP< OutputManager
< ScalarType > > 
printer_
 Output manager.
Teuchos::RCP< std::ostream > outputStream_
Teuchos::RCP< StatusTest
< ScalarType, MV, OP > > 
sTest_
 The full status test.
Teuchos::RCP
< StatusTestMaxIters
< ScalarType, MV, OP > > 
maxIterTest_
 The status test for maximum iteration count.
Teuchos::RCP< StatusTest
< ScalarType, MV, OP > > 
convTest_
 The combined status test for convergence.
Teuchos::RCP
< StatusTestGenResNorm
< ScalarType, MV, OP > > 
impConvTest_
 The implicit (a.k.a.
Teuchos::RCP
< StatusTestGenResNorm
< ScalarType, MV, OP > > 
expConvTest_
 The explicit residual norm test.
Teuchos::RCP< StatusTestOutput
< ScalarType, MV, OP > > 
outputTest_
 The "status test" that handles output.
Teuchos::RCP< const
Teuchos::ParameterList
defaultParams_
 List of default parameters.
Teuchos::RCP
< Teuchos::ParameterList
params_
 List of current parameters.
MagnitudeType convtol_
 Current relative residual 2-norm convergence tolerance.
MagnitudeType achievedTol_
 Tolerance achieved by the last solve() invocation.
int maxIters_
 Maximum number of iterations before stopping.
int numIters_
 Current number of iterations.
int blockSize_
 Current block size (i.e., number of right-hand sides): always 1 (one).
int verbosity_
 Current output verbosity.
int outputStyle_
 Current output style.
int outputFreq_
 Current frequency of output.
std::string label_
 Timer label.
Teuchos::RCP< Teuchos::TimetimerSolve_
 Total time to solution.
bool parametersSet_
 Whether the solver manager's parameters have been set.

MinresSolMgr Exceptions

static Teuchos::RCP< const
Teuchos::ParameterList
defaultParameters ()
 List of valid MINRES parameters and their default values.
static void validateProblem (const Teuchos::RCP< LinearProblem< ScalarType, MV, OP > > &problem)
 Validate the given linear problem.

Constructors/Destructor

 MinresSolMgr ()
 Default constructor.
 MinresSolMgr (const Teuchos::RCP< LinearProblem< ScalarType, MV, OP > > &problem, const Teuchos::RCP< Teuchos::ParameterList > &params)
 Basic constructor for MinresSolMgr.
virtual ~MinresSolMgr ()
 Destructor.

Accessor methods

const LinearProblem
< ScalarType, MV, OP > & 
getProblem () const
 Return the linear problem to be solved.
Teuchos::RCP< const
Teuchos::ParameterList
getValidParameters () const
 Return the list of default parameters for this object.
Teuchos::RCP< const
Teuchos::ParameterList
getCurrentParameters () const
 Return the list of current parameters for this object.
Teuchos::Array< Teuchos::RCP
< Teuchos::Time > > 
getTimers () const
 Return all timers for this object.
MagnitudeType achievedTol () const
 Tolerance achieved by the last solve() invocation.
int getNumIters () const
 Get the iteration count for the most recent call to solve().
bool isLOADetected () const
 Whether a loss of accuracy was detected in the solver.

Set methods (overridden from \c SolverManager)

void setProblem (const Teuchos::RCP< LinearProblem< ScalarType, MV, OP > > &problem)
 Set the linear problem that needs to be solved.
void setParameters (const Teuchos::RCP< Teuchos::ParameterList > &params)
 Set the parameters to use when solving the linear problem.

Reset methods (overridden from \c SolverManager)

void reset (const ResetType type)
 Reset the solver manager.

Solver application methods (overridden from \c SolverManager)

ReturnType solve ()
 Iterate until the status test tells us to stop.

Overridden from Teuchos::Describable

std::string description () const

Detailed Description

template<class ScalarType, class MV, class OP>
class Belos::MinresSolMgr< ScalarType, MV, OP >

MINRES linear solver solution manager.

Author:
Nico Schl"omer

The Minimal Residual Method (MINRES) is a Krylov subspace method for solving symmetric (in real arithmetic, or Hermitian in complex arithmetic), nonsingular, but possibly indefinite linear systems

Definition at line 115 of file BelosMinresSolMgr.hpp.


Member Typedef Documentation

template<class ScalarType, class MV, class OP>
typedef MultiVecTraits<ScalarType,MV> Belos::MinresSolMgr< ScalarType, MV, OP >::MVT [private]

Definition at line 118 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
typedef OperatorTraits<ScalarType,MV,OP> Belos::MinresSolMgr< ScalarType, MV, OP >::OPT [private]

Definition at line 119 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
typedef Teuchos::ScalarTraits<ScalarType> Belos::MinresSolMgr< ScalarType, MV, OP >::SCT [private]

Definition at line 120 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
typedef Teuchos::ScalarTraits<ScalarType>::magnitudeType Belos::MinresSolMgr< ScalarType, MV, OP >::MagnitudeType [private]

Definition at line 121 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
typedef Teuchos::ScalarTraits< MagnitudeType > Belos::MinresSolMgr< ScalarType, MV, OP >::MT [private]

Definition at line 122 of file BelosMinresSolMgr.hpp.


Constructor & Destructor Documentation

template<class ScalarType , class MV , class OP >
Belos::MinresSolMgr< ScalarType, MV, OP >::MinresSolMgr ( )

Default constructor.

This constructor takes no arguments and sets the default values for the solver. The linear problem must be passed in using setProblem() before solve() is called on this object, otherwise an exception is thrown. The solver's parameters (which this constructor sets to their default values) may be changed using setParameters().

Definition at line 446 of file BelosMinresSolMgr.hpp.

template<class ScalarType , class MV , class OP >
Belos::MinresSolMgr< ScalarType, MV, OP >::MinresSolMgr ( const Teuchos::RCP< LinearProblem< ScalarType, MV, OP > > &  problem,
const Teuchos::RCP< Teuchos::ParameterList > &  params 
)

Basic constructor for MinresSolMgr.

Parameters:
problem[in/out] The LinearProblem to be solved
params[in/out] Parameter list of options for the solver manager. Parameters not provided will be filled in with default values. These are the options accepted by the solver manager:
  • "Block Size" - an int specifying the block size to be used by the underlying MINRES solver. Default: 1 (which is the only valid value!)
  • "Convergence Tolerance" - a MagnitudeType specifying the level that residual norms must reach to decide convergence. Default value: 1e-8.
  • "Maximum Iterations" - an int specifying the maximum number of iterations the underlying solver is allowed to perform. Default: 1000
  • "Verbosity" - a sum of MsgType (stored as an int) specifying the verbosity. Default value: Belos::Errors
  • "Output Style" - a OutputType specifying the style of output. Default value: Belos::General
  • "Output Stream" - a reference-counted pointer to the output stream where all solver output is sent. Default value: Teuchos::rcp(&std::cout,false)
  • "Output Frequency" - an int specifying how often (in terms of number of iterations) intermediate convergence information should be written to the output stream. Default value: -1 (which means no intermediate convergence information is ever written to the output stream)
  • "Timer Label" - an std::string to use as a prefix for the timer labels. Default value: "Belos"

Definition at line 456 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
virtual Belos::MinresSolMgr< ScalarType, MV, OP >::~MinresSolMgr ( ) [inline, virtual]

Destructor.

Definition at line 182 of file BelosMinresSolMgr.hpp.


Member Function Documentation

template<class ScalarType , class MV , class OP >
Teuchos::RCP< const Teuchos::ParameterList > Belos::MinresSolMgr< ScalarType, MV, OP >::defaultParameters ( ) [static]

List of valid MINRES parameters and their default values.

One way to set up this solver manager with nondefault parameters, is to make a deep non-const copy of the default parameters, and change the parameters you want to change.

Note:
This is a class ("static") method, so that it can be called before you have constructed a MinresSolMgr object (useful for you, so you can have valid parameters before constructing one), or within the MinresSolMgr constructor (useful for me, so I can set default parameters).

Definition at line 395 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
const LinearProblem<ScalarType,MV,OP>& Belos::MinresSolMgr< ScalarType, MV, OP >::getProblem ( ) const [inline, virtual]

Return the linear problem to be solved.

Implements Belos::SolverManager< ScalarType, MV, OP >.

Definition at line 189 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
Teuchos::RCP<const Teuchos::ParameterList> Belos::MinresSolMgr< ScalarType, MV, OP >::getValidParameters ( ) const [inline, virtual]

Return the list of default parameters for this object.

Implements Belos::SolverManager< ScalarType, MV, OP >.

Definition at line 194 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
Teuchos::RCP<const Teuchos::ParameterList> Belos::MinresSolMgr< ScalarType, MV, OP >::getCurrentParameters ( ) const [inline, virtual]

Return the list of current parameters for this object.

Implements Belos::SolverManager< ScalarType, MV, OP >.

Definition at line 202 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
Teuchos::Array<Teuchos::RCP<Teuchos::Time> > Belos::MinresSolMgr< ScalarType, MV, OP >::getTimers ( ) const [inline]

Return all timers for this object.

Currently only one timer is being used, which is the total time spent in the solve() routine. Thus, the returned Array currently has only one element.

Warning:
If setParameters() has not yet been called, or if you change the timer label, that invalidates the pointer timer(s).

Definition at line 215 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
MagnitudeType Belos::MinresSolMgr< ScalarType, MV, OP >::achievedTol ( ) const [inline, virtual]

Tolerance achieved by the last solve() invocation.

This is the maximum over all right-hand sides' achieved convergence tolerances, and is set whether or not the solve actually managed to achieve the desired convergence tolerance.

Reimplemented from Belos::SolverManager< ScalarType, MV, OP >.

Definition at line 224 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
int Belos::MinresSolMgr< ScalarType, MV, OP >::getNumIters ( ) const [inline, virtual]

Get the iteration count for the most recent call to solve().

Implements Belos::SolverManager< ScalarType, MV, OP >.

Definition at line 229 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
bool Belos::MinresSolMgr< ScalarType, MV, OP >::isLOADetected ( ) const [inline, virtual]

Whether a loss of accuracy was detected in the solver.

Warning:
This implementation of MINRES does not currently attempt to detect a loss of accuracy in the solver; thus we always return false (for now).

Implements Belos::SolverManager< ScalarType, MV, OP >.

Definition at line 238 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
void Belos::MinresSolMgr< ScalarType, MV, OP >::setProblem ( const Teuchos::RCP< LinearProblem< ScalarType, MV, OP > > &  problem) [inline, virtual]

Set the linear problem that needs to be solved.

Implements Belos::SolverManager< ScalarType, MV, OP >.

Definition at line 246 of file BelosMinresSolMgr.hpp.

template<class ScalarType , class MV , class OP >
void Belos::MinresSolMgr< ScalarType, MV, OP >::setParameters ( const Teuchos::RCP< Teuchos::ParameterList > &  params) [virtual]

Set the parameters to use when solving the linear problem.

Parameters:
params[in/out] List of parameters to use when solving the linear problem. This list will be modified as necessary to include default parameters that need not be provided. If params is null, then this method uses default parameters.
Note:
The ParameterList returned by getValidParameters() has all the parameters that the solver understands, possibly including human-readable documentation and validators.

Implements Belos::SolverManager< ScalarType, MV, OP >.

Definition at line 494 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
void Belos::MinresSolMgr< ScalarType, MV, OP >::reset ( const ResetType  type) [inline, virtual]

Reset the solver manager.

Reset the solver manager in a way specified by the ResetType parameter. This informs the solver manager that the solver should prepare for the next call to solve by resetting certain elements of the iterative solver strategy.

Implements Belos::SolverManager< ScalarType, MV, OP >.

Definition at line 261 of file BelosMinresSolMgr.hpp.

template<class ScalarType , class MV , class OP >
ReturnType Belos::MinresSolMgr< ScalarType, MV, OP >::solve ( ) [virtual]

Iterate until the status test tells us to stop.

This method implements SolverManager::solve() (which see).

MINRES' implementation of this method invokes MinresIter::iterate(), which will return either because a specially constructed status test that evaluates to Passed, or an std::exception is thrown.

A return from MinresIter::iterate() signifies one of the following scenarios:

  • the maximum number of iterations has been exceeded. In this scenario, the current solutions to the linear system will be placed in the linear problem and return Unconverged.
  • global convergence has been met. In this case, the current solutions to the linear system will be placed in the linear problem and the solver manager will return Converged.

Implements Belos::SolverManager< ScalarType, MV, OP >.

Definition at line 662 of file BelosMinresSolMgr.hpp.

template<class ScalarType , class MV , class OP >
std::string Belos::MinresSolMgr< ScalarType, MV, OP >::description ( ) const [virtual]

Reimplemented from Teuchos::Describable.

Definition at line 826 of file BelosMinresSolMgr.hpp.

template<class ScalarType , class MV , class OP >
void Belos::MinresSolMgr< ScalarType, MV, OP >::validateProblem ( const Teuchos::RCP< LinearProblem< ScalarType, MV, OP > > &  problem) [static, private]

Validate the given linear problem.

We do this by raising std::invalid_argument (with an informative message) if the problem is null or its essential components are null.

Definition at line 472 of file BelosMinresSolMgr.hpp.


Member Data Documentation

template<class ScalarType, class MV, class OP>
Teuchos::RCP<LinearProblem<ScalarType,MV,OP> > Belos::MinresSolMgr< ScalarType, MV, OP >::problem_ [private]

Linear problem to solve.

Definition at line 302 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
Teuchos::RCP<OutputManager<ScalarType> > Belos::MinresSolMgr< ScalarType, MV, OP >::printer_ [private]

Output manager.

Definition at line 305 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
Teuchos::RCP<std::ostream> Belos::MinresSolMgr< ScalarType, MV, OP >::outputStream_ [private]

Definition at line 306 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
Teuchos::RCP<StatusTest<ScalarType,MV,OP> > Belos::MinresSolMgr< ScalarType, MV, OP >::sTest_ [private]

The full status test.

sTest_ is an OR combination of maxIterTest_ and convTest_. If you reallocate either of these, you have to give them to sTest_ again. If you reallocate sTest_, you have to tell outputTest_.

Definition at line 314 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
Teuchos::RCP<StatusTestMaxIters<ScalarType,MV,OP> > Belos::MinresSolMgr< ScalarType, MV, OP >::maxIterTest_ [private]

The status test for maximum iteration count.

If you reallocate this, sTest_ needs the new RCP.

Definition at line 319 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
Teuchos::RCP<StatusTest<ScalarType,MV,OP> > Belos::MinresSolMgr< ScalarType, MV, OP >::convTest_ [private]

The combined status test for convergence.

If you reallocate this, sTest_ needs the new RCP.

Definition at line 324 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
Teuchos::RCP<StatusTestGenResNorm<ScalarType,MV,OP> > Belos::MinresSolMgr< ScalarType, MV, OP >::impConvTest_ [private]

The implicit (a.k.a.

"recursive") residual norm test.

If you reallocate this, convTest_ needs the new RCP.

Definition at line 329 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
Teuchos::RCP<StatusTestGenResNorm<ScalarType,MV,OP> > Belos::MinresSolMgr< ScalarType, MV, OP >::expConvTest_ [private]

The explicit residual norm test.

If you reallocate this, convTest_ needs the new RCP.

Definition at line 334 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
Teuchos::RCP<StatusTestOutput<ScalarType,MV,OP> > Belos::MinresSolMgr< ScalarType, MV, OP >::outputTest_ [private]

The "status test" that handles output.

This object keeps a pointer to printer_ and sTest_. If you reallocate either of them, outputTest_ needs to know.

Definition at line 340 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
Teuchos::RCP<const Teuchos::ParameterList> Belos::MinresSolMgr< ScalarType, MV, OP >::defaultParams_ [mutable, private]

List of default parameters.

This is declared "mutable" because it is computed on demand.

Definition at line 345 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
Teuchos::RCP<Teuchos::ParameterList> Belos::MinresSolMgr< ScalarType, MV, OP >::params_ [private]

List of current parameters.

Definition at line 348 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
MagnitudeType Belos::MinresSolMgr< ScalarType, MV, OP >::convtol_ [private]

Current relative residual 2-norm convergence tolerance.

Definition at line 351 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
MagnitudeType Belos::MinresSolMgr< ScalarType, MV, OP >::achievedTol_ [private]

Tolerance achieved by the last solve() invocation.

Definition at line 354 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
int Belos::MinresSolMgr< ScalarType, MV, OP >::maxIters_ [private]

Maximum number of iterations before stopping.

Definition at line 357 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
int Belos::MinresSolMgr< ScalarType, MV, OP >::numIters_ [private]

Current number of iterations.

Definition at line 360 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
int Belos::MinresSolMgr< ScalarType, MV, OP >::blockSize_ [private]

Current block size (i.e., number of right-hand sides): always 1 (one).

Definition at line 363 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
int Belos::MinresSolMgr< ScalarType, MV, OP >::verbosity_ [private]

Current output verbosity.

Definition at line 366 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
int Belos::MinresSolMgr< ScalarType, MV, OP >::outputStyle_ [private]

Current output style.

Definition at line 369 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
int Belos::MinresSolMgr< ScalarType, MV, OP >::outputFreq_ [private]

Current frequency of output.

Definition at line 372 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
std::string Belos::MinresSolMgr< ScalarType, MV, OP >::label_ [private]

Timer label.

Definition at line 375 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
Teuchos::RCP<Teuchos::Time> Belos::MinresSolMgr< ScalarType, MV, OP >::timerSolve_ [private]

Total time to solution.

Definition at line 378 of file BelosMinresSolMgr.hpp.

template<class ScalarType, class MV, class OP>
bool Belos::MinresSolMgr< ScalarType, MV, OP >::parametersSet_ [private]

Whether the solver manager's parameters have been set.

Definition at line 381 of file BelosMinresSolMgr.hpp.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines