bugfix: allowNonConverged warning instead of aborting#4075
Conversation
…reventing any timestep-cut
…onverged is enabled without preventing timestep-cuts, but at the last level of sub-steps
Co-authored-by: Dickson Kachuma <81433670+dkachuma@users.noreply.github.com>
|
This flag seems like a bad idea. Can someone explain what measure will determine that results are valid after violating the desired tolerance for the governing equations? How critical is the violation? It seems that there can be repeated violations? Can every timestep in a simulation violate and complete? What if the residual is very high? Is there a criteria for termination then? |
|
What was the previous behavior if this option was enabled? How does this change interact with other checks within the physics solvers themselves, e.g. GEOS/src/coreComponents/physicsSolvers/PhysicsSolverBase.cpp Lines 937 to 950 in f779513 |
|
If we keep this, I would suggest two changes:
I can see selected situations where for debugging purposes a user may want to keep the simulation running to see what happens and gather more info, but it has to be very clear that they are taking ownership of any poor quality results. |
|
The concept behind this flag is actually quite old. This PR extends its behaviour so that it also applies to time stepping, effectively disabling the That said, my assumption was that the broader discussion around result validity and the handling or interpretation of tolerance violations had already taken place when the flag was originally introduced at #278. |
|
Thanks for the feedback. On naming/output changes: About renaming the output file, when?
I propose to:
(we could add the failing solver name too) We may also want to add a column in the solver CSV. On consolidation: I don't see other places where this flag might interact. To me, it seem currently limited to the solver-level logic in After that PR, do we do the same for |
|
Okay, this seems like a reasonable compromise to me, as the final table provides clear and useful info. The name itself should be a red flag for anyone competent (who puts I am less familiar with that part of the code (so don't trust me on this) but I think |
|
I just did a search for |
|
Indeed, Do we want to exclude or at least comment these usages of |
…an perform a final cut in case of non convergence -> solver convergence capability may better be returned explicitely
…bSteps on allowNonConverged
| real64 const & dt, | ||
| integer const cycleNumber, | ||
| DomainPartition & domain ) | ||
| StepResult PhysicsSolverBase::nonlinearImplicitStep( real64 const & time_n, |
There was a problem hiding this comment.
This seems an overly specific return type?
There was a problem hiding this comment.
Forgot to re-edit that part, don't worry this is at draft state, I need to do some tests next week on this to see if the approach is good (I changed when the timestep is cut here 716744f )
When max sub-steps are exceeded and
allowNonConvergedis enabled, the solver now warns (rank 0) and continues instead of aborting (this PR assumesallowNonConvergedwas intended to let the simulation continue even when not converging).