structuralcodes 0.5.0__py3-none-any.whl → 0.6.0__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.
- structuralcodes/__init__.py +1 -1
- structuralcodes/codes/mc2010/_concrete_creep_and_shrinkage.py +2 -2
- structuralcodes/core/base.py +115 -4
- structuralcodes/geometry/__init__.py +2 -8
- structuralcodes/geometry/_geometry.py +11 -22
- structuralcodes/geometry/_reinforcement.py +1 -3
- structuralcodes/geometry/profiles/__init__.py +19 -0
- structuralcodes/geometry/profiles/_base_profile.py +305 -0
- structuralcodes/geometry/profiles/_common_functions.py +194 -0
- structuralcodes/geometry/profiles/_he.py +192 -0
- structuralcodes/geometry/profiles/_ipe.py +130 -0
- structuralcodes/geometry/profiles/_ipn.py +329 -0
- structuralcodes/geometry/profiles/_ub.py +264 -0
- structuralcodes/geometry/profiles/_ubp.py +227 -0
- structuralcodes/geometry/profiles/_uc.py +276 -0
- structuralcodes/geometry/profiles/_upn.py +315 -0
- structuralcodes/materials/basic/_elastic.py +18 -1
- structuralcodes/materials/basic/_elasticplastic.py +18 -1
- structuralcodes/materials/basic/_generic.py +18 -1
- structuralcodes/materials/concrete/__init__.py +3 -0
- structuralcodes/materials/concrete/_concrete.py +10 -1
- structuralcodes/materials/concrete/_concreteEC2_2004.py +14 -0
- structuralcodes/materials/concrete/_concreteEC2_2023.py +14 -0
- structuralcodes/materials/concrete/_concreteMC2010.py +19 -0
- structuralcodes/materials/constitutive_laws/__init__.py +3 -0
- structuralcodes/materials/constitutive_laws/_elasticplastic.py +2 -2
- structuralcodes/materials/constitutive_laws/_initial_strain.py +130 -0
- structuralcodes/materials/reinforcement/__init__.py +6 -0
- structuralcodes/materials/reinforcement/_reinforcement.py +10 -1
- structuralcodes/materials/reinforcement/_reinforcementEC2_2004.py +14 -0
- structuralcodes/materials/reinforcement/_reinforcementEC2_2023.py +14 -0
- structuralcodes/materials/reinforcement/_reinforcementMC2010.py +14 -0
- structuralcodes/sections/section_integrators/__init__.py +3 -1
- structuralcodes/sections/section_integrators/_marin_integrator.py +1 -1
- {structuralcodes-0.5.0.dist-info → structuralcodes-0.6.0.dist-info}/METADATA +2 -2
- {structuralcodes-0.5.0.dist-info → structuralcodes-0.6.0.dist-info}/RECORD +39 -29
- structuralcodes/geometry/_steel_sections.py +0 -2155
- /structuralcodes/{sections/section_integrators → core}/_marin_integration.py +0 -0
- {structuralcodes-0.5.0.dist-info → structuralcodes-0.6.0.dist-info}/WHEEL +0 -0
- {structuralcodes-0.5.0.dist-info → structuralcodes-0.6.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
"""UBP 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 UBP(BaseProfile):
|
|
14
|
+
"""Simple class for representing a UBP profile.
|
|
15
|
+
|
|
16
|
+
Universal Bearing Pile.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
parameters = {
|
|
20
|
+
'UBP203x203x45': {
|
|
21
|
+
'h': 200.0,
|
|
22
|
+
'b': 206.0,
|
|
23
|
+
'tw': 9.5,
|
|
24
|
+
'tf': 9.5,
|
|
25
|
+
'r': 10.0,
|
|
26
|
+
},
|
|
27
|
+
'UBP203x203x54': {
|
|
28
|
+
'h': 204.0,
|
|
29
|
+
'b': 208.0,
|
|
30
|
+
'tw': 11.3,
|
|
31
|
+
'tf': 11.4,
|
|
32
|
+
'r': 10.0,
|
|
33
|
+
},
|
|
34
|
+
'UBP254x254x63': {
|
|
35
|
+
'h': 247.0,
|
|
36
|
+
'b': 257.0,
|
|
37
|
+
'tw': 10.6,
|
|
38
|
+
'tf': 10.7,
|
|
39
|
+
'r': 20.0,
|
|
40
|
+
},
|
|
41
|
+
'UBP254x254x71': {
|
|
42
|
+
'h': 250.0,
|
|
43
|
+
'b': 258.0,
|
|
44
|
+
'tw': 12.0,
|
|
45
|
+
'tf': 12.0,
|
|
46
|
+
'r': 20.0,
|
|
47
|
+
},
|
|
48
|
+
'UBP254x254x85': {
|
|
49
|
+
'h': 254.0,
|
|
50
|
+
'b': 260.0,
|
|
51
|
+
'tw': 14.4,
|
|
52
|
+
'tf': 14.3,
|
|
53
|
+
'r': 20.0,
|
|
54
|
+
},
|
|
55
|
+
'UBP305x305x79': {
|
|
56
|
+
'h': 299.0,
|
|
57
|
+
'b': 306.0,
|
|
58
|
+
'tw': 11.0,
|
|
59
|
+
'tf': 11.1,
|
|
60
|
+
'r': 20.0,
|
|
61
|
+
},
|
|
62
|
+
'UBP305x305x88': {
|
|
63
|
+
'h': 302.0,
|
|
64
|
+
'b': 308.0,
|
|
65
|
+
'tw': 12.4,
|
|
66
|
+
'tf': 12.3,
|
|
67
|
+
'r': 20.0,
|
|
68
|
+
},
|
|
69
|
+
'UBP305x305x95': {
|
|
70
|
+
'h': 304.0,
|
|
71
|
+
'b': 309.0,
|
|
72
|
+
'tw': 13.3,
|
|
73
|
+
'tf': 13.3,
|
|
74
|
+
'r': 20.0,
|
|
75
|
+
},
|
|
76
|
+
'UBP305x305x110': {
|
|
77
|
+
'h': 308.0,
|
|
78
|
+
'b': 311.0,
|
|
79
|
+
'tw': 15.3,
|
|
80
|
+
'tf': 15.4,
|
|
81
|
+
'r': 20.0,
|
|
82
|
+
},
|
|
83
|
+
'UBP305x305x126': {
|
|
84
|
+
'h': 312.0,
|
|
85
|
+
'b': 313.0,
|
|
86
|
+
'tw': 17.5,
|
|
87
|
+
'tf': 17.6,
|
|
88
|
+
'r': 20.0,
|
|
89
|
+
},
|
|
90
|
+
'UBP305x305x149': {
|
|
91
|
+
'h': 318.0,
|
|
92
|
+
'b': 316.0,
|
|
93
|
+
'tw': 20.6,
|
|
94
|
+
'tf': 20.7,
|
|
95
|
+
'r': 20.0,
|
|
96
|
+
},
|
|
97
|
+
'UBP305x305x186': {
|
|
98
|
+
'h': 328.0,
|
|
99
|
+
'b': 321.0,
|
|
100
|
+
'tw': 25.5,
|
|
101
|
+
'tf': 25.6,
|
|
102
|
+
'r': 2.0,
|
|
103
|
+
},
|
|
104
|
+
'UBP305x305x223': {
|
|
105
|
+
'h': 338.0,
|
|
106
|
+
'b': 326.0,
|
|
107
|
+
'tw': 30.3,
|
|
108
|
+
'tf': 30.4,
|
|
109
|
+
'r': 20.0,
|
|
110
|
+
},
|
|
111
|
+
'UBP356x368x109': {
|
|
112
|
+
'h': 346.0,
|
|
113
|
+
'b': 371.0,
|
|
114
|
+
'tw': 12.8,
|
|
115
|
+
'tf': 12.9,
|
|
116
|
+
'r': 20.0,
|
|
117
|
+
},
|
|
118
|
+
'UBP356x368x133': {
|
|
119
|
+
'h': 352.0,
|
|
120
|
+
'b': 374.0,
|
|
121
|
+
'tw': 15.6,
|
|
122
|
+
'tf': 15.7,
|
|
123
|
+
'r': 20.0,
|
|
124
|
+
},
|
|
125
|
+
'UBP356x368x152': {
|
|
126
|
+
'h': 356.0,
|
|
127
|
+
'b': 376.0,
|
|
128
|
+
'tw': 17.8,
|
|
129
|
+
'tf': 17.9,
|
|
130
|
+
'r': 20.0,
|
|
131
|
+
},
|
|
132
|
+
'UBP356x368x174': {
|
|
133
|
+
'h': 361.0,
|
|
134
|
+
'b': 378.0,
|
|
135
|
+
'tw': 20.3,
|
|
136
|
+
'tf': 20.4,
|
|
137
|
+
'r': 20.0,
|
|
138
|
+
},
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
@classmethod
|
|
142
|
+
def get_polygon(cls, name: str) -> Polygon:
|
|
143
|
+
"""Returns a shapely polygon representing a UBP section."""
|
|
144
|
+
parameters = cls.parameters.get(name)
|
|
145
|
+
if parameters is None:
|
|
146
|
+
raise ValueError(
|
|
147
|
+
f"Profile '{name}' not found in UBP sections. "
|
|
148
|
+
"Select a valid profile (available ones: "
|
|
149
|
+
f"{cls.profiles()})"
|
|
150
|
+
)
|
|
151
|
+
return _create_I_section(**parameters)
|
|
152
|
+
|
|
153
|
+
@classmethod
|
|
154
|
+
def profiles(cls) -> list:
|
|
155
|
+
"""Returns a list containing all available profiles."""
|
|
156
|
+
return list(cls.parameters.keys())
|
|
157
|
+
|
|
158
|
+
def __init__(self, name: str) -> None:
|
|
159
|
+
"""Creates a new UBP object."""
|
|
160
|
+
parameters = self.parameters.get(name)
|
|
161
|
+
if parameters is None:
|
|
162
|
+
raise ValueError(
|
|
163
|
+
f"Profile '{name}' not found in UBP sections. "
|
|
164
|
+
"Select a valid profile (available ones: "
|
|
165
|
+
f"{self.profiles()})"
|
|
166
|
+
)
|
|
167
|
+
super().__init__()
|
|
168
|
+
self._h = parameters.get('h')
|
|
169
|
+
self._b = parameters.get('b')
|
|
170
|
+
self._tw = parameters.get('tw')
|
|
171
|
+
self._tf = parameters.get('tf')
|
|
172
|
+
self._r = parameters.get('r')
|
|
173
|
+
self._polygon = _create_I_section(**parameters)
|
|
174
|
+
|
|
175
|
+
@property
|
|
176
|
+
def polygon(self) -> Polygon:
|
|
177
|
+
"""Returns shapely Polygon of section.
|
|
178
|
+
|
|
179
|
+
Returns:
|
|
180
|
+
Polygon: The represention of the UBP section.
|
|
181
|
+
"""
|
|
182
|
+
return self._polygon
|
|
183
|
+
|
|
184
|
+
@property
|
|
185
|
+
def h(self) -> float:
|
|
186
|
+
"""Returns height of UBP section.
|
|
187
|
+
|
|
188
|
+
Returns:
|
|
189
|
+
float: Height h of UBP section.
|
|
190
|
+
"""
|
|
191
|
+
return self._h
|
|
192
|
+
|
|
193
|
+
@property
|
|
194
|
+
def b(self) -> float:
|
|
195
|
+
"""Returns width of UBP section.
|
|
196
|
+
|
|
197
|
+
Returns:
|
|
198
|
+
float: Width b of UBP section.
|
|
199
|
+
"""
|
|
200
|
+
return self._b
|
|
201
|
+
|
|
202
|
+
@property
|
|
203
|
+
def tw(self) -> float:
|
|
204
|
+
"""Returns thickness of web of UBP section.
|
|
205
|
+
|
|
206
|
+
Returns:
|
|
207
|
+
float: Web thickness tw of UBP section.
|
|
208
|
+
"""
|
|
209
|
+
return self._tw
|
|
210
|
+
|
|
211
|
+
@property
|
|
212
|
+
def tf(self) -> float:
|
|
213
|
+
"""Returns thickness of flange of UBP section.
|
|
214
|
+
|
|
215
|
+
Returns:
|
|
216
|
+
float: Flange thickness tw of UBP section.
|
|
217
|
+
"""
|
|
218
|
+
return self._tf
|
|
219
|
+
|
|
220
|
+
@property
|
|
221
|
+
def r(self) -> float:
|
|
222
|
+
"""Returns fillet radius of UBP section.
|
|
223
|
+
|
|
224
|
+
Returns:
|
|
225
|
+
float: Fillet radius r of UBP section.
|
|
226
|
+
"""
|
|
227
|
+
return self._r
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
"""UC 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 UC(BaseProfile):
|
|
14
|
+
"""Simple class for representing a UC profile.
|
|
15
|
+
|
|
16
|
+
Universal Columns.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
parameters = {
|
|
20
|
+
'UC152x152x23': {
|
|
21
|
+
'h': 152.0,
|
|
22
|
+
'b': 152.0,
|
|
23
|
+
'tw': 5.8,
|
|
24
|
+
'tf': 6.8,
|
|
25
|
+
'r': 8.0,
|
|
26
|
+
},
|
|
27
|
+
'UC152x152x30': {
|
|
28
|
+
'h': 158.0,
|
|
29
|
+
'b': 153.0,
|
|
30
|
+
'tw': 6.5,
|
|
31
|
+
'tf': 9.4,
|
|
32
|
+
'r': 8.0,
|
|
33
|
+
},
|
|
34
|
+
'UC152x152x37': {
|
|
35
|
+
'h': 162.0,
|
|
36
|
+
'b': 154.0,
|
|
37
|
+
'tw': 8.0,
|
|
38
|
+
'tf': 11.5,
|
|
39
|
+
'r': 8.0,
|
|
40
|
+
},
|
|
41
|
+
'UC152x152x44': {
|
|
42
|
+
'h': 166.0,
|
|
43
|
+
'b': 156.0,
|
|
44
|
+
'tw': 9.5,
|
|
45
|
+
'tf': 13.6,
|
|
46
|
+
'r': 8.0,
|
|
47
|
+
},
|
|
48
|
+
'UC152x152x51': {
|
|
49
|
+
'h': 170.0,
|
|
50
|
+
'b': 157.0,
|
|
51
|
+
'tw': 11.0,
|
|
52
|
+
'tf': 15.7,
|
|
53
|
+
'r': 8.0,
|
|
54
|
+
},
|
|
55
|
+
'UC203x203x46': {
|
|
56
|
+
'h': 203.0,
|
|
57
|
+
'b': 204.0,
|
|
58
|
+
'tw': 7.2,
|
|
59
|
+
'tf': 11.0,
|
|
60
|
+
'r': 13.0,
|
|
61
|
+
},
|
|
62
|
+
'UC203x203x52': {
|
|
63
|
+
'h': 206.0,
|
|
64
|
+
'b': 204.0,
|
|
65
|
+
'tw': 7.9,
|
|
66
|
+
'tf': 12.5,
|
|
67
|
+
'r': 13.0,
|
|
68
|
+
},
|
|
69
|
+
'UC203x203x60': {
|
|
70
|
+
'h': 210.0,
|
|
71
|
+
'b': 206.0,
|
|
72
|
+
'tw': 9.4,
|
|
73
|
+
'tf': 14.2,
|
|
74
|
+
'r': 13.0,
|
|
75
|
+
},
|
|
76
|
+
'UC203x203x71': {
|
|
77
|
+
'h': 216.0,
|
|
78
|
+
'b': 206.0,
|
|
79
|
+
'tw': 10.0,
|
|
80
|
+
'tf': 17.3,
|
|
81
|
+
'r': 13.0,
|
|
82
|
+
},
|
|
83
|
+
'UC203x203x86': {
|
|
84
|
+
'h': 222.0,
|
|
85
|
+
'b': 209.0,
|
|
86
|
+
'tw': 12.7,
|
|
87
|
+
'tf': 20.5,
|
|
88
|
+
'r': 13.0,
|
|
89
|
+
},
|
|
90
|
+
'UC203x203x100': {
|
|
91
|
+
'h': 229.0,
|
|
92
|
+
'b': 210.0,
|
|
93
|
+
'tw': 14.5,
|
|
94
|
+
'tf': 23.7,
|
|
95
|
+
'r': 13.0,
|
|
96
|
+
},
|
|
97
|
+
'UC203x203x113': {
|
|
98
|
+
'h': 235.0,
|
|
99
|
+
'b': 212.0,
|
|
100
|
+
'tw': 16.3,
|
|
101
|
+
'tf': 26.9,
|
|
102
|
+
'r': 13.0,
|
|
103
|
+
},
|
|
104
|
+
'UC203x203x127': {
|
|
105
|
+
'h': 241.0,
|
|
106
|
+
'b': 214.0,
|
|
107
|
+
'tw': 18.1,
|
|
108
|
+
'tf': 30.1,
|
|
109
|
+
'r': 13.0,
|
|
110
|
+
},
|
|
111
|
+
'UC254x254x73': {
|
|
112
|
+
'h': 254.0,
|
|
113
|
+
'b': 255.0,
|
|
114
|
+
'tw': 8.6,
|
|
115
|
+
'tf': 14.2,
|
|
116
|
+
'r': 20.0,
|
|
117
|
+
},
|
|
118
|
+
'UC254x254x81': {
|
|
119
|
+
'h': 256.0,
|
|
120
|
+
'b': 255.0,
|
|
121
|
+
'tw': 9.4,
|
|
122
|
+
'tf': 15.6,
|
|
123
|
+
'r': 20.0,
|
|
124
|
+
},
|
|
125
|
+
'UC254x254x89': {
|
|
126
|
+
'h': 260.0,
|
|
127
|
+
'b': 256.0,
|
|
128
|
+
'tw': 10.3,
|
|
129
|
+
'tf': 17.3,
|
|
130
|
+
'r': 20.0,
|
|
131
|
+
},
|
|
132
|
+
'UC254x254x101': {
|
|
133
|
+
'h': 264.0,
|
|
134
|
+
'b': 257.0,
|
|
135
|
+
'tw': 11.9,
|
|
136
|
+
'tf': 19.6,
|
|
137
|
+
'r': 20.0,
|
|
138
|
+
},
|
|
139
|
+
'UC254x254x107': {
|
|
140
|
+
'h': 267.0,
|
|
141
|
+
'b': 259.0,
|
|
142
|
+
'tw': 12.8,
|
|
143
|
+
'tf': 20.5,
|
|
144
|
+
'r': 20.0,
|
|
145
|
+
},
|
|
146
|
+
'UC254x254x115': {
|
|
147
|
+
'h': 269.0,
|
|
148
|
+
'b': 259.0,
|
|
149
|
+
'tw': 13.5,
|
|
150
|
+
'tf': 22.1,
|
|
151
|
+
'r': 20.0,
|
|
152
|
+
},
|
|
153
|
+
'UC254x254x132': {
|
|
154
|
+
'h': 276.0,
|
|
155
|
+
'b': 261.0,
|
|
156
|
+
'tw': 15.3,
|
|
157
|
+
'tf': 25.3,
|
|
158
|
+
'r': 20.0,
|
|
159
|
+
},
|
|
160
|
+
'UC254x254x149': {
|
|
161
|
+
'h': 282.0,
|
|
162
|
+
'b': 263.0,
|
|
163
|
+
'tw': 17.3,
|
|
164
|
+
'tf': 28.4,
|
|
165
|
+
'r': 20.0,
|
|
166
|
+
},
|
|
167
|
+
'UC254x254x167': {
|
|
168
|
+
'h': 289.0,
|
|
169
|
+
'b': 265.0,
|
|
170
|
+
'tw': 19.2,
|
|
171
|
+
'tf': 31.7,
|
|
172
|
+
'r': 20.0,
|
|
173
|
+
},
|
|
174
|
+
'UC305x305x97': {
|
|
175
|
+
'h': 308.0,
|
|
176
|
+
'b': 305.0,
|
|
177
|
+
'tw': 9.9,
|
|
178
|
+
'tf': 15.4,
|
|
179
|
+
'r': 20.0,
|
|
180
|
+
},
|
|
181
|
+
'UC305x305x107': {
|
|
182
|
+
'h': 311.0,
|
|
183
|
+
'b': 306.0,
|
|
184
|
+
'tw': 10.9,
|
|
185
|
+
'tf': 17.0,
|
|
186
|
+
'r': 20.0,
|
|
187
|
+
},
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
@classmethod
|
|
191
|
+
def get_polygon(cls, name: str) -> Polygon:
|
|
192
|
+
"""Returns a shapely polygon representing a UC section."""
|
|
193
|
+
parameters = cls.parameters.get(name)
|
|
194
|
+
if parameters is None:
|
|
195
|
+
raise ValueError(
|
|
196
|
+
f"Profile '{name}' not found in UC sections. "
|
|
197
|
+
"Select a valid profile (available ones: "
|
|
198
|
+
f"{cls.profiles()})"
|
|
199
|
+
)
|
|
200
|
+
return _create_I_section(**parameters)
|
|
201
|
+
|
|
202
|
+
@classmethod
|
|
203
|
+
def profiles(cls) -> list:
|
|
204
|
+
"""Returns a list containing all available profiles."""
|
|
205
|
+
return list(cls.parameters.keys())
|
|
206
|
+
|
|
207
|
+
def __init__(self, name: str) -> None:
|
|
208
|
+
"""Creates a new UC object."""
|
|
209
|
+
parameters = self.parameters.get(name)
|
|
210
|
+
if parameters is None:
|
|
211
|
+
raise ValueError(
|
|
212
|
+
f"Profile '{name}' not found in UC sections. "
|
|
213
|
+
"Select a valid profile (available ones: "
|
|
214
|
+
f"{self.profiles()})"
|
|
215
|
+
)
|
|
216
|
+
super().__init__()
|
|
217
|
+
self._h = parameters.get('h')
|
|
218
|
+
self._b = parameters.get('b')
|
|
219
|
+
self._tw = parameters.get('tw')
|
|
220
|
+
self._tf = parameters.get('tf')
|
|
221
|
+
self._r = parameters.get('r')
|
|
222
|
+
self._polygon = _create_I_section(**parameters)
|
|
223
|
+
|
|
224
|
+
@property
|
|
225
|
+
def polygon(self) -> Polygon:
|
|
226
|
+
"""Returns shapely Polygon of section.
|
|
227
|
+
|
|
228
|
+
Returns:
|
|
229
|
+
Polygon: The represention of the UC section.
|
|
230
|
+
"""
|
|
231
|
+
return self._polygon
|
|
232
|
+
|
|
233
|
+
@property
|
|
234
|
+
def h(self) -> float:
|
|
235
|
+
"""Returns height of UC section.
|
|
236
|
+
|
|
237
|
+
Returns:
|
|
238
|
+
float: Height h of UC section.
|
|
239
|
+
"""
|
|
240
|
+
return self._h
|
|
241
|
+
|
|
242
|
+
@property
|
|
243
|
+
def b(self) -> float:
|
|
244
|
+
"""Returns width of UC section.
|
|
245
|
+
|
|
246
|
+
Returns:
|
|
247
|
+
float: Width b of UC section.
|
|
248
|
+
"""
|
|
249
|
+
return self._b
|
|
250
|
+
|
|
251
|
+
@property
|
|
252
|
+
def tw(self) -> float:
|
|
253
|
+
"""Returns thickness of web of UC section.
|
|
254
|
+
|
|
255
|
+
Returns:
|
|
256
|
+
float: Web thickness tw of UC section.
|
|
257
|
+
"""
|
|
258
|
+
return self._tw
|
|
259
|
+
|
|
260
|
+
@property
|
|
261
|
+
def tf(self) -> float:
|
|
262
|
+
"""Returns thickness of flange of UC section.
|
|
263
|
+
|
|
264
|
+
Returns:
|
|
265
|
+
float: Flange thickness tw of UC section.
|
|
266
|
+
"""
|
|
267
|
+
return self._tf
|
|
268
|
+
|
|
269
|
+
@property
|
|
270
|
+
def r(self) -> float:
|
|
271
|
+
"""Returns fillet radius of UC section.
|
|
272
|
+
|
|
273
|
+
Returns:
|
|
274
|
+
float: Fillet radius r of UC section.
|
|
275
|
+
"""
|
|
276
|
+
return self._r
|