From 732dd37917b6c73ed1ca6ada3413fa883b3e3000 Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Tue, 19 Apr 2022 09:39:39 -0400 Subject: [PATCH] Add safety around the solver stats --- src/MATLABDiffEq.jl | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/MATLABDiffEq.jl b/src/MATLABDiffEq.jl index d6fb75e..68f69ca 100644 --- a/src/MATLABDiffEq.jl +++ b/src/MATLABDiffEq.jl @@ -63,11 +63,20 @@ function DiffEqBase.__solve( # Send the function over eval_string(matstr) - eval_string("options = odeset('RelTol',reltol,'AbsTol',abstol);") + eval_string("options = odeset('RelTol',reltol,'AbsTol',abstol,'Stats',);") algstr = string(typeof(alg).name.name) eval_string("mxsol = $(algstr)(diffeqf,tspan,u0,options);") - eval_string("mxsolstats = struct(mxsol.stats);") - solstats = get_variable(:mxsolstats) + + eval_string("statsexists = isfield(mxsol,'stats')") + hasstats = get_variable(:statsexists) + if hasstats + eval_string("mxsolstats = struct(mxsol.stats);") + solstats = get_variable(:mxsolstats) + destats = buildDEStats(solstats) + else + destats = nothing + end + eval_string("t = mxsol.x;") ts = jvector(get_mvariable(:t)) eval_string("u = mxsol.y';") @@ -81,9 +90,7 @@ function DiffEqBase.__solve( end else timeseries = timeseries_tmp - end - - destats = buildDEStats(solstats) + end DiffEqBase.build_solution(prob,alg,ts,timeseries, timeseries_errors = timeseries_errors,destats = destats)