Commit a64a9867 authored by Pierre-Antoine Rouby's avatar Pierre-Antoine Rouby
Browse files

refactoring: refacto solver parameters

Showing with 85 additions and 115 deletions
+85 -115
...@@ -24,9 +24,9 @@ from Solver.Mage import Mage7, Mage8 ...@@ -24,9 +24,9 @@ from Solver.Mage import Mage7, Mage8
_translate = QCoreApplication.translate _translate = QCoreApplication.translate
solver_long_name = { solver_long_name = {
"generic": _translate("Solvers", "Generic"), "generic": "Generic",
# "mage7": _translate("Solvers", "Mage version 7"), # "mage7": "Mage v7",
"mage8": _translate("Solvers", "Mage version 8"), "mage8": "Mage v8",
} }
solver_type_list = { solver_type_list = {
......
...@@ -52,7 +52,7 @@ from View.Stricklers.Window import StricklersWindow ...@@ -52,7 +52,7 @@ from View.Stricklers.Window import StricklersWindow
from View.Frictions.Window import FrictionsWindow from View.Frictions.Window import FrictionsWindow
from View.SedimentLayers.Window import SedimentLayersWindow from View.SedimentLayers.Window import SedimentLayersWindow
from View.SedimentLayers.Reach.Window import ReachSedimentLayersWindow from View.SedimentLayers.Reach.Window import ReachSedimentLayersWindow
# from View.SolverParameters.Window import SolverParametersWindow from View.SolverParameters.Window import SolverParametersWindow
# from View.RunSolver.Window import SelectSolverWindow, SolverLogWindow # from View.RunSolver.Window import SelectSolverWindow, SolverLogWindow
# from View.CheckList.Window import CheckListWindow # from View.CheckList.Window import CheckListWindow
# from View.Results.Window import ResultsWindow # from View.Results.Window import ResultsWindow
......
...@@ -34,37 +34,20 @@ from PyQt5.QtWidgets import ( ...@@ -34,37 +34,20 @@ from PyQt5.QtWidgets import (
QComboBox, QComboBox,
) )
from View.Tools.PamhyrTable import PamhyrTableModel
from View.SolverParameters.UndoCommand import * from View.SolverParameters.UndoCommand import *
from View.SolverParameters import translate as tr
from Solver.Solvers import solver_long_name, solver_type_list from Solver.Solvers import solver_long_name, solver_type_list
_translate = QCoreApplication.translate logger = logging.getLogger()
class TableModel(QAbstractTableModel):
def __init__(self, data=None, undo=None, tab=""):
super(QAbstractTableModel, self).__init__()
self._headers = list(tr.table_headers.keys())
self._data = data
self._undo = undo
self._tab = tab
self._params = self._data.get_params(self._tab)
def flags(self, index):
options = Qt.ItemIsEnabled | Qt.ItemIsSelectable
column = index.column()
if self._headers[column] == "value":
options |= Qt.ItemIsEditable
return options
def rowCount(self, parent): _translate = QCoreApplication.translate
return len(self._params)
def columnCount(self, parent): class TableModel(PamhyrTableModel):
return len(self._headers) def _setup_lst(self):
self._tab = self._opt_data
self._lst = self._data.get_params(self._tab)
def data(self, index, role): def data(self, index, role):
if role != Qt.ItemDataRole.DisplayRole: if role != Qt.ItemDataRole.DisplayRole:
...@@ -75,24 +58,18 @@ class TableModel(QAbstractTableModel): ...@@ -75,24 +58,18 @@ class TableModel(QAbstractTableModel):
cname = self._headers[column] cname = self._headers[column]
if cname == "name": if cname == "name":
value = self._params.get(row)[cname] value = self._lst.get(row)[cname]
if value in tr.names: if value in self._trad.get_dict("names"):
value = tr.names[value] value = self._trad.get_dict("names")[value]
return value return value
elif cname == "value": elif cname == "value":
value = self._params.get(row)[cname] value = self._lst.get(row)[cname]
if value in tr.yes_no: if value in self._trad.get_dict("yes_no"):
value = tr.yes_no[value] value = self._trad.get_dict("yes_no")[value]
return value return value
return QVariant() return QVariant()
def headerData(self, section, orientation, role):
if role == Qt.ItemDataRole.DisplayRole and orientation == Qt.Orientation.Horizontal:
return tr.table_headers[self._headers[section]]
return QVariant()
def setData(self, index, value, role=Qt.EditRole): def setData(self, index, value, role=Qt.EditRole):
if not index.isValid() or role != Qt.EditRole: if not index.isValid() or role != Qt.EditRole:
return False return False
...@@ -102,12 +79,12 @@ class TableModel(QAbstractTableModel): ...@@ -102,12 +79,12 @@ class TableModel(QAbstractTableModel):
try: try:
if self._headers[column] == "value": if self._headers[column] == "value":
if value in tr.r_yes_no: if value in self._trad.get_dict("r_yes_no"):
value = tr.r_yes_no[value].lower() value = self._trad.get_dict("r_yes_no")[value].lower()
self._undo.push( self._undo.push(
SetCommand( SetCommand(
self._params, row, self._lst, row,
"value", value "value", value
) )
) )
...@@ -123,7 +100,7 @@ class TableModel(QAbstractTableModel): ...@@ -123,7 +100,7 @@ class TableModel(QAbstractTableModel):
# self._undo.push( # self._undo.push(
# AddCommand( # AddCommand(
# self._params, row # self._lst, row
# ) # )
# ) # )
...@@ -135,7 +112,7 @@ class TableModel(QAbstractTableModel): ...@@ -135,7 +112,7 @@ class TableModel(QAbstractTableModel):
# self._undo.push( # self._undo.push(
# DelCommand( # DelCommand(
# self._params, rows # self._lst, rows
# ) # )
# ) # )
...@@ -147,7 +124,7 @@ class TableModel(QAbstractTableModel): ...@@ -147,7 +124,7 @@ class TableModel(QAbstractTableModel):
# self._undo.push( # self._undo.push(
# SortCommand( # SortCommand(
# self._params, False # self._lst, False
# ) # )
# ) # )
...@@ -164,7 +141,7 @@ class TableModel(QAbstractTableModel): ...@@ -164,7 +141,7 @@ class TableModel(QAbstractTableModel):
# self._undo_stack.push( # self._undo_stack.push(
# MoveCommand( # MoveCommand(
# self._params, "up", row # self._lst, "up", row
# ) # )
# ) # )
...@@ -172,7 +149,7 @@ class TableModel(QAbstractTableModel): ...@@ -172,7 +149,7 @@ class TableModel(QAbstractTableModel):
# self.layoutChanged.emit() # self.layoutChanged.emit()
# def move_down(self, index, parent=QModelIndex()): # def move_down(self, index, parent=QModelIndex()):
# if row > len(self._params): # if row > len(self._lst):
# return # return
# target = row # target = row
...@@ -181,7 +158,7 @@ class TableModel(QAbstractTableModel): ...@@ -181,7 +158,7 @@ class TableModel(QAbstractTableModel):
# self._undo_stack.push( # self._undo_stack.push(
# MoveCommand( # MoveCommand(
# self._params, "down", row # self._lst, "down", row
# ) # )
# ) # )
......
...@@ -42,7 +42,7 @@ from PyQt5.QtWidgets import ( ...@@ -42,7 +42,7 @@ from PyQt5.QtWidgets import (
from View.SolverParameters.UndoCommand import * from View.SolverParameters.UndoCommand import *
from View.SolverParameters.Table import TableModel from View.SolverParameters.Table import TableModel
from View.SolverParameters import translate as tr from View.SolverParameters.translate import ParamTranslate
from Solver.Solvers import solver_long_name, solver_type_list from Solver.Solvers import solver_long_name, solver_type_list
...@@ -55,16 +55,13 @@ class SolverParametersWindow(PamhyrWindow): ...@@ -55,16 +55,13 @@ class SolverParametersWindow(PamhyrWindow):
_pamhyr_name = "Solver parameters" _pamhyr_name = "Solver parameters"
def __init__(self, study=None, config=None, parent=None): def __init__(self, study=None, config=None, parent=None):
# Init tanslate dictionary
tr.init()
name = self._pamhyr_name + " - " + study.name name = self._pamhyr_name + " - " + study.name
super(SolverParametersWindow, self).__init__( super(SolverParametersWindow, self).__init__(
title = name, title = name,
study = study, study = study,
config = config, config = config,
options = ['copy'], options = ['copy'],
trad = ParamTranslate(),
parent = parent parent = parent
) )
...@@ -73,8 +70,6 @@ class SolverParametersWindow(PamhyrWindow): ...@@ -73,8 +70,6 @@ class SolverParametersWindow(PamhyrWindow):
self.setup_sc() self.setup_sc()
self.setup_table() self.setup_table()
self.ui.setWindowTitle(self._title)
def setup_sc(self): def setup_sc(self):
self._undo_stack = {} self._undo_stack = {}
...@@ -101,9 +96,13 @@ class SolverParametersWindow(PamhyrWindow): ...@@ -101,9 +96,13 @@ class SolverParametersWindow(PamhyrWindow):
# Create table model # Create table model
self._table[st] = TableModel( self._table[st] = TableModel(
table_view = table,
data = self._study.river, data = self._study.river,
opt_data = st,
table_headers = self._trad.get_dict("table_headers"),
editable_headers = ["value"],
trad = self._trad,
undo = self._undo_stack[st], undo = self._undo_stack[st],
tab = st,
) )
table.setModel(self._table[st]) table.setModel(self._table[st])
......
...@@ -18,66 +18,60 @@ ...@@ -18,66 +18,60 @@
from PyQt5.QtCore import QCoreApplication from PyQt5.QtCore import QCoreApplication
from View.Tools.PamhyrTranslate import PamhyrTranslate
_translate = QCoreApplication.translate _translate = QCoreApplication.translate
table_headers = None class ParamTranslate(PamhyrTranslate):
yes_no = None def __init__(self):
r_yes_no = None super(ParamTranslate, self).__init__()
names = None
def init(): self._sub_dict["table_headers"] = {
global table_headers "name": _translate("SolverParameters", "Name"),
table_headers = { "value": _translate("SolverParameters", "Value")
"name": _translate("SolverParameters", "Name"), }
"value": _translate("SolverParameters", "Value")
}
# Used to translate user parameter with value yes or no self._sub_dict["yes_no"] = {
global yes_no "yes": _translate("SolverParameters", "Yes"),
yes_no = { "no": _translate("SolverParameters", "No"),
"yes": _translate("SolverParameters", "Yes"), "y": _translate("SolverParameters", "Y"),
"no": _translate("SolverParameters", "No"), "n": _translate("SolverParameters", "N"),
"y": _translate("SolverParameters", "Y"), }
"n": _translate("SolverParameters", "N"),
}
# Reverse self._sub_dict["r_yes_no"] = {
global r_yes_no _translate("SolverParameters", "Yes"): "yes",
r_yes_no = { _translate("SolverParameters", "No"): "no",
_translate("SolverParameters", "Yes"): "yes", _translate("SolverParameters", "Y"): "y",
_translate("SolverParameters", "No"): "no", _translate("SolverParameters", "N"): "n",
_translate("SolverParameters", "Y"): "y", }
_translate("SolverParameters", "N"): "n",
}
global names self._sub_dict["names"] = {
names = { "all_init_time": _translate("SolverParameters", "Initial time (jj:hh:mm:ss)"),
"all_init_time": _translate("SolverParameters", "Initial time (jj:hh:mm:ss)"), "all_final_time": _translate("SolverParameters", "Final time (jj:hh:mm:ss)"),
"all_final_time": _translate("SolverParameters", "Final time (jj:hh:mm:ss)"), "all_timestep": _translate("SolverParameters", "Timestep (second)"),
"all_timestep": _translate("SolverParameters", "Timestep (second)"), "all_command_line_arguments": _translate("SolverParameters", "Command line arguments"),
"all_command_line_arguments": _translate("SolverParameters", "Command line arguments"), # Mage specific parameters
# Mage specific parameters "mage_min_timestep": _translate("SolverParameters", "Minimum timestep (second)"),
"mage_min_timestep": _translate("SolverParameters", "Minimum timestep (second)"), "mage_timestep_tra": _translate("SolverParameters", "Time step of writing on .TRA"),
"mage_timestep_tra": _translate("SolverParameters", "Time step of writing on .TRA"), "mage_timestep_bin": _translate("SolverParameters", "Time step of writing on .BIN"),
"mage_timestep_bin": _translate("SolverParameters", "Time step of writing on .BIN"), "mage_implicitation": _translate("SolverParameters", "Implicitation parameter"),
"mage_implicitation": _translate("SolverParameters", "Implicitation parameter"), "mage_continuity_discretization": _translate("SolverParameters", "Continuity discretization type (S/L)"),
"mage_continuity_discretization": _translate("SolverParameters", "Continuity discretization type (S/L)"), "mage_qsj_discretization": _translate("SolverParameters", "QSJ discretization (A/B)"),
"mage_qsj_discretization": _translate("SolverParameters", "QSJ discretization (A/B)"), "mage_stop_criterion_iterations": _translate("SolverParameters", "Stop criterion iterations (G/A/R)"),
"mage_stop_criterion_iterations": _translate("SolverParameters", "Stop criterion iterations (G/A/R)"), "mage_iteration_type": _translate("SolverParameters", "Iteration type"),
"mage_iteration_type": _translate("SolverParameters", "Iteration type"), "mage_smooth_coef": _translate("SolverParameters", "Smoothing coefficient"),
"mage_smooth_coef": _translate("SolverParameters", "Smoothing coefficient"), "mage_cfl_max": _translate("SolverParameters", "Maximun accepted number of CFL"),
"mage_cfl_max": _translate("SolverParameters", "Maximun accepted number of CFL"), "mage_min_height": _translate("SolverParameters", "Minimum water height (meter)"),
"mage_min_height": _translate("SolverParameters", "Minimum water height (meter)"), "mage_max_niter": _translate("SolverParameters", "Maximun number of iterations (< 100)"),
"mage_max_niter": _translate("SolverParameters", "Maximun number of iterations (< 100)"), "mage_timestep_reduction_factor": _translate("SolverParameters", "Timestep reduction factor"),
"mage_timestep_reduction_factor": _translate("SolverParameters", "Timestep reduction factor"), "mage_precision_reduction_factor_Z": _translate("SolverParameters", "Reduction precision factor of Z"),
"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_Q": _translate("SolverParameters", "Reduction precision factor of Q"), "mage_precision_reduction_factor_r": _translate("SolverParameters", "Reduction precision factor of residue"),
"mage_precision_reduction_factor_r": _translate("SolverParameters", "Reduction precision factor of residue"), "mage_niter_max_precision": _translate("SolverParameters", "Number of iteration at maximum precision"),
"mage_niter_max_precision": _translate("SolverParameters", "Number of iteration at maximum precision"), "mage_niter_before_switch": _translate("SolverParameters", "Number of iteration before switch"),
"mage_niter_before_switch": _translate("SolverParameters", "Number of iteration before switch"), "mage_max_froude": _translate("SolverParameters", "Maximum accepted Froude number"),
"mage_max_froude": _translate("SolverParameters", "Maximum accepted Froude number"), "mage_diffluence_node_height_balance": _translate("SolverParameters", "Diffluence node height balance"),
"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_compute_reach_volume_balance": _translate("SolverParameters", "Compute reach volume balance (Y/N)"), "mage_max_reach_volume_balance": _translate("SolverParameters", "Maximum reach volume balance"),
"mage_max_reach_volume_balance": _translate("SolverParameters", "Maximum reach volume balance"), "mage_min_reach_volume_to_check": _translate("SolverParameters", "Minimum reach volume to check"),
"mage_min_reach_volume_to_check": _translate("SolverParameters", "Minimum reach volume to check"), }
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment