From 78493e3067813ad9be0c105bf773be2fd5d021da Mon Sep 17 00:00:00 2001 From: Jonathan Guyer Date: Sat, 11 Nov 2023 13:15:59 -0500 Subject: [PATCH] Add custom DivergenceWarning --- fipy/solvers/convergence.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/fipy/solvers/convergence.py b/fipy/solvers/convergence.py index 101bfe6af3..b8022c08a1 100644 --- a/fipy/solvers/convergence.py +++ b/fipy/solvers/convergence.py @@ -46,6 +46,11 @@ def __init__(cls, name, bases, dct): if hasattr(cls, "status_name") and hasattr(cls, "suite"): cls.name_registry[(cls.suite, cls.status_name)] = cls +class DivergenceWarning(UserWarning): + def __init__(self, divergence): + msg = "msg={status_name}, code={status_code}, residual={residual}".format(**divergence.info) + super(DivergenceWarning, self).__init__(msg) + class ConvergenceBase(with_metaclass(_ConvergenceMeta, object)): """Information about whether and why a solver converged. @@ -153,7 +158,7 @@ class Divergence(ConvergenceBase): """ def warn(self): - warnings.warn("({status_code}, {status_name}): {residual}".format(**self.info), stacklevel=5) + warnings.warn(DivergenceWarning(self), stacklevel=5) class IterationDivergence(Divergence): """Exceeded maximum iterations.