Loading
Handle AssemblyException on the Picard path
An AssemblyException thrown by a local assembler (e.g. a non-converged local nonlinear solver) escaped the Picard nonlinear solver and aborted the simulation, while the Newton path had caught it since the exception was introduced. Now both paths abort the nonlinear iteration and report a non-converged time step, so the time stepping algorithm can repeat the step with a smaller time step size.
- Catch AssemblyException on the Picard path.
- Report the iteration the assembly failed in, not the maximum iteration number.
- Deduplicate the catch and its cross-rank reconciliation (needed to keep ranks from deadlocking in the subsequent collective linear solve) into one helper used by both solvers.
- Rebuild the test on the existing ODE test fixtures, covering Picard and Newton, failure in the first and in a later iteration, plus the no-exception path. Disabled for PETSc like the other ODE system tests (#1989 (closed)).
- Tests covering your feature were added?
- Any new feature or behaviour change was documented?
- Add this merge request to the changelog