floodmodeller-api 0.5.0.post1__py3-none-any.whl → 0.5.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- floodmodeller_api/__init__.py +1 -1
- floodmodeller_api/_base.py +26 -16
- floodmodeller_api/backup.py +3 -2
- floodmodeller_api/dat.py +29 -30
- floodmodeller_api/diff.py +3 -3
- floodmodeller_api/hydrology_plus/hydrology_plus_export.py +14 -13
- floodmodeller_api/ied.py +6 -6
- floodmodeller_api/ief.py +27 -25
- floodmodeller_api/inp.py +3 -4
- floodmodeller_api/logs/lf.py +9 -16
- floodmodeller_api/logs/lf_helpers.py +18 -18
- floodmodeller_api/mapping.py +2 -0
- floodmodeller_api/test/__init__.py +2 -2
- floodmodeller_api/test/conftest.py +2 -3
- floodmodeller_api/test/test_backup.py +2 -2
- floodmodeller_api/test/test_conveyance.py +4 -3
- floodmodeller_api/test/test_dat.py +2 -2
- floodmodeller_api/test/test_data/structure_logs/EX17_expected.csv +4 -0
- floodmodeller_api/test/test_data/structure_logs/EX17_expected.json +69 -0
- floodmodeller_api/test/test_data/structure_logs/EX18_expected.csv +20 -0
- floodmodeller_api/test/test_data/structure_logs/EX18_expected.json +292 -0
- floodmodeller_api/test/test_data/structure_logs/EX6_expected.csv +4 -0
- floodmodeller_api/test/test_data/structure_logs/EX6_expected.json +35 -0
- floodmodeller_api/test/test_data/tabular_csv_outputs/network_zzn_flow.csv +182 -0
- floodmodeller_api/test/test_data/tabular_csv_outputs/network_zzn_fr.csv +182 -0
- floodmodeller_api/test/test_data/tabular_csv_outputs/network_zzn_mode.csv +182 -0
- floodmodeller_api/test/test_data/tabular_csv_outputs/network_zzn_stage.csv +182 -0
- floodmodeller_api/test/test_data/tabular_csv_outputs/network_zzn_state.csv +182 -0
- floodmodeller_api/test/test_data/tabular_csv_outputs/network_zzn_velocity.csv +182 -0
- floodmodeller_api/test/test_data/tabular_csv_outputs/network_zzx_left_fp_h.csv +182 -0
- floodmodeller_api/test/test_data/tabular_csv_outputs/network_zzx_left_fp_mode.csv +182 -0
- floodmodeller_api/test/test_data/tabular_csv_outputs/network_zzx_link_inflow.csv +182 -0
- floodmodeller_api/test/test_data/tabular_csv_outputs/network_zzx_max.csv +87 -0
- floodmodeller_api/test/test_data/tabular_csv_outputs/network_zzx_right_fp_h.csv +182 -0
- floodmodeller_api/test/test_data/tabular_csv_outputs/network_zzx_right_fp_mode.csv +182 -0
- floodmodeller_api/test/test_flowtimeprofile.py +2 -2
- floodmodeller_api/test/test_hydrology_plus_export.py +4 -2
- floodmodeller_api/test/test_ied.py +2 -2
- floodmodeller_api/test/test_ief.py +2 -2
- floodmodeller_api/test/test_inp.py +2 -2
- floodmodeller_api/test/test_json.py +5 -10
- floodmodeller_api/test/test_logs_lf.py +6 -6
- floodmodeller_api/test/test_read_file.py +1 -0
- floodmodeller_api/test/test_river.py +11 -11
- floodmodeller_api/test/test_tool.py +8 -5
- floodmodeller_api/test/test_toolbox_structure_log.py +149 -158
- floodmodeller_api/test/test_xml2d.py +9 -11
- floodmodeller_api/test/test_zz.py +143 -0
- floodmodeller_api/to_from_json.py +8 -8
- floodmodeller_api/tool.py +12 -6
- floodmodeller_api/toolbox/example_tool.py +5 -1
- floodmodeller_api/toolbox/model_build/add_siltation_definition.py +12 -8
- floodmodeller_api/toolbox/model_build/structure_log/structure_log.py +498 -196
- floodmodeller_api/toolbox/model_build/structure_log_definition.py +5 -1
- floodmodeller_api/units/_base.py +14 -10
- floodmodeller_api/units/conveyance.py +1 -1
- floodmodeller_api/units/helpers.py +1 -3
- floodmodeller_api/units/losses.py +2 -3
- floodmodeller_api/units/sections.py +14 -10
- floodmodeller_api/units/structures.py +9 -9
- floodmodeller_api/units/units.py +2 -0
- floodmodeller_api/urban1d/_base.py +6 -9
- floodmodeller_api/urban1d/outfalls.py +2 -1
- floodmodeller_api/urban1d/raingauges.py +2 -1
- floodmodeller_api/urban1d/subsections.py +2 -0
- floodmodeller_api/urban1d/xsections.py +3 -2
- floodmodeller_api/util.py +16 -2
- floodmodeller_api/validation/validation.py +2 -1
- floodmodeller_api/version.py +1 -1
- floodmodeller_api/xml2d.py +18 -20
- floodmodeller_api/zz.py +538 -0
- {floodmodeller_api-0.5.0.post1.dist-info → floodmodeller_api-0.5.1.dist-info}/METADATA +20 -14
- {floodmodeller_api-0.5.0.post1.dist-info → floodmodeller_api-0.5.1.dist-info}/RECORD +78 -60
- {floodmodeller_api-0.5.0.post1.dist-info → floodmodeller_api-0.5.1.dist-info}/WHEEL +1 -1
- floodmodeller_api/test/test_zzn.py +0 -36
- floodmodeller_api/zzn.py +0 -414
- /floodmodeller_api/test/test_data/{network_from_tabularCSV.csv → tabular_csv_outputs/network_zzn_max.csv} +0 -0
- {floodmodeller_api-0.5.0.post1.dist-info → floodmodeller_api-0.5.1.dist-info}/LICENSE.txt +0 -0
- {floodmodeller_api-0.5.0.post1.dist-info → floodmodeller_api-0.5.1.dist-info}/entry_points.txt +0 -0
- {floodmodeller_api-0.5.0.post1.dist-info → floodmodeller_api-0.5.1.dist-info}/top_level.txt +0 -0
|
@@ -64,42 +64,40 @@ class AllData(Data):
|
|
|
64
64
|
index_key: str | None = None,
|
|
65
65
|
index_df: pd.Series | None = None,
|
|
66
66
|
) -> pd.DataFrame:
|
|
67
|
-
|
|
67
|
+
value_df = pd.DataFrame(self._value)
|
|
68
68
|
|
|
69
69
|
# do nothing to empty dataframes
|
|
70
|
-
if
|
|
71
|
-
return
|
|
70
|
+
if value_df.empty:
|
|
71
|
+
return value_df
|
|
72
72
|
|
|
73
73
|
# overall header
|
|
74
74
|
if self._subheaders is None:
|
|
75
|
-
|
|
75
|
+
value_df = value_df.rename(columns={value_df.columns[0]: self.header})
|
|
76
76
|
|
|
77
77
|
elif index_key is not None:
|
|
78
78
|
# subheaders
|
|
79
|
-
|
|
79
|
+
value_df = value_df.set_axis(self._subheaders, axis=1)
|
|
80
80
|
|
|
81
81
|
# remove duplicate of index
|
|
82
82
|
# sometimes it includes extra values
|
|
83
83
|
# it also has different precision
|
|
84
84
|
index_duplicate = index_key + "_duplicate"
|
|
85
|
-
if index_duplicate in
|
|
85
|
+
if index_duplicate in value_df.columns:
|
|
86
86
|
try:
|
|
87
|
-
index_df =
|
|
88
|
-
|
|
87
|
+
index_df = value_df[index_duplicate].dt.round("1s")
|
|
88
|
+
value_df = value_df.drop(index_duplicate, axis=1)
|
|
89
89
|
except AttributeError:
|
|
90
|
-
|
|
90
|
+
value_df = value_df.drop(columns=index_duplicate)
|
|
91
91
|
|
|
92
92
|
# there is no index because *this* is the index
|
|
93
93
|
if index_key is None:
|
|
94
|
-
return
|
|
94
|
+
return value_df
|
|
95
95
|
|
|
96
96
|
# made lf index the dataframe index
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
return df
|
|
97
|
+
value_df[index_key] = index_df
|
|
98
|
+
value_df = value_df.dropna()
|
|
99
|
+
value_df = value_df.drop_duplicates(subset=index_key, keep="last")
|
|
100
|
+
return value_df.set_index(index_key)
|
|
103
101
|
|
|
104
102
|
|
|
105
103
|
def data_factory(data_type: str, header: str, subheaders: list | None = None):
|
|
@@ -107,7 +105,8 @@ def data_factory(data_type: str, header: str, subheaders: list | None = None):
|
|
|
107
105
|
return LastData(header, subheaders)
|
|
108
106
|
if data_type == "all":
|
|
109
107
|
return AllData(header, subheaders)
|
|
110
|
-
|
|
108
|
+
msg = f'Unexpected data "{data_type}"'
|
|
109
|
+
raise ValueError(msg)
|
|
111
110
|
|
|
112
111
|
|
|
113
112
|
class State(ABC):
|
|
@@ -140,7 +139,8 @@ class SteadyState(State):
|
|
|
140
139
|
pass
|
|
141
140
|
|
|
142
141
|
def report_progress(self):
|
|
143
|
-
|
|
142
|
+
msg = "No progress reporting for steady simulations"
|
|
143
|
+
raise NotImplementedError(msg)
|
|
144
144
|
|
|
145
145
|
|
|
146
146
|
def state_factory(steady: bool, extracted_data: Data) -> State:
|
floodmodeller_api/mapping.py
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import os
|
|
2
1
|
from pathlib import Path
|
|
3
2
|
from unittest.mock import patch
|
|
4
3
|
|
|
@@ -6,8 +5,8 @@ import pytest
|
|
|
6
5
|
|
|
7
6
|
|
|
8
7
|
@pytest.fixture(scope="session")
|
|
9
|
-
def test_workspace():
|
|
10
|
-
return Path(
|
|
8
|
+
def test_workspace() -> Path:
|
|
9
|
+
return Path(__file__).parent / "test_data"
|
|
11
10
|
|
|
12
11
|
|
|
13
12
|
@pytest.fixture()
|
|
@@ -6,13 +6,13 @@ import pytest
|
|
|
6
6
|
from floodmodeller_api.backup import BackupControl, File
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
@pytest.fixture
|
|
9
|
+
@pytest.fixture()
|
|
10
10
|
def backup_control():
|
|
11
11
|
# Use a different directory for testing
|
|
12
12
|
return BackupControl()
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
@pytest.fixture
|
|
15
|
+
@pytest.fixture()
|
|
16
16
|
def file(test_workspace):
|
|
17
17
|
test_file = Path(test_workspace, "EX1.DAT")
|
|
18
18
|
file = File(test_file)
|
|
@@ -38,7 +38,8 @@ def test_insert_intermediate_wls():
|
|
|
38
38
|
result = insert_intermediate_wls(arr, threshold)
|
|
39
39
|
|
|
40
40
|
assert isinstance(result, np.ndarray), "Result should be a numpy array"
|
|
41
|
-
assert result[0] == 1.0
|
|
41
|
+
assert result[0] == 1.0, "First element should match the input"
|
|
42
|
+
assert result[-1] == 3.0, "Last element should match the input"
|
|
42
43
|
assert all(np.diff(result) <= threshold), "All gaps should be <= to the threshold"
|
|
43
44
|
|
|
44
45
|
|
|
@@ -52,7 +53,7 @@ def from_gui(test_workspace: Path):
|
|
|
52
53
|
return pd.read_csv(test_workspace / "expected_conveyance.csv")
|
|
53
54
|
|
|
54
55
|
|
|
55
|
-
@pytest.mark.parametrize("section",
|
|
56
|
+
@pytest.mark.parametrize("section", ["a", "a2", "b", "b2", "c", "d", "d2", "e", "e2", "e3"])
|
|
56
57
|
def test_results_close_to_gui(section: str, dat: DAT, from_gui: pd.DataFrame):
|
|
57
58
|
threshold = 6
|
|
58
59
|
|
|
@@ -71,7 +72,7 @@ def test_results_close_to_gui(section: str, dat: DAT, from_gui: pd.DataFrame):
|
|
|
71
72
|
assert hausdorff_distance < threshold
|
|
72
73
|
|
|
73
74
|
|
|
74
|
-
@pytest.mark.parametrize("section",
|
|
75
|
+
@pytest.mark.parametrize("section", ["a", "a2", "b", "b2", "c", "d", "d2", "e", "e2", "e3"])
|
|
75
76
|
def test_results_match_gui_at_shared_points(section: str, dat: DAT, from_gui: pd.DataFrame):
|
|
76
77
|
tolerance = 1e-2 # 0.001
|
|
77
78
|
actual = dat.sections[section].conveyance
|
|
@@ -8,12 +8,12 @@ from floodmodeller_api.units import QTBDY
|
|
|
8
8
|
from floodmodeller_api.util import FloodModellerAPIError
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
@pytest.fixture
|
|
11
|
+
@pytest.fixture()
|
|
12
12
|
def dat_fp(test_workspace):
|
|
13
13
|
return Path(test_workspace, "network.dat")
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
@pytest.fixture
|
|
16
|
+
@pytest.fixture()
|
|
17
17
|
def data_before(dat_fp):
|
|
18
18
|
return DAT(dat_fp)._write()
|
|
19
19
|
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
Unit Name,Unit Type,Unit Subtype,Comment,Friction,Dimensions (m),Weir Coefficient,Culvert Inlet/Outlet Loss
|
|
2
|
+
T2,CONDUIT,RECTANGULAR,,"Mannings: [min: 0.010, max: 0.020]",h: 1.50 x w: 2.50 x l: 30.00 (Total conduit length: 30.00),,Ki: 0.6
|
|
3
|
+
T2d,CONDUIT,RECTANGULAR,,"Mannings: [min: 0.010, max: 0.020]",h: 1.50 x w: 2.50 x l: 0.00,,Ko: 1.0
|
|
4
|
+
S4_W,WEIR,,,,Crest Elevation: 49.45 x w: 4.00,,
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"(T2,CONDUIT)": {
|
|
3
|
+
"name": "T2",
|
|
4
|
+
"type": "CONDUIT",
|
|
5
|
+
"subtype": "RECTANGULAR",
|
|
6
|
+
"comment": "",
|
|
7
|
+
"conduit_data": {
|
|
8
|
+
"length": 30.0,
|
|
9
|
+
"inlet": 0.6,
|
|
10
|
+
"total_length": 30.0
|
|
11
|
+
},
|
|
12
|
+
"dimensions": {
|
|
13
|
+
"invert": 47.5,
|
|
14
|
+
"height": 1.5,
|
|
15
|
+
"width": 2.5
|
|
16
|
+
},
|
|
17
|
+
"friction": {
|
|
18
|
+
"friction_eq": "MANNING",
|
|
19
|
+
"friction_set": [
|
|
20
|
+
0.01,
|
|
21
|
+
0.015,
|
|
22
|
+
0.02
|
|
23
|
+
],
|
|
24
|
+
"all_friction": [
|
|
25
|
+
0.01,
|
|
26
|
+
0.02,
|
|
27
|
+
0.015
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"(T2d,CONDUIT)": {
|
|
32
|
+
"name": "T2d",
|
|
33
|
+
"type": "CONDUIT",
|
|
34
|
+
"subtype": "RECTANGULAR",
|
|
35
|
+
"comment": "",
|
|
36
|
+
"conduit_data": {
|
|
37
|
+
"length": 0.0,
|
|
38
|
+
"outlet": 1.0
|
|
39
|
+
},
|
|
40
|
+
"dimensions": {
|
|
41
|
+
"invert": 47.47,
|
|
42
|
+
"height": 1.5,
|
|
43
|
+
"width": 2.5
|
|
44
|
+
},
|
|
45
|
+
"friction": {
|
|
46
|
+
"friction_eq": "MANNING",
|
|
47
|
+
"friction_set": [
|
|
48
|
+
0.01,
|
|
49
|
+
0.015,
|
|
50
|
+
0.02
|
|
51
|
+
],
|
|
52
|
+
"all_friction": [
|
|
53
|
+
0.01,
|
|
54
|
+
0.02,
|
|
55
|
+
0.015
|
|
56
|
+
]
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"(S4_W,WEIR)": {
|
|
60
|
+
"name": "S4_W",
|
|
61
|
+
"type": "WEIR",
|
|
62
|
+
"subtype": null,
|
|
63
|
+
"comment": "",
|
|
64
|
+
"dimensions": {
|
|
65
|
+
"weir_elevation": 49.45,
|
|
66
|
+
"weir_breadth": 4.0
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Unit Name,Unit Type,Unit Subtype,Comment,Friction,Dimensions (m),Weir Coefficient,Culvert Inlet/Outlet Loss
|
|
2
|
+
C2,CONDUIT,CIRCULAR,,"Mannings: [min: 0.015, max: 0.020]",dia: 1.00 x l: 100.00 (Total conduit length: 500.00),,Ki: 0.6
|
|
3
|
+
C2_R1,REPLICATE,,,,,,
|
|
4
|
+
C2_R2,REPLICATE,,,,,,
|
|
5
|
+
C2_R3,REPLICATE,,,,,,
|
|
6
|
+
C2_R4,REPLICATE,,,,,,
|
|
7
|
+
C2m,CONDUIT,CIRCULAR,,"Mannings: [min: 0.015, max: 0.020]",dia: 1.00 x l: 0.00,,
|
|
8
|
+
C2md,CONDUIT,CIRCULAR,,"Mannings: [min: 0.015, max: 0.020]",dia: 1.00 x l: 100.00 (Total conduit length: 700.00),,
|
|
9
|
+
C2_R5,REPLICATE,,,,,,
|
|
10
|
+
C2_R6,REPLICATE,,,,,,
|
|
11
|
+
C2_R7,REPLICATE,,,,,,
|
|
12
|
+
C2_R8,REPLICATE,,,,,,
|
|
13
|
+
C2_R9,REPLICATE,,,,,,
|
|
14
|
+
C2_R10,REPLICATE,,,,,,
|
|
15
|
+
C2d,CONDUIT,CIRCULAR,,"Mannings: [min: 0.015, max: 0.020]",dia: 1.00 x l: 0.00,,
|
|
16
|
+
S0,WEIR,,,,Crest Elevation: 21.00 x w: 1.50,,
|
|
17
|
+
C2d,WEIR,,,,Crest Elevation: 18.00 x w: 0.60,,
|
|
18
|
+
S4,WEIR,,,,Crest Elevation: 17.90 x w: 2.00,,
|
|
19
|
+
S8,WEIR,,,,Crest Elevation: 17.70 x w: 2.00,,
|
|
20
|
+
S3LS,SPILL,,,,Elevation: 20.00 x w: 100.00,1.7,
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
{
|
|
2
|
+
"(C2,CONDUIT)": {
|
|
3
|
+
"name": "C2",
|
|
4
|
+
"type": "CONDUIT",
|
|
5
|
+
"subtype": "CIRCULAR",
|
|
6
|
+
"comment": "",
|
|
7
|
+
"conduit_data": {
|
|
8
|
+
"length": 100.0,
|
|
9
|
+
"inlet": 0.6,
|
|
10
|
+
"total_length": 500.0
|
|
11
|
+
},
|
|
12
|
+
"dimensions": {
|
|
13
|
+
"invert": 20.0,
|
|
14
|
+
"diameter": 1.0
|
|
15
|
+
},
|
|
16
|
+
"friction": {
|
|
17
|
+
"friction_eq": "MANNING",
|
|
18
|
+
"friction_set": [
|
|
19
|
+
0.015,
|
|
20
|
+
0.02
|
|
21
|
+
],
|
|
22
|
+
"all_friction": [
|
|
23
|
+
0.015,
|
|
24
|
+
0.02
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"(C2_R1,REPLICATE)": {
|
|
29
|
+
"name": "C2_R1",
|
|
30
|
+
"type": "REPLICATE",
|
|
31
|
+
"subtype": null,
|
|
32
|
+
"comment": "",
|
|
33
|
+
"conduit_data": {
|
|
34
|
+
"length": 100.0
|
|
35
|
+
},
|
|
36
|
+
"dimensions": {
|
|
37
|
+
"bed_level_drop": 0.2,
|
|
38
|
+
"mimic": "C2m"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"(C2_R2,REPLICATE)": {
|
|
42
|
+
"name": "C2_R2",
|
|
43
|
+
"type": "REPLICATE",
|
|
44
|
+
"subtype": null,
|
|
45
|
+
"comment": "",
|
|
46
|
+
"conduit_data": {
|
|
47
|
+
"length": 100.0
|
|
48
|
+
},
|
|
49
|
+
"dimensions": {
|
|
50
|
+
"bed_level_drop": 0.2,
|
|
51
|
+
"mimic": "C2m"
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"(C2_R3,REPLICATE)": {
|
|
55
|
+
"name": "C2_R3",
|
|
56
|
+
"type": "REPLICATE",
|
|
57
|
+
"subtype": null,
|
|
58
|
+
"comment": "",
|
|
59
|
+
"conduit_data": {
|
|
60
|
+
"length": 100.0
|
|
61
|
+
},
|
|
62
|
+
"dimensions": {
|
|
63
|
+
"bed_level_drop": 0.2,
|
|
64
|
+
"mimic": "C2m"
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"(C2_R4,REPLICATE)": {
|
|
68
|
+
"name": "C2_R4",
|
|
69
|
+
"type": "REPLICATE",
|
|
70
|
+
"subtype": null,
|
|
71
|
+
"comment": "",
|
|
72
|
+
"conduit_data": {
|
|
73
|
+
"length": 100.0
|
|
74
|
+
},
|
|
75
|
+
"dimensions": {
|
|
76
|
+
"bed_level_drop": 0.2,
|
|
77
|
+
"mimic": "C2m"
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"(C2m,CONDUIT)": {
|
|
81
|
+
"name": "C2m",
|
|
82
|
+
"type": "CONDUIT",
|
|
83
|
+
"subtype": "CIRCULAR",
|
|
84
|
+
"comment": "",
|
|
85
|
+
"conduit_data": {
|
|
86
|
+
"length": 0.0
|
|
87
|
+
},
|
|
88
|
+
"dimensions": {
|
|
89
|
+
"invert": 19.2,
|
|
90
|
+
"diameter": 1.0
|
|
91
|
+
},
|
|
92
|
+
"friction": {
|
|
93
|
+
"friction_eq": "MANNING",
|
|
94
|
+
"friction_set": [
|
|
95
|
+
0.015,
|
|
96
|
+
0.02
|
|
97
|
+
],
|
|
98
|
+
"all_friction": [
|
|
99
|
+
0.015,
|
|
100
|
+
0.02
|
|
101
|
+
]
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"(C2md,CONDUIT)": {
|
|
105
|
+
"name": "C2md",
|
|
106
|
+
"type": "CONDUIT",
|
|
107
|
+
"subtype": "CIRCULAR",
|
|
108
|
+
"comment": "",
|
|
109
|
+
"conduit_data": {
|
|
110
|
+
"length": 100.0,
|
|
111
|
+
"total_length": 700.0
|
|
112
|
+
},
|
|
113
|
+
"dimensions": {
|
|
114
|
+
"invert": 19.2,
|
|
115
|
+
"diameter": 1.0
|
|
116
|
+
},
|
|
117
|
+
"friction": {
|
|
118
|
+
"friction_eq": "MANNING",
|
|
119
|
+
"friction_set": [
|
|
120
|
+
0.015,
|
|
121
|
+
0.02
|
|
122
|
+
],
|
|
123
|
+
"all_friction": [
|
|
124
|
+
0.015,
|
|
125
|
+
0.02
|
|
126
|
+
]
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
"(C2_R5,REPLICATE)": {
|
|
130
|
+
"name": "C2_R5",
|
|
131
|
+
"type": "REPLICATE",
|
|
132
|
+
"subtype": null,
|
|
133
|
+
"comment": "",
|
|
134
|
+
"conduit_data": {
|
|
135
|
+
"length": 100.0
|
|
136
|
+
},
|
|
137
|
+
"dimensions": {
|
|
138
|
+
"bed_level_drop": 0.2,
|
|
139
|
+
"mimic": "C2d"
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
"(C2_R6,REPLICATE)": {
|
|
143
|
+
"name": "C2_R6",
|
|
144
|
+
"type": "REPLICATE",
|
|
145
|
+
"subtype": null,
|
|
146
|
+
"comment": "",
|
|
147
|
+
"conduit_data": {
|
|
148
|
+
"length": 100.0
|
|
149
|
+
},
|
|
150
|
+
"dimensions": {
|
|
151
|
+
"bed_level_drop": 0.2,
|
|
152
|
+
"mimic": "C2d"
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
"(C2_R7,REPLICATE)": {
|
|
156
|
+
"name": "C2_R7",
|
|
157
|
+
"type": "REPLICATE",
|
|
158
|
+
"subtype": null,
|
|
159
|
+
"comment": "",
|
|
160
|
+
"conduit_data": {
|
|
161
|
+
"length": 100.0
|
|
162
|
+
},
|
|
163
|
+
"dimensions": {
|
|
164
|
+
"bed_level_drop": 0.2,
|
|
165
|
+
"mimic": "C2d"
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
"(C2_R8,REPLICATE)": {
|
|
169
|
+
"name": "C2_R8",
|
|
170
|
+
"type": "REPLICATE",
|
|
171
|
+
"subtype": null,
|
|
172
|
+
"comment": "",
|
|
173
|
+
"conduit_data": {
|
|
174
|
+
"length": 100.0
|
|
175
|
+
},
|
|
176
|
+
"dimensions": {
|
|
177
|
+
"bed_level_drop": 0.2,
|
|
178
|
+
"mimic": "C2d"
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
"(C2_R9,REPLICATE)": {
|
|
182
|
+
"name": "C2_R9",
|
|
183
|
+
"type": "REPLICATE",
|
|
184
|
+
"subtype": null,
|
|
185
|
+
"comment": "",
|
|
186
|
+
"conduit_data": {
|
|
187
|
+
"length": 100.0
|
|
188
|
+
},
|
|
189
|
+
"dimensions": {
|
|
190
|
+
"bed_level_drop": 0.2,
|
|
191
|
+
"mimic": "C2d"
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
"(C2_R10,REPLICATE)": {
|
|
195
|
+
"name": "C2_R10",
|
|
196
|
+
"type": "REPLICATE",
|
|
197
|
+
"subtype": null,
|
|
198
|
+
"comment": "",
|
|
199
|
+
"conduit_data": {
|
|
200
|
+
"length": 100.0
|
|
201
|
+
},
|
|
202
|
+
"dimensions": {
|
|
203
|
+
"bed_level_drop": 0.2,
|
|
204
|
+
"mimic": "C2d"
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
"(C2d,CONDUIT)": {
|
|
208
|
+
"name": "C2d",
|
|
209
|
+
"type": "CONDUIT",
|
|
210
|
+
"subtype": "CIRCULAR",
|
|
211
|
+
"comment": "",
|
|
212
|
+
"conduit_data": {
|
|
213
|
+
"length": 0.0
|
|
214
|
+
},
|
|
215
|
+
"dimensions": {
|
|
216
|
+
"invert": 18.0,
|
|
217
|
+
"diameter": 1.0
|
|
218
|
+
},
|
|
219
|
+
"friction": {
|
|
220
|
+
"friction_eq": "MANNING",
|
|
221
|
+
"friction_set": [
|
|
222
|
+
0.015,
|
|
223
|
+
0.02
|
|
224
|
+
],
|
|
225
|
+
"all_friction": [
|
|
226
|
+
0.015,
|
|
227
|
+
0.02
|
|
228
|
+
]
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
"(S0,WEIR)": {
|
|
232
|
+
"name": "S0",
|
|
233
|
+
"type": "WEIR",
|
|
234
|
+
"subtype": null,
|
|
235
|
+
"comment": "",
|
|
236
|
+
"dimensions": {
|
|
237
|
+
"weir_elevation": 21.0,
|
|
238
|
+
"weir_breadth": 1.5
|
|
239
|
+
}
|
|
240
|
+
},
|
|
241
|
+
"(C2d,WEIR)": {
|
|
242
|
+
"name": "C2d",
|
|
243
|
+
"type": "WEIR",
|
|
244
|
+
"subtype": null,
|
|
245
|
+
"comment": "",
|
|
246
|
+
"dimensions": {
|
|
247
|
+
"weir_elevation": 18.0,
|
|
248
|
+
"weir_breadth": 0.6
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
"(S4,WEIR)": {
|
|
252
|
+
"name": "S4",
|
|
253
|
+
"type": "WEIR",
|
|
254
|
+
"subtype": null,
|
|
255
|
+
"comment": "",
|
|
256
|
+
"dimensions": {
|
|
257
|
+
"weir_elevation": 17.9,
|
|
258
|
+
"weir_breadth": 2.0
|
|
259
|
+
}
|
|
260
|
+
},
|
|
261
|
+
"(S8,WEIR)": {
|
|
262
|
+
"name": "S8",
|
|
263
|
+
"type": "WEIR",
|
|
264
|
+
"subtype": null,
|
|
265
|
+
"comment": "",
|
|
266
|
+
"dimensions": {
|
|
267
|
+
"weir_elevation": 17.7,
|
|
268
|
+
"weir_breadth": 2.0
|
|
269
|
+
}
|
|
270
|
+
},
|
|
271
|
+
"(S3LS,SPILL)": {
|
|
272
|
+
"name": "S3LS",
|
|
273
|
+
"type": "SPILL",
|
|
274
|
+
"subtype": null,
|
|
275
|
+
"comment": "",
|
|
276
|
+
"dimensions": {
|
|
277
|
+
"invert": 20.0,
|
|
278
|
+
"width": 100.0,
|
|
279
|
+
"weir_coefficient": 1.7,
|
|
280
|
+
"section_data": {
|
|
281
|
+
"x": [
|
|
282
|
+
0.0,
|
|
283
|
+
100.0
|
|
284
|
+
],
|
|
285
|
+
"y": [
|
|
286
|
+
20.0,
|
|
287
|
+
20.0
|
|
288
|
+
]
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
Unit Name,Unit Type,Unit Subtype,Comment,Friction,Dimensions (m),Weir Coefficient,Culvert Inlet/Outlet Loss
|
|
2
|
+
P0000a,SLUICE,VERTICAL,,,Crest Elevation: 73.20 x w: 20.00 x l: 1.00,,
|
|
3
|
+
P11951U,SLUICE,VERTICAL,,,Crest Elevation: 73.00 x w: 3.36 x l: 1.00,,
|
|
4
|
+
P44865U,SLUICE,VERTICAL,,,Crest Elevation: 70.81 x w: 3.36 x l: 3.00,,
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"(P0000a,SLUICE)": {
|
|
3
|
+
"name": "P0000a",
|
|
4
|
+
"type": "SLUICE",
|
|
5
|
+
"subtype": "VERTICAL",
|
|
6
|
+
"comment": "",
|
|
7
|
+
"dimensions": {
|
|
8
|
+
"weir_length": 1.0,
|
|
9
|
+
"crest_elevation": 73.2,
|
|
10
|
+
"weir_breadth": 20.0
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"(P11951U,SLUICE)": {
|
|
14
|
+
"name": "P11951U",
|
|
15
|
+
"type": "SLUICE",
|
|
16
|
+
"subtype": "VERTICAL",
|
|
17
|
+
"comment": "",
|
|
18
|
+
"dimensions": {
|
|
19
|
+
"weir_length": 1.0,
|
|
20
|
+
"crest_elevation": 73.0,
|
|
21
|
+
"weir_breadth": 3.36
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"(P44865U,SLUICE)": {
|
|
25
|
+
"name": "P44865U",
|
|
26
|
+
"type": "SLUICE",
|
|
27
|
+
"subtype": "VERTICAL",
|
|
28
|
+
"comment": "",
|
|
29
|
+
"dimensions": {
|
|
30
|
+
"weir_length": 3.0,
|
|
31
|
+
"crest_elevation": 70.81,
|
|
32
|
+
"weir_breadth": 3.36
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|