NOX::EpetraNew::LinearSystem Class Reference

Pure virtual class interface for allowing different linear solvers to be used by the NOX::EpetraNew::Group. More...

#include <NOX_EpetraNew_LinearSystem.H>

Inheritance diagram for NOX::EpetraNew::LinearSystem:

[legend]
List of all members.

Public Member Functions

 LinearSystem ()
 Constructor.
virtual ~LinearSystem ()
 Destructor.
virtual bool applyJacobian (const NOX::Epetra::Vector &input, NOX::Epetra::Vector &result) const =0
 Applies Jacobian to the given input vector and puts the answer in the result.
virtual bool applyJacobianTranspose (const NOX::Epetra::Vector &input, NOX::Epetra::Vector &result) const =0
 Applies Jacobian-Transpose to the given input vector and puts the answer in the result.
virtual bool applyJacobianInverse (NOX::Parameter::List &params, const NOX::Epetra::Vector &input, NOX::Epetra::Vector &result)=0
 Applies the inverse of the Jacobian matrix to the given input vector and puts the answer in result.
virtual bool applyRightPreconditioning (bool useTranspose, NOX::Parameter::List &params, const NOX::Epetra::Vector &input, NOX::Epetra::Vector &result) const =0
 Apply right preconditiong to the given input vector.
virtual void resetScaling (NOX::EpetraNew::Scaling &scalingObject)=0
 Sets the diagonal scaling vector(s) used in scaling the linear system.
virtual bool computeJacobian (Epetra_Vector &x)=0
 Evaluates the Jacobian based on the solution vector x.
virtual bool createPreconditioner (Epetra_Vector &x, NOX::Parameter::List &p, bool recomputeGraph) const =0
 Explicitly constructs a preconditioner based on the solution vector x and the parameter list p.
virtual bool destroyPreconditioner () const =0
 Deletes the preconditioner.
virtual bool checkPreconditionerReuse ()
 Allows reuse of a preconditioner.
virtual const Epetra_OperatorgetJacobianOperator () const =0
 Return Jacobian operator.
virtual Epetra_OperatorgetJacobianOperator ()=0
 Return Jacobian operator.
virtual const Epetra_OperatorgetGeneratedPrecOperator () const =0
 Return preconditioner operator.
virtual Epetra_OperatorgetGeneratedPrecOperator ()=0
 Return preconditioner operator.
virtual void setJacobianOperatorForSolve (const Epetra_Operator &solveJacOp)=0
 Set Jacobian operator for solve.
virtual void setPrecOperatorForSolve (const Epetra_Operator &solvePrecOp)=0
 Set preconditioner operator for solve.

Detailed Description

Pure virtual class interface for allowing different linear solvers to be used by the NOX::EpetraNew::Group.


Member Function Documentation

virtual bool NOX::EpetraNew::LinearSystem::applyJacobian const NOX::Epetra::Vector input,
NOX::Epetra::Vector result
const [pure virtual]
 

Applies Jacobian to the given input vector and puts the answer in the result.

Computes

\[ v = J u, \]

where $J$ is the Jacobian, $u$ is the input vector, and $v$ is the result vector. Returns true if successful.

Implemented in NOX::EpetraNew::LinearSystemAztecOO.

virtual bool NOX::EpetraNew::LinearSystem::applyJacobianInverse NOX::Parameter::List params,
const NOX::Epetra::Vector input,
NOX::Epetra::Vector result
[pure virtual]
 

Applies the inverse of the Jacobian matrix to the given input vector and puts the answer in result.

Computes

\[ v = J^{-1} u, \]

where $J$ is the Jacobian, $u$ is the input vector, and $v$ is the result vector.

The parameter list contains the linear solver options.

Implemented in NOX::EpetraNew::LinearSystemAztecOO.

virtual bool NOX::EpetraNew::LinearSystem::applyJacobianTranspose const NOX::Epetra::Vector input,
NOX::Epetra::Vector result
const [pure virtual]
 

Applies Jacobian-Transpose to the given input vector and puts the answer in the result.

Computes

\[ v = J^T u, \]

where $J$ is the Jacobian, $u$ is the input vector, and $v$ is the result vector. Returns true if successful.

Implemented in NOX::EpetraNew::LinearSystemAztecOO.

virtual bool NOX::EpetraNew::LinearSystem::applyRightPreconditioning bool  useTranspose,
NOX::Parameter::List params,
const NOX::Epetra::Vector input,
NOX::Epetra::Vector result
const [pure virtual]
 

Apply right preconditiong to the given input vector.

Let $M$ be a right preconditioner for the Jacobian $J$; in other words, $M$ is a matrix such that

\[ JM \approx I. \]

Compute

\[ u = M^{-1} v, \]

where $u$ is the input vector and $v$ is the result vector.

If useTranspose is true, then the transpose of the preconditioner is applied:

\[ u = {M^{-1}}^T v, \]

The transpose preconditioner is currently only required for Tensor methods.

The parameter list contains the linear solver options.

Implemented in NOX::EpetraNew::LinearSystemAztecOO.

virtual bool NOX::EpetraNew::LinearSystem::checkPreconditionerReuse  )  [inline, virtual]
 

Allows reuse of a preconditioner.

The child object will manage setting of this bool flag. Default implementation is to return false.

Reimplemented in NOX::EpetraNew::LinearSystemAztecOO.

virtual bool NOX::EpetraNew::LinearSystem::createPreconditioner Epetra_Vector x,
NOX::Parameter::List p,
bool  recomputeGraph
const [pure virtual]
 

Explicitly constructs a preconditioner based on the solution vector x and the parameter list p.

The user has the option of recomputing the graph when a new preconditioner is created. The NOX::EpetraNew::Group controls the isValid flag for the preconditioner and will control when to call this.

Implemented in NOX::EpetraNew::LinearSystemAztecOO.

virtual bool NOX::EpetraNew::LinearSystem::destroyPreconditioner  )  const [pure virtual]
 

Deletes the preconditioner.

The NOX::EpetraNew::Group controls the isValid flag for the preconditioner and will control when to call this.

Implemented in NOX::EpetraNew::LinearSystemAztecOO.

virtual void NOX::EpetraNew::LinearSystem::resetScaling NOX::EpetraNew::Scaling scalingObject  )  [pure virtual]
 

Sets the diagonal scaling vector(s) used in scaling the linear system.

See NOX::EpetraNew::Scaling for details on how to specify scaling of the linear system.

Implemented in NOX::EpetraNew::LinearSystemAztecOO.


The documentation for this class was generated from the following file:
Generated on Thu Sep 18 12:40:50 2008 for NOX by doxygen 1.3.9.1