Fixed simulation advancing with play button
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user