diff --git a/src/Model/InitialConditions/InitialConditions.py b/src/Model/InitialConditions/InitialConditions.py
index d77e2498..be12428f 100644
--- a/src/Model/InitialConditions/InitialConditions.py
+++ b/src/Model/InitialConditions/InitialConditions.py
@@ -140,7 +140,6 @@ class Data(SQLSubModel):
reach=self._reach,
status=self._status,
)
-
return new
@property
@@ -368,53 +367,68 @@ class InitialConditions(SQLSubModel):
key=lambda p: p.kp
)
- def generate_growing_constante_height(self, height: float):
- self._data = []
+ def generate_growing_constante_height(self, height: float, compute_discharge: bool):
profiles = self._reach.reach.profiles.copy()
self._sort_by_z_and_kp(profiles)
- incline = self._reach.reach.get_incline_median_mean()
logger.debug(f"incline = {incline}")
previous_elevation = -99999.99
- for profile in profiles:
- width = profile.width_approximation()
- strickler = 25
- discharge = (
- ((width * 0.8)
- * strickler
- * (height ** (5/3))
- * (abs(incline) ** (0.5)))
- )
- elevation = max(
- profile.z_min() + height,
- previous_elevation
- )
+ if compute_discharge:
+ incline = self._reach.reach.get_incline_median_mean()
+ self._data = []
+ for profile in profiles:
+ width = profile.width_approximation()
+ strickler = 25
+ discharge = (
+ ((width * 0.8)
+ * strickler
+ * (height ** (5/3))
+ * (abs(incline) ** (0.5)))
+ )
- logger.debug(f"({profile.kp}):")
- logger.debug(f" width = {width}")
- logger.debug(f" strickler = {strickler}")
- logger.debug(f" discharge = {discharge}")
+ elevation = max(
+ profile.z_min() + height,
+ previous_elevation
+ )
- new = Data(reach=self._reach, status=self._status)
- new["kp"] = profile.kp
- new["discharge"] = discharge
+ logger.debug(f"({profile.kp}):")
+ logger.debug(f" width = {width}")
+ logger.debug(f" strickler = {strickler}")
+ logger.debug(f" discharge = {discharge}")
- new["elevation"] = elevation
+ new = Data(reach=self._reach, status=self._status)
+ new["kp"] = profile.kp
+ new["discharge"] = discharge
- self._data.append(new)
- previous_elevation = elevation
+ new["elevation"] = elevation
+
+ self._data.append(new)
+ else:
+ for data, profile in zip(self._data, profiles):
+
+ elevation = max(
+ profile.z_min() + height,
+ previous_elevation
+ )
+ data["elevation"] = elevation
+ previous_elevation = elevation
self._generate_resort_data(profiles)
- def generate_discharge(self, discharge: float):
- self._data = []
+ def generate_discharge(self, discharge: float, compute_height: bool):
- self._generate_height_estimation_from_discharge(
- discharge
- )
+ if compute_height:
+ self._data = []
+
+ self._generate_height_estimation_from_discharge(
+ discharge
+ )
+ else:
+ for data in self._data:
+ data["discharge"] = discharge
def _generate_height_estimation_from_discharge(self, discharge: float):
profiles = self._reach.reach.profiles.copy()
diff --git a/src/View/InitialConditions/DialogDischarge.py b/src/View/InitialConditions/DialogDischarge.py
index 9b63bdab..3f0a83bb 100644
--- a/src/View/InitialConditions/DialogDischarge.py
+++ b/src/View/InitialConditions/DialogDischarge.py
@@ -28,7 +28,7 @@ from PyQt5.QtCore import (
from PyQt5.QtWidgets import (
QDialogButtonBox, QComboBox, QUndoStack, QShortcut,
- QDoubleSpinBox,
+ QDoubleSpinBox, QCheckBox,
)
@@ -45,9 +45,11 @@ class DischargeDialog(PamhyrDialog):
)
self.value = None
+ self.option = None
def accept(self):
self.value = self.find(QDoubleSpinBox, "doubleSpinBox").value()
+ self.option = self.find(QCheckBox, "checkBox").isChecked()
super().accept()
def reject(self):
diff --git a/src/View/InitialConditions/DialogHeight.py b/src/View/InitialConditions/DialogHeight.py
index 40821232..d4e541aa 100644
--- a/src/View/InitialConditions/DialogHeight.py
+++ b/src/View/InitialConditions/DialogHeight.py
@@ -28,7 +28,7 @@ from PyQt5.QtCore import (
from PyQt5.QtWidgets import (
QDialogButtonBox, QComboBox, QUndoStack, QShortcut,
- QDoubleSpinBox,
+ QDoubleSpinBox, QCheckBox,
)
@@ -45,9 +45,11 @@ class HeightDialog(PamhyrDialog):
)
self.value = None
+ self.option = None
def accept(self):
self.value = self.find(QDoubleSpinBox, "doubleSpinBox").value()
+ self.option = self.find(QCheckBox, "checkBox").isChecked()
super().accept()
def reject(self):
diff --git a/src/View/InitialConditions/Table.py b/src/View/InitialConditions/Table.py
index 5461e862..cc7e712e 100644
--- a/src/View/InitialConditions/Table.py
+++ b/src/View/InitialConditions/Table.py
@@ -289,10 +289,10 @@ class InitialConditionTableModel(PamhyrTableModel):
self._undo.redo()
self.layoutChanged.emit()
- def generate(self, generator, param):
+ def generate(self, generator, param, option):
self._undo.push(
GenerateCommand(
- self._lst, generator, param
+ self._lst, generator, param, option
)
)
self.layoutChanged.emit()
diff --git a/src/View/InitialConditions/UndoCommand.py b/src/View/InitialConditions/UndoCommand.py
index fecb6c6d..cb880bc9 100644
--- a/src/View/InitialConditions/UndoCommand.py
+++ b/src/View/InitialConditions/UndoCommand.py
@@ -174,11 +174,12 @@ class DuplicateCommand(QUndoCommand):
class GenerateCommand(QUndoCommand):
- def __init__(self, ics, generator, param):
+ def __init__(self, ics, generator, param, option):
QUndoCommand.__init__(self)
self._ics = ics
self._param = param
+ self._option = option
self._copy = self._ics.data
self._generator = generator
@@ -187,6 +188,8 @@ class GenerateCommand(QUndoCommand):
def redo(self):
if self._generator == "growing":
- self._ics.generate_growing_constante_height(self._param)
+ self._ics.generate_growing_constante_height(self._param,
+ self._option)
elif self._generator == "discharge":
- self._ics.generate_discharge(self._param)
+ self._ics.generate_discharge(self._param,
+ self._option)
diff --git a/src/View/InitialConditions/Window.py b/src/View/InitialConditions/Window.py
index a9f4c6ad..02cdd791 100644
--- a/src/View/InitialConditions/Window.py
+++ b/src/View/InitialConditions/Window.py
@@ -349,12 +349,14 @@ class InitialConditionsWindow(PamhyrWindow):
dlg = HeightDialog(trad=self._trad, parent=self)
if dlg.exec():
value = dlg.value
- self._table.generate("growing", value)
+ compute_discharge = dlg.option
+ self._table.generate("growing", value, compute_discharge)
self._update()
def generate_discharge(self):
dlg = DischargeDialog(trad=self._trad, parent=self)
if dlg.exec():
value = dlg.value
- self._table.generate("discharge", value)
+ compute_height = dlg.option
+ self._table.generate("discharge", value, compute_height)
self._update()
diff --git a/src/View/Network/translate.py b/src/View/Network/translate.py
index d6024681..ea999db2 100644
--- a/src/View/Network/translate.py
+++ b/src/View/Network/translate.py
@@ -54,12 +54,12 @@ class NetworkTranslate(MainTranslate):
self._sub_dict["table_headers_node"] = {
"name": self._dict['name'],
"type": self._dict['type'],
- # "id": _translate("Network", "Index"),
+ "id": _translate("Network", "Index"),
}
self._sub_dict["table_headers_edge"] = {
"name": self._dict['name'],
"node1": _translate("Network", "Source node"),
"node2": _translate("Network", "Destination node"),
- # "id": _translate("Network", "Index"),
+ "id": _translate("Network", "Index"),
}
diff --git a/src/View/ui/InitialConditions_Dialog_Generator_Discharge.ui b/src/View/ui/InitialConditions_Dialog_Generator_Discharge.ui
index 8a0b7a8a..58ae2b98 100644
--- a/src/View/ui/InitialConditions_Dialog_Generator_Discharge.ui
+++ b/src/View/ui/InitialConditions_Dialog_Generator_Discharge.ui
@@ -7,7 +7,7 @@
0
0
284
- 80
+ 107
@@ -17,6 +17,16 @@
+ -
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+
+
+
-
-
@@ -39,12 +49,12 @@
-
-
-
- Qt::Horizontal
+
+
+ Generate height
-
- QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+
+ true
diff --git a/src/View/ui/InitialConditions_Dialog_Generator_Height.ui b/src/View/ui/InitialConditions_Dialog_Generator_Height.ui
index 027fb621..500a2b0b 100644
--- a/src/View/ui/InitialConditions_Dialog_Generator_Height.ui
+++ b/src/View/ui/InitialConditions_Dialog_Generator_Height.ui
@@ -17,6 +17,16 @@
+ -
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+
+
+
-
-
@@ -29,19 +39,19 @@
-
- 999999.998999999952503
+ 1000000.000000000000000
-
-
-
- Qt::Horizontal
+
+
+ Generate discharge
-
- QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+
+ true