NOX::Direction::Utils::InexactNewton Class Reference

Inexact Newton Utilities More...

#include <NOX_Direction_Utils_InexactNewton.H>

Collaboration diagram for NOX::Direction::Utils::InexactNewton:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 InexactNewton (const Teuchos::RCP< NOX::GlobalData > &gd, Teuchos::ParameterList &directionSublist)
 Constructor.
virtual ~InexactNewton ()
 Destructor.
virtual bool reset (const Teuchos::RCP< NOX::GlobalData > &gd, Teuchos::ParameterList &directionSublist)
 Reset the utilities.
virtual double computeForcingTerm (const NOX::Abstract::Group &soln, const NOX::Abstract::Group &oldSoln, int niter, const NOX::Solver::Generic &solver, double eta_last=-1.0)

Private Types

enum  ForcingTermType { Constant, Type1, Type2 }
 Type of forcing term calculations available. More...

Private Member Functions

void throwError (const string &functionName, const string &errorMsg)
 Print an error message.

Private Attributes

Teuchos::RCP< NOX::GlobalDataglobalDataPtr
 Global data pointer. Keep this so the parameter list remains valid.
Teuchos::RCP< NOX::Utilsprinting
 Printing Utilities.
ForcingTermType forcingTermMethod
 Type of forcing term calculation to use.
Teuchos::ParameterList * paramsPtr
 "Inexact Newton" sublist with parameters for the direction vector
Teuchos::RCP
< NOX::Abstract::Vector
predRhs
 Vector containing the predicted RHS.
Teuchos::RCP
< NOX::Abstract::Vector
stepDir
 Vector containing the step direction.
double eta_k
 Current linear solve tolerance.
double eta_min
 Minimum linear solve tolerance.
double eta_max
 Maximum linear solve tolerance.
double eta_initial
 Initial linear solve tolerance.
string method
 Name of the method used for calculating the inexact forcing term.
string directionMethod
 Name of the direction method that forcing terms will be used by.
double alpha
 Parameter used for Type 2 forcing term calculation.
double gamma
 Parameter used for Type 2 forcing term calculation.
bool setTolerance
 Determines whether to set the "Tolerance" in the parameter list.


Detailed Description

Inexact Newton Utilities

If we use an iterative linear solver for a Newton-based solve, then this is called an inexact Newton method. The tolerance used to terminate the linear solve is called the forcing term. The forcing term may be constant, or it may be adjustable. In either case, at iteration $k$ we require,

\[ \frac{\|J_k d_k - (-F_k)\|}{\|F_k\|} \leq \eta_k. \]

Here $\eta_k$ is the forcing term for iteration $k$.

Note:
This solution tolerance is to be enforced by the user's implementation of NOX::Abstract::Group::computeNewton; it is passed in as the "Tolerance" in the parameter list for that function.
Adjustable forcing terms were introduced by Eisenstat and Walker (1982); here they are implemented as described in Pernice and Walker (1998). We have two choices for adjustable forcing terms:

Parameters

Note:
When using a forcing term, it's critically important the the residual of the original system is used in the comparison. This can be an issue if scaling or left preconditioning is applied to the linear system.
References

Definition at line 178 of file NOX_Direction_Utils_InexactNewton.H.


Member Enumeration Documentation

Type of forcing term calculations available.

Enumerator:
Constant  Constant.
Type1  Type 1.
Type2  type 2

Definition at line 218 of file NOX_Direction_Utils_InexactNewton.H.


Constructor & Destructor Documentation

NOX::Direction::Utils::InexactNewton::InexactNewton ( const Teuchos::RCP< NOX::GlobalData > &  gd,
Teuchos::ParameterList &  directionSublist 
)

Constructor.

Definition at line 57 of file NOX_Direction_Utils_InexactNewton.C.

References reset().

NOX::Direction::Utils::InexactNewton::~InexactNewton (  )  [virtual]

Destructor.

Definition at line 67 of file NOX_Direction_Utils_InexactNewton.C.


Member Function Documentation

bool NOX::Direction::Utils::InexactNewton::reset ( const Teuchos::RCP< NOX::GlobalData > &  gd,
Teuchos::ParameterList &  directionSublist 
) [virtual]

double NOX::Direction::Utils::InexactNewton::computeForcingTerm ( const NOX::Abstract::Group soln,
const NOX::Abstract::Group oldSoln,
int  niter,
const NOX::Solver::Generic solver,
double  eta_last = -1.0 
) [virtual]

void NOX::Direction::Utils::InexactNewton::throwError ( const string &  functionName,
const string &  errorMsg 
) [private]

Print an error message.

Definition at line 297 of file NOX_Direction_Utils_InexactNewton.C.

References NOX::Utils::Error, and printing.

Referenced by reset().


Member Data Documentation

Global data pointer. Keep this so the parameter list remains valid.

Definition at line 212 of file NOX_Direction_Utils_InexactNewton.H.

Referenced by reset().

Printing Utilities.

Definition at line 215 of file NOX_Direction_Utils_InexactNewton.H.

Referenced by computeForcingTerm(), reset(), and throwError().

Type of forcing term calculation to use.

Definition at line 228 of file NOX_Direction_Utils_InexactNewton.H.

Referenced by computeForcingTerm(), and reset().

Teuchos::ParameterList* NOX::Direction::Utils::InexactNewton::paramsPtr [private]

"Inexact Newton" sublist with parameters for the direction vector

Note:
This is a pointer rather than a reference to allow for the reset function.

Definition at line 235 of file NOX_Direction_Utils_InexactNewton.H.

Referenced by computeForcingTerm(), and reset().

Vector containing the predicted RHS.

Definition at line 238 of file NOX_Direction_Utils_InexactNewton.H.

Referenced by computeForcingTerm().

Vector containing the step direction.

Definition at line 241 of file NOX_Direction_Utils_InexactNewton.H.

Referenced by computeForcingTerm().

Current linear solve tolerance.

Definition at line 244 of file NOX_Direction_Utils_InexactNewton.H.

Referenced by computeForcingTerm(), and reset().

Minimum linear solve tolerance.

Definition at line 247 of file NOX_Direction_Utils_InexactNewton.H.

Referenced by computeForcingTerm(), and reset().

Maximum linear solve tolerance.

Definition at line 250 of file NOX_Direction_Utils_InexactNewton.H.

Referenced by computeForcingTerm(), and reset().

Initial linear solve tolerance.

Definition at line 253 of file NOX_Direction_Utils_InexactNewton.H.

Referenced by computeForcingTerm(), and reset().

Name of the method used for calculating the inexact forcing term.

Definition at line 256 of file NOX_Direction_Utils_InexactNewton.H.

Referenced by computeForcingTerm(), and reset().

Name of the direction method that forcing terms will be used by.

Definition at line 259 of file NOX_Direction_Utils_InexactNewton.H.

Referenced by computeForcingTerm(), and reset().

Parameter used for Type 2 forcing term calculation.

Definition at line 262 of file NOX_Direction_Utils_InexactNewton.H.

Referenced by computeForcingTerm(), and reset().

Parameter used for Type 2 forcing term calculation.

Definition at line 265 of file NOX_Direction_Utils_InexactNewton.H.

Referenced by computeForcingTerm(), and reset().

Determines whether to set the "Tolerance" in the parameter list.

Definition at line 268 of file NOX_Direction_Utils_InexactNewton.H.

Referenced by computeForcingTerm(), and reset().


The documentation for this class was generated from the following files:

Generated on Thu Dec 17 11:03:05 2009 for Nonlinear Solver Project by  doxygen 1.5.9