diff --git a/src/Solver/ASolver.py b/src/Solver/ASolver.py
index c4fa286ae9c1bd8ddd938d145b52ad51caef78f1..5ff5f6dcee3e36ecb892b56a7eb89ef6836ff2e2 100644
--- a/src/Solver/ASolver.py
+++ b/src/Solver/ASolver.py
@@ -121,6 +121,9 @@ class AbstractSolver(object):
     def is_stoped(self):
         return self._status == STATUS.STOPED
 
+    def has_results_loaded(self):
+        self._status = STATUS.NOT_LAUNCHED
+
     @name.setter
     def name(self, name):
         self._name = name
diff --git a/src/View/RunSolver/Window.py b/src/View/RunSolver/Window.py
index 96ada16e0053d08a4bc0cd72621dc3f7c3432504..3cf453c20656e0004f382a89dac3e1d765d1dd87 100644
--- a/src/View/RunSolver/Window.py
+++ b/src/View/RunSolver/Window.py
@@ -124,40 +124,11 @@ class SolverLogWindow(PamhyrWindow):
         self.setup_action()
         self.setup_alarm()
         self.setup_connections()
+        self.setup_workdir()
+        self.setup_process()
 
-        self._workdir = ""
-        if self._study.filename == "":
-            self._workdir = tempfile.TemporaryDirectory()
-        else:
-            self._workdir = os.path.join(
-                os.path.dirname(self._study.filename),
-                "_PAMHYR_",
-                self._study.name.replace(" ", "_"),
-                self._solver.name.replace(" ", "_"),
-            )
-            os.makedirs(self._workdir, exist_ok=True)
-
-        self._alarm.start(500)
-        self._output = Queue()
-        self._process = self.new_process(parent)
-
-        self._log(f" *** Export study {self._solver.name}", color="blue")
-        self._solver.export(self._study, self._workdir, qlog=self._output)
-
-        self.update()
-
-        self._log(f" *** Run solver {self._solver.name}", color="blue")
-        self._solver.run(
-            study,
-            process=self._process,
-            output_queue=self._output
-        )
-
-    def new_process(self, parent):
-        new = QProcess(parent)
-        new.setWorkingDirectory(self._workdir)
-        new.setProcessChannelMode(QProcess.MergedChannels)
-        return new
+        self.export()
+        self.run()
 
     def setup_action(self):
         self.find(QAction, "action_start").setEnabled(False)
@@ -182,30 +153,74 @@ class SolverLogWindow(PamhyrWindow):
 
         self._alarm.timeout.connect(self.update)
 
+    def setup_workdir(self):
+        self._workdir = ""
+        if self._study.filename == "":
+            self._workdir = tempfile.TemporaryDirectory()
+        else:
+            self._workdir = os.path.join(
+                os.path.dirname(self._study.filename),
+                "_PAMHYR_",
+                self._study.name.replace(" ", "_"),
+                self._solver.name.replace(" ", "_"),
+            )
+            os.makedirs(self._workdir, exist_ok=True)
+
+    def setup_process(self):
+        self._alarm.start(500)
+        self._output = Queue()
+        self._process = self.new_process(self._parent)
+
+    def new_process(self, parent):
+        new = QProcess(parent)
+        new.setWorkingDirectory(self._workdir)
+        new.setProcessChannelMode(QProcess.MergedChannels)
+        return new
+
+    def export(self):
+        self._log(f" *** Export study {self._solver.name}", color="blue")
+        self._solver.export(self._study, self._workdir, qlog=self._output)
+        self.update()
+
+    #######
+    # LOG #
+    #######
+
     def _log(self, msg, color=None):
         if type(msg) is str:
-            logger.info(f"solver: {msg}")
+            self._log_str(msg, color)
+        elif type(msg) is int:
+            self._log_int(msg, color)
 
-            msg = msg.rsplit('\n')[0]
+    def _log_str(self, msg, color=None):
+        logger.info(f"solver: {msg}")
+        msg = msg.rsplit('\n')[0]
 
-            if color is not None:
-                msg = f"<font color=\"{color}\">" + msg + "</font>"
+        if color is not None:
+            msg = f"<font color=\"{color}\">" + msg + "</font>"
 
-            self.find(QTextEdit, "textEdit").append(msg)
-        elif type(msg) is int:
-            logger.info(f"solver: Returns {msg}")
+        self.find(QTextEdit, "textEdit").append(msg)
 
-            color = "blue" if msg == 0 else "red"
-            self.find(QTextEdit, "textEdit")\
-                .append(f"<font color=\"{color}\">" +
-                        f" *** Finished with code {msg}" +
-                        "</font>")
+    def _log_int(self, int_code, color=None):
+        logger.info(f"solver: Returns {int_code}")
+        color = "blue" if int_code == 0 else "red"
 
-            self.statusbar.showMessage(
-                "Done" if msg == 0 else "Failed",
-                3000
+        self.find(QTextEdit, "textEdit")\
+            .append(
+                f"<font color=\"{color}\">" +
+                f" *** Finished with code {int_code}" +
+                "</font>"
             )
 
+        self.statusbar.showMessage(
+            "Done" if int_code == 0 else "Failed",
+            3000
+        )
+
+    ##########
+    # UPDATE #
+    ##########
+
     def update(self):
         if self._solver.is_stoped():
             self.find(QAction, "action_start").setEnabled(True)
@@ -235,6 +250,18 @@ class SolverLogWindow(PamhyrWindow):
             else:
                 self._log(s)
 
+    ####################
+    # Process controle #
+    ####################
+
+    def run(self):
+        self._log(f" *** Run solver {self._solver.name}", color="blue")
+        self._solver.run(
+            self._study,
+            process=self._process,
+            output_queue=self._output
+        )
+
     def start(self):
         if self._solver.is_stoped():
             self._log(f" *** Export study {self._solver.name}", color="blue")
@@ -276,6 +303,10 @@ class SolverLogWindow(PamhyrWindow):
         if self._solver.log_file() != "":
             self.find(QAction, "action_log_file").setEnabled(True)
 
+    ###########
+    # Results #
+    ###########
+
     def results(self):
         if self._results is None:
             self._results = self._solver.results(
@@ -284,6 +315,8 @@ class SolverLogWindow(PamhyrWindow):
         self._parent.set_results(self._solver, self._results)
         self._parent.open_solver_results(self._solver, self._results)
 
+        self._solver.has_results_loaded()
+
     def log_file(self):
         file_name = os.path.join(self._workdir, self._solver.log_file())
         log = SolverLogFileWindow(