#include <Ifpack_Chebyshev.h>
Public Member Functions | |
virtual int | SetUseTranspose (bool UseTranspose_in) |
Ifpack_Chebyshev (const Epetra_Operator *Matrix) | |
Ifpack_Chebyshev constructor with given Epetra_Operator/Epetra_RowMatrix. | |
Ifpack_Chebyshev (const Epetra_RowMatrix *Matrix) | |
Ifpack_Chebyshev constructor with given Epetra_Operator/Epetra_RowMatrix. | |
virtual | ~Ifpack_Chebyshev () |
Destructor. | |
virtual int | Apply (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const |
Applies the matrix to an Epetra_MultiVector. | |
virtual int | ApplyInverse (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const |
Applies the preconditioner to X, returns the result in Y. | |
virtual double | NormInf () const |
Returns the infinity norm of the global matrix (not implemented). | |
virtual const char * | Label () const |
virtual bool | UseTranspose () const |
Returns the current UseTranspose setting. | |
virtual bool | HasNormInf () const |
Returns true if the this object can provide an approximate Inf-norm, false otherwise. | |
virtual const Epetra_Comm & | Comm () const |
Returns a pointer to the Epetra_Comm communicator associated with this operator. | |
virtual const Epetra_Map & | OperatorDomainMap () const |
Returns the Epetra_Map object associated with the domain of this operator. | |
virtual const Epetra_Map & | OperatorRangeMap () const |
Returns the Epetra_Map object associated with the range of this operator. | |
virtual int | Initialize () |
Computes all it is necessary to initialize the preconditioner. | |
virtual bool | IsInitialized () const |
Returns true if the preconditioner has been successfully initialized, false otherwise. | |
virtual bool | IsComputed () const |
Returns true if the preconditioner has been successfully computed. | |
virtual int | Compute () |
Computes the preconditioners. | |
virtual const Epetra_RowMatrix & | Matrix () const |
Returns a pointer to the matrix to be preconditioned. | |
virtual double | Condest (const Ifpack_CondestType CT=Ifpack_Cheap, const int MaxIters=1550, const double Tol=1e-9, Epetra_RowMatrix *Matrix_in=0) |
Computes the condition number estimates and returns the value. | |
virtual double | Condest () const |
Returns the condition number estimate, or -1.0 if not computed. | |
virtual int | SetParameters (Teuchos::ParameterList &List) |
Sets all the parameters for the preconditioner. | |
virtual ostream & | Print (ostream &os) const |
Prints object to an output stream. | |
virtual int | NumInitialize () const |
Returns the number of calls to Initialize(). | |
virtual int | NumCompute () const |
Returns the number of calls to Compute(). | |
virtual int | NumApplyInverse () const |
Returns the number of calls to ApplyInverse(). | |
virtual double | InitializeTime () const |
Returns the time spent in Initialize(). | |
virtual double | ComputeTime () const |
Returns the time spent in Compute(). | |
virtual double | ApplyInverseTime () const |
Returns the time spent in ApplyInverse(). | |
virtual double | InitializeFlops () const |
Returns the number of flops in the initialization phase. | |
virtual double | ComputeFlops () const |
Returns the number of flops in the computation phase. | |
virtual double | ApplyInverseFlops () const |
Returns the number of flops for the application of the preconditioner. | |
Static Public Member Functions | |
static int | PowerMethod (const Epetra_Operator &Operator, const Epetra_Vector &InvPointDiagonal, const int MaximumIterations, double &LambdaMax) |
Simple power method to compute lambda_max. | |
static int | CG (const Epetra_Operator &Operator, const Epetra_Vector &InvPointDiagonal, const int MaximumIterations, double &lambda_min, double &lambda_max) |
Uses AztecOO's CG to estimate lambda_min and lambda_max. |
The Ifpack_Chebyshev class enables the construction of preconditioners based on Chebyshev polynomials for an Epetra_RowMatrix. Ifpack_Chebyshev is derived from the Ifpack_Preconditioner class, which is itself derived from Epetra_Operator. Therefore this object can be used as preconditioner everywhere an ApplyInverse() method is required in the preconditioning step.
The class is an adaptation of the routine ML_Cheby in Smoother/ml_smoother.h
(04/04/06) Flops are not counted in the routine ApplyInverse()
(04/04/06) The switch to use the transpose matrix is not used in ApplyInverse()
The list of parameters is
Ifpack_Chebyshev::Ifpack_Chebyshev | ( | const Epetra_Operator * | Matrix | ) |
Ifpack_Chebyshev constructor with given Epetra_Operator/Epetra_RowMatrix.
Creates an instance of Ifpack_Chebyshev class.
Matrix | - (In) Pointer to the operator to precondition. |
Ifpack_Chebyshev::Ifpack_Chebyshev | ( | const Epetra_RowMatrix * | Matrix | ) |
Ifpack_Chebyshev constructor with given Epetra_Operator/Epetra_RowMatrix.
Creates an instance of Ifpack_Chebyshev class.
Matrix | - (In) Pointer to the matrix to precondition. |
virtual Ifpack_Chebyshev::~Ifpack_Chebyshev | ( | ) | [inline, virtual] |
Destructor.
virtual int Ifpack_Chebyshev::Apply | ( | const Epetra_MultiVector & | X, | |
Epetra_MultiVector & | Y | |||
) | const [inline, virtual] |
Applies the matrix to an Epetra_MultiVector.
X | - (In) A Epetra_MultiVector of dimension NumVectors to multiply with matrix. | |
Y | - (Out) A Epetra_MultiVector of dimension NumVectors containing the result. |
virtual int Ifpack_Chebyshev::ApplyInverse | ( | const Epetra_MultiVector & | X, | |
Epetra_MultiVector & | Y | |||
) | const [virtual] |
Applies the preconditioner to X, returns the result in Y.
X | - (In) A Epetra_MultiVector of dimension NumVectors to be preconditioned. | |
Y | - (InOut) A Epetra_MultiVector of dimension NumVectors containing result. |
Implements Ifpack_Preconditioner.
virtual double Ifpack_Chebyshev::ApplyInverseFlops | ( | ) | const [inline, virtual] |
Returns the number of flops for the application of the preconditioner.
Implements Ifpack_Preconditioner.
virtual double Ifpack_Chebyshev::ApplyInverseTime | ( | ) | const [inline, virtual] |
static int Ifpack_Chebyshev::CG | ( | const Epetra_Operator & | Operator, | |
const Epetra_Vector & | InvPointDiagonal, | |||
const int | MaximumIterations, | |||
double & | lambda_min, | |||
double & | lambda_max | |||
) | [static] |
Uses AztecOO's CG to estimate lambda_min and lambda_max.
virtual const Epetra_Comm& Ifpack_Chebyshev::Comm | ( | ) | const [virtual] |
Returns a pointer to the Epetra_Comm communicator associated with this operator.
virtual int Ifpack_Chebyshev::Compute | ( | ) | [virtual] |
virtual double Ifpack_Chebyshev::ComputeFlops | ( | ) | const [inline, virtual] |
virtual double Ifpack_Chebyshev::ComputeTime | ( | ) | const [inline, virtual] |
virtual double Ifpack_Chebyshev::Condest | ( | ) | const [inline, virtual] |
virtual double Ifpack_Chebyshev::Condest | ( | const Ifpack_CondestType | CT = Ifpack_Cheap , |
|
const int | MaxIters = 1550 , |
|||
const double | Tol = 1e-9 , |
|||
Epetra_RowMatrix * | Matrix_in = 0 | |||
) | [virtual] |
virtual bool Ifpack_Chebyshev::HasNormInf | ( | ) | const [inline, virtual] |
Returns true if the this object can provide an approximate Inf-norm, false otherwise.
virtual int Ifpack_Chebyshev::Initialize | ( | ) | [virtual] |
virtual double Ifpack_Chebyshev::InitializeFlops | ( | ) | const [inline, virtual] |
virtual double Ifpack_Chebyshev::InitializeTime | ( | ) | const [inline, virtual] |
virtual bool Ifpack_Chebyshev::IsComputed | ( | ) | const [inline, virtual] |
Returns true
if the preconditioner has been successfully computed.
Implements Ifpack_Preconditioner.
virtual bool Ifpack_Chebyshev::IsInitialized | ( | ) | const [inline, virtual] |
Returns true if the preconditioner has been successfully initialized, false otherwise.
Implements Ifpack_Preconditioner.
virtual const char* Ifpack_Chebyshev::Label | ( | ) | const [inline, virtual] |
virtual const Epetra_RowMatrix& Ifpack_Chebyshev::Matrix | ( | ) | const [inline, virtual] |
virtual double Ifpack_Chebyshev::NormInf | ( | ) | const [inline, virtual] |
Returns the infinity norm of the global matrix (not implemented).
virtual int Ifpack_Chebyshev::NumApplyInverse | ( | ) | const [inline, virtual] |
virtual int Ifpack_Chebyshev::NumCompute | ( | ) | const [inline, virtual] |
virtual int Ifpack_Chebyshev::NumInitialize | ( | ) | const [inline, virtual] |
virtual const Epetra_Map& Ifpack_Chebyshev::OperatorDomainMap | ( | ) | const [virtual] |
Returns the Epetra_Map object associated with the domain of this operator.
virtual const Epetra_Map& Ifpack_Chebyshev::OperatorRangeMap | ( | ) | const [virtual] |
Returns the Epetra_Map object associated with the range of this operator.
static int Ifpack_Chebyshev::PowerMethod | ( | const Epetra_Operator & | Operator, | |
const Epetra_Vector & | InvPointDiagonal, | |||
const int | MaximumIterations, | |||
double & | LambdaMax | |||
) | [static] |
Simple power method to compute lambda_max.
virtual ostream& Ifpack_Chebyshev::Print | ( | ostream & | os | ) | const [virtual] |
Prints object to an output stream.
virtual int Ifpack_Chebyshev::SetParameters | ( | Teuchos::ParameterList & | List | ) | [virtual] |
virtual int Ifpack_Chebyshev::SetUseTranspose | ( | bool | UseTranspose_in | ) | [inline, virtual] |
This flag can be used to apply the preconditioner to the transpose of the input operator.
virtual bool Ifpack_Chebyshev::UseTranspose | ( | ) | const [inline, virtual] |
Returns the current UseTranspose setting.