structuralcodes 0.5.0__py3-none-any.whl → 0.6.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.

Potentially problematic release.


This version of structuralcodes might be problematic. Click here for more details.

Files changed (48) hide show
  1. structuralcodes/__init__.py +1 -1
  2. structuralcodes/codes/ec2_2004/shear.py +3 -2
  3. structuralcodes/codes/mc2010/_concrete_creep_and_shrinkage.py +2 -2
  4. structuralcodes/core/base.py +138 -12
  5. structuralcodes/geometry/__init__.py +2 -8
  6. structuralcodes/geometry/_geometry.py +103 -19
  7. structuralcodes/geometry/_reinforcement.py +1 -3
  8. structuralcodes/geometry/profiles/__init__.py +33 -0
  9. structuralcodes/geometry/profiles/_base_profile.py +305 -0
  10. structuralcodes/geometry/profiles/_common_functions.py +307 -0
  11. structuralcodes/geometry/profiles/_hd.py +374 -0
  12. structuralcodes/geometry/profiles/_he.py +192 -0
  13. structuralcodes/geometry/profiles/_hp.py +319 -0
  14. structuralcodes/geometry/profiles/_ipe.py +130 -0
  15. structuralcodes/geometry/profiles/_ipn.py +329 -0
  16. structuralcodes/geometry/profiles/_l.py +528 -0
  17. structuralcodes/geometry/profiles/_li.py +217 -0
  18. structuralcodes/geometry/profiles/_u.py +173 -0
  19. structuralcodes/geometry/profiles/_ub.py +1356 -0
  20. structuralcodes/geometry/profiles/_ubp.py +227 -0
  21. structuralcodes/geometry/profiles/_uc.py +276 -0
  22. structuralcodes/geometry/profiles/_upe.py +133 -0
  23. structuralcodes/geometry/profiles/_upn.py +315 -0
  24. structuralcodes/geometry/profiles/_w.py +2157 -0
  25. structuralcodes/materials/basic/_elastic.py +18 -1
  26. structuralcodes/materials/basic/_elasticplastic.py +18 -1
  27. structuralcodes/materials/basic/_generic.py +18 -1
  28. structuralcodes/materials/concrete/__init__.py +3 -0
  29. structuralcodes/materials/concrete/_concrete.py +10 -1
  30. structuralcodes/materials/concrete/_concreteEC2_2004.py +15 -1
  31. structuralcodes/materials/concrete/_concreteEC2_2023.py +15 -1
  32. structuralcodes/materials/concrete/_concreteMC2010.py +20 -1
  33. structuralcodes/materials/constitutive_laws/__init__.py +3 -0
  34. structuralcodes/materials/constitutive_laws/_elasticplastic.py +2 -2
  35. structuralcodes/materials/constitutive_laws/_initial_strain.py +130 -0
  36. structuralcodes/materials/reinforcement/__init__.py +6 -0
  37. structuralcodes/materials/reinforcement/_reinforcement.py +10 -1
  38. structuralcodes/materials/reinforcement/_reinforcementEC2_2004.py +14 -0
  39. structuralcodes/materials/reinforcement/_reinforcementEC2_2023.py +14 -0
  40. structuralcodes/materials/reinforcement/_reinforcementMC2010.py +14 -0
  41. structuralcodes/sections/section_integrators/__init__.py +3 -1
  42. structuralcodes/sections/section_integrators/_marin_integrator.py +1 -1
  43. {structuralcodes-0.5.0.dist-info → structuralcodes-0.6.1.dist-info}/METADATA +2 -2
  44. {structuralcodes-0.5.0.dist-info → structuralcodes-0.6.1.dist-info}/RECORD +47 -30
  45. structuralcodes/geometry/_steel_sections.py +0 -2155
  46. /structuralcodes/{sections/section_integrators → core}/_marin_integration.py +0 -0
  47. {structuralcodes-0.5.0.dist-info → structuralcodes-0.6.1.dist-info}/WHEEL +0 -0
  48. {structuralcodes-0.5.0.dist-info → structuralcodes-0.6.1.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,374 @@
1
+ """HD profiles."""
2
+
3
+ from shapely import (
4
+ Polygon,
5
+ )
6
+
7
+ from ._base_profile import BaseProfile
8
+ from ._common_functions import (
9
+ _create_I_section,
10
+ )
11
+
12
+
13
+ class HD(BaseProfile):
14
+ """Simple class for representing an HD profile.
15
+
16
+ HD A, HD B, HD M 100-1000 in accordance with Standard Euronorm 53-62.
17
+ """
18
+
19
+ parameters = {
20
+ 'HD260x54.1': {
21
+ 'h': 244.0,
22
+ 'b': 260.0,
23
+ 'tw': 6.5,
24
+ 'tf': 9.5,
25
+ 'r': 24.0,
26
+ },
27
+ 'HD260x68.2': {
28
+ 'h': 250.0,
29
+ 'b': 260.0,
30
+ 'tw': 7.5,
31
+ 'tf': 12.5,
32
+ 'r': 24.0,
33
+ },
34
+ 'HD260x93.0': {
35
+ 'h': 260.0,
36
+ 'b': 260.0,
37
+ 'tw': 10.0,
38
+ 'tf': 17.5,
39
+ 'r': 24.0,
40
+ },
41
+ 'HD260x114.0': {
42
+ 'h': 268.0,
43
+ 'b': 262.0,
44
+ 'tw': 12.5,
45
+ 'tf': 21.5,
46
+ 'r': 24.0,
47
+ },
48
+ 'HD260x142.0': {
49
+ 'h': 278.0,
50
+ 'b': 265.0,
51
+ 'tw': 15.5,
52
+ 'tf': 26.5,
53
+ 'r': 24.0,
54
+ },
55
+ 'HD260x172.0': {
56
+ 'h': 290.0,
57
+ 'b': 268.0,
58
+ 'tw': 18.0,
59
+ 'tf': 32.5,
60
+ 'r': 24.0,
61
+ },
62
+ 'HD320x74.2': {
63
+ 'h': 301.0,
64
+ 'b': 300.0,
65
+ 'tw': 8.0,
66
+ 'tf': 11.0,
67
+ 'r': 27.0,
68
+ },
69
+ 'HD320x97.6': {
70
+ 'h': 310.0,
71
+ 'b': 300.0,
72
+ 'tw': 9.0,
73
+ 'tf': 15.5,
74
+ 'r': 27.0,
75
+ },
76
+ 'HD320x127.0': {
77
+ 'h': 320.0,
78
+ 'b': 300.0,
79
+ 'tw': 11.5,
80
+ 'tf': 20.5,
81
+ 'r': 27.0,
82
+ },
83
+ 'HD320x158.0': {
84
+ 'h': 330.0,
85
+ 'b': 303.0,
86
+ 'tw': 14.5,
87
+ 'tf': 25.5,
88
+ 'r': 27.0,
89
+ },
90
+ 'HD320x198.0': {
91
+ 'h': 343.0,
92
+ 'b': 306.0,
93
+ 'tw': 18.0,
94
+ 'tf': 32.0,
95
+ 'r': 27.0,
96
+ },
97
+ 'HD320x245.0': {
98
+ 'h': 359.0,
99
+ 'b': 309.0,
100
+ 'tw': 21.0,
101
+ 'tf': 40.0,
102
+ 'r': 27.0,
103
+ },
104
+ 'HD320x300.0': {
105
+ 'h': 375.0,
106
+ 'b': 313.0,
107
+ 'tw': 27.0,
108
+ 'tf': 48.0,
109
+ 'r': 27.0,
110
+ },
111
+ 'HD360x134.0': {
112
+ 'h': 356.0,
113
+ 'b': 369.0,
114
+ 'tw': 11.2,
115
+ 'tf': 18.0,
116
+ 'r': 15.0,
117
+ },
118
+ 'HD360x147.0': {
119
+ 'h': 360.0,
120
+ 'b': 370.0,
121
+ 'tw': 12.3,
122
+ 'tf': 19.8,
123
+ 'r': 15.0,
124
+ },
125
+ 'HD360x162.0': {
126
+ 'h': 364.0,
127
+ 'b': 371.0,
128
+ 'tw': 13.3,
129
+ 'tf': 21.8,
130
+ 'r': 15.0,
131
+ },
132
+ 'HD360x179.0': {
133
+ 'h': 368.0,
134
+ 'b': 373.0,
135
+ 'tw': 15.0,
136
+ 'tf': 23.9,
137
+ 'r': 15.0,
138
+ },
139
+ 'HD360x196.0': {
140
+ 'h': 372.0,
141
+ 'b': 374.0,
142
+ 'tw': 16.4,
143
+ 'tf': 26.2,
144
+ 'r': 15.0,
145
+ },
146
+ 'HD400x187.0': {
147
+ 'h': 368.0,
148
+ 'b': 391.0,
149
+ 'tw': 15.0,
150
+ 'tf': 24.0,
151
+ 'r': 15.0,
152
+ },
153
+ 'HD400x216.0': {
154
+ 'h': 375.0,
155
+ 'b': 394.0,
156
+ 'tw': 17.3,
157
+ 'tf': 27.7,
158
+ 'r': 15.0,
159
+ },
160
+ 'HD400x237.0': {
161
+ 'h': 380.0,
162
+ 'b': 395.0,
163
+ 'tw': 18.9,
164
+ 'tf': 30.2,
165
+ 'r': 15.0,
166
+ },
167
+ 'HD400x262.0': {
168
+ 'h': 387.0,
169
+ 'b': 398.0,
170
+ 'tw': 21.1,
171
+ 'tf': 33.3,
172
+ 'r': 15.0,
173
+ },
174
+ 'HD400x287.0': {
175
+ 'h': 393.0,
176
+ 'b': 399.0,
177
+ 'tw': 22.6,
178
+ 'tf': 36.6,
179
+ 'r': 15.0,
180
+ },
181
+ 'HD400x314.0': {
182
+ 'h': 399.0,
183
+ 'b': 401.0,
184
+ 'tw': 24.9,
185
+ 'tf': 39.6,
186
+ 'r': 15.0,
187
+ },
188
+ 'HD400x347.0': {
189
+ 'h': 407.0,
190
+ 'b': 404.0,
191
+ 'tw': 27.2,
192
+ 'tf': 43.7,
193
+ 'r': 15.0,
194
+ },
195
+ 'HD400x382.0': {
196
+ 'h': 416.0,
197
+ 'b': 406.0,
198
+ 'tw': 29.8,
199
+ 'tf': 48.0,
200
+ 'r': 15.0,
201
+ },
202
+ 'HD400x421.0': {
203
+ 'h': 425.0,
204
+ 'b': 409.0,
205
+ 'tw': 32.8,
206
+ 'tf': 52.6,
207
+ 'r': 15.0,
208
+ },
209
+ 'HD400x463.0': {
210
+ 'h': 435.0,
211
+ 'b': 412.0,
212
+ 'tw': 35.8,
213
+ 'tf': 57.4,
214
+ 'r': 15.0,
215
+ },
216
+ 'HD400x509.0': {
217
+ 'h': 446.0,
218
+ 'b': 416.0,
219
+ 'tw': 39.1,
220
+ 'tf': 62.7,
221
+ 'r': 15.0,
222
+ },
223
+ 'HD400x551.0': {
224
+ 'h': 455.0,
225
+ 'b': 418.0,
226
+ 'tw': 42.0,
227
+ 'tf': 67.6,
228
+ 'r': 15.0,
229
+ },
230
+ 'HD400x592.0': {
231
+ 'h': 465.0,
232
+ 'b': 421.0,
233
+ 'tw': 45.0,
234
+ 'tf': 72.3,
235
+ 'r': 15.0,
236
+ },
237
+ 'HD400x634.0': {
238
+ 'h': 474.0,
239
+ 'b': 424.0,
240
+ 'tw': 47.6,
241
+ 'tf': 77.1,
242
+ 'r': 15.0,
243
+ },
244
+ 'HD400x677.0': {
245
+ 'h': 483.0,
246
+ 'b': 428.0,
247
+ 'tw': 51.2,
248
+ 'tf': 81.5,
249
+ 'r': 15.0,
250
+ },
251
+ 'HD400x744.0': {
252
+ 'h': 498.0,
253
+ 'b': 432.0,
254
+ 'tw': 55.6,
255
+ 'tf': 88.9,
256
+ 'r': 15.0,
257
+ },
258
+ 'HD400x818.0': {
259
+ 'h': 514.0,
260
+ 'b': 437.0,
261
+ 'tw': 60.5,
262
+ 'tf': 97.0,
263
+ 'r': 15.0,
264
+ },
265
+ 'HD400x900.0': {
266
+ 'h': 531.0,
267
+ 'b': 442.0,
268
+ 'tw': 65.9,
269
+ 'tf': 106.0,
270
+ 'r': 15.0,
271
+ },
272
+ 'HD400x990.0': {
273
+ 'h': 550.0,
274
+ 'b': 448.0,
275
+ 'tw': 71.9,
276
+ 'tf': 115.0,
277
+ 'r': 15.0,
278
+ },
279
+ 'HD400x1086.0': {
280
+ 'h': 569.0,
281
+ 'b': 454.0,
282
+ 'tw': 78.0,
283
+ 'tf': 125.0,
284
+ 'r': 15.0,
285
+ },
286
+ }
287
+
288
+ @classmethod
289
+ def get_polygon(cls, name: str) -> Polygon:
290
+ """Returns a shapely polygon representing an HD section."""
291
+ parameters = cls.parameters.get(name)
292
+ if parameters is None:
293
+ raise ValueError(
294
+ f"Profile '{name}' not found in HD sections. "
295
+ "Select a valid profile (available ones: "
296
+ f"{cls.profiles()})"
297
+ )
298
+ return _create_I_section(**parameters)
299
+
300
+ @classmethod
301
+ def profiles(cls) -> list:
302
+ """Returns a list containing all available profiles."""
303
+ return list(cls.parameters.keys())
304
+
305
+ def __init__(self, name: str) -> None:
306
+ """Creates a new HD object."""
307
+ parameters = self.parameters.get(name)
308
+ if parameters is None:
309
+ raise ValueError(
310
+ f"Profile '{name}' not found in HD sections. "
311
+ "Select a valid profile (available ones: "
312
+ f"{self.profiles()})"
313
+ )
314
+ super().__init__()
315
+ self._h = parameters.get('h')
316
+ self._b = parameters.get('b')
317
+ self._tw = parameters.get('tw')
318
+ self._tf = parameters.get('tf')
319
+ self._r = parameters.get('r')
320
+ self._polygon = _create_I_section(**parameters)
321
+
322
+ @property
323
+ def polygon(self) -> Polygon:
324
+ """Returns shapely Polygon of section.
325
+
326
+ Returns:
327
+ Polygon: THD represention of tHD HD section.
328
+ """
329
+ return self._polygon
330
+
331
+ @property
332
+ def h(self) -> float:
333
+ """Returns Height of HD section.
334
+
335
+ Returns:
336
+ float: Height h of HD section.
337
+ """
338
+ return self._h
339
+
340
+ @property
341
+ def b(self) -> float:
342
+ """Returns width of HD section.
343
+
344
+ Returns:
345
+ float: Width b of HD section.
346
+ """
347
+ return self._b
348
+
349
+ @property
350
+ def tw(self) -> float:
351
+ """Returns thickness of web of HD section.
352
+
353
+ Returns:
354
+ float: Web thickness tw of HD section.
355
+ """
356
+ return self._tw
357
+
358
+ @property
359
+ def tf(self) -> float:
360
+ """Returns thickness of flange of HD section.
361
+
362
+ Returns:
363
+ float: Flange thickness tw of HD section.
364
+ """
365
+ return self._tf
366
+
367
+ @property
368
+ def r(self) -> float:
369
+ """Returns fillet radius of HD section.
370
+
371
+ Returns:
372
+ float: Fillet radius r of HD section.
373
+ """
374
+ return self._r
@@ -0,0 +1,192 @@
1
+ """HE profiles."""
2
+
3
+ from shapely import (
4
+ Polygon,
5
+ )
6
+
7
+ from ._base_profile import BaseProfile
8
+ from ._common_functions import (
9
+ _create_I_section,
10
+ )
11
+
12
+
13
+ class HE(BaseProfile):
14
+ """Simple class for representing an HE profile.
15
+
16
+ HE A, HE B, HE M 100-1000 in accordance with Standard Euronorm 53-62.
17
+ """
18
+
19
+ parameters = {
20
+ 'HEA100': {'h': 96.0, 'b': 100.0, 'tw': 5.0, 'tf': 8.0, 'r': 12.0},
21
+ 'HEA120': {'h': 114.0, 'b': 120.0, 'tw': 5.0, 'tf': 8.0, 'r': 12.0},
22
+ 'HEA140': {'h': 133.0, 'b': 140.0, 'tw': 5.5, 'tf': 8.5, 'r': 12.0},
23
+ 'HEA160': {'h': 152.0, 'b': 160.0, 'tw': 6.0, 'tf': 9.0, 'r': 15.0},
24
+ 'HEA180': {'h': 171.0, 'b': 180.0, 'tw': 6.0, 'tf': 9.5, 'r': 15.0},
25
+ 'HEA200': {'h': 190.0, 'b': 200.0, 'tw': 6.5, 'tf': 10.0, 'r': 18.0},
26
+ 'HEA220': {'h': 210.0, 'b': 220.0, 'tw': 7.0, 'tf': 11.0, 'r': 18.0},
27
+ 'HEA240': {'h': 230.0, 'b': 240.0, 'tw': 7.5, 'tf': 12.0, 'r': 21.0},
28
+ 'HEA260': {'h': 250.0, 'b': 260.0, 'tw': 7.5, 'tf': 12.5, 'r': 24.0},
29
+ 'HEA280': {'h': 270.0, 'b': 280.0, 'tw': 8.0, 'tf': 13.0, 'r': 24.0},
30
+ 'HEA300': {'h': 290.0, 'b': 300.0, 'tw': 8.5, 'tf': 14.0, 'r': 27.0},
31
+ 'HEA320': {'h': 310.0, 'b': 300.0, 'tw': 9.0, 'tf': 15.5, 'r': 27.0},
32
+ 'HEA340': {'h': 330.0, 'b': 300.0, 'tw': 9.5, 'tf': 16.5, 'r': 27.0},
33
+ 'HEA360': {'h': 350.0, 'b': 300.0, 'tw': 10.0, 'tf': 17.5, 'r': 27.0},
34
+ 'HEA400': {'h': 390.0, 'b': 300.0, 'tw': 11.0, 'tf': 19.0, 'r': 27.0},
35
+ 'HEA450': {'h': 440.0, 'b': 300.0, 'tw': 11.5, 'tf': 21.0, 'r': 27.0},
36
+ 'HEA500': {'h': 490.0, 'b': 300.0, 'tw': 12.0, 'tf': 23.0, 'r': 27.0},
37
+ 'HEA550': {'h': 540.0, 'b': 300.0, 'tw': 12.5, 'tf': 24.0, 'r': 27.0},
38
+ 'HEA600': {'h': 590.0, 'b': 300.0, 'tw': 13.0, 'tf': 25.0, 'r': 27.0},
39
+ 'HEA650': {'h': 640.0, 'b': 300.0, 'tw': 13.5, 'tf': 26.0, 'r': 27.0},
40
+ 'HEA700': {'h': 690.0, 'b': 300.0, 'tw': 14.5, 'tf': 27.0, 'r': 27.0},
41
+ 'HEA800': {'h': 790.0, 'b': 300.0, 'tw': 15.0, 'tf': 28.0, 'r': 30.0},
42
+ 'HEA900': {'h': 890.0, 'b': 300.0, 'tw': 16.0, 'tf': 30.0, 'r': 30.0},
43
+ 'HEA1000': {'h': 990.0, 'b': 300.0, 'tw': 16.5, 'tf': 31.0, 'r': 30.0},
44
+ 'HEB100': {'h': 100.0, 'b': 100.0, 'tw': 6.0, 'tf': 10.0, 'r': 12.0},
45
+ 'HEB120': {'h': 120.0, 'b': 120.0, 'tw': 6.5, 'tf': 11.0, 'r': 12.0},
46
+ 'HEB140': {'h': 140.0, 'b': 140.0, 'tw': 7.0, 'tf': 12.0, 'r': 12.0},
47
+ 'HEB160': {'h': 160.0, 'b': 160.0, 'tw': 8.0, 'tf': 13.0, 'r': 15.0},
48
+ 'HEB180': {'h': 180.0, 'b': 180.0, 'tw': 8.5, 'tf': 14.0, 'r': 15.0},
49
+ 'HEB200': {'h': 200.0, 'b': 200.0, 'tw': 9.0, 'tf': 15.0, 'r': 18.0},
50
+ 'HEB220': {'h': 220.0, 'b': 220.0, 'tw': 9.5, 'tf': 16.0, 'r': 18.0},
51
+ 'HEB240': {'h': 240.0, 'b': 240.0, 'tw': 10.0, 'tf': 17.0, 'r': 21.0},
52
+ 'HEB260': {'h': 260.0, 'b': 260.0, 'tw': 10.0, 'tf': 17.5, 'r': 24.0},
53
+ 'HEB280': {'h': 280.0, 'b': 280.0, 'tw': 10.5, 'tf': 18.0, 'r': 24.0},
54
+ 'HEB300': {'h': 300.0, 'b': 300.0, 'tw': 11.0, 'tf': 19.0, 'r': 27.0},
55
+ 'HEB320': {'h': 320.0, 'b': 300.0, 'tw': 11.5, 'tf': 20.5, 'r': 27.0},
56
+ 'HEB340': {'h': 340.0, 'b': 300.0, 'tw': 12.0, 'tf': 21.5, 'r': 27.0},
57
+ 'HEB360': {'h': 360.0, 'b': 300.0, 'tw': 12.5, 'tf': 22.5, 'r': 27.0},
58
+ 'HEB400': {'h': 400.0, 'b': 300.0, 'tw': 13.5, 'tf': 24.0, 'r': 27.0},
59
+ 'HEB450': {'h': 450.0, 'b': 300.0, 'tw': 14.0, 'tf': 26.0, 'r': 27.0},
60
+ 'HEB500': {'h': 500.0, 'b': 300.0, 'tw': 14.5, 'tf': 28.0, 'r': 27.0},
61
+ 'HEB550': {'h': 550.0, 'b': 300.0, 'tw': 15.0, 'tf': 29.0, 'r': 27.0},
62
+ 'HEB600': {'h': 600.0, 'b': 300.0, 'tw': 15.5, 'tf': 30.0, 'r': 27.0},
63
+ 'HEB650': {'h': 650.0, 'b': 300.0, 'tw': 16.0, 'tf': 31.0, 'r': 27.0},
64
+ 'HEB700': {'h': 700.0, 'b': 300.0, 'tw': 17.0, 'tf': 32.0, 'r': 27.0},
65
+ 'HEB800': {'h': 800.0, 'b': 300.0, 'tw': 17.5, 'tf': 33.0, 'r': 30.0},
66
+ 'HEB900': {'h': 900.0, 'b': 300.0, 'tw': 18.5, 'tf': 35.0, 'r': 30.0},
67
+ 'HEB1000': {
68
+ 'h': 1000.0,
69
+ 'b': 300.0,
70
+ 'tw': 19.0,
71
+ 'tf': 36.0,
72
+ 'r': 30.0,
73
+ },
74
+ 'HEM100': {'h': 120.0, 'b': 106.0, 'tw': 12.0, 'tf': 20.0, 'r': 12.0},
75
+ 'HEM120': {'h': 140.0, 'b': 126.0, 'tw': 12.5, 'tf': 21.0, 'r': 12.0},
76
+ 'HEM140': {'h': 160.0, 'b': 146.0, 'tw': 13.0, 'tf': 22.0, 'r': 12.0},
77
+ 'HEM160': {'h': 180.0, 'b': 166.0, 'tw': 14.0, 'tf': 23.0, 'r': 15.0},
78
+ 'HEM180': {'h': 200.0, 'b': 186.0, 'tw': 14.5, 'tf': 24.0, 'r': 15.0},
79
+ 'HEM200': {'h': 220.0, 'b': 206.0, 'tw': 15.0, 'tf': 25.0, 'r': 18.0},
80
+ 'HEM220': {'h': 240.0, 'b': 226.0, 'tw': 15.5, 'tf': 26.0, 'r': 18.0},
81
+ 'HEM240': {'h': 270.0, 'b': 248.0, 'tw': 18.0, 'tf': 32.0, 'r': 21.0},
82
+ 'HEM260': {'h': 290.0, 'b': 268.0, 'tw': 18.0, 'tf': 32.5, 'r': 24.0},
83
+ 'HEM280': {'h': 310.0, 'b': 288.0, 'tw': 18.5, 'tf': 33.0, 'r': 24.0},
84
+ 'HEM300': {'h': 340.0, 'b': 310.0, 'tw': 21.0, 'tf': 39.0, 'r': 27.0},
85
+ 'HEM320': {'h': 359.0, 'b': 309.0, 'tw': 21.0, 'tf': 40.0, 'r': 27.0},
86
+ 'HEM340': {'h': 377.0, 'b': 309.0, 'tw': 21.0, 'tf': 40.0, 'r': 27.0},
87
+ 'HEM360': {'h': 395.0, 'b': 308.0, 'tw': 21.0, 'tf': 40.0, 'r': 27.0},
88
+ 'HEM400': {'h': 432.0, 'b': 307.0, 'tw': 21.0, 'tf': 40.0, 'r': 27.0},
89
+ 'HEM450': {'h': 478.0, 'b': 307.0, 'tw': 21.0, 'tf': 40.0, 'r': 27.0},
90
+ 'HEM500': {'h': 524.0, 'b': 306.0, 'tw': 21.0, 'tf': 40.0, 'r': 27.0},
91
+ 'HEM550': {'h': 572.0, 'b': 306.0, 'tw': 21.0, 'tf': 40.0, 'r': 27.0},
92
+ 'HEM600': {'h': 620.0, 'b': 305.0, 'tw': 21.0, 'tf': 40.0, 'r': 27.0},
93
+ 'HEM650': {'h': 668.0, 'b': 305.0, 'tw': 21.0, 'tf': 40.0, 'r': 27.0},
94
+ 'HEM700': {'h': 716.0, 'b': 304.0, 'tw': 21.0, 'tf': 40.0, 'r': 27.0},
95
+ 'HEM800': {'h': 814.0, 'b': 303.0, 'tw': 21.0, 'tf': 40.0, 'r': 30.0},
96
+ 'HEM900': {'h': 910.0, 'b': 302.0, 'tw': 21.0, 'tf': 40.0, 'r': 30.0},
97
+ 'HEM1000': {
98
+ 'h': 1008.0,
99
+ 'b': 302.0,
100
+ 'tw': 21.0,
101
+ 'tf': 40.0,
102
+ 'r': 30.0,
103
+ },
104
+ }
105
+
106
+ @classmethod
107
+ def get_polygon(cls, name: str) -> Polygon:
108
+ """Returns a shapely polygon representing an HE section."""
109
+ parameters = cls.parameters.get(name)
110
+ if parameters is None:
111
+ raise ValueError(
112
+ f"Profile '{name}' not found in HE sections. "
113
+ "Select a valid profile (available ones: "
114
+ f"{cls.profiles()})"
115
+ )
116
+ return _create_I_section(**parameters)
117
+
118
+ @classmethod
119
+ def profiles(cls) -> list:
120
+ """Returns a list containing all available profiles."""
121
+ return list(cls.parameters.keys())
122
+
123
+ def __init__(self, name: str) -> None:
124
+ """Creates a new HE object."""
125
+ parameters = self.parameters.get(name)
126
+ if parameters is None:
127
+ raise ValueError(
128
+ f"Profile '{name}' not found in HE sections. "
129
+ "Select a valid profile (available ones: "
130
+ f"{self.profiles()})"
131
+ )
132
+ super().__init__()
133
+ self._h = parameters.get('h')
134
+ self._b = parameters.get('b')
135
+ self._tw = parameters.get('tw')
136
+ self._tf = parameters.get('tf')
137
+ self._r = parameters.get('r')
138
+ self._polygon = _create_I_section(**parameters)
139
+
140
+ @property
141
+ def polygon(self) -> Polygon:
142
+ """Returns shapely Polygon of section.
143
+
144
+ Returns:
145
+ Polygon: The represention of the HE section.
146
+ """
147
+ return self._polygon
148
+
149
+ @property
150
+ def h(self) -> float:
151
+ """Returns height of HE section.
152
+
153
+ Returns:
154
+ float: Height h of HE section.
155
+ """
156
+ return self._h
157
+
158
+ @property
159
+ def b(self) -> float:
160
+ """Returns width of HE section.
161
+
162
+ Returns:
163
+ float: Width b of HE section.
164
+ """
165
+ return self._b
166
+
167
+ @property
168
+ def tw(self) -> float:
169
+ """Returns thickness of web of HE section.
170
+
171
+ Returns:
172
+ float: Web thickness tw of HE section.
173
+ """
174
+ return self._tw
175
+
176
+ @property
177
+ def tf(self) -> float:
178
+ """Returns thickness of flange of HE section.
179
+
180
+ Returns:
181
+ float: Flange thickness tw of HE section.
182
+ """
183
+ return self._tf
184
+
185
+ @property
186
+ def r(self) -> float:
187
+ """Returns fillet radius of HE section.
188
+
189
+ Returns:
190
+ float: Fillet radius r of HE section.
191
+ """
192
+ return self._r