diff --git a/gillespy2/solvers/cpp/c_base/ode_cpp_solver/ODESolver.cpp b/gillespy2/solvers/cpp/c_base/ode_cpp_solver/ODESolver.cpp index 127b3e63c..4dac38c4f 100644 --- a/gillespy2/solvers/cpp/c_base/ode_cpp_solver/ODESolver.cpp +++ b/gillespy2/solvers/cpp/c_base/ode_cpp_solver/ODESolver.cpp @@ -118,18 +118,13 @@ namespace Gillespy realtype end_time = simulation->end_time; realtype step_length = increment; - // The time reached by the solver for output. - realtype tret = 0; - - int current_time = 0; for (tout = step_length; !interrupted && tout < end_time || cmpf(tout, end_time); tout += step_length) { // CV_NORMAL causes the solver to take internal steps until it has reached or just passed the `tout` // parameter. The solver interpolates in order to return an approximate value of `y(tout)`. // CVode() returns a vector `y0` (or `y(tout)`), and corresponding variable value `t` = `tret` (return time). // With CV_NORMAL `tret` is equal to `tout` and `y0` = `y(tout)`. - flag = CVode(cvode_mem, tout, y0, &tret, CV_NORMAL); - current_time++; + flag = CVode(cvode_mem, tout, y0, &simulation->current_time, CV_NORMAL); for (sunindextype species = 0; species < N; species++) { diff --git a/gillespy2/solvers/cpp/ode_c_solver.py b/gillespy2/solvers/cpp/ode_c_solver.py index 613c7bb79..d24e610ff 100644 --- a/gillespy2/solvers/cpp/ode_c_solver.py +++ b/gillespy2/solvers/cpp/ode_c_solver.py @@ -17,7 +17,7 @@ """ import numpy as np -from gillespy2.solvers.cpp.c_decoder import BasicSimDecoder +from gillespy2.solvers.cpp.c_decoder import IterativeSimDecoder from gillespy2.solvers.utilities import solverutils as cutils from gillespy2.core import GillesPySolver, Model from gillespy2.core.gillespyError import * @@ -117,7 +117,7 @@ def run(self=None, model: Model = None, t: int = None, number_of_trajectories: i display_args = None args = self._make_args(args) - decoder = BasicSimDecoder.create_default(number_of_trajectories, number_timesteps, len(self.model.listOfSpecies)) + decoder = IterativeSimDecoder.create_default(number_of_trajectories, number_timesteps, len(self.model.listOfSpecies)) sim_exec = self._build(self.model, self.target, self.variable, False) sim_status = self._run(sim_exec, args, decoder, timeout, display_args) diff --git a/gillespy2/solvers/cpp/tau_hybrid_c_solver.py b/gillespy2/solvers/cpp/tau_hybrid_c_solver.py index 7ba99bf73..5043f7177 100644 --- a/gillespy2/solvers/cpp/tau_hybrid_c_solver.py +++ b/gillespy2/solvers/cpp/tau_hybrid_c_solver.py @@ -1,3 +1,4 @@ +import numpy as np import gillespy2 from gillespy2.solvers.cpp.c_decoder import IterativeSimDecoder from gillespy2.solvers.utilities import solverutils as cutils