Fixed simulation advancing with play button

This commit is contained in:
2026-08-02 11:30:57 +02:00
parent 756a621ab1
commit e85c507d7f
2 changed files with 8 additions and 6 deletions

View File

@@ -47,8 +47,8 @@ class SimulationRunController(QObject):
def start(self) -> None: def start(self) -> None:
if self._running or self.session is None: if self._running or self.session is None:
return return
start_time = self.session.current_end_time start_time = self.session.settings.start_time
stop_time = start_time + self.session.settings.duration stop_time = self.session.current_end_time + self.session.settings.duration
self._running = True self._running = True
self._update_actions() self._update_actions()
logger.info("Starting simulation from %s to %s", start_time, stop_time) logger.info("Starting simulation from %s to %s", start_time, stop_time)

View File

@@ -46,13 +46,15 @@ class SimulationSession:
return self._simulation.is_running return self._simulation.is_running
async def run_next(self) -> SimulationResult: async def run_next(self) -> SimulationResult:
start_time = self.current_end_time start_time = self.settings.start_time
stop_time = start_time + self.settings.duration stop_time = self.current_end_time + self.settings.duration
intervals = math.ceil(self.settings.duration / self.settings.step_size) if self.settings.use_timed_steps else self.settings.number_of_steps run_duration = stop_time - start_time
intervals = math.ceil(run_duration / self.settings.step_size) if self.settings.use_timed_steps else math.ceil(self.settings.number_of_steps * run_duration / self.settings.duration)
options = SimulationOptions(start_time=start_time, stop_time=stop_time, number_of_intervals=intervals, tolerance=self.settings.tolerance, method=self.settings.method) options = SimulationOptions(start_time=start_time, stop_time=stop_time, number_of_intervals=intervals, tolerance=self.settings.tolerance, method=self.settings.method)
result = await self._simulation.run(options) result = await self._simulation.run(options)
# TODO: Continue from OpenModelica restart state instead of recomputing the full time range.
self.current_end_time = stop_time self.current_end_time = stop_time
self.results.append(result) self.results[:] = [result]
return result return result
def cancel(self) -> bool: def cancel(self) -> bool: