Newton Krylov improvements by pcarruscag · Pull Request #2581 · su2code/SU2

I have tried comparing the NK implementation on version 8.1, 8.3, and 8.3 on this branch. The comparison is made on the Level B mesh of the Pointwise family (1.r.09). Version 8.1 is included since the implicit discretization of the diffusion terms was not implemented yet. On the left figure, the functional is plotted against the number of iterations, whereas on the right figure, it is plotted against the computational time (cumulative sum of the time-per-iteration).

Density residual:
rms_Rho_

$\tilde{\nu}$ residual:
rms_nu_

Average CFL:
AvgCFL

Pitching moment coefficient:
CMy

The NK options for the SU2 versions 8.1.0 and 8.3.0 develop are the following:
NEWTON_KRYLOV_IPARAM= (10, 5, 2)
NEWTON_KRYLOV_DPARAM= (1.0, 0.01, -6, 1e-5)

The NK options for the SU2 version 8.3.0 on this branch are the following:
NEWTON_KRYLOV_IPARAM= (200, 0, 0)
NEWTON_KRYLOV_DPARAM= (0, 0.0, 0, 1e-5, -1)

Other options common to all three simulations:
NUM_METHOD_GRAD= GREEN_GAUSS
LINEAR_SOLVER= RESTARTED_FGMRES
LINEAR_SOLVER_PREC= ILU
LINEAR_SOLVER_ERROR= 1e-2
LINEAR_SOLVER_ITER= 60
CFL_ADAPT= YES
CFL_NUMBER= 10.0
CFL_REDUCTION_TURB= 1.0
CFL_ADAPT_PARAM= ( 0.1, 1.1, 10.0, 100.0, 0.01)

The simulation starts for 500 iterations at constant CFL = 1 without NK, then I activate NK with the settings above.

The computational time should not be that different, since the number of cores and the machine on which they are running is the same (at least the first 500 iterations should be the same). Maybe it is related to the fact that the simulation in yellow has access to more cache.

Nevertheless, the simulation with the changes here proposed seems to reach low residual levels much faster, although it then plateaus on the same levels as the standard implementation, which is kind of strange.

The new implementation is able to reach the maximum CFL, although only for a few iterations. Then, they all go down to the lowest value possible (10).

The implicit discretization of the diffusion term (red vs blue curve) does not have much influence.

Should I try the same NK settings used for this branch on the standard implementation?