[new_tnnmg] Iterations in nonlineargsperformancetest_iterates never converge with NonlinearGSStep.
I'm not 100% sure what this test does. In particular, in two different settings, it goes through three phases:
- Solve with new
NonlinearGSStep
- Solve with new
NonlinearGSStep
(timed) - Solve with old
TruncatedBlockGSStep
(timed)
I don't quite understand the purpose of the first step. Either way, each step is composed of 10 calls to a loopsolver (which in turn does 100 iterations). The 10 calls are just to get a higher sampling number, I take it, so the numerical results are always the same and we can focus on just one of them.
So if I take the final output line by the loop solver in each case (not ten times), I get this:
7: maxTotalConvRate: 2, 100 iterations performed
7: maxTotalConvRate: 2, 100 iterations performed
7: maxTotalConvRate: 0, 2 iterations performed
7: maxTotalConvRate: 2.99221, 100 iterations performed
7: maxTotalConvRate: 2.99221, 100 iterations performed
7: maxTotalConvRate: 0.987341, 100 iterations performed
The TruncatedBlockGSStep
converges with a maximum convergence rate of 0
or 0.987341
. The NonlinearGSStep
has a maxTotalConvRate >> 1
in both cases. Indeed, the size of the corrections blows up and this is not just the maximum convergence rate, it is the convergence rate in each step. Yet, the test declares success and passes.
It seems to me that the test is broken somehow (or rather, the direct-iterate-solving-logic of the NonlinearGSStep
).
For comparison, the numbers from the nonlineargsperformancetest_corrections
test:
6: maxTotalConvRate: 0, 2 iterations performed
6: maxTotalConvRate: 0, 2 iterations performed
6: maxTotalConvRate: 0, 2 iterations performed
6: maxTotalConvRate: 0.987341, 100 iterations performed
6: maxTotalConvRate: 0.987341, 100 iterations performed
6: maxTotalConvRate: 0.987341, 100 iterations performed