| Variable | Meaning | Value |
|---|---|---|
| _JT_ stop_ relchg_ |
|
0 |
| _JT_ stop_ axb_ |
|
1 |
| _JT_ stop_ b_ |
|
2 |
| _JT_ stop_ x_ |
|
3 |
| _JT_ stop_ r0_ |
|
4 |
| _JT_ stop_ r_ |
| r|
|
5 |
where A, x, and b are the coefficient matrix, current estimate of the solution vector, and source vector of the linear system being solved, Ax = b. When iparm(_JT_ stop_) is positive, the vector r is whatever value of the residual, r = b - Ax, is normally available during the course of the iteration for the method chosen. When iparm(_JT_ stop_) is negative, b - Ax is explicitly computed and used in the convergence test.
The vector r0 is the initial residual, i.e.the residual computed using the initial guess for x, or r0 = b - Ax0.
| Method | iparm(_JT_ stop_) |
|---|---|
| CG | 2 |
| GMRES | 2 |
| BCGS | -2 |
| TFQMR | -2 |
| Jacobi | 0 |
| SOR | 0 |
However, this test is completely inappropriate and dangerous for the nonstationary methods. It is the default only because it is the only test that ``works'' without extra work for all methods.
A more efficient way to protect against false convergence is to use a stopping test based on the recursively-generated residual (i.e.a value of iparm(_JT_ stop_) > 0), and then compute the true residual and corresponding error estimate after ``convergence''. If the error estimate based on the true residual does not meet the desired convergence criterion, the the final iterate can be used as the initial guess for additional iterations with the same (or a different) method.