h2lib-tests 13.1.506__py3-none-any.whl → 13.1.1701__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.
- h2lib_tests/conftest.py +373 -0
- h2lib_tests/test_ellipsys_couplings.py +4 -4
- h2lib_tests/test_files/DTU_10_MW/htc/DTU_10MW_RWT.htc +2 -2
- h2lib_tests/test_files/DTU_10_MW/htc/DTU_10MW_RWT_no_aerodrag.htc +670 -0
- h2lib_tests/test_files/DTU_10_MW/htc/DTU_10MW_RWT_yaw_acturator.htc +1 -1
- h2lib_tests/test_h2lib.py +23 -0
- h2lib_tests/test_h2rotor.py +108 -2
- h2lib_tests/test_lin.py +191 -0
- h2lib_tests/test_mpi.py +1 -1
- h2lib_tests/test_static_solver.py +56 -29
- h2lib_tests/test_topology_h2lib.py +171 -39
- {h2lib_tests-13.1.506.dist-info → h2lib_tests-13.1.1701.dist-info}/METADATA +2 -3
- {h2lib_tests-13.1.506.dist-info → h2lib_tests-13.1.1701.dist-info}/RECORD +15 -13
- {h2lib_tests-13.1.506.dist-info → h2lib_tests-13.1.1701.dist-info}/WHEEL +1 -1
- h2lib_tests/test_write_htc.py +0 -126
- {h2lib_tests-13.1.506.dist-info → h2lib_tests-13.1.1701.dist-info}/top_level.txt +0 -0
h2lib_tests/conftest.py
ADDED
@@ -0,0 +1,373 @@
|
|
1
|
+
import pytest
|
2
|
+
import numpy as np
|
3
|
+
from wetb.hawc2.htc_file import HTCFile
|
4
|
+
from h2lib_tests.test_files import tfp
|
5
|
+
from h2lib._h2lib import H2Lib
|
6
|
+
|
7
|
+
|
8
|
+
@pytest.fixture(scope="session")
|
9
|
+
def write_dtu10mw_only_tower():
|
10
|
+
# Start from DTU_10MW_RWT and delete everything except the tower.
|
11
|
+
htc = HTCFile(tfp + "DTU_10_MW/htc/DTU_10MW_RWT.htc")
|
12
|
+
htc.set_name("DTU_10MW_RWT_only_tower")
|
13
|
+
for key1 in htc["new_htc_structure"].keys():
|
14
|
+
if key1.startswith("main_body"):
|
15
|
+
if "tower" not in htc["new_htc_structure"][key1]["name"].values:
|
16
|
+
htc["new_htc_structure"][key1].delete()
|
17
|
+
if key1 == "orientation":
|
18
|
+
for key2 in htc["new_htc_structure"]["orientation"].keys():
|
19
|
+
if key2.startswith("relative"):
|
20
|
+
htc["new_htc_structure"]["orientation"][key2].delete()
|
21
|
+
if key1 == "constraint":
|
22
|
+
for key2 in htc["new_htc_structure"]["constraint"].keys():
|
23
|
+
if key2 != "fix0":
|
24
|
+
htc["new_htc_structure"]["constraint"][key2].delete()
|
25
|
+
htc["wind"].delete()
|
26
|
+
htc["aerodrag"].delete()
|
27
|
+
htc["aero"].delete()
|
28
|
+
htc["dll"].delete()
|
29
|
+
htc["output"].delete()
|
30
|
+
# Reduce simulation time.
|
31
|
+
htc.simulation.time_stop = 10.0
|
32
|
+
# Change number of bodies in the tower.
|
33
|
+
htc.new_htc_structure.main_body.nbodies = 3
|
34
|
+
# Save the new file.
|
35
|
+
htc.save()
|
36
|
+
return htc
|
37
|
+
|
38
|
+
|
39
|
+
@pytest.fixture(scope="session")
|
40
|
+
def write_dtu10mw_only_tower_rotated(write_dtu10mw_only_tower):
|
41
|
+
# Start from the DTU_10MW_RWT_only_tower and rotate the tower.
|
42
|
+
htc = write_dtu10mw_only_tower.copy()
|
43
|
+
htc.set_name("DTU_10MW_RWT_only_tower_rotated")
|
44
|
+
alpha = 30.0
|
45
|
+
htc.new_htc_structure.orientation.base.body_eulerang = [
|
46
|
+
alpha,
|
47
|
+
0.0,
|
48
|
+
0.0,
|
49
|
+
]
|
50
|
+
htc["wind"].delete()
|
51
|
+
htc["output"].delete()
|
52
|
+
htc.save()
|
53
|
+
return (htc, alpha)
|
54
|
+
|
55
|
+
|
56
|
+
@pytest.fixture(scope="session")
|
57
|
+
def write_dtu10mw_only_tower_encrypted(write_dtu10mw_only_tower):
|
58
|
+
# Start from the DTU_10MW_RWT_only_tower and then encrypt the tower.
|
59
|
+
htc = write_dtu10mw_only_tower.copy()
|
60
|
+
htc.set_name("DTU_10MW_RWT_only_tower_encrypted")
|
61
|
+
# Only the tower is left.
|
62
|
+
htc.new_htc_structure.main_body.timoschenko_input.filename = "./data/DTU_10MW_RWT_Tower_st.dat.v3.enc"
|
63
|
+
htc.save()
|
64
|
+
|
65
|
+
|
66
|
+
@pytest.fixture(scope="session")
|
67
|
+
def write_dtu10mw_only_blade():
|
68
|
+
# Start from DTU_10MW_RWT and delete everything except the blade.
|
69
|
+
htc = HTCFile(tfp + "DTU_10_MW/htc/DTU_10MW_RWT.htc")
|
70
|
+
htc.set_name("DTU_10MW_RWT_only_blade")
|
71
|
+
for key1 in htc["new_htc_structure"].keys():
|
72
|
+
if key1.startswith("main_body"):
|
73
|
+
if "blade1" not in htc["new_htc_structure"][key1]["name"].values:
|
74
|
+
htc["new_htc_structure"][key1].delete()
|
75
|
+
if key1 == "orientation":
|
76
|
+
htc["new_htc_structure"][key1].delete()
|
77
|
+
if key1 == "constraint":
|
78
|
+
htc["new_htc_structure"][key1].delete()
|
79
|
+
htc["wind"].delete()
|
80
|
+
htc["aerodrag"].delete()
|
81
|
+
htc["aero"].delete()
|
82
|
+
htc["dll"].delete()
|
83
|
+
htc["output"].delete()
|
84
|
+
|
85
|
+
# Set the blade horizontal, to maximize gravity loading.
|
86
|
+
htc.new_htc_structure.add_section("orientation")
|
87
|
+
htc.new_htc_structure.orientation.add_section("base")
|
88
|
+
htc.new_htc_structure.orientation.base.mbdy = "blade1"
|
89
|
+
htc.new_htc_structure.orientation.base.inipos = [0.0, 0.0, 0.0]
|
90
|
+
htc.new_htc_structure.orientation.base["mbdy_eulerang"] = [90.0, 0.0, 0.0]
|
91
|
+
htc.new_htc_structure.orientation.base.mbdy_eulerang.comments = "Blade span is horizontal."
|
92
|
+
|
93
|
+
# Clamp the blade.
|
94
|
+
htc.new_htc_structure.add_section("constraint")
|
95
|
+
htc.new_htc_structure.constraint.add_section("fix0")
|
96
|
+
htc.new_htc_structure.constraint.fix0.mbdy = "blade1"
|
97
|
+
|
98
|
+
# Set as many bodies as elements.
|
99
|
+
htc.new_htc_structure.main_body__7.nbodies = 26
|
100
|
+
|
101
|
+
htc.simulation.log_deltat.delete()
|
102
|
+
|
103
|
+
# Do not use static solver, since it will be done during the test.
|
104
|
+
htc.simulation.solvertype = 2
|
105
|
+
htc.simulation.solvertype.comments = ""
|
106
|
+
htc.simulation.initial_condition = 1
|
107
|
+
|
108
|
+
# No output, as we will use add_sensor().
|
109
|
+
|
110
|
+
# Save the new file.
|
111
|
+
htc.save()
|
112
|
+
|
113
|
+
return htc
|
114
|
+
|
115
|
+
|
116
|
+
@pytest.fixture(scope="session")
|
117
|
+
def write_dtu10mw_only_blade_low_max_iter(write_dtu10mw_only_blade):
|
118
|
+
# Start from the write_dtu10mw_only_blade and then reduce the number of max iterations,
|
119
|
+
# so that the static solver will not have time to converge.
|
120
|
+
htc = write_dtu10mw_only_blade.copy()
|
121
|
+
htc.set_name("DTU_10MW_RWT_only_blade_low_max_iter")
|
122
|
+
htc.simulation.max_iterations = 1
|
123
|
+
htc.save()
|
124
|
+
|
125
|
+
return htc
|
126
|
+
|
127
|
+
|
128
|
+
@pytest.fixture(scope="session")
|
129
|
+
def write_dtu10mw_only_blade_rotate_base(write_dtu10mw_only_blade):
|
130
|
+
# Start from the write_dtu10mw_only_blade and then make it rotate by using the base command.
|
131
|
+
# HAWC2 will use the initial condition, but then the blade will not rotate because of the fix0 constraint.
|
132
|
+
# So, running the simulation will show a clamped blade that vibrates.
|
133
|
+
# Rotate at about 9.5 rpm.
|
134
|
+
htc = write_dtu10mw_only_blade.copy()
|
135
|
+
htc.set_name("DTU_10MW_RWT_only_blade_rotate_base")
|
136
|
+
speed = 1.0 # [rad/s]
|
137
|
+
htc.new_htc_structure.orientation.base["mbdy_ini_rotvec_d1"] = [0.0, 1.0, 0.0, speed]
|
138
|
+
htc.new_htc_structure.orientation.base.mbdy_ini_rotvec_d1.comments = f"= {speed * 30.0 / np.pi:.2f} rpm"
|
139
|
+
htc.new_htc_structure.main_body__7.gravity = 0.0
|
140
|
+
htc["wind"].delete()
|
141
|
+
htc["output"].delete()
|
142
|
+
htc.save()
|
143
|
+
|
144
|
+
|
145
|
+
@pytest.fixture(scope="session")
|
146
|
+
def write_dtu10mw_only_blade_rotate_relative():
|
147
|
+
# Start from DTU_10MW_RWT and delete everything except the blade and hub.
|
148
|
+
# The blade now rotates because of the relative rotation.
|
149
|
+
# Because of the fix1 constraint, the blade will not rotate after time 0.
|
150
|
+
htc = HTCFile(tfp + "DTU_10_MW/htc/DTU_10MW_RWT.htc")
|
151
|
+
htc.set_name("DTU_10MW_RWT_only_blade_rotate_relative")
|
152
|
+
for key1 in ("main_body", # tower
|
153
|
+
"main_body__2", # towertop
|
154
|
+
"main_body__3", # shaft
|
155
|
+
"main_body__5", # hub2
|
156
|
+
"main_body__6", # hub3
|
157
|
+
"main_body__8", # blade2
|
158
|
+
"main_body__9", # blade3
|
159
|
+
"orientation",
|
160
|
+
"constraint",
|
161
|
+
):
|
162
|
+
htc["new_htc_structure"][key1].delete()
|
163
|
+
htc["wind"].delete()
|
164
|
+
htc["aerodrag"].delete()
|
165
|
+
htc["aero"].delete()
|
166
|
+
htc["dll"].delete()
|
167
|
+
htc["output"].delete()
|
168
|
+
|
169
|
+
# Set the hub as vertical.
|
170
|
+
htc.new_htc_structure.add_section("orientation")
|
171
|
+
htc.new_htc_structure.orientation.add_section("base")
|
172
|
+
htc.new_htc_structure.orientation.base.mbdy = "hub1"
|
173
|
+
htc.new_htc_structure.orientation.base.inipos = [0.0, 0.0, 0.0]
|
174
|
+
htc.new_htc_structure.orientation.base["mbdy_eulerang"] = [180.0, 0.0, 0.0]
|
175
|
+
htc.new_htc_structure.orientation.base.mbdy_eulerang.comments = "Hub axis is up."
|
176
|
+
|
177
|
+
# Set the blade horizontal.
|
178
|
+
htc.new_htc_structure.orientation.add_section("relative")
|
179
|
+
htc.new_htc_structure.orientation.relative.mbdy1 = "hub1 last"
|
180
|
+
htc.new_htc_structure.orientation.relative.mbdy2 = "blade1 1"
|
181
|
+
htc.new_htc_structure.orientation.relative["mbdy2_eulerang"] = [-90.0, 0.0, 0.0]
|
182
|
+
htc.new_htc_structure.orientation.relative.mbdy2_eulerang.comments = "Blade span is horizontal."
|
183
|
+
speed = 1.0 # [rad/s]
|
184
|
+
htc.new_htc_structure.orientation.relative["mbdy2_ini_rotvec_d1"] = [0.0, 1.0, 0.0, speed]
|
185
|
+
htc.new_htc_structure.orientation.relative.mbdy2_ini_rotvec_d1.comments = f"= {speed * 30.0 / np.pi:.2f} rpm"
|
186
|
+
|
187
|
+
# Disable gravity.
|
188
|
+
htc.new_htc_structure.main_body__7.gravity = 0.0
|
189
|
+
htc.new_htc_structure.main_body__4.gravity = 0.0
|
190
|
+
|
191
|
+
# Clamp the hub and blade.
|
192
|
+
htc.new_htc_structure.add_section("constraint")
|
193
|
+
htc.new_htc_structure.constraint.add_section("fix0")
|
194
|
+
htc.new_htc_structure.constraint.fix0.mbdy = "hub1"
|
195
|
+
htc.new_htc_structure.constraint.add_section("fix1")
|
196
|
+
htc.new_htc_structure.constraint.fix1.mbdy1 = "hub1 last"
|
197
|
+
htc.new_htc_structure.constraint.fix1.mbdy2 = "blade1 1"
|
198
|
+
|
199
|
+
# Set as many bodies as elements.
|
200
|
+
htc.new_htc_structure.main_body__7.nbodies = 26
|
201
|
+
|
202
|
+
htc.simulation.log_deltat.delete()
|
203
|
+
|
204
|
+
# Do not use static solver, since it will be done during the test.
|
205
|
+
htc.simulation.solvertype = 2
|
206
|
+
htc.simulation.solvertype.comments = ""
|
207
|
+
htc.simulation.initial_condition = 1
|
208
|
+
|
209
|
+
# Save the new file.
|
210
|
+
htc.save()
|
211
|
+
|
212
|
+
return htc
|
213
|
+
|
214
|
+
|
215
|
+
@pytest.fixture(scope="session")
|
216
|
+
def write_dtu10mw_only_blade_rotate_bearing3():
|
217
|
+
# Start from DTU_10MW_RWT and delete everything except the blade and hub.
|
218
|
+
# The blade now rotates because of the bearing3 between the blade and hub.
|
219
|
+
htc = HTCFile(tfp + "DTU_10_MW/htc/DTU_10MW_RWT.htc")
|
220
|
+
htc.set_name("DTU_10MW_RWT_only_blade_rotate_bearing3")
|
221
|
+
for key1 in ("main_body", # tower
|
222
|
+
"main_body__2", # towertop
|
223
|
+
"main_body__3", # shaft
|
224
|
+
"main_body__5", # hub2
|
225
|
+
"main_body__6", # hub3
|
226
|
+
"main_body__8", # blade2
|
227
|
+
"main_body__9", # blade3
|
228
|
+
"orientation",
|
229
|
+
"constraint",
|
230
|
+
):
|
231
|
+
htc["new_htc_structure"][key1].delete()
|
232
|
+
htc["wind"].delete()
|
233
|
+
htc["aerodrag"].delete()
|
234
|
+
htc["aero"].delete()
|
235
|
+
htc["dll"].delete()
|
236
|
+
htc["output"].delete()
|
237
|
+
|
238
|
+
# Set the hub as vertical.
|
239
|
+
htc.new_htc_structure.add_section("orientation")
|
240
|
+
htc.new_htc_structure.orientation.add_section("base")
|
241
|
+
htc.new_htc_structure.orientation.base.mbdy = "hub1"
|
242
|
+
htc.new_htc_structure.orientation.base.inipos = [0.0, 0.0, 0.0]
|
243
|
+
htc.new_htc_structure.orientation.base["mbdy_eulerang"] = [180.0, 0.0, 0.0]
|
244
|
+
htc.new_htc_structure.orientation.base.mbdy_eulerang.comments = "Hub axis is up."
|
245
|
+
|
246
|
+
# Set the blade horizontal.
|
247
|
+
htc.new_htc_structure.orientation.add_section("relative")
|
248
|
+
htc.new_htc_structure.orientation.relative.mbdy1 = "hub1 last"
|
249
|
+
htc.new_htc_structure.orientation.relative.mbdy2 = "blade1 1"
|
250
|
+
htc.new_htc_structure.orientation.relative["mbdy2_eulerang"] = [-90.0, 0.0, 0.0]
|
251
|
+
htc.new_htc_structure.orientation.relative.mbdy2_eulerang.comments = "Blade span is horizontal."
|
252
|
+
|
253
|
+
# Disable gravity.
|
254
|
+
htc.new_htc_structure.main_body__7.gravity = 0.0
|
255
|
+
htc.new_htc_structure.main_body__4.gravity = 0.0
|
256
|
+
|
257
|
+
# Clamp the hub.
|
258
|
+
htc.new_htc_structure.add_section("constraint")
|
259
|
+
htc.new_htc_structure.constraint.add_section("fix0")
|
260
|
+
htc.new_htc_structure.constraint.fix0.mbdy = "hub1"
|
261
|
+
|
262
|
+
# Insert bearing3.
|
263
|
+
htc.new_htc_structure.constraint.add_section("bearing3")
|
264
|
+
htc.new_htc_structure.constraint.bearing3.name = "bearing"
|
265
|
+
htc.new_htc_structure.constraint.bearing3.mbdy1 = "hub1 last"
|
266
|
+
htc.new_htc_structure.constraint.bearing3.mbdy2 = "blade1 1"
|
267
|
+
htc.new_htc_structure.constraint.bearing3.bearing_vector = [1, 0.0, 0.0, 1.0]
|
268
|
+
speed = 1.0 # [rad/s]
|
269
|
+
htc.new_htc_structure.constraint.bearing3.omegas = speed
|
270
|
+
htc.new_htc_structure.constraint.bearing3.omegas.comments = f"= {speed * 30.0 / np.pi:.2f} rpm"
|
271
|
+
|
272
|
+
# Set as many bodies as elements.
|
273
|
+
htc.new_htc_structure.main_body__7.nbodies = 26
|
274
|
+
|
275
|
+
htc.simulation.log_deltat.delete()
|
276
|
+
|
277
|
+
# Do not use static solver, since it will be done during the test.
|
278
|
+
htc.simulation.solvertype = 2
|
279
|
+
htc.simulation.solvertype.comments = ""
|
280
|
+
htc.simulation.initial_condition = 1
|
281
|
+
|
282
|
+
# Save the new file.
|
283
|
+
htc.save()
|
284
|
+
|
285
|
+
return htc
|
286
|
+
|
287
|
+
|
288
|
+
@pytest.fixture(scope="session")
|
289
|
+
def h2_dtu_10mw_only_tower(write_dtu10mw_only_tower):
|
290
|
+
h2 = H2Lib(suppress_output=True)
|
291
|
+
model_path = f"{tfp}DTU_10_MW/"
|
292
|
+
htc_path = "htc/DTU_10MW_RWT_only_tower.htc"
|
293
|
+
h2.init(htc_path=htc_path, model_path=model_path)
|
294
|
+
h2.stop_on_error(False)
|
295
|
+
yield h2
|
296
|
+
h2.close()
|
297
|
+
|
298
|
+
|
299
|
+
@pytest.fixture(scope="session")
|
300
|
+
def h2_dtu_10mw_only_tower_rotated(write_dtu10mw_only_tower_rotated):
|
301
|
+
h2 = H2Lib(suppress_output=True)
|
302
|
+
model_path = f"{tfp}DTU_10_MW/"
|
303
|
+
htc_path = "htc/DTU_10MW_RWT_only_tower_rotated.htc"
|
304
|
+
h2.init(htc_path=htc_path, model_path=model_path)
|
305
|
+
h2.stop_on_error(False)
|
306
|
+
yield h2
|
307
|
+
h2.close()
|
308
|
+
|
309
|
+
|
310
|
+
@pytest.fixture(scope="session")
|
311
|
+
def h2_dtu_10mw_only_tower_encrypted(write_dtu10mw_only_tower_encrypted):
|
312
|
+
h2 = H2Lib(suppress_output=True)
|
313
|
+
model_path = f"{tfp}DTU_10_MW/"
|
314
|
+
htc_path = "htc/DTU_10MW_RWT_only_tower_encrypted.htc"
|
315
|
+
h2.init(htc_path=htc_path, model_path=model_path)
|
316
|
+
h2.stop_on_error(False)
|
317
|
+
yield h2
|
318
|
+
h2.close()
|
319
|
+
|
320
|
+
|
321
|
+
@pytest.fixture(scope="session")
|
322
|
+
def h2_dtu_10mw_only_blade(write_dtu10mw_only_blade):
|
323
|
+
h2 = H2Lib(suppress_output=True)
|
324
|
+
model_path = f"{tfp}DTU_10_MW/"
|
325
|
+
htc_path = "htc/DTU_10MW_RWT_only_blade.htc"
|
326
|
+
h2.init(htc_path=htc_path, model_path=model_path)
|
327
|
+
h2.stop_on_error(False)
|
328
|
+
yield h2
|
329
|
+
h2.close()
|
330
|
+
|
331
|
+
|
332
|
+
@pytest.fixture(scope="session")
|
333
|
+
def h2_dtu10mw_only_blade_low_max_iter(write_dtu10mw_only_blade_low_max_iter):
|
334
|
+
h2 = H2Lib(suppress_output=True)
|
335
|
+
model_path = f"{tfp}DTU_10_MW/"
|
336
|
+
htc_path = "htc/DTU_10MW_RWT_only_blade_low_max_iter.htc"
|
337
|
+
h2.init(htc_path=htc_path, model_path=model_path)
|
338
|
+
h2.stop_on_error(False)
|
339
|
+
yield h2
|
340
|
+
h2.close()
|
341
|
+
|
342
|
+
|
343
|
+
@pytest.fixture(scope="session")
|
344
|
+
def h2_dtu_10mw_only_blade_rotate_base(write_dtu10mw_only_blade_rotate_base):
|
345
|
+
h2 = H2Lib(suppress_output=True)
|
346
|
+
model_path = f"{tfp}DTU_10_MW/"
|
347
|
+
htc_path = "htc/DTU_10MW_RWT_only_blade_rotate_base.htc"
|
348
|
+
h2.init(htc_path=htc_path, model_path=model_path)
|
349
|
+
h2.stop_on_error(False)
|
350
|
+
yield h2
|
351
|
+
h2.close()
|
352
|
+
|
353
|
+
|
354
|
+
@pytest.fixture(scope="session")
|
355
|
+
def h2_dtu_10mw_only_blade_rotate_relative(write_dtu10mw_only_blade_rotate_relative):
|
356
|
+
h2 = H2Lib(suppress_output=True)
|
357
|
+
model_path = f"{tfp}DTU_10_MW/"
|
358
|
+
htc_path = "htc/DTU_10MW_RWT_only_blade_rotate_relative.htc"
|
359
|
+
h2.init(htc_path=htc_path, model_path=model_path)
|
360
|
+
h2.stop_on_error(False)
|
361
|
+
yield h2
|
362
|
+
h2.close()
|
363
|
+
|
364
|
+
|
365
|
+
@pytest.fixture(scope="session")
|
366
|
+
def h2_dtu_10mw_only_blade_rotate_bearing3(write_dtu10mw_only_blade_rotate_bearing3):
|
367
|
+
h2 = H2Lib(suppress_output=True)
|
368
|
+
model_path = f"{tfp}DTU_10_MW/"
|
369
|
+
htc_path = "htc/DTU_10MW_RWT_only_blade_rotate_bearing3.htc"
|
370
|
+
h2.init(htc_path=htc_path, model_path=model_path)
|
371
|
+
h2.stop_on_error(False)
|
372
|
+
yield h2
|
373
|
+
h2.close()
|
@@ -19,7 +19,7 @@ class Ellipsys():
|
|
19
19
|
return self.time
|
20
20
|
|
21
21
|
def set_fxyz(self, pos_xyz, fxyz):
|
22
|
-
print(self.time, np.shape(pos_xyz), np.shape(fxyz))
|
22
|
+
# print(self.time, np.shape(pos_xyz), np.shape(fxyz))
|
23
23
|
pass
|
24
24
|
|
25
25
|
|
@@ -28,7 +28,7 @@ def test_ellipsys_dummy_workflow_1wt():
|
|
28
28
|
N = 1
|
29
29
|
with MultiH2Lib(N, suppress_output=True) as h2:
|
30
30
|
el = Ellipsys()
|
31
|
-
htc = HTCFile(tfp + 'DTU_10_MW/htc/
|
31
|
+
htc = HTCFile(tfp + 'DTU_10_MW/htc/DTU_10MW_RWT_no_aerodrag.htc')
|
32
32
|
for i in range(N):
|
33
33
|
htc.set_name(f'wt{i}')
|
34
34
|
htc.save()
|
@@ -41,7 +41,7 @@ def test_ellipsys_dummy_workflow_1wt():
|
|
41
41
|
pos_gl_xyz = np.array(h2.get_aerosections_position(), order='F') + wt_pos[na, na, :]
|
42
42
|
uvw = np.asfortranarray(el.get_uvw(pos_gl_xyz))
|
43
43
|
h2.set_aerosections_windspeed(uvw)
|
44
|
-
h2.run(t) # run after set_aero_windspeed requires
|
44
|
+
h2.run(t) # run after set_aero_windspeed requires initialize of bem before disabling
|
45
45
|
frc_gl_xyz = h2.get_aerosections_forces()
|
46
46
|
el.set_fxyz(pos_gl_xyz, frc_gl_xyz)
|
47
47
|
if t == 1:
|
@@ -53,7 +53,7 @@ def test_ellipsys_dummy_workflow():
|
|
53
53
|
N = 4
|
54
54
|
with MultiH2Lib(N, suppress_output=True) as h2:
|
55
55
|
el = Ellipsys()
|
56
|
-
htc = HTCFile(tfp + 'DTU_10_MW/htc/
|
56
|
+
htc = HTCFile(tfp + 'DTU_10_MW/htc/DTU_10MW_RWT_no_aerodrag.htc')
|
57
57
|
for i in range(N):
|
58
58
|
htc.set_name(f'wt{i}')
|
59
59
|
htc.save()
|
@@ -6,7 +6,7 @@ begin simulation;
|
|
6
6
|
on_no_convergence continue ;
|
7
7
|
convergence_limits 1E3 1.0 1E-7 ;
|
8
8
|
;logfile ./log/DTU_10MW_RWT_ver09.log ;
|
9
|
-
log_deltat
|
9
|
+
log_deltat 1;
|
10
10
|
begin newmark;
|
11
11
|
deltat 0.01;
|
12
12
|
end newmark;
|
@@ -599,7 +599,7 @@ end dll;
|
|
599
599
|
;
|
600
600
|
begin output;
|
601
601
|
filename ./res/DTU_10MW_RWT_ver09 ;
|
602
|
-
data_format
|
602
|
+
data_format gtsdf64;
|
603
603
|
buffer 500 ;
|
604
604
|
;
|
605
605
|
general time;
|