NOX::Epetra::LinearSystemAmesos Class Reference

Concrete implementation of NOX::Epetra::LinearSolver for Amesos. This class has been written taking NOX::Epetra::LinearSystemAztecOO as an example. More...

#include <NOX_Epetra_LinearSystem_Amesos.H>

Inheritance diagram for NOX::Epetra::LinearSystemAmesos:

Inheritance graph
[legend]
Collaboration diagram for NOX::Epetra::LinearSystemAmesos:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 LinearSystemAmesos (Teuchos::ParameterList &printingParams, Teuchos::ParameterList &linearSolverParams, const Teuchos::RCP< NOX::Epetra::Interface::Required > &iReq, const Teuchos::RCP< NOX::Epetra::Interface::Jacobian > &iJac, const Teuchos::RCP< Epetra_Operator > &J, const NOX::Epetra::Vector &cloneVector, const Teuchos::RCP< NOX::Epetra::Scaling > scalingObject=Teuchos::null)
 Constructor with a user supplied Jacobian Operator.
virtual ~LinearSystemAmesos ()
 Destructor.
virtual bool applyJacobian (const NOX::Epetra::Vector &input, NOX::Epetra::Vector &result) const
 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
 Applies Jacobian-Transpose to the given input vector and puts the answer in the result.
virtual bool applyJacobianInverse (Teuchos::ParameterList &params, const NOX::Epetra::Vector &input, NOX::Epetra::Vector &result)
 Applies the inverse of the Jacobian matrix to the given input vector and puts the answer in result.
virtual bool applyRightPreconditioning (bool useTranspose, Teuchos::ParameterList &params, const NOX::Epetra::Vector &input, NOX::Epetra::Vector &result) const
 Returns false.
virtual Teuchos::RCP< NOX::Epetra::ScalinggetScaling ()
 Returns supplied scaling object.
virtual void resetScaling (const Teuchos::RCP< NOX::Epetra::Scaling > &s)
 Reset supplied scaling object.
virtual bool computeJacobian (const NOX::Epetra::Vector &x)
 Evaluates the Jacobian based on the solution vector x.
virtual bool createPreconditioner (const NOX::Epetra::Vector &x, Teuchos::ParameterList &p, bool recomputeGraph) const
 Returns false.
virtual bool destroyPreconditioner () const
 Returns false.
virtual bool recomputePreconditioner (const NOX::Epetra::Vector &x, Teuchos::ParameterList &linearSolverParams) const
 Returns false.
virtual PreconditionerReusePolicyType getPreconditionerPolicy (bool advanceReuseCounter=true)
 Returns PRPT_REUSE;.
virtual bool isPreconditionerConstructed () const
 Returns false.
virtual bool hasPreconditioner () const
 Returns false.
virtual Teuchos::RCP< const
Epetra_Operator
getJacobianOperator () const
 Returns jacobian operator.
virtual Teuchos::RCP< Epetra_OperatorgetJacobianOperator ()
 Returns jacobian operator.
virtual Teuchos::RCP< const
Epetra_Operator
getGeneratedPrecOperator () const
 Returns Teuchos::null.
virtual Teuchos::RCP< Epetra_OperatorgetGeneratedPrecOperator ()
 Returns Teuchos::null.
virtual void setJacobianOperatorForSolve (const Teuchos::RCP< const Epetra_Operator > &solveJacOp)
 Resets the jacobian operator.
virtual void setPrecOperatorForSolve (const Teuchos::RCP< const Epetra_Operator > &solvePrecOp)
 Does nothing.

Protected Attributes

Teuchos::RCP< Epetra_LinearProblemamesosProblem
 Pointer to the Amesos problem.
Teuchos::RCP< Amesos_BaseSolver > amesosSolver
 Pointer to the Amesos Solver.
Amesos factory
 Amesos factory.
bool isValidFactorization
 True if the factorization doesn't need to be re-computed.
Teuchos::RCP< NOX::Epetra::Interface::JacobianjacInterfacePtr
 Reference to the user supplied Jacobian interface functions.
Teuchos::RCP< Epetra_OperatorjacPtr
 Pointer to the Jacobian operator.
Teuchos::RCP< Epetra_VectorleftHandSide
 Pointer to the left-hand side of the Amesos problem.
Teuchos::RCP< Epetra_VectorrightHandSide
 Pointer to the right-hand side of the Amesos problem.
Teuchos::RCP< NOX::Epetra::Scalingscaling
 Scaling object supplied by the user.
Epetra_Time timer
 Epetra_Time object.
NOX::Utils utils
 Printing Utilities object.

Detailed Description

Concrete implementation of NOX::Epetra::LinearSolver for Amesos. This class has been written taking NOX::Epetra::LinearSystemAztecOO as an example.

The NOX::Epetra::LinearSystemAmesos object provides a way to interface an Epetra based application code to the Amesos linear solver. This class handles construction the Amesos solver. All options are determined through parameter lists and the basic constructor.

This class contains exclusively NOX::Epetra::LinearSolver virtual methods. Scaling of the linear system is currently not implemented.

Constructing a Linear System

At the time being there is only one constructor that can be used: among other things, parameter, the user must provide a NOX printing parameter sublist, a NOX linear solver sublist, and a Jacobian. This constructor is analogous to one of the NOX:Epetra:LinearSystemAmesos ones.

The user can select an Amesos solver type via the parameter Amesos Solver in the NOX linear solver sublist. The default solver is "Amesos_Klu".


Member Function Documentation

bool NOX::Epetra::LinearSystemAmesos::applyJacobian ( const NOX::Epetra::Vector input,
NOX::Epetra::Vector result 
) const [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.

Implements NOX::Epetra::LinearSystem.

bool NOX::Epetra::LinearSystemAmesos::applyJacobianInverse ( Teuchos::ParameterList params,
const NOX::Epetra::Vector input,
NOX::Epetra::Vector result 
) [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.

Implements NOX::Epetra::LinearSystem.

bool NOX::Epetra::LinearSystemAmesos::applyJacobianTranspose ( const NOX::Epetra::Vector input,
NOX::Epetra::Vector result 
) const [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.

Implements NOX::Epetra::LinearSystem.


The documentation for this class was generated from the following files:
Generated on Wed May 12 21:26:27 2010 for NOX by  doxygen 1.4.7