![]() |
OGS
|
|
Thrown by a local assembler that cannot compute its contribution, e.g., because a local nonlinear solver did not converge.
This is not a fatal error for the Picard and the Newton nonlinear solver of NumLib::NonlinearSolver. Both catch it, abort the current nonlinear iteration and report the time step as not converged, so that the time stepping algorithm may repeat the step with a smaller time step size.
The exception must be thrown either on all MPI ranks or on none of them. Ranks that continue while another one aborts run into the collective calls of the linear solve, and the simulation deadlocks instead of failing. Assemblers based on ProcessLib::AssemblyMixin get that behaviour from BaseLib::MPI::allRanksThrowOrNone(); a hand-written assembler has to establish it itself.
Definition at line 31 of file Exceptions.h.
#include <Exceptions.h>
Public Member Functions | |
| AssemblyException (std::string const &reason) | |
|
inlineexplicit |
Definition at line 33 of file Exceptions.h.