Ifpack2 Templated Preconditioning Package Version 1.0
|
Definition of power methods. More...
#include "Kokkos_ArithTraits.hpp"
#include "Teuchos_FancyOStream.hpp"
#include "Teuchos_oblackholestream.hpp"
#include "Tpetra_Details_residual.hpp"
#include <cmath>
#include <iostream>
Go to the source code of this file.
Namespaces | |
namespace | Ifpack2 |
Preconditioners and smoothers for Tpetra sparse matrices. | |
Functions | |
template<class OperatorType , class V > | |
V::scalar_type | Ifpack2::PowerMethod::powerMethodWithInitGuess (const OperatorType &A, const V &D_inv, const int numIters, Teuchos::RCP< V > x, Teuchos::RCP< V > y, const typename Teuchos::ScalarTraits< typename V::scalar_type >::magnitudeType tolerance=1e-7, const int eigNormalizationFreq=1, Teuchos::RCP< Teuchos::FancyOStream > out=Teuchos::null, const bool computeSpectralRadius=true) |
Use the power method to estimate the maximum eigenvalue of A*D_inv, given an initial guess vector x. | |
template<class V > | |
void | Ifpack2::PowerMethod::computeInitialGuessForPowerMethod (V &x, const bool nonnegativeRealParts) |
Fill x with random initial guess for power method. | |
template<class OperatorType , class V > | |
V::scalar_type | Ifpack2::PowerMethod::powerMethod (const OperatorType &A, const V &D_inv, const int numIters, Teuchos::RCP< V > y, const typename Teuchos::ScalarTraits< typename V::scalar_type >::magnitudeType tolerance=1e-7, const int eigNormalizationFreq=1, Teuchos::RCP< Teuchos::FancyOStream > out=Teuchos::null, const bool computeSpectralRadius=true) |
Use the power method to estimate the maximum eigenvalue of A*D_inv. | |
Definition of power methods.
This file describes power methods for use throughout Ifpack2
V::scalar_type Ifpack2::PowerMethod::powerMethodWithInitGuess | ( | const OperatorType & | A, |
const V & | D_inv, | ||
const int | numIters, | ||
Teuchos::RCP< V > | x, | ||
Teuchos::RCP< V > | y, | ||
const typename Teuchos::ScalarTraits< typename V::scalar_type >::magnitudeType | tolerance = 1e-7, | ||
const int | eigNormalizationFreq = 1, | ||
Teuchos::RCP< Teuchos::FancyOStream > | out = Teuchos::null, | ||
const bool | computeSpectralRadius = true ) |
Use the power method to estimate the maximum eigenvalue of A*D_inv, given an initial guess vector x.
A | [in] The Operator to use. |
D_inv | [in] Vector to use as implicit right scaling of A. |
numIters | [in] Maximum number of iterations of the power method. |
x | [in/out] On input: Initial guess Vector for the power method. Its Map must be the same as that of the domain Map of A. This method may use this Vector as scratch space. |
y | [out] The resulting eigenvector. |
tolerance | [in] The relative eigenvalue tolerance. (default: 1e-7) |
eigNormalizationFreq | [in] The frequency of normalization. (default: 1) |
out | [in] The stream to send verbose output to. (default: null) |
computeSpectralRadius | [in] Compute the absolute value of the dominant eigenvalue of \(D^{-1}A\) if true. Compute the dominant eigenvalue of \(D^{-1}A\) if false. (default: true) |
void Ifpack2::PowerMethod::computeInitialGuessForPowerMethod | ( | V & | x, |
const bool | nonnegativeRealParts ) |
Fill x with random initial guess for power method.
x | [out] Initial guess vector; a domain Map vector of the matrix. |
nonnegativeRealParts | [in] Whether to force all entries of x (on output) to have nonnegative real parts. Defaults to false (don't force). |
This is an implementation detail of powerMethod() below. For a justification of the second parameter, see Github Issues #64 and #567.
V::scalar_type Ifpack2::PowerMethod::powerMethod | ( | const OperatorType & | A, |
const V & | D_inv, | ||
const int | numIters, | ||
Teuchos::RCP< V > | y, | ||
const typename Teuchos::ScalarTraits< typename V::scalar_type >::magnitudeType | tolerance = 1e-7, | ||
const int | eigNormalizationFreq = 1, | ||
Teuchos::RCP< Teuchos::FancyOStream > | out = Teuchos::null, | ||
const bool | computeSpectralRadius = true ) |
Use the power method to estimate the maximum eigenvalue of A*D_inv.
A | [in] The Operator to use. |
D_inv | [in] Vector to use as implicit right scaling of A. |
numIters | [in] Maximum number of iterations of the power method. |
y | [out] The resulting eigenvector. |
tolerance | [in] The relative eigenvalue tolerance. (default: 1e-7) |
eigNormalizationFreq | [in] The frequency of normalization. (default: 1) |
out | [in] The stream to send verbose output to. (default: null) |
computeSpectralRadius | [in] Compute the absolute value of the dominant eigenvalue of \(D^{-1}A\) if true. Compute the dominant eigenvalue of \(D^{-1}A\) if false. (default: true) |