From 1a968d5f22601abebc6336c3b142eb8a20cc3e08 Mon Sep 17 00:00:00 2001
From: Johannes Pfeifer <jpfeifer@gmx.de>
Date: Sun, 5 Aug 2012 13:09:24 +0200
Subject: [PATCH] Added check for NaN in Jacobian to stochastic_solvers and
 added explicit error message to print_info.m

---
 matlab/print_info.m         | 15 ++++++++++++++-
 matlab/stochastic_solvers.m |  7 +++++++
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/matlab/print_info.m b/matlab/print_info.m
index b406e964a0..15a793614f 100644
--- a/matlab/print_info.m
+++ b/matlab/print_info.m
@@ -51,7 +51,20 @@ if ~noprint
       case 7
         error(['One of the eigenvalues is close to 0/0 (the absolute ' ...
                'value of numerator and denominator is smaller than 1e-6)'])
-      case 19
+      case 8
+        if ~isempty(info(2))
+          global M_;
+            disp_string=deblank(M_.param_names(info(2),:));
+          for ii=1:length(info)-2
+            disp_string=[disp_string,', ',deblank(M_.param_names(info(2+ii),:))];
+          end
+          error(['The Jacobian contains NaNs because the following parameters are NaN: '...
+              disp_string])
+        else
+          error(['The Jacobian contains NaNs'])
+        end
+
+        case 19
         error('The steadystate file did not compute the steady state')
       case 20
         error(['Impossible to find the steady state. Either the model' ...
diff --git a/matlab/stochastic_solvers.m b/matlab/stochastic_solvers.m
index 84f2c312fe..8a688a6269 100644
--- a/matlab/stochastic_solvers.m
+++ b/matlab/stochastic_solvers.m
@@ -120,6 +120,13 @@ if ~isreal(jacobia_)
     end
 end
 
+if any(any(isnan(jacobia_)))
+   info(1) = 8;
+   NaN_params=find(isnan(M_.params));
+   info(2:length(NaN_params)+1) =  NaN_params;
+   return
+end
+
 kstate = dr.kstate;
 kad = dr.kad;
 kae = dr.kae;
-- 
GitLab