From 5da8d98af6f4341523c3982983762d2b4befe961 Mon Sep 17 00:00:00 2001 From: Kavin Teenakul Date: Sun, 19 Jul 2026 23:47:31 +0200 Subject: [PATCH] Add residual plot button to solver panel --- CfdOF/Solve/TaskPanelCfdSolverControl.py | 9 +++++++++ Gui/TaskPanelCfdSolverControl.ui | 10 ++-------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/CfdOF/Solve/TaskPanelCfdSolverControl.py b/CfdOF/Solve/TaskPanelCfdSolverControl.py index 11ce89ff..1b568baa 100644 --- a/CfdOF/Solve/TaskPanelCfdSolverControl.py +++ b/CfdOF/Solve/TaskPanelCfdSolverControl.py @@ -76,6 +76,7 @@ def __init__(self, solver_runner_obj): self.form.pb_edit_inp.clicked.connect(self.editSolverInputFile) self.form.pb_run_solver.clicked.connect(self.runSolverProcess) self.form.pb_paraview.clicked.connect(self.openParaview) + self.form.pb_plot_residuals.clicked.connect(self.openResidualPlot) self.form.inputParallel.stateChanged.connect(self.updateUI) self.Start = time.time() @@ -325,6 +326,14 @@ def gotErrorLines(self, lines): if print_err is not None: self.consoleMessage(print_err, 'Error') + def openResidualPlot(self): + plotter = self.solver_object.Proxy.residual_plotter + if not plotter.times or not any(plotter.values.values()): + self.consoleMessage("No residual data available to plot", 'Error') + return + plotter.updated = True + plotter.refresh() + def openParaview(self): QApplication.setOverrideCursor(Qt.WaitCursor) case_path = os.path.abspath(os.path.join(self.working_dir, self.solver_object.InputCaseName)) diff --git a/Gui/TaskPanelCfdSolverControl.ui b/Gui/TaskPanelCfdSolverControl.ui index a44126b0..bda6a792 100644 --- a/Gui/TaskPanelCfdSolverControl.ui +++ b/Gui/TaskPanelCfdSolverControl.ui @@ -234,15 +234,9 @@ - - - - 75 - true - - + - + Residuals