@@ -27,62 +27,82 @@ def _pile_element_surface(model):
27
27
Returns
28
28
-------
29
29
np.ndarray
30
- outside surface
30
+ outside surface
31
31
np.ndarray
32
- inside surface
32
+ inside surface
33
33
"""
34
- perimeter_outside = model .element_properties ['Diameter [m]' ].values * m .pi
35
- perimeter_inside = (model .element_properties ['Diameter [m]' ].values - 2 * model .element_properties ['Wall thickness [m]' ]) * m .pi
36
- L = (model .element_properties ['x_top [m]' ].values - model .element_properties ['x_bottom [m]' ].values )
34
+ perimeter_outside = model .element_properties ["Diameter [m]" ].values * m .pi
35
+ perimeter_inside = (
36
+ model .element_properties ["Diameter [m]" ].values
37
+ - 2 * model .element_properties ["Wall thickness [m]" ]
38
+ ) * m .pi
39
+ L = (
40
+ model .element_properties ["x_top [m]" ].values
41
+ - model .element_properties ["x_bottom [m]" ].values
42
+ )
43
+
44
+ return perimeter_outside * L , perimeter_inside * L
37
45
38
- return perimeter_outside * L , perimeter_inside * L
39
46
40
47
def _pile_inside_volume (model ):
41
- area_inside = (model .element_properties ['Diameter [m]' ].values - 2 * model .element_properties ['Wall thickness [m]' ])** 2 * m .pi / 4
42
- L = (model .element_properties ['x_top [m]' ].values - model .element_properties ['x_bottom [m]' ].values )
43
-
44
- return area_inside * L
48
+ area_inside = (
49
+ (
50
+ model .element_properties ["Diameter [m]" ].values
51
+ - 2 * model .element_properties ["Wall thickness [m]" ]
52
+ )
53
+ ** 2
54
+ * m .pi
55
+ / 4
56
+ )
57
+ L = (
58
+ model .element_properties ["x_top [m]" ].values
59
+ - model .element_properties ["x_bottom [m]" ].values
60
+ )
61
+
62
+ return area_inside * L
63
+
45
64
46
65
def _embedded_pile_effective_weight (model ):
47
-
48
- embedded_element = model .element_properties ['x_bottom [m]' ].values < model .soil .top_elevation
49
- submerged_element = model .element_properties ['x_bottom [m]' ].values < model .soil .water_line
50
-
51
- L = (model .element_properties ['x_top [m]' ].values - model .element_properties ['x_bottom [m]' ].values )
52
- V = L * model .element_properties ['Area [m2]' ].values
66
+
67
+ embedded_element = model .element_properties ["x_bottom [m]" ].values < model .soil .top_elevation
68
+ submerged_element = model .element_properties ["x_bottom [m]" ].values < model .soil .water_line
69
+
70
+ L = (
71
+ model .element_properties ["x_top [m]" ].values
72
+ - model .element_properties ["x_bottom [m]" ].values
73
+ )
74
+ V = L * model .element_properties ["Area [m2]" ].values
53
75
W = np .zeros (shape = V .shape )
54
- W [submerged_element ] = V [submerged_element ]* (model .pile ._uw - 10 )
55
- W [~ submerged_element ] = V [~ submerged_element ]* (model .pile ._uw )
76
+ W [submerged_element ] = V [submerged_element ] * (model .pile ._uw - 10 )
77
+ W [~ submerged_element ] = V [~ submerged_element ] * (model .pile ._uw )
56
78
W [~ embedded_element ] = 0
57
79
58
80
return W .sum ()
59
81
60
- def bearingcapacity (
61
- model ,
62
- kind
63
- ):
82
+
83
+ def bearingcapacity (model , kind ):
64
84
if kind == "API" :
65
85
if not all ([x .bearingcapacity_signature == "API" for x in model .soil .layer .axial_model ]):
66
- ValueError ("All axial models must be API compliant." )
86
+ ValueError ("All axial models must be API compliant." )
67
87
68
- plugged = shaft_resistance (model ,outer_shaft = True , inner_shaft = False )
69
- + unit_end_bearing (model )* model .pile .tip_area
70
- - entrapped_soil_weight (model )
88
+ plugged = shaft_resistance (model , outer_shaft = True , inner_shaft = False )
89
+ + unit_end_bearing (model ) * model .pile .tip_area
90
+ - entrapped_soil_weight (model )
71
91
# - model.
72
92
73
- # unplugged =
93
+ # unplugged =
74
94
75
- # isplugged =
95
+ # isplugged =
76
96
77
97
return {
78
- 'Compression' :
79
- {
80
- 'shaft_resistance' : 0 ,
98
+ "Compression" : {
99
+ "shaft_resistance" : 0 ,
81
100
}
82
101
}
83
102
103
+
84
104
def unit_end_bearing (
85
- model ,
105
+ model ,
86
106
) -> float :
87
107
88
108
for layer in model .soil .layers :
@@ -94,21 +114,23 @@ def unit_end_bearing(
94
114
layer .top >= model .pile .bottom_elevation
95
115
and layer .bottom <= model .pile .bottom_elevation
96
116
):
97
- #vertical effective stress at pile tip
98
- sig_v_tip = model .soil_properties ["sigma_v bottom [kPa]" ].iloc [- 1 ],
117
+ # vertical effective stress at pile tip
118
+ sig_v_tip = ( model .soil_properties ["sigma_v bottom [kPa]" ].iloc [- 1 ],)
99
119
100
120
# Calculate unit tip resistance with effective area
101
- return layer .axial_model .unit_tip_resistance (
102
- sig = sig_v_tip ,
103
- depth_from_top_of_layer = (model .soil .top_elevation - model .soil .bottom_elevation ),
104
- layer_height = (layer .top - layer .bottom )
105
- ) * layer .axial_model .Q_multiplier
106
-
107
-
108
-
109
- def entrapped_soil_weight (
110
- model
111
- ) -> float :
121
+ return (
122
+ layer .axial_model .unit_tip_resistance (
123
+ sig = sig_v_tip ,
124
+ depth_from_top_of_layer = (
125
+ model .soil .top_elevation - model .soil .bottom_elevation
126
+ ),
127
+ layer_height = (layer .top - layer .bottom ),
128
+ )
129
+ * layer .axial_model .Q_multiplier
130
+ )
131
+
132
+
133
+ def entrapped_soil_weight (model ) -> float :
112
134
"""calculates total weight of soil inside the pile. (Unit: kN)
113
135
114
136
Parameters
@@ -121,35 +143,39 @@ def entrapped_soil_weight(
121
143
float
122
144
value of entrapped total weight of soil inside the pile in unit:kN
123
145
"""
124
- # soil volume
146
+ # soil volume
125
147
Vi = _pile_inside_volume (model )
126
- #element mid-point elevation
127
- elevation = 0.5 * (model .soil_properties ["x_top [m]" ]+ model .soil_properties [ "x_bottom [m]" ])
148
+ # element mid-point elevation
149
+ elevation = 0.5 * (model .soil_properties ["x_top [m]" ] + model .soil_properties ["x_bottom [m]" ])
128
150
# soil weight for each element where we have soil and pile
129
151
element_sw = np .zeros (model .element_number )
130
152
131
153
for layer in model .soil .layers :
132
154
elements_for_layer = model .soil_properties .loc [
133
- (model .soil_properties ["x_top [m]" ] <= layer .top )
134
- & (model .soil_properties ["x_bottom [m]" ] >= layer .bottom )
135
- ].index
155
+ (model .soil_properties ["x_top [m]" ] <= layer .top )
156
+ & (model .soil_properties ["x_bottom [m]" ] >= layer .bottom )
157
+ ].index
136
158
137
159
if layer .axial_model is None :
138
160
pass
139
161
else :
140
162
# Set local layer parameters for each element of the layer
141
163
for i in elements_for_layer :
142
164
# Calculate inner soil weight
143
- element_sw [i ] = layer .weight * Vi [i ] if elevation [i ] <= model .soil .water_line else (layer .weight - 10 ) * Vi [i ]
165
+ element_sw [i ] = (
166
+ layer .weight * Vi [i ]
167
+ if elevation [i ] <= model .soil .water_line
168
+ else (layer .weight - 10 ) * Vi [i ]
169
+ )
144
170
145
171
return element_sw .sum ()
146
172
147
173
148
174
def shaft_resistance (
149
- model ,
150
- outer_shaft :bool = True ,
151
- inner_shaft :bool = True ,
152
- ) -> float :
175
+ model ,
176
+ outer_shaft : bool = True ,
177
+ inner_shaft : bool = True ,
178
+ ) -> float :
153
179
"""Calculates shaft resistance of the pile based on the axial models assigned to the SoilProfile layers. (Unit: kN)
154
180
155
181
Parameters
@@ -170,44 +196,60 @@ def shaft_resistance(
170
196
So , Si = _pile_element_surface (model )
171
197
172
198
# get vertical effective stress
173
- sigveff = 0.5 * (model .soil_properties ["sigma_v top [kPa]" ]+ model .soil_properties ["sigma_v bottom [kPa]" ])
199
+ sigveff = 0.5 * (
200
+ model .soil_properties ["sigma_v top [kPa]" ] + model .soil_properties ["sigma_v bottom [kPa]" ]
201
+ )
174
202
175
203
# depth from ground
176
- depth_from_ground = (0.5 * (model .soil_properties ["xg_top [m]" ]+ model .soil_properties ["xg_bottom [m]" ])).abs ()
204
+ depth_from_ground = (
205
+ 0.5 * (model .soil_properties ["xg_top [m]" ] + model .soil_properties ["xg_bottom [m]" ])
206
+ ).abs ()
177
207
178
208
# shaft resistance for each element where we have soil and pile
179
- element_fs = np .zeros ((2 ,model .element_number ))
209
+ element_fs = np .zeros ((2 , model .element_number ))
180
210
181
211
for layer in model .soil .layers :
182
212
elements_for_layer = model .soil_properties .loc [
183
- (model .soil_properties ["x_top [m]" ] <= layer .top )
184
- & (model .soil_properties ["x_bottom [m]" ] >= layer .bottom )
185
- ].index
213
+ (model .soil_properties ["x_top [m]" ] <= layer .top )
214
+ & (model .soil_properties ["x_bottom [m]" ] >= layer .bottom )
215
+ ].index
186
216
187
217
if layer .axial_model is None :
188
218
pass
189
219
else :
190
220
# Set local layer parameters for each element of the layer
191
221
for i in elements_for_layer :
192
222
# depth from ground
193
- depth_from_ground = (model .soil_properties [["xg_top [m]" , "xg_bottom [m]" ]].iloc [i ]).abs ().mean ()
223
+ depth_from_ground = (
224
+ (model .soil_properties [["xg_top [m]" , "xg_bottom [m]" ]].iloc [i ]).abs ().mean ()
225
+ )
194
226
195
227
# Calculate outer shaft resistance
196
- element_fs [0 ,i ] = layer .axial_model .unit_shaft_friction (
197
- sig = sigveff [i ],
198
- depth_from_top_of_layer = depth_from_ground ,
199
- layer_height = (layer .top - layer .bottom ),
200
- ) * layer .axial_model .unit_shaft_signature (So [i ],Si [i ])['out' ] * So [i ] * layer .axial_model .t_multiplier
228
+ element_fs [0 , i ] = (
229
+ layer .axial_model .unit_shaft_friction (
230
+ sig = sigveff [i ],
231
+ depth_from_top_of_layer = depth_from_ground ,
232
+ layer_height = (layer .top - layer .bottom ),
233
+ )
234
+ * layer .axial_model .unit_shaft_signature (So [i ], Si [i ])["out" ]
235
+ * So [i ]
236
+ * layer .axial_model .t_multiplier
237
+ )
201
238
# Calculate inner shaft resistance
202
- element_fs [1 ,i ] = layer .axial_model .unit_shaft_friction (
203
- sig = sigveff [i ],
204
- depth_from_top_of_layer = depth_from_ground ,
205
- layer_height = (layer .top - layer .bottom ),
206
- ) * layer .axial_model .unit_shaft_signature (So [i ],Si [i ])['in' ] * Si [i ] * layer .axial_model .t_multiplier
239
+ element_fs [1 , i ] = (
240
+ layer .axial_model .unit_shaft_friction (
241
+ sig = sigveff [i ],
242
+ depth_from_top_of_layer = depth_from_ground ,
243
+ layer_height = (layer .top - layer .bottom ),
244
+ )
245
+ * layer .axial_model .unit_shaft_signature (So [i ], Si [i ])["in" ]
246
+ * Si [i ]
247
+ * layer .axial_model .t_multiplier
248
+ )
207
249
208
250
if outer_shaft is False :
209
- element_fs [0 ,:] = 0.0
251
+ element_fs [0 , :] = 0.0
210
252
if inner_shaft is False :
211
- element_fs [1 ,:] = 0.0
253
+ element_fs [1 , :] = 0.0
212
254
213
- return element_fs .sum ()
255
+ return element_fs .sum ()
0 commit comments