diff --git a/src/Solver/ASolver.py b/src/Solver/ASolver.py index b15f6c89475f43cd24310899e3f184e3e0b1393b..310e2772ed31564487ff5ccaaf6456fa4ad208b5 100644 --- a/src/Solver/ASolver.py +++ b/src/Solver/ASolver.py @@ -47,9 +47,8 @@ class AbstractSolver(object): def default_parameters(cls): lst = [ ("all_init_time", "00:00:00:00"), - ("all_final_time", "01:00:00:00"), + ("all_final_time", "999:99:00:00"), ("all_timestep", "300.0"), - ("all_timestep_min", "1.0"), ] return lst diff --git a/src/Solver/Mage.py b/src/Solver/Mage.py index 82c33b024370ec3baa8f39ca133bdf40fb91c997..e038495f95e18e3c5c4f8ec6ba7c02b996b1db3e 100644 --- a/src/Solver/Mage.py +++ b/src/Solver/Mage.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- -from Solver.GenericSolver import GenericSolver +from Solver.ASolver import AbstractSolver -class Mage(GenericSolver): +class Mage(AbstractSolver): def __init__(self, name): super(Mage, self).__init__(name) @@ -17,9 +17,14 @@ class Mage(GenericSolver): lst = super(Mage, cls).default_parameters() lst += [ + ("mage_min_timestep", "1.0"), ("mage_timestep_tra", "3600"), ("mage_timestep_bin", "0"), + # ("mage_timestep_melissa", "0"), ("mage_implication", "0.70"), + ("mage_continuity_discretization", "S"), + ("mage_qsj_discretization", "B"), + ("mage_stop_criterion_iterations", "R"), ("mage_iter_type", "0"), ("mage_smooth_coef", "0"), ("mage_cfl_max", "-1."), @@ -29,16 +34,16 @@ class Mage(GenericSolver): ("mage_precision_reduction_factor_Z", "1"), ("mage_precision_reduction_factor_Q", "1"), ("mage_niter_max_precision", "99"), - ("mage_error_bound_mesh_elevation", "-1"), - ("mage_maximun_froude_number", "2"), - ("mage_volume_report_monitoring_yn", "y"), - ("mage_divergence_relative_error", "0.001"), - ("mage_minimal_reach_volume_error", "1000"), + ("mage_niter_before_switch", "99"), + ("mage_max_froude", "1.5"), + ("mage_diffluence_node_height_balance", "-1"), + ("mage_compute_reach_volume_balance", "y"), + ("mage_max_reach_volume_balance", "0.001"), + ("mage_min_reach_volume_to_check", "1000.0"), ] return lst - class Mage7(Mage): def __init__(self, name): super(Mage7, self).__init__(name) diff --git a/src/View/MainWindow.py b/src/View/MainWindow.py index 2c1cb1c2e80c2e5c9130217332bc3c6a084825f7..3f0b5adc3b0dc07d28eb8c7370fdfaca442b90fc 100644 --- a/src/View/MainWindow.py +++ b/src/View/MainWindow.py @@ -28,6 +28,7 @@ from View.InitialConditions.Window import InitialConditionsWindow from View.Stricklers.Window import StricklersWindow from View.Sections.Window import SectionsWindow from View.SolverParameters.Window import SolverParametersWindow +from View.RunSolver.Window import SelectSolverWindow from Model.Study import Study @@ -46,12 +47,15 @@ other_model_action = [ ] define_model_action = [ + # Toolbar "action_toolBar_network", "action_toolBar_geometry", "action_toolBar_mesh", "action_toolBar_run_meshing_tool", "action_toolBar_boundary_cond", "action_toolBar_lateral_contrib", "action_toolBar_spills", "action_toolBar_sections", "action_toolBar_stricklers", "action_toolBar_building", "action_toolBar_initial_cond", + # Menu + "action_run_solver", ] action = ( @@ -112,6 +116,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): "action_menu_open": self.open_model, "action_menu_save": self.save_study, "action_menu_save_as": self.save_as_study, + "action_run_solver": self.run_solver, ## Help "action_menu_about": self.open_about, # ToolBar action @@ -332,43 +337,49 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): "into river network window to work on it") def open_boundary_cond(self): - self.bound = BoundaryConditionWindow(study = self.model, parent = self) - self.bound.show() + bound = BoundaryConditionWindow(study = self.model, parent = self) + bound.show() def open_lateral_contrib(self): - self.lateral = LateralContributionWindow(study = self.model, parent = self) - self.lateral.show() + lateral = LateralContributionWindow(study = self.model, parent = self) + lateral.show() def open_stricklers(self): - self.strick = StricklersWindow( + strick = StricklersWindow( study = self.model, config = self.conf, parent = self ) - self.strick.show() + strick.show() def open_sections(self): - self.sections = SectionsWindow( + sections = SectionsWindow( study = self.model, parent = self ) - self.sections.show() + sections.show() def open_initial_conditions(self): if self.model.river.has_current_reach(): - self.initial = InitialConditionsWindow( + initial = InitialConditionsWindow( study = self.model, parent = self ) - self.initial.show() + initial.show() def open_solver_parameters(self): - self.params = SolverParametersWindow( + params = SolverParametersWindow( study = self.model, parent = self ) - self.params.show() + params.show() + def run_solver(self): + run = SelectSolverWindow( + study = self.model, + parent = self + ) + run.show() # TODO: Delete me ! ############### diff --git a/src/View/SolverParameters/translate.py b/src/View/SolverParameters/translate.py index 1e7896d8d40c3f137c42ab90e96e1796f26cdb12..6085dbfb57b7ae89964d883f1805641da1dc90ca 100644 --- a/src/View/SolverParameters/translate.py +++ b/src/View/SolverParameters/translate.py @@ -39,23 +39,28 @@ def init(): "all_init_time": _translate("SolverParameters", "Initial time (jj:hh:mm:ss)"), "all_final_time": _translate("SolverParameters", "Final time (jj:hh:mm:ss)"), "all_timestep": _translate("SolverParameters", "Timestep (second)"), - "all_timestep_min": _translate("SolverParameters", "Minimum timestep (second)"), - "mage_implication": _translate("SolverParameters", "Implicitation parameter"), + # Mage specific parameters + "mage_min_timestep": _translate("SolverParameters", "Minimum timestep (second)"), "mage_timestep_tra": _translate("SolverParameters", "Time step of writing on .TRA"), "mage_timestep_bin": _translate("SolverParameters", "Time step of writing on .BIN"), + "mage_implication": _translate("SolverParameters", "Implicitation parameter"), + "mage_continuity_discretization": _translate("SolverParameters", "Continuity discretization type (S/L)"), + "mage_qsj_discretization": _translate("SolverParameters", "QSJ discretization (A/B)"), + "mage_stop_criterion_iterations": _translate("SolverParameters", "Stop criterion iterations (G/A/R)"), "mage_iter_type": _translate("SolverParameters", "Iteration type"), "mage_smooth_coef": _translate("SolverParameters", "Smoothing coefficient"), "mage_cfl_max": _translate("SolverParameters", "Maximun accepted number of CFL"), "mage_min_height": _translate("SolverParameters", "Minimum water height (meter)"), "mage_max_niter": _translate("SolverParameters", "Maximun number of iterations (< 100)"), "mage_timestep_reduction_factor": _translate("SolverParameters", "Timestep reduction factor"), - "mage_niter_max_precision": _translate("SolverParameters", "Number of iteration at maximum precision"), "mage_precision_reduction_factor_Z": _translate("SolverParameters", "Reduction precision factor of Z"), "mage_precision_reduction_factor_Q": _translate("SolverParameters", "Reduction precision factor of Q"), "mage_precision_reduction_factor_r": _translate("SolverParameters", "Reduction precision factor of residue"), - "mage_error_bound_mesh_elevation": _translate("SolverParameters", "Error bound for mesh elevation"), - "mage_maximun_froude_number": _translate("SolverParameters", "Maximum accepted Froude number"), - "mage_volume_report_monitoring_yn": _translate("SolverParameters", "Volume report monitoring (Y/N)"), - "mage_divergence_relative_error": _translate("SolverParameters", "Divergence weir for relative error in volume"), - "mage_minimal_reach_volume_error": _translate("SolverParameters", "Minimum reach volume for error consideration"), + "mage_niter_max_precision": _translate("SolverParameters", "Number of iteration at maximum precision"), + "mage_niter_before_switch": _translate("SolverParameters", "Number of iteration before switch"), + "mage_max_froude": _translate("SolverParameters", "Maximum accepted Froude number"), + "mage_diffluence_node_height_balance": _translate("SolverParameters", "Diffluence node height balance"), + "mage_compute_reach_volume_balance": _translate("SolverParameters", "Compute reach volume balance (Y/N)"), + "mage_max_reach_volume_balance": _translate("SolverParameters", "Maximum reach volume balance"), + "mage_min_reach_volume_to_check": _translate("SolverParameters", "Minimum reach volume to check"), }