floodmodeller-api 0.4.2__py3-none-any.whl → 0.4.3__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 +8 -9
- floodmodeller_api/_base.py +184 -176
- floodmodeller_api/backup.py +273 -273
- floodmodeller_api/dat.py +909 -838
- floodmodeller_api/diff.py +136 -119
- floodmodeller_api/ied.py +307 -311
- floodmodeller_api/ief.py +647 -646
- floodmodeller_api/ief_flags.py +253 -253
- floodmodeller_api/inp.py +266 -268
- floodmodeller_api/libs/libifcoremd.dll +0 -0
- floodmodeller_api/libs/libifcoremt.so.5 +0 -0
- floodmodeller_api/libs/libifport.so.5 +0 -0
- floodmodeller_api/{libmmd.dll → libs/libimf.so} +0 -0
- floodmodeller_api/libs/libintlc.so.5 +0 -0
- floodmodeller_api/libs/libmmd.dll +0 -0
- floodmodeller_api/libs/libsvml.so +0 -0
- floodmodeller_api/libs/libzzn_read.so +0 -0
- floodmodeller_api/libs/zzn_read.dll +0 -0
- floodmodeller_api/logs/__init__.py +2 -2
- floodmodeller_api/logs/lf.py +320 -314
- floodmodeller_api/logs/lf_helpers.py +354 -346
- floodmodeller_api/logs/lf_params.py +643 -529
- floodmodeller_api/mapping.py +84 -0
- floodmodeller_api/test/__init__.py +4 -4
- floodmodeller_api/test/conftest.py +9 -8
- floodmodeller_api/test/test_backup.py +117 -117
- floodmodeller_api/test/test_dat.py +221 -92
- floodmodeller_api/test/test_data/All Units 4_6.DAT +1081 -1081
- floodmodeller_api/test/test_data/All Units 4_6.feb +1081 -1081
- floodmodeller_api/test/test_data/BRIDGE.DAT +926 -926
- floodmodeller_api/test/test_data/Culvert_Inlet_Outlet.dat +36 -36
- floodmodeller_api/test/test_data/Culvert_Inlet_Outlet.feb +36 -36
- floodmodeller_api/test/test_data/DamBreakADI.xml +52 -52
- floodmodeller_api/test/test_data/DamBreakFAST.xml +58 -58
- floodmodeller_api/test/test_data/DamBreakFAST_dy.xml +53 -53
- floodmodeller_api/test/test_data/DamBreakTVD.xml +55 -55
- floodmodeller_api/test/test_data/DefenceBreach.xml +53 -53
- floodmodeller_api/test/test_data/DefenceBreachFAST.xml +60 -60
- floodmodeller_api/test/test_data/DefenceBreachFAST_dy.xml +55 -55
- floodmodeller_api/test/test_data/Domain1+2_QH.xml +76 -76
- floodmodeller_api/test/test_data/Domain1_H.xml +41 -41
- floodmodeller_api/test/test_data/Domain1_Q.xml +41 -41
- floodmodeller_api/test/test_data/Domain1_Q_FAST.xml +48 -48
- floodmodeller_api/test/test_data/Domain1_Q_FAST_dy.xml +48 -48
- floodmodeller_api/test/test_data/Domain1_Q_xml_expected.json +263 -0
- floodmodeller_api/test/test_data/Domain1_W.xml +41 -41
- floodmodeller_api/test/test_data/EX1.DAT +321 -321
- floodmodeller_api/test/test_data/EX1.ext +107 -107
- floodmodeller_api/test/test_data/EX1.feb +320 -320
- floodmodeller_api/test/test_data/EX1.gxy +107 -107
- floodmodeller_api/test/test_data/EX17.DAT +421 -422
- floodmodeller_api/test/test_data/EX17.ext +213 -213
- floodmodeller_api/test/test_data/EX17.feb +422 -422
- floodmodeller_api/test/test_data/EX18.DAT +375 -375
- floodmodeller_api/test/test_data/EX18_DAT_expected.json +3876 -0
- floodmodeller_api/test/test_data/EX2.DAT +302 -302
- floodmodeller_api/test/test_data/EX3.DAT +926 -926
- floodmodeller_api/test/test_data/EX3_DAT_expected.json +16235 -0
- floodmodeller_api/test/test_data/EX3_IEF_expected.json +61 -0
- floodmodeller_api/test/test_data/EX6.DAT +2084 -2084
- floodmodeller_api/test/test_data/EX6.ext +532 -532
- floodmodeller_api/test/test_data/EX6.feb +2084 -2084
- floodmodeller_api/test/test_data/EX6_DAT_expected.json +31647 -0
- floodmodeller_api/test/test_data/Event Data Example.DAT +336 -336
- floodmodeller_api/test/test_data/Event Data Example.ext +107 -107
- floodmodeller_api/test/test_data/Event Data Example.feb +336 -336
- floodmodeller_api/test/test_data/Linked1D2D.xml +52 -52
- floodmodeller_api/test/test_data/Linked1D2DFAST.xml +53 -53
- floodmodeller_api/test/test_data/Linked1D2DFAST_dy.xml +48 -48
- floodmodeller_api/test/test_data/Linked1D2D_xml_expected.json +313 -0
- floodmodeller_api/test/test_data/blockage.dat +50 -50
- floodmodeller_api/test/test_data/blockage.ext +45 -45
- floodmodeller_api/test/test_data/blockage.feb +9 -9
- floodmodeller_api/test/test_data/blockage.gxy +71 -71
- floodmodeller_api/test/test_data/defaultUnits.dat +127 -127
- floodmodeller_api/test/test_data/defaultUnits.ext +45 -45
- floodmodeller_api/test/test_data/defaultUnits.feb +9 -9
- floodmodeller_api/test/test_data/defaultUnits.fmpx +58 -58
- floodmodeller_api/test/test_data/defaultUnits.gxy +85 -85
- floodmodeller_api/test/test_data/ex3.ief +20 -20
- floodmodeller_api/test/test_data/ex3.lf1 +2800 -2800
- floodmodeller_api/test/test_data/ex4.DAT +1374 -1374
- floodmodeller_api/test/test_data/ex4_changed.DAT +1374 -1374
- floodmodeller_api/test/test_data/example1.inp +329 -329
- floodmodeller_api/test/test_data/example2.inp +158 -158
- floodmodeller_api/test/test_data/example3.inp +297 -297
- floodmodeller_api/test/test_data/example4.inp +388 -388
- floodmodeller_api/test/test_data/example5.inp +147 -147
- floodmodeller_api/test/test_data/example6.inp +154 -154
- floodmodeller_api/test/test_data/jump.dat +176 -176
- floodmodeller_api/test/test_data/network.dat +1374 -1374
- floodmodeller_api/test/test_data/network.ext +45 -45
- floodmodeller_api/test/test_data/network.exy +1 -1
- floodmodeller_api/test/test_data/network.feb +45 -45
- floodmodeller_api/test/test_data/network.ied +45 -45
- floodmodeller_api/test/test_data/network.ief +20 -20
- floodmodeller_api/test/test_data/network.inp +147 -147
- floodmodeller_api/test/test_data/network.pxy +57 -57
- floodmodeller_api/test/test_data/network.zzd +122 -122
- floodmodeller_api/test/test_data/network_dat_expected.json +21837 -0
- floodmodeller_api/test/test_data/network_from_tabularCSV.csv +87 -87
- floodmodeller_api/test/test_data/network_ied_expected.json +287 -0
- floodmodeller_api/test/test_data/rnweir.dat +9 -9
- floodmodeller_api/test/test_data/rnweir.ext +45 -45
- floodmodeller_api/test/test_data/rnweir.feb +9 -9
- floodmodeller_api/test/test_data/rnweir.gxy +45 -45
- floodmodeller_api/test/test_data/rnweir_default.dat +74 -74
- floodmodeller_api/test/test_data/rnweir_default.ext +45 -45
- floodmodeller_api/test/test_data/rnweir_default.feb +9 -9
- floodmodeller_api/test/test_data/rnweir_default.fmpx +58 -58
- floodmodeller_api/test/test_data/rnweir_default.gxy +53 -53
- floodmodeller_api/test/test_data/unit checks.dat +16 -16
- floodmodeller_api/test/test_ied.py +29 -29
- floodmodeller_api/test/test_ief.py +125 -24
- floodmodeller_api/test/test_inp.py +47 -48
- floodmodeller_api/test/test_json.py +114 -0
- floodmodeller_api/test/test_logs_lf.py +48 -51
- floodmodeller_api/test/test_tool.py +165 -154
- floodmodeller_api/test/test_toolbox_structure_log.py +234 -239
- floodmodeller_api/test/test_xml2d.py +151 -156
- floodmodeller_api/test/test_zzn.py +36 -34
- floodmodeller_api/to_from_json.py +218 -0
- floodmodeller_api/tool.py +332 -330
- floodmodeller_api/toolbox/__init__.py +5 -5
- floodmodeller_api/toolbox/example_tool.py +45 -45
- floodmodeller_api/toolbox/model_build/__init__.py +2 -2
- floodmodeller_api/toolbox/model_build/add_siltation_definition.py +100 -94
- floodmodeller_api/toolbox/model_build/structure_log/__init__.py +1 -1
- floodmodeller_api/toolbox/model_build/structure_log/structure_log.py +287 -289
- floodmodeller_api/toolbox/model_build/structure_log_definition.py +76 -72
- floodmodeller_api/units/__init__.py +10 -10
- floodmodeller_api/units/_base.py +214 -209
- floodmodeller_api/units/boundaries.py +467 -469
- floodmodeller_api/units/comment.py +52 -55
- floodmodeller_api/units/conduits.py +382 -403
- floodmodeller_api/units/helpers.py +123 -132
- floodmodeller_api/units/iic.py +107 -101
- floodmodeller_api/units/losses.py +305 -308
- floodmodeller_api/units/sections.py +444 -445
- floodmodeller_api/units/structures.py +1690 -1684
- floodmodeller_api/units/units.py +93 -102
- floodmodeller_api/units/unsupported.py +44 -44
- floodmodeller_api/units/variables.py +87 -89
- floodmodeller_api/urban1d/__init__.py +11 -11
- floodmodeller_api/urban1d/_base.py +188 -177
- floodmodeller_api/urban1d/conduits.py +93 -85
- floodmodeller_api/urban1d/general_parameters.py +58 -58
- floodmodeller_api/urban1d/junctions.py +81 -79
- floodmodeller_api/urban1d/losses.py +81 -74
- floodmodeller_api/urban1d/outfalls.py +114 -107
- floodmodeller_api/urban1d/raingauges.py +111 -108
- floodmodeller_api/urban1d/subsections.py +92 -93
- floodmodeller_api/urban1d/xsections.py +147 -141
- floodmodeller_api/util.py +77 -21
- floodmodeller_api/validation/parameters.py +660 -660
- floodmodeller_api/validation/urban_parameters.py +388 -404
- floodmodeller_api/validation/validation.py +110 -112
- floodmodeller_api/version.py +1 -1
- floodmodeller_api/xml2d.py +688 -684
- floodmodeller_api/xml2d_template.py +37 -37
- floodmodeller_api/zzn.py +387 -365
- {floodmodeller_api-0.4.2.dist-info → floodmodeller_api-0.4.3.dist-info}/LICENSE.txt +13 -13
- {floodmodeller_api-0.4.2.dist-info → floodmodeller_api-0.4.3.dist-info}/METADATA +82 -82
- floodmodeller_api-0.4.3.dist-info/RECORD +179 -0
- {floodmodeller_api-0.4.2.dist-info → floodmodeller_api-0.4.3.dist-info}/WHEEL +1 -1
- floodmodeller_api-0.4.3.dist-info/entry_points.txt +3 -0
- floodmodeller_api/libifcoremd.dll +0 -0
- floodmodeller_api/test/test_data/EX3.bmp +0 -0
- floodmodeller_api/test/test_data/test_output.csv +0 -87
- floodmodeller_api/zzn_read.dll +0 -0
- floodmodeller_api-0.4.2.data/scripts/fmapi-add_siltation.bat +0 -2
- floodmodeller_api-0.4.2.data/scripts/fmapi-add_siltation.py +0 -3
- floodmodeller_api-0.4.2.data/scripts/fmapi-structure_log.bat +0 -2
- floodmodeller_api-0.4.2.data/scripts/fmapi-structure_log.py +0 -3
- floodmodeller_api-0.4.2.data/scripts/fmapi-toolbox.bat +0 -2
- floodmodeller_api-0.4.2.data/scripts/fmapi-toolbox.py +0 -41
- floodmodeller_api-0.4.2.dist-info/RECORD +0 -169
- {floodmodeller_api-0.4.2.dist-info → floodmodeller_api-0.4.3.dist-info}/top_level.txt +0 -0
|
@@ -1,239 +1,234 @@
|
|
|
1
|
-
import copy
|
|
2
|
-
import csv
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
from floodmodeller_api import
|
|
10
|
-
from floodmodeller_api.
|
|
11
|
-
from floodmodeller_api.units.
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
c =
|
|
23
|
-
c.
|
|
24
|
-
c.
|
|
25
|
-
c.
|
|
26
|
-
c.
|
|
27
|
-
c.
|
|
28
|
-
c.
|
|
29
|
-
c.
|
|
30
|
-
c.
|
|
31
|
-
c.
|
|
32
|
-
c.
|
|
33
|
-
c.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
c =
|
|
47
|
-
c.
|
|
48
|
-
c.
|
|
49
|
-
c.
|
|
50
|
-
c.
|
|
51
|
-
c.
|
|
52
|
-
c.
|
|
53
|
-
c.
|
|
54
|
-
c.
|
|
55
|
-
c.
|
|
56
|
-
c.
|
|
57
|
-
c.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
output
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
output
|
|
91
|
-
|
|
92
|
-
output
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
output
|
|
99
|
-
|
|
100
|
-
output
|
|
101
|
-
|
|
102
|
-
"
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
output
|
|
109
|
-
|
|
110
|
-
"
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
output
|
|
114
|
-
|
|
115
|
-
"
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
output
|
|
122
|
-
|
|
123
|
-
output
|
|
124
|
-
|
|
125
|
-
"
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
output
|
|
132
|
-
|
|
133
|
-
output
|
|
134
|
-
|
|
135
|
-
"
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
output
|
|
142
|
-
|
|
143
|
-
"
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
output
|
|
147
|
-
|
|
148
|
-
"
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
output
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
structure.
|
|
161
|
-
|
|
162
|
-
output
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
structure.
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
)
|
|
172
|
-
output
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
prev_c =
|
|
179
|
-
prev_c.
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
next_c =
|
|
185
|
-
|
|
186
|
-
slb._dat.
|
|
187
|
-
|
|
188
|
-
conduit_non_subtype =
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
with open(
|
|
193
|
-
slb._writer = csv.writer(
|
|
194
|
-
slb._add_conduits()
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
structure.
|
|
202
|
-
structure.
|
|
203
|
-
structure.
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
structure.
|
|
210
|
-
structure.
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
slb.
|
|
235
|
-
slb._add_structures()
|
|
236
|
-
# with open(tmp.name, "w") as temp:
|
|
237
|
-
#
|
|
238
|
-
# tmp.close()
|
|
239
|
-
# os.unlink(tmp.name)
|
|
1
|
+
import copy
|
|
2
|
+
import csv
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
import pandas as pd
|
|
6
|
+
import pytest
|
|
7
|
+
|
|
8
|
+
from floodmodeller_api import DAT
|
|
9
|
+
from floodmodeller_api.toolbox.model_build.structure_log import StructureLogBuilder
|
|
10
|
+
from floodmodeller_api.units.conduits import CONDUIT
|
|
11
|
+
from floodmodeller_api.units.structures import ORIFICE
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@pytest.fixture
|
|
15
|
+
def slb():
|
|
16
|
+
return StructureLogBuilder("", "")
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@pytest.fixture
|
|
20
|
+
def conduit_empty():
|
|
21
|
+
c = CONDUIT()
|
|
22
|
+
c.dist_to_next = 0
|
|
23
|
+
c.friction_above_axis = 0
|
|
24
|
+
c.friction_below_axis = 0
|
|
25
|
+
c.height_crown = 0
|
|
26
|
+
c.height_springing = 0
|
|
27
|
+
c.height = 0
|
|
28
|
+
c.width = 0
|
|
29
|
+
c.diameter = 0
|
|
30
|
+
c.friction_on_invert = 0
|
|
31
|
+
c.friction_on_soffit = 0
|
|
32
|
+
c.friction_on_walls = 0
|
|
33
|
+
c.coords = pd.DataFrame(
|
|
34
|
+
data={
|
|
35
|
+
"x": [0, 0],
|
|
36
|
+
"y": [0, 0],
|
|
37
|
+
"cw_friction": [0, 0],
|
|
38
|
+
},
|
|
39
|
+
)
|
|
40
|
+
return c
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
@pytest.fixture
|
|
44
|
+
def conduit_filled():
|
|
45
|
+
c = CONDUIT()
|
|
46
|
+
c.dist_to_next = 0
|
|
47
|
+
c.friction_above_axis = 1.453345
|
|
48
|
+
c.friction_below_axis = 3.435
|
|
49
|
+
c.height_crown = 23.1
|
|
50
|
+
c.height_springing = 5.4
|
|
51
|
+
c.height = 25.45
|
|
52
|
+
c.width = 3
|
|
53
|
+
c.diameter = 6
|
|
54
|
+
c.friction_on_invert = 1.876
|
|
55
|
+
c.friction_on_soffit = 1.34
|
|
56
|
+
c.friction_on_walls = 1.8
|
|
57
|
+
c.coords = pd.DataFrame(
|
|
58
|
+
data={
|
|
59
|
+
"x": [34, 43, 45, 3, 12, 7, 78],
|
|
60
|
+
"y": [0, 0, 4, 5, 10, 65, 32],
|
|
61
|
+
"cw_friction": [0, 0, 0, 3, 4, 3.5, 2],
|
|
62
|
+
},
|
|
63
|
+
)
|
|
64
|
+
return c
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
@pytest.fixture
|
|
68
|
+
def no_length():
|
|
69
|
+
return 0
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
@pytest.fixture
|
|
73
|
+
def with_length():
|
|
74
|
+
return 4.973
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
@pytest.fixture
|
|
78
|
+
def structure():
|
|
79
|
+
return ORIFICE()
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def test_conduit_data(slb, conduit_empty):
|
|
83
|
+
slb._dat = DAT()
|
|
84
|
+
output = slb._conduit_data(conduit_empty)
|
|
85
|
+
assert output == [0.0, "", ""]
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def test_culvert_loss_data(slb):
|
|
89
|
+
output = slb._culvert_loss_data("", "")
|
|
90
|
+
assert output == ""
|
|
91
|
+
output = slb._culvert_loss_data("TEST1", "TEST2")
|
|
92
|
+
assert output == "Ki: TEST1, Ko: TEST2"
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def test_circular_data(slb, conduit_empty, conduit_filled, no_length, with_length):
|
|
96
|
+
slb._dat = DAT()
|
|
97
|
+
output = slb._circular_data(conduit_empty, no_length)
|
|
98
|
+
assert output == ["Mannings: 0", "dia: 0.00 x l: 0.00"]
|
|
99
|
+
output = slb._circular_data(conduit_filled, with_length)
|
|
100
|
+
assert output == [
|
|
101
|
+
"Mannings: [min: 1.453345, max: 3.435]",
|
|
102
|
+
"dia: 6.00 x l: 4.97",
|
|
103
|
+
]
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def test_sprungarch_data(slb, conduit_empty, conduit_filled, no_length, with_length):
|
|
107
|
+
output = slb._sprungarch_data(conduit_empty, no_length)
|
|
108
|
+
assert output == [
|
|
109
|
+
"Mannings: 0",
|
|
110
|
+
"(Springing: 0.00, Crown: 0.00) x w: 0.00 x l: 0.00",
|
|
111
|
+
]
|
|
112
|
+
output = slb._sprungarch_data(conduit_filled, with_length)
|
|
113
|
+
assert output == [
|
|
114
|
+
"Mannings: [min: 1.34, max: 1.876]",
|
|
115
|
+
"(Springing: 23.10, Crown: 5.40) x w: 3.00 x l: 4.97",
|
|
116
|
+
]
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def test_rectangular_data(slb, conduit_empty, conduit_filled, no_length, with_length):
|
|
120
|
+
output = slb._rectangular_data(conduit_empty, no_length)
|
|
121
|
+
assert output == ["Mannings: 0", "h: 0.00 x w: 0.00 x l: 0.00"]
|
|
122
|
+
output = slb._rectangular_data(conduit_filled, with_length)
|
|
123
|
+
assert output == [
|
|
124
|
+
"Mannings: [min: 1.34, max: 1.876]",
|
|
125
|
+
"h: 25.45 x w: 3.00 x l: 4.97",
|
|
126
|
+
]
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def test_section_data(slb, conduit_empty, conduit_filled, no_length, with_length):
|
|
130
|
+
output = slb._section_data(conduit_empty, no_length)
|
|
131
|
+
assert output == ["Colebrook-White: 0", "h: 0.00 x w: 0.00 x l: 0.00"]
|
|
132
|
+
output = slb._section_data(conduit_filled, with_length)
|
|
133
|
+
assert output == [
|
|
134
|
+
"Colebrook-White: [min: 0.0, max: 4.0]",
|
|
135
|
+
"h: 65.00 x w: 150.00 x l: 4.97",
|
|
136
|
+
]
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
def test_sprung_data(slb, conduit_empty, conduit_filled, no_length, with_length):
|
|
140
|
+
output = slb._sprung_data(conduit_empty, no_length)
|
|
141
|
+
assert output == [
|
|
142
|
+
"Mannings: 0",
|
|
143
|
+
"(Springing: 0.00, Crown: 0.00) x w: 0.00 x l: 0.00",
|
|
144
|
+
]
|
|
145
|
+
output = slb._sprung_data(conduit_filled, with_length)
|
|
146
|
+
assert output == [
|
|
147
|
+
"Mannings: [min: 1.34, max: 1.876]",
|
|
148
|
+
"(Springing: 23.10, Crown: 5.40) x w: 3.00 x l: 4.97",
|
|
149
|
+
]
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
def test_orifice_dimensions(slb, structure):
|
|
153
|
+
structure.invert = 1
|
|
154
|
+
output = slb._orifice_dimensions(structure)
|
|
155
|
+
assert output == "h: -1.00 x w: -1.00"
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
def test_spill_data(slb, structure):
|
|
159
|
+
structure.data = pd.DataFrame(data={"X": [0, 0], "Y": [0, 0]})
|
|
160
|
+
structure.weir_coefficient = 0
|
|
161
|
+
output = slb._spill_data(structure)
|
|
162
|
+
assert output == ["Elevation: 0.00 x w: 0.00", 0]
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
def test_bridge_data(slb, structure):
|
|
166
|
+
structure.section_data = pd.DataFrame(data={"X": [0, 0], "Y": [0, 0], "Mannings n": [0, 0]})
|
|
167
|
+
structure.opening_data = pd.DataFrame(
|
|
168
|
+
data={"Start": 0, "Finish": 0, "Springing Level": 0, "Soffit Level": 0},
|
|
169
|
+
index=[0],
|
|
170
|
+
)
|
|
171
|
+
output = slb._bridge_data(structure)
|
|
172
|
+
assert output == ["Mannings: 0", "h: 0.00 x w: 0.00"]
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def test_add_conduits(slb, conduit_filled, tmpdir):
|
|
176
|
+
slb._dat = DAT()
|
|
177
|
+
prev_c = copy.deepcopy(conduit_filled)
|
|
178
|
+
prev_c.dist_to_next = 0
|
|
179
|
+
prev_c.name = "prev"
|
|
180
|
+
slb._dat.conduits["prev"] = prev_c
|
|
181
|
+
conduit_filled.dist_to_next = 5
|
|
182
|
+
slb._dat.conduits["test_conduit"] = conduit_filled
|
|
183
|
+
next_c = copy.deepcopy(conduit_filled)
|
|
184
|
+
next_c.dist_to_next = 0
|
|
185
|
+
slb._dat.conduits["next"] = next_c
|
|
186
|
+
slb._dat._all_units = [prev_c, conduit_filled, next_c]
|
|
187
|
+
conduit_non_subtype = copy.deepcopy(conduit_filled)
|
|
188
|
+
conduit_non_subtype._subtype = "NON_SUBTYPE"
|
|
189
|
+
slb._dat.conduits["test_conduit_NON_SUBTYPE"] = conduit_non_subtype
|
|
190
|
+
|
|
191
|
+
tmp_csv = Path(tmpdir) / "temp_structure_data.csv"
|
|
192
|
+
with tmp_csv.open("w") as file:
|
|
193
|
+
slb._writer = csv.writer(file)
|
|
194
|
+
slb._add_conduits()
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
def test_add_structures(slb, structure, tmpdir):
|
|
198
|
+
slb._dat = DAT()
|
|
199
|
+
structure.soffit = 3
|
|
200
|
+
structure.weir_coefficient = 1
|
|
201
|
+
structure.data = pd.DataFrame(data={"X": [0, 0], "Y": [0, 0]})
|
|
202
|
+
structure.section_data = pd.DataFrame(data={"X": [0, 0], "Y": [0, 0], "Mannings n": [0, 0]})
|
|
203
|
+
structure.opening_data = pd.DataFrame(
|
|
204
|
+
data={"Start": 0, "Finish": 0, "Springing Level": 0, "Soffit Level": 0},
|
|
205
|
+
index=[0],
|
|
206
|
+
)
|
|
207
|
+
structure.crest_elevation = 1
|
|
208
|
+
structure.weir_breadth = 1
|
|
209
|
+
structure.weir_length = 1
|
|
210
|
+
structure.weir_elevation = 1
|
|
211
|
+
slb._dat.structures["test_structure_orifice"] = structure
|
|
212
|
+
struc_spill = copy.deepcopy(structure)
|
|
213
|
+
struc_spill._unit = "SPILL"
|
|
214
|
+
slb._dat.structures["test_structure_spill"] = struc_spill
|
|
215
|
+
struc_sluice = copy.deepcopy(structure)
|
|
216
|
+
struc_sluice._unit = "SLUICE"
|
|
217
|
+
slb._dat.structures["test_structure_sluice"] = struc_sluice
|
|
218
|
+
struc_rnweir = copy.deepcopy(structure)
|
|
219
|
+
struc_rnweir._unit = "RNWEIR"
|
|
220
|
+
slb._dat.structures["test_structure_rnweir"] = struc_rnweir
|
|
221
|
+
struc_weir = copy.deepcopy(structure)
|
|
222
|
+
struc_weir._unit = "WEIR"
|
|
223
|
+
slb._dat.structures["test_structure_weir"] = struc_weir
|
|
224
|
+
struc_bridge = copy.deepcopy(structure)
|
|
225
|
+
struc_bridge._unit = "BRIDGE"
|
|
226
|
+
slb._dat.structures["test_structure_bridge"] = struc_bridge
|
|
227
|
+
struc_none = copy.deepcopy(structure)
|
|
228
|
+
struc_none._unit = "NONE"
|
|
229
|
+
slb._dat.structures["test_structure_none"] = struc_none
|
|
230
|
+
|
|
231
|
+
tmp_csv = Path(tmpdir) / "temp_structure_data.csv"
|
|
232
|
+
with tmp_csv.open("w") as file:
|
|
233
|
+
slb._writer = csv.writer(file)
|
|
234
|
+
slb._add_structures()
|