

Public Member Functions | |
| def | __init__ |
| def | checkStatus |
| def | getStatus |
| def | getNormWRMS |
| def | getTolerance |
| def | getRTOL |
| def | getATOL |
| def | getBDFMultiplier |
| def | getAlpha |
| def | getBeta |
| def | getDisableImplicitWeighting |
Public Attributes | |
| this | |
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.
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.
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.
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.
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:
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.
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.
C++ includes: NOX_StatusTest_NormWRMS.H
| def PyTrilinos.NOX.StatusTest.NormWRMS.__init__ | ( | self, | |
| args | |||
| ) |
__init__(NOX::StatusTest::NormWRMS self, double rtol, double atol, double BDFMultiplier=1.0, double tolerance=1.0, double alpha=1.0,
double beta=0.5, bool disable_implicit_weighting=True) -> NormWRMS
__init__(NOX::StatusTest::NormWRMS self, double rtol, Teuchos::RCP< NOX::Abstract::Vector const > const & atol, double BDFMultiplier=1.0,
double tolerance=1.0, double alpha=1.0, double beta=0.5, bool disable_implicit_weighting=True) -> NormWRMS
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, bool
disable_implicit_weighting=true)
Constructor where ATOL is a vector.
| def PyTrilinos.NOX.StatusTest.NormWRMS.checkStatus | ( | self, | |
| args | |||
| ) |
checkStatus(NormWRMS self, NOX::Solver::Generic const & problem, NOX::StatusTest::CheckType checkType) -> NOX::StatusTest::StatusType StatusType NormWRMS::checkStatus(const NOX::Solver::Generic &problem, NOX::StatusTest::CheckType checkType) Test the stopping criterion The test can (and should, if possible) be skipped if checkType is NOX::StatusType::None. If the test is skipped, then the status should be set to NOX::StatusTest::Unevaluated.
Reimplemented from PyTrilinos.NOX.StatusTest.Generic.
| def PyTrilinos.NOX.StatusTest.NormWRMS.getAlpha | ( | self, | |
| args | |||
| ) |
getAlpha(NormWRMS self) -> double double NormWRMS::getAlpha() const Returns the value of 'alpha' set in the constructor.
| def PyTrilinos.NOX.StatusTest.NormWRMS.getATOL | ( | self, | |
| args | |||
| ) |
getATOL(NormWRMS self) -> double double NormWRMS::getATOL() const Returns the absolute tolerance set in the constructor. If ATOL is a vector, this will return a value of -1.0.
| def PyTrilinos.NOX.StatusTest.NormWRMS.getBDFMultiplier | ( | self, | |
| args | |||
| ) |
getBDFMultiplier(NormWRMS self) -> double double NormWRMS::getBDFMultiplier() const Returns the value of the BDFMultiplier set in the constructor.
| def PyTrilinos.NOX.StatusTest.NormWRMS.getBeta | ( | self, | |
| args | |||
| ) |
getBeta(NormWRMS self) -> double double NormWRMS::getBeta() const Returns the value of 'beta' set in the constructor.
| def PyTrilinos.NOX.StatusTest.NormWRMS.getDisableImplicitWeighting | ( | self, | |
| args | |||
| ) |
getDisableImplicitWeighting(NormWRMS self) -> bool bool NormWRMS::getDisableImplicitWeighting() const Returns true if implicit weighting is disabled during norm computation.
| def PyTrilinos.NOX.StatusTest.NormWRMS.getNormWRMS | ( | self, | |
| args | |||
| ) |
getNormWRMS(NormWRMS self) -> double double NormWRMS::getNormWRMS() const Returns the value of WRMS norm.
| def PyTrilinos.NOX.StatusTest.NormWRMS.getRTOL | ( | self, | |
| args | |||
| ) |
getRTOL(NormWRMS self) -> double double NormWRMS::getRTOL() const Returns the realative tolerance set in the constructor.
| def PyTrilinos.NOX.StatusTest.NormWRMS.getStatus | ( | self, | |
| args | |||
| ) |
getStatus(NormWRMS self) -> NOX::StatusTest::StatusType StatusType NormWRMS::getStatus() const Return the result of the most recent checkStatus call.
Reimplemented from PyTrilinos.NOX.StatusTest.Generic.
| def PyTrilinos.NOX.StatusTest.NormWRMS.getTolerance | ( | self, | |
| args | |||
| ) |
getTolerance(NormWRMS self) -> double double NormWRMS::getTolerance() const Returns the requested tolerance set in the constructor.
1.7.6.1