NOX::StatusTest::NormWRMS Class Reference

Convergence test based on the weighted root mean square norm fo the solution update between iterations. More...

#include <NOX_StatusTest_NormWRMS.H>

Inheritance diagram for NOX::StatusTest::NormWRMS:

Inheritance graph
[legend]
Collaboration diagram for NOX::StatusTest::NormWRMS:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 NormWRMS (double rtol, double atol, double BDFMultiplier=1.0, double tolerance=1.0, double alpha=1.0, double beta=0.5)
 Constructor where ATOL is a scalar.
 NormWRMS (double rtol, const Teuchos::RCP< const NOX::Abstract::Vector > &atol, double BDFMultiplier=1.0, double tolerance=1.0, double alpha=1.0, double beta=0.5)
 Constructor where ATOL is a vector.
virtual ~NormWRMS ()
 Destructor.
virtual StatusType checkStatus (const NOX::Solver::Generic &problem, NOX::StatusTest::CheckType checkType)
 Test the stopping criterion
virtual StatusType getStatus () const
 Return the result of the most recent checkStatus call.
virtual ostream & print (ostream &stream, int indent=0) const
 Output formatted description of stopping test to output stream.
virtual double getNormWRMS () const
 Returns the value of WRMS norm.
virtual double getTolerance () const
 Returns the requested tolerance set in the constructor.
virtual double getRTOL () const
 Returns the realative tolerance set in the constructor.
virtual double getATOL () const
 Returns the absolute tolerance set in the constructor. If ATOL is a vector, this will return a value of -1.0.
virtual double getBDFMultiplier () const
 Returns the value of the BDFMultiplier set in the constructor.
virtual double getAlpha () const
 Returns the value of 'alpha' set in the constructor.
virtual double getBeta () const
 Returns the value of 'beta' set in the constructor.

Private Attributes

double value
 Current value of the WRMS norm (Must be less than 'tolerance' for convergence).
double rtol
 Relative tolerance for convergence.
bool atolIsScalar
 flag to tell whether atol is a scalar or a vector.
double atol
 Absolute tolerance for convergence (scalar).
Teuchos::RCP< const
NOX::Abstract::Vector
atolVec
 Absolute tolerance for convergence (vector).
double factor
 Time integration method multiplier (BDF Multiplier).
double tolerance
 Required tolerance for the NormWRMS to be declared converged.
double alpha
 Minimum step size allowed during a line search for WRMS norm to be flagged as converged.
double computedStepSize
 Actual step size used during line search.
double beta
 Maximum linear solve tolerance allowed for WRMS norm to be flagged as converged.
double achievedTol
 Actual tolerance achieved by the linear solver during the last linear solve.
StatusType status
 Status
Teuchos::RCP
< NOX::Abstract::Vector
u
 Temporary vector used in computation.
Teuchos::RCP
< NOX::Abstract::Vector
v
 Temporary vector used in computation.
bool printCriteria2Info
 Flag that tells the print method whether to print the criteria 2 information.
bool printCriteria3Info
 Flag that tells the print method whether to print the criteria 3 information.


Detailed Description

Convergence test based on the weighted root mean square norm fo the solution update between iterations.

` If the number of iterations is zero, then the status is set to NOX::StatusTest::Unconverged and returned. (Also, value is set to 1.0e+12.)

Otherwise, returns NOX::StatusTest::Converged if the three criteria listed below are satisfied. Note that use of Criteria #2 and #3 depend on the options set in the solver.

  1. Weigthed root mean square norm is less than a specified tolerance:

    \[ ||\delta x^k||_{wrms} < \mbox{tolerance} \]

    where

    \[ ||\delta x^k||_{wrms} \equiv C \sqrt{ \frac{1}{N} \sum_{i=1}^N \left( \frac {(x^k_i-x^{k-1}_i)}{RTOL |x^{k-1}_i| + ATOL_i} \right) ^2 } \]

    Here:

    • $x_i^k$ denotes component $i$ of nonlinear iterate $k$.
    • $N$ denotes the number of unknowns
    • $RTOL$ denotes the relative error tolerance, specified via rtol in the constructor
    • $ATOL$ denotes the absolution error tolerance, specified via atol in the constructor. This can be a vector or a scalar.
    • $C$ denotes a weight, specified via the parameter BDFMultiplier in the constructor.

  2. If a line search based solver is used, the line search step size, $ \lambda $, must be greater than a specified step size value, $ \alpha $:

    \[ \lambda > \alpha \]

    The motivation for this test is to avoid detecting stagnation when in fact the true problem is that the step size is just small.

    The value of $\alpha$ is set in the constructor via the argument alpha. Setting $\alpha$ to zero effectively eliminates this part of the test.

  3. The achieved linear solver tolerance, $ \eta^k $ for nonlinear iteration $ k $, must be less than a specified tolerance value, $ \beta $; i.e.,

    \[ \eta^k < \beta \]

    The motivation for this test is to avoid detecting stagnation when in fact the true problem is that the linear solve tolerance was not accurate enough.

    The value of $\beta$ is set in the constructor via the argument beta. Setting $\beta$ to 1.0 effectively eliminates this part of the test.

    Note:
    This criteria will only be used if the "Achieved Tolerance" parameter (the value of $ \eta^k $) is set by the linear solver in the "Newton"/"Linear Solver"/"Output" sublist. The checkStatus() method will search for this parameter.

References:

  1. K. E. Brennam, S. L. Cambell, L. R. Petzold, Numerical Solution of Initial-Value Problems in Differential-Algebraic Equations, Classics in Applied Mathematics 14, SIAM 1996.

  2. G. D. Byrne and A. C. Hindmarch, PVODE, an ODE Solver for Parallel Computers, Technical Report UCRL-JC-132361, Rev. 1, Center for Applied Scientific Computing (CASC), Lawrence Livermore National Lab, May 1999.

Definition at line 145 of file NOX_StatusTest_NormWRMS.H.


Constructor & Destructor Documentation

NormWRMS::NormWRMS ( double  rtol,
double  atol,
double  BDFMultiplier = 1.0,
double  tolerance = 1.0,
double  alpha = 1.0,
double  beta = 0.5 
)

Constructor where ATOL is a scalar.

Definition at line 55 of file NOX_StatusTest_NormWRMS.C.

References NOX::StatusTest::Unconverged.

NormWRMS::NormWRMS ( double  rtol,
const Teuchos::RCP< const NOX::Abstract::Vector > &  atol,
double  BDFMultiplier = 1.0,
double  tolerance = 1.0,
double  alpha = 1.0,
double  beta = 0.5 
)

Constructor where ATOL is a vector.

Definition at line 74 of file NOX_StatusTest_NormWRMS.C.

NormWRMS::~NormWRMS (  )  [virtual]

Destructor.

Definition at line 95 of file NOX_StatusTest_NormWRMS.C.


Member Function Documentation

StatusType NormWRMS::checkStatus ( const NOX::Solver::Generic problem,
NOX::StatusTest::CheckType  checkType 
) [virtual]

StatusType NormWRMS::getStatus (  )  const [virtual]

Return the result of the most recent checkStatus call.

Implements NOX::StatusTest::Generic.

Definition at line 232 of file NOX_StatusTest_NormWRMS.C.

References status.

ostream & NormWRMS::print ( ostream &  stream,
int  indent = 0 
) const [virtual]

Output formatted description of stopping test to output stream.

Implements NOX::StatusTest::Generic.

Definition at line 238 of file NOX_StatusTest_NormWRMS.C.

References achievedTol, alpha, beta, computedStepSize, printCriteria2Info, printCriteria3Info, NOX::Utils::sciformat(), status, tolerance, and value.

double NormWRMS::getNormWRMS (  )  const [virtual]

Returns the value of WRMS norm.

Definition at line 261 of file NOX_StatusTest_NormWRMS.C.

References value.

double NormWRMS::getTolerance (  )  const [virtual]

Returns the requested tolerance set in the constructor.

Definition at line 266 of file NOX_StatusTest_NormWRMS.C.

References tolerance.

double NormWRMS::getRTOL (  )  const [virtual]

Returns the realative tolerance set in the constructor.

Definition at line 271 of file NOX_StatusTest_NormWRMS.C.

References rtol.

double NormWRMS::getATOL (  )  const [virtual]

Returns the absolute tolerance set in the constructor. If ATOL is a vector, this will return a value of -1.0.

Definition at line 276 of file NOX_StatusTest_NormWRMS.C.

References atol, and atolIsScalar.

double NormWRMS::getBDFMultiplier (  )  const [virtual]

Returns the value of the BDFMultiplier set in the constructor.

Definition at line 284 of file NOX_StatusTest_NormWRMS.C.

References factor.

double NormWRMS::getAlpha (  )  const [virtual]

Returns the value of 'alpha' set in the constructor.

Definition at line 289 of file NOX_StatusTest_NormWRMS.C.

References alpha.

double NormWRMS::getBeta (  )  const [virtual]

Returns the value of 'beta' set in the constructor.

Definition at line 294 of file NOX_StatusTest_NormWRMS.C.

References beta.


Member Data Documentation

Current value of the WRMS norm (Must be less than 'tolerance' for convergence).

Definition at line 209 of file NOX_StatusTest_NormWRMS.H.

Referenced by checkStatus(), getNormWRMS(), and print().

Relative tolerance for convergence.

Definition at line 212 of file NOX_StatusTest_NormWRMS.H.

Referenced by checkStatus(), and getRTOL().

flag to tell whether atol is a scalar or a vector.

Definition at line 215 of file NOX_StatusTest_NormWRMS.H.

Referenced by checkStatus(), and getATOL().

Absolute tolerance for convergence (scalar).

Definition at line 218 of file NOX_StatusTest_NormWRMS.H.

Referenced by checkStatus(), and getATOL().

Absolute tolerance for convergence (vector).

Definition at line 221 of file NOX_StatusTest_NormWRMS.H.

Referenced by checkStatus().

Time integration method multiplier (BDF Multiplier).

Definition at line 224 of file NOX_StatusTest_NormWRMS.H.

Referenced by checkStatus(), and getBDFMultiplier().

Required tolerance for the NormWRMS to be declared converged.

Definition at line 227 of file NOX_StatusTest_NormWRMS.H.

Referenced by checkStatus(), getTolerance(), and print().

Minimum step size allowed during a line search for WRMS norm to be flagged as converged.

Definition at line 230 of file NOX_StatusTest_NormWRMS.H.

Referenced by checkStatus(), getAlpha(), and print().

Actual step size used during line search.

Definition at line 233 of file NOX_StatusTest_NormWRMS.H.

Referenced by checkStatus(), and print().

Maximum linear solve tolerance allowed for WRMS norm to be flagged as converged.

Definition at line 236 of file NOX_StatusTest_NormWRMS.H.

Referenced by checkStatus(), getBeta(), and print().

Actual tolerance achieved by the linear solver during the last linear solve.

Definition at line 239 of file NOX_StatusTest_NormWRMS.H.

Referenced by checkStatus(), and print().

Status

Definition at line 242 of file NOX_StatusTest_NormWRMS.H.

Referenced by checkStatus(), getStatus(), and print().

Temporary vector used in computation.

Definition at line 245 of file NOX_StatusTest_NormWRMS.H.

Referenced by checkStatus().

Temporary vector used in computation.

Definition at line 248 of file NOX_StatusTest_NormWRMS.H.

Referenced by checkStatus().

Flag that tells the print method whether to print the criteria 2 information.

Definition at line 251 of file NOX_StatusTest_NormWRMS.H.

Referenced by checkStatus(), and print().

Flag that tells the print method whether to print the criteria 3 information.

Definition at line 254 of file NOX_StatusTest_NormWRMS.H.

Referenced by checkStatus(), and print().


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

Generated on Wed Oct 21 14:28:49 2009 for Nonlinear Solver Project by  doxygen 1.5.9