Topic: Pointless "restart" in nrsolver
There is a restart operation in the nrsolver, which, originally, scaled down the timestep and tried again. However, that is no longer the case.
Now, it just restarts, and repeats the very same iterations again, only to fail.
The only thing that changes is that it switches to full NRM, which is unlikely to help if you have convergence problems.
Combine with the minimum nsmax of 30 yields 120 iterations whenever there is convergence problems (which usually means there is something wrong in the derivations of the tangent, or have to do something more drastic to solve the problem). Not very helpfull when you are debugging anything.
I propose:
1. dropping the lower limit of nsmax = 30, and removing the restart procedure completely.
2. dropping the whole restart procedure in NRSolver.
Whether or not to reduce the timestep and try again should be left to EngngModel::solveYourself, and isn't something EngngModel::solveYourselfAt() or NRSolver::solve() can decide upon (it would, for example, break multiscale simulations, if a subscale problem just decides on shortening its timestep).
(Also worth considering is that the timestep shortening has been left commented in NRSolver for quite some time, so right now the restart is completely pointless anyway).
Also, the initial guess (which I have for example in nlinearstatic), can then also go into dX, instead of adding it into X directly.