diff --git a/.github/workflows/test_sbml_semantic_test_suite.yml b/.github/workflows/test_sbml_semantic_test_suite.yml index 3817090133..65d8dd7fc5 100644 --- a/.github/workflows/test_sbml_semantic_test_suite.yml +++ b/.github/workflows/test_sbml_semantic_test_suite.yml @@ -10,6 +10,7 @@ on: - .github/workflows/test_sbml_semantic_test_suite.yml - python/sdist/amici/de_export.py - python/sdist/amici/de_model_components.py + - python/sdist/amici/de_model.py - python/sdist/amici/sbml_import.py - python/sdist/amici/import_utils.py - scripts/run-SBMLTestsuite.sh diff --git a/python/sdist/amici/de_model.py b/python/sdist/amici/de_model.py index 46270d0a50..7ac2a18ed2 100644 --- a/python/sdist/amici/de_model.py +++ b/python/sdist/amici/de_model.py @@ -1693,19 +1693,26 @@ def _compute_equation(self, name: str) -> None: ] elif name == "deltasx": - if self.num_states_solver() * self.num_par() == 0: + if ( + self.num_states_solver() * self.num_par() * self.num_events() + == 0 + ): self._eqs[name] = [] return + xdot_is_zero = smart_is_zero_matrix(self.eq("xdot")) + event_eqs = [] for ie, event in enumerate(self._events): tmp_eq = sp.zeros(self.num_states_solver(), self.num_par()) # need to check if equations are zero since we are using # symbols - if not smart_is_zero_matrix( - self.eq("stau")[ie] - ) and not smart_is_zero_matrix(self.eq("xdot")): + + if ( + not smart_is_zero_matrix(self.eq("stau")[ie]) + and not xdot_is_zero + ): tmp_eq += smart_multiply( self.sym("xdot") - self.sym("xdot_old"), self.sym("stau").T, @@ -1739,7 +1746,7 @@ def _compute_equation(self, name: str) -> None: self.eq("ddeltaxdx")[ie], tmp_dxdp ) - else: + elif not xdot_is_zero: tmp_eq = smart_multiply( self.sym("xdot") - self.sym("xdot_old"), self.eq("stau")[ie],