Skip to content

Commit

Permalink
add try..except around singularity detection
Browse files Browse the repository at this point in the history
  • Loading branch information
C.A.P. Linssen committed Sep 21, 2023
1 parent cf49c9f commit 212e801
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 5 deletions.
16 changes: 13 additions & 3 deletions odetoolbox/singularity_detection.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,13 @@
import sympy.parsing.sympy_parser


class SingularityDetectionException(Exception):
"""
Thrown in case an error occurs while detecting singularities.
"""
pass


class SingularityDetection:
r"""Singularity detection for generated propagator matrix.
Expand Down Expand Up @@ -147,8 +154,11 @@ def find_singularities(P: sympy.Matrix, A: sympy.Matrix):
A : sympy.Matrix
system matrix
"""
conditions = SingularityDetection._generate_singularity_conditions(P)
conditions = SingularityDetection._flatten_conditions(conditions) # makes a list of conditions with each condition in the form of a dict
conditions = SingularityDetection._filter_valid_conditions(conditions, A) # filters out the invalid conditions (invalid means those for which A is not defined)
try:
conditions = SingularityDetection._generate_singularity_conditions(P)
conditions = SingularityDetection._flatten_conditions(conditions) # makes a list of conditions with each condition in the form of a dict
conditions = SingularityDetection._filter_valid_conditions(conditions, A) # filters out the invalid conditions (invalid means those for which A is not defined)
except Exception as e:
raise SingularityDetectionException()

return conditions
4 changes: 2 additions & 2 deletions odetoolbox/system_of_shapes.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@

from .config import Config
from .shapes import Shape
from .singularity_detection import SingularityDetection
from .singularity_detection import SingularityDetection, SingularityDetectionException
from .sympy_helpers import _custom_simplify_expr, _is_zero


Expand Down Expand Up @@ -202,7 +202,7 @@ def generate_propagator_solver(self):
logging.warning("List of all conditions that result in a singular propagator:")
for cond in condition:
logging.warning("\t" + r" ∧ ".join([str(k) + " = " + str(v) for k, v in cond.items()]))
except Exception as e:
except SingularityDetectionException:
logging.warning("Could not check the propagator matrix for singularities.")

logging.debug("System of equations:")
Expand Down

0 comments on commit 212e801

Please sign in to comment.