xxxxxxxxxx
# ๅๅ
ฌๆฅผ็จๅบๅ่ฎก็ฎไนฆ
โ
้ฉฌๅ
โ
ๆฌ่ฎก็ฎไนฆ็ผๅไนๅไป
็จไบๅ
้จๅฟซ้่ฏ็ฎใ่ฎพ่ฎกใ้ช็ฎไน็จ๏ผๆชๆพ่่ๅ
ฌ็คบ็ฒๆนไน็จใ่ฝๅบ่ฆๆฑๅขๅ Latexๅ
ฌๅผ่กไพฟไบ้
่ฏป๏ผๅฆไปๆไธไพฟ่ฟ่ฏท่ฐ
่งฃใ
โ
้ค้้ขๅคๆ ๆณจ๏ผๆฌ่ฎก็ฎไนฆไฝฟ็จๅฝ้
ๆ ๅๅไฝSIใ
โ
ๆฌ่ฎก็ฎไนฆๅทฒ็ป่ฟSAP2000้ช็ฎ๏ผ็ปๆ่ง้ใ
้ฉฌๅ
ๆฌ่ฎก็ฎไนฆ็ผๅไนๅไป ็จไบๅ ้จๅฟซ้่ฏ็ฎใ่ฎพ่ฎกใ้ช็ฎไน็จ๏ผๆชๆพ่่ๅ ฌ็คบ็ฒๆนไน็จใ่ฝๅบ่ฆๆฑๅขๅ Latexๅ ฌๅผ่กไพฟไบ้ ่ฏป๏ผๅฆไปๆไธไพฟ่ฟ่ฏท่ฐ ่งฃใ
้ค้้ขๅคๆ ๆณจ๏ผๆฌ่ฎก็ฎไนฆไฝฟ็จๅฝ้ ๆ ๅๅไฝSIใ
ๆฌ่ฎก็ฎไนฆๅทฒ็ป่ฟSAP2000้ช็ฎ๏ผ็ปๆ่ง้ใ
xxxxxxxxxx
from IPython.display import display, Markdown, Latex, Math
โ
# https://dev.to/callas1900/how-to-display-latex-matrix-as-output-of-a-code-cell-40ck
def latex_matrix(array):
data = ''
for line in array:
if type(line) == type([1]) or type(line) == type([1.1]) or type(line) == type(np.float64(1)):
data += ' %.3E &'%line + r' \\'
continue
if len(line) == 1:
data += ' %.3E &'%line + r' \\\r'
continue
for element in line:
data += ' %.3E &'%element
data += r' \\' + '\n'
#display(Math('\\begin{bmatrix} \n%s\end{bmatrix}'%data))
return '\\begin{bmatrix} \n%s\end{bmatrix}'%data
โ
from IPython.core.display import HTML
HTML("""
<style>
div.output_latex {
text-align: center;
}
โ
.jp-OutputArea-output.jp-RenderedLatex {
text-align: center;
}
โ
div.output_area .MathJax_Display {
text-align: center !important;
}
โ
div.jp-InputArea {
display: none;
}
โ
</style>
""")
xxxxxxxxxx
## 1 ๆกๆถๅธ็ฝฎ
โ
ไธปๆข xๆนๅ 5m x 6่ทจ = 30m
โ
ไธปๆข yๆนๅ 8m x 2่ทจ = 16m
โ
ๆฌกๆข xๆนๅ 1.6m x 5่ทจๆฏๆฆ
ไธปๆข xๆนๅ 5m x 6่ทจ = 30m
ไธปๆข yๆนๅ 8m x 2่ทจ = 16m
ๆฌกๆข xๆนๅ 1.6m x 5่ทจๆฏๆฆ
xxxxxxxxxx
frame_x = 30
frame_y = 16
frame_z = 10
frame_x_span = 5
frame_x_span_n = frame_x/frame_x_span
frame_y_span = 8
frame_y_span_n = frame_y/frame_y_span
frame_y_sub_span = 1.6
frame_y_sub_span_n = frame_y_span/frame_y_sub_span
โ
frame_zs = [4,3,4]
frame_z_abss = [4,7,10]
frame_z_1 = frame_zs[0]
frame_z_2 = frame_zs[1]
frame_z_3 = frame_zs[2]
xxxxxxxxxx
## 2 ่ท่ฝฝ่ฎก็ฎ
โ
### 2.1 ๆดป่ท่ฝฝ
โ
#### 2.1.1 ๅๅ
ฌๆฅผ้ขๆดป่ท่ฝฝ
โ
ๆ นๆฎGB50009-2012 p14
โ
$$
2kN/m^2
$$
โ
$$
\psi_c = 0.7
$$
โ
$$
\psi_f = 0.5
$$
โ
$$
\psi_q = 0.4
$$
โ
#### 2.1.2 ไธไธไบบๅฑ้ขๆดป่ท่ฝฝ
โ
ๆ นๆฎGB50009-2012 p18
โ
$$
0.5kN/m^2
$$
โ
$$
\psi_c = 0.7
$$
โ
$$
\psi_f = 0.5
$$
โ
$$
\psi_q = 0
$$
โ
#### 2.1.3 ้ช่ท่ฝฝ
โ
[้ช่ท่ฝฝๅๅบ](https://www.dlubal.com/zh/solutions/online-services/load-zones)
โ
ๆ นๆฎGB50009-2012 p26
โ
$$
s_0 = 0.5kN/m^2
$$
โ
$$
\mu_r = 1
$$
โ
$$
s_k = \mu_r s_0 = 0.5kN/m^2
$$
xxxxxxxxxx
liveload_floor_perarea = 2000
liveload_roof_perarea = 500
liveload_snow_perarea = 500
xxxxxxxxxx
### 2.2 ๆ่ท่ฝฝ
โ
#### 2.2.1 ่ฝป่ดจๆททๅๅๆฅผๆฟ
โ
ๅๅๆฟ 100ๅ่ฝป่ดจๆททๅๅๆ นๆฎ[ๆๅ
ฌๅธๆฐๆฎ](http://www.yzjz169.com/news/hydt/308.html)๏ผไฟๅฎ่ฎพ่ฎกๅๅผ850 kg/m3,ๅณ85kg/m2๏ผๆๅฎๅ
จๅ1.2e3kg/m3 - ่
โ
็ฑ[่ธๅๅ ๆฐๆททๅๅๆฅผๆฟ(alcๆฅผๆฟ)](https://www.hnalcb.cn/cp/e/57.html)๏ผ1.6m่ทจ้ฟๆฟ่ฝฝๅ5kN/m2
โ
20ๅๆฐดๆณฅ็ ๆตๆพๅนณ 2e3kg/m3๏ผๅณ40kg/m2
10ๅๅฐ็ 2.5e3kg/m3๏ผๅณ25kg/m2
ๆๆจๅฐๆฟ10kg/m2
โ
ๆป่ดจ้ๆ่พๅคงๅผ
ๅๅๆฟ 100ๅ่ฝป่ดจๆททๅๅๆ นๆฎๆๅ ฌๅธๆฐๆฎ๏ผไฟๅฎ่ฎพ่ฎกๅๅผ850 kg/m3,ๅณ85kg/m2๏ผๆๅฎๅ จๅ1.2e3kg/m3 - ่
็ฑ่ธๅๅ ๆฐๆททๅๅๆฅผๆฟ(alcๆฅผๆฟ)๏ผ1.6m่ทจ้ฟๆฟ่ฝฝๅ5kN/m2
20ๅๆฐดๆณฅ็ ๆตๆพๅนณ 2e3kg/m3๏ผๅณ40kg/m2 10ๅๅฐ็ 2.5e3kg/m3๏ผๅณ25kg/m2 ๆๆจๅฐๆฟ10kg/m2
ๆป่ดจ้ๆ่พๅคงๅผ
xxxxxxxxxx
class Material:
def __init__(self, density=0, E = 0):
self.density = density
self.E = E
xxxxxxxxxx
material_lightconcrete = Material(density=1200)
material_cement = Material(density=2000)
material_tile = Material(density=2500)
material_glubam = Material(density=750, E = 1e10)
xxxxxxxxxx
class Layer:
def __init__(self, material, thickness=0):
self.mass_perarea = material.density * thickness
xxxxxxxxxx
็ป่ฎก็ฎ๏ผๆฏๅนณๆน็ฑณ่ดจ้
็ป่ฎก็ฎ๏ผๆฏๅนณๆน็ฑณ่ดจ้
xxxxxxxxxx
floor_layer_lightconcrete = Layer(material_lightconcrete, thickness=0.1)
floor_layer_cement = Layer(material_cement, thickness=0.02)
floor_layer_tile = Layer(material_tile, thickness=0.01)
โ
mass_floor_perarea = floor_layer_lightconcrete.mass_perarea\
+ floor_layer_cement.mass_perarea\
+ floor_layer_tile.mass_perarea
mass_floor_perarea
display(Markdown('$$m=\sum{m_i}='+str(mass_floor_perarea)+'$$'))
xxxxxxxxxx
class Beam:
def __init__(self, material, crosec_width, crosec_height, length=1):
self.crosec_width = crosec_width
self.crosec_height = crosec_height
self.length = length
self.A = crosec_width * crosec_height
self.density_perlength = material.density * self.A
self.I = crosec_width * crosec_height ** 3 /12
โ
beam_sub = Beam(material_glubam, 0.12, 0.36)
beam = Beam(material_glubam, 0.3, 0.6)
column = Beam(material_glubam, 0.3, 0.5)
xxxxxxxxxx
ๆ นๆฎGB50009-2012 3.2.4
โ
่ท่ฝฝ่ฎพ่ฎกๅผ
โ
$$S_d = \max(1.2\sum{G}+1.4\sum{Q}, 1.35\sum{G}+1.4\times0.7Q)$$
โ
่ท่ฝฝๆ ๅๅผ
โ
$$S_s = \sum{G}+Q_1+0.7\sum{Q_i}, (i>1)$$
ๆ นๆฎGB50009-2012 3.2.4
่ท่ฝฝ่ฎพ่ฎกๅผ
่ท่ฝฝๆ ๅๅผ
xxxxxxxxxx
g = 9.8
def designload(deadload,liveload):
return max(
1.2*sum(deadload) + 1.4*sum(liveload),
1.35*sum(deadload) + 1.4*0.7*sum(liveload),
)
def standardload(deadload,liveload):
return sum(deadload)+0.3*liveload[0]+0.7*sum(liveload)
xxxxxxxxxx
### 3.1 ่ฝป่ดจๆททๅๅๆฅผๆฟ
โ
ๅๅๅธ่ท่ฝฝ
ๅๅๅธ่ท่ฝฝ
xxxxxxxxxx
deadload_floor_perarea = mass_floor_perarea * g
designload_floor_perarea = designload([deadload_floor_perarea], [liveload_floor_perarea])
โ
designload_floor_perarea
display(Markdown('$$S_d='+str(designload_floor_perarea)+'$$'))
xxxxxxxxxx
ๅฐไบ5kN
ๅฐไบ5kN
xxxxxxxxxx
ไฝฟ็จ็
ไฝฟ็จ็
xxxxxxxxxx
designload_floor_perarea/5000
display(Markdown('$$utilization='+str(designload_floor_perarea/5000)+'$$'))
xxxxxxxxxx
deadload_beam_sub_perlength = deadload_floor_perarea * frame_y_sub_span\
+ beam_sub.density_perlength * g
liveload_beam_sub_perlength = liveload_floor_perarea * frame_y_sub_span
xxxxxxxxxx
#### 3.2.1 ้ช็ฎๆฟ่ฝฝๅ
โ
$$
\sigma=\cfrac{My}{I}<[\sigma]
$$
โ
ๅ
ถไธญ
โ
$$
M = \cfrac{qL^2}{8}
$$
xxxxxxxxxx
designload_beam_sub_perlength = designload([deadload_beam_sub_perlength], [liveload_beam_sub_perlength])
max_moment_beam_sub = designload_beam_sub_perlength*frame_y_sub_span**2/8
max_sigma_beam_sub = max_moment_beam_sub*beam_sub.crosec_height/2/beam_sub.I
max_sigma_beam_sub
display(Markdown('$$\sigma='+str(max_sigma_beam_sub)+'$$'))
xxxxxxxxxx
ๅฐไบglubamๆๆๅผบๅบฆ
โ
ๆ Y. Wu, Y. Xiao, Steel and glubam hybrid space truss, Engineering Structures 171, 2018, p140, ๅ
ถไปๆๆๅๅญฆๆง่ดจๅ
โ
$$[\sigma] = 1.06e8$$
ๅฐไบglubamๆๆๅผบๅบฆ
ๆ Y. Wu, Y. Xiao, Steel and glubam hybrid space truss, Engineering Structures 171, 2018, p140, ๅ ถไปๆๆๅๅญฆๆง่ดจๅ
xxxxxxxxxx
ไฝฟ็จ็
ไฝฟ็จ็
xxxxxxxxxx
max_sigma_beam_sub/1.06e8
display(Markdown('$$utilization='+str(max_sigma_beam_sub/1.06e8)+'$$'))
xxxxxxxxxx
#### 3.2.2 ้ช็ฎๆญฃๅธธไฝฟ็จๆ้็ถๆไฝ็งป
โ
$$
u = \cfrac{5qL^4}{384EI}< [u] = \cfrac{1}{250}L
$$
xxxxxxxxxx
standardload_beam_sub_perlength = standardload([deadload_beam_sub_perlength], [liveload_beam_sub_perlength])
โ
def disp_distributed_load(q,L,E,I):
return 5*q*L**4/384/E/I
โ
max_disp_beam_sub = disp_distributed_load(standardload_beam_sub_perlength, frame_x_span, material_glubam.E, beam_sub.I)
max_disp_beam_sub
display(Markdown('$$u='+str(max_disp_beam_sub)+'$$'))
xxxxxxxxxx
ๅฐไบ้ๅผ
ๅฐไบ้ๅผ
xxxxxxxxxx
frame_x_span/250
display(Markdown('$$[u]='+str(frame_x_span/250)+'$$'))
xxxxxxxxxx
ไฝฟ็จ็
ไฝฟ็จ็
xxxxxxxxxx
max_disp_beam_sub / (frame_x_span/250)
display(Markdown('$$utilization='+str(max_disp_beam_sub / (frame_x_span/250))+'$$'))
xxxxxxxxxx
deadload_beam_perlength = deadload_floor_perarea * frame_x_span\
+ beam_sub.density_perlength * frame_x_span * (frame_y_sub_span_n-1) * g\
+ beam.density_perlength * g
liveload_beam_perlength = liveload_floor_perarea * frame_x_span
xxxxxxxxxx
designload_beam_perlength = designload([deadload_beam_perlength], [liveload_beam_perlength])
max_moment_beam = designload_beam_perlength*frame_x_span**2/8
max_sigma_beam = max_moment_beam*beam.crosec_height/2/beam.I
max_sigma_beam
display(Markdown('$$\sigma='+str(max_sigma_beam)+'$$'))
xxxxxxxxxx
ๅฐไบglubamๆๆๅผบๅบฆ
โ
$$[\sigma] = 65.3e6$$
ๅฐไบglubamๆๆๅผบๅบฆ
xxxxxxxxxx
ไฝฟ็จ็
ไฝฟ็จ็
xxxxxxxxxx
max_sigma_beam/65.3e6
display(Markdown('$$utilization='+str(max_sigma_beam/65.3e6)+'$$'))
xxxxxxxxxx
#### 3.3.2 ้ช็ฎๆญฃๅธธไฝฟ็จๆ้็ถๆไฝ็งป
xxxxxxxxxx
standardload_beam_perlength = standardload([deadload_beam_perlength], [liveload_beam_perlength])
โ
def disp_distributed_load(q,L,E,I):
return 5*q*L**4/384/E/I
โ
max_disp_beam = disp_distributed_load(standardload_beam_perlength, frame_y_span, material_glubam.E, beam.I)
max_disp_beam
display(Markdown('$$u='+str(max_disp_beam)+'$$'))
xxxxxxxxxx
ๅฐไบ้ๅผ
ๅฐไบ้ๅผ
xxxxxxxxxx
frame_y_span/250
display(Markdown('$$u='+str(frame_y_span/250)+'$$'))
xxxxxxxxxx
ไฝฟ็จ็
ไฝฟ็จ็
xxxxxxxxxx
max_disp_beam / (frame_y_span/250)
display(Markdown('$$utilization='+str(max_disp_beam / (frame_y_span/250))+'$$'))
xxxxxxxxxx
### 3.4 ๆฑ
โ
2ๆฅผใ3ๆฅผใๅฑ้ขๆๆฅผ้ขๆ่ฝฝ๏ผ2ๆฅผใ3ๆฅผๆๅๅ
ฌๆฅผๆดป่ฝฝ๏ผๅฑ้ขๆ้ช่ท่ฝฝ
โ
ๅๅฑๆฑ่ท่ฝฝๅฆไธ
2ๆฅผใ3ๆฅผใๅฑ้ขๆๆฅผ้ขๆ่ฝฝ๏ผ2ๆฅผใ3ๆฅผๆๅๅ ฌๆฅผๆดป่ฝฝ๏ผๅฑ้ขๆ้ช่ท่ฝฝ
ๅๅฑๆฑ่ท่ฝฝๅฆไธ
xxxxxxxxxx
deadload_perstory = deadload_floor_perarea * frame_x * frame_y\
+ (beam_sub.density_perlength * frame_x * (frame_y_sub_span_n-1) * frame_y_span_n\
+ beam.density_perlength * frame_x * (frame_y_span_n+1) \
+ beam.density_perlength * frame_y * (frame_x_span_n+1))*g
โ
deadload_roof_perarea = 500
โ
deadload_roof = deadload_roof_perarea * frame_x * frame_y
โ
liveload_perstory = liveload_floor_perarea * frame_x * frame_y
โ
liveload_snow = liveload_snow_perarea * frame_x * frame_y
โ
liveload_roof = liveload_roof_perarea * frame_x * frame_y
โ
# 3ๆฅผ (ๆๆฃ้คไธไพง่พนๆฑ)
โ
deadload_columns_only_3 = (column.density_perlength * frame_z_3 * (frame_x_span_n+1) * (frame_y_span_n+1)) * g
โ
deadload_columns_3 = deadload_roof + deadload_columns_only_3
โ
liveload_columns_3 = liveload_roof
designload_columns_3 = designload([deadload_columns_3], [liveload_roof, liveload_snow])
standardload_columns_3 = standardload([deadload_columns_3], [liveload_roof, liveload_snow])
โ
designload_column_3 = designload_columns_3/((frame_x_span_n) * (frame_y_span_n))
standardload_column_3 = standardload_columns_3/((frame_x_span_n) * (frame_y_span_n))
โ
print("3ๆฅผๅๆฑ่ท่ฝฝ")
display(Markdown('$$F='+str(designload_column_3)+'$$'))
โ
# 2ๆฅผ๏ผๆๆฃ้คไธไพง่พนๆฑ๏ผ
โ
deadload_columns_only_2 = (column.density_perlength * frame_z_2 * (frame_x_span_n+1) * (frame_y_span_n+1)) * g
โ
deadload_columns_2 = deadload_columns_3 + deadload_perstory + deadload_columns_only_2
liveload_columns_2 = liveload_columns_3 + liveload_perstory
designload_columns_2 = designload([deadload_columns_2], [liveload_columns_2, liveload_snow])
standardload_columns_2 = standardload([deadload_columns_2], [liveload_columns_2, liveload_snow])
โ
designload_column_2 = designload_columns_2/((frame_x_span_n) * (frame_y_span_n))
standardload_column_2 = standardload_columns_2/((frame_x_span_n) * (frame_y_span_n))
โ
print("2ๆฅผๅๆฑ่ท่ฝฝ")
display(Markdown('$$F='+str(designload_column_2)+'$$'))
โ
# 1ๆฅผ๏ผๆๆฃ้คไธไพง่พนๆฑ๏ผ
โ
deadload_columns_only_1 = (column.density_perlength * frame_z_1 * (frame_x_span_n+1) * (frame_y_span_n+1)) * g
โ
deadload_columns_1 = deadload_columns_2 + deadload_perstory + deadload_columns_only_1
liveload_columns_1 = liveload_columns_2 + liveload_perstory
designload_columns_1 = designload([deadload_columns_1], [liveload_columns_1, liveload_snow])
standardload_columns_1 = standardload([deadload_columns_1], [liveload_columns_1, liveload_snow])
โ
designload_column_1 = designload_columns_1/((frame_x_span_n) * (frame_y_span_n))
standardload_column_1 = standardload_columns_1/((frame_x_span_n) * (frame_y_span_n))
โ
print("1ๆฅผๅๆฑ่ท่ฝฝ")
display(Markdown('$$F='+str(designload_column_1)+'$$'))
โ
xxxxxxxxxx
้ฟ็ปๆฏๆ นๆฎGB0005-2017 p32 ๆ่ถๅๆจ่ฎก็ฎ
้ฟ็ปๆฏๆ นๆฎGB0005-2017 p32 ๆ่ถๅๆจ่ฎก็ฎ
xxxxxxxxxx
import numpy as np
a_c = 0.91
b_c = 3.69
c_c = 3.45
beta = 1.05
E_k = 10000e6
f_ck = 71.2e6
โ
lambda_c = c_c * np.sqrt(beta*E_k/f_ck)
lambda_c
โ
display(Markdown('$$\lambda_c='+str(lambda_c)+'$$'))
xxxxxxxxxx
# GB0005-2017 p32
def phi(lambda_):
if lambda_ > lambda_c:
return a_c*np.pi**2*beta*E_k/lambda_**2/f_ck
else:
return 1/(1+(lambda_**2*f_ck)/(b_c*np.pi**2*beta*E_k))
โ
# GB0005-2017 ่กจ 5.1.5 ๆๆไธๅฉๆจกๅผ
k_l = 2.4
โ
# 1ๅฑ
l = k_l*frame_z_1
i = np.sqrt(column.crosec_width**2/12)
lambda_ = l/i
display(Markdown('$$\phi='+str(phi(lambda_))+'$$'))
โ
print("็ญๆๅบๅ")
display(Markdown('$$\sigma='+str(designload_column_1/phi(lambda_)/column.A)+'$$'))
xxxxxxxxxx
ๅฐไบglubamๆๅๅผบๅบฆ
ๅฐไบglubamๆๅๅผบๅบฆ
xxxxxxxxxx
$$[\sigma]=62.9e6$$
xxxxxxxxxx
ๆช้ขๅฎๅ
จ
ๆช้ขๅฎๅ จ
xxxxxxxxxx
ไฝฟ็จ็
ไฝฟ็จ็
xxxxxxxxxx
designload_column_1/phi(lambda_)/column.A/71.2e6
display(Markdown('$$utilization='+str(designload_column_1/phi(lambda_)/column.A/62.9e6)+'$$'))
xxxxxxxxxx
็ฌฆๅๅผบๆฑๅผฑๆข
็ฌฆๅๅผบๆฑๅผฑๆข
xxxxxxxxxx
## 4 ๅฐ้่ฎก็ฎ
โ
ๆ นๆฎ GB18306-2015 ้ๅฝA 6ๅบฆๅณๅฏ
โ
ๆ นๆฎ่่ๅธ ๆ7ๅบฆ่ฎพ้ฒ
โ
ๆ นๆฎ GBT51226-2017 p9 4.3.4.2 ๅฏๆๅบ้จๅชๅๆณ่ฎก็ฎ
ๆ นๆฎ GB18306-2015 ้ๅฝA 6ๅบฆๅณๅฏ
ๆ นๆฎ่่ๅธ ๆ7ๅบฆ่ฎพ้ฒ
ๆ นๆฎ GBT51226-2017 p9 4.3.4.2 ๅฏๆๅบ้จๅชๅๆณ่ฎก็ฎ
xxxxxxxxxx
G_eq = 1 * 3 * deadload_perstory + 1 * 2 * liveload_perstory + 0.5 * liveload_snow
โ
m_1 = (deadload_perstory + liveload_perstory)/g
โ
m_2 = (deadload_perstory + liveload_perstory)/g
โ
m_3 = (deadload_roof + 0.5 * liveload_snow)/g
xxxxxxxxxx
### 4.1 ๅบ้จๅชๅๆณ
โ
#### 4.1.1 ๆๆกๆถ ๅๆง่็น ไธ่่ๆๆ
โ
GB5001-2010 p354 eq5.2.1
โ
GB5001-2010 p33 ่กจ5.1.4-1
โ
ๅค้ๅฐ้ $\alpha_1 = 0.08$ ็ฝ้ๅฐ้ $\alpha_1 = 0.50$
โ
ๅ$\alpha_1 = 0.50$
xxxxxxxxxx
alpha_1_common = 0.08
alpha_1_rare = 0.5
โ
alpha_1 = alpha_1_rare
xxxxxxxxxx
G_eq = 0.85*(m_1+m_2+m_3)*g
display(Math('G_{eq} = '+str(G_eq)))
xxxxxxxxxx
F_Ek = alpha_1 * G_eq
G = [m_1 * g, m_2 * g, m_3 * g]
H = frame_z_abss
F_1s_1 = G[0]*H[0]/np.dot(G,H)*F_Ek*(1-0)
โ
display(Math('F_{1s,1} = '+str(F_1s_1)))
xxxxxxxxxx
#### 4.1.2 ๆ้ฐๆฅ ่่ๆๆ๏ผ้ๅฑๆฒๆฏๆ๏ผ ่ฎก็ฎ
โ
ๆฏๆ
โ
$$0.2 \times 0.2$$
โ
็ปๆ็ฎๅไธบ้ๅฎๆกๆถ๏ผๆฏๆๆ่ฝดๅๆไปถ่ฎก็ฎ
ๆฏๆ
็ปๆ็ฎๅไธบ้ๅฎๆกๆถ๏ผๆฏๆๆ่ฝดๅๆไปถ่ฎก็ฎ
xxxxxxxxxx
v_support = Beam(material_glubam, 0.2, 0.2)
v_support_length = np.sqrt((frame_y_span/2)**2+(frame_z_1)**2)
cos_theta = (frame_y_span/2)/v_support_length
N = F_1s_1/4/cos_theta
โ
l = k_l*v_support_length
i = np.sqrt(v_support.crosec_width**2/12)
lambda_ = l/i
display(Markdown('$$\phi='+str(phi(lambda_))+'$$'))
xxxxxxxxxx
print("็ญๆๅบๅ")
display(Markdown('$$\sigma='+str(N/phi(lambda_)/column.A)+'$$'))
xxxxxxxxxx
ๅฐไบglubamๆๅๅผบๅบฆ
ๅฐไบglubamๆๅๅผบๅบฆ
xxxxxxxxxx
$$[\sigma] = 62.9e6$$
xxxxxxxxxx
ๆฏๆๅฎๅ
จ
ๆฏๆๅฎๅ จ
xxxxxxxxxx
# GB50011-2010 p35
โ
def stiffness_per_column(E, I, L):
return 12 * E*I/L**3
โ
k_1 = (frame_y_span_n+1) * stiffness_per_column(material_glubam.E, column.I, frame_z_1)
โ
k_2 = (frame_y_span_n+1) * stiffness_per_column(material_glubam.E, column.I, frame_z_2)
โ
k_3 = (frame_y_span_n) * stiffness_per_column(material_glubam.E, column.I, frame_z_3)
โ
m = np.array(
[[m_1,0,0],
[0,m_2,0],
[0,0,m_3]])
โ
k = np.array(
[[k_1+k_2, -k_2, 0],
[ -k_2, k_2+k_3, -k_3],
[ 0, -k_3, k_3]])
xxxxxxxxxx
$$
(\mathbf{k}-\mathbf{\omega^2} \mathbf{m}) \mathbf{\phi} = \mathbf{0}
$$
xxxxxxxxxx
from scipy.linalg import eigh, det
eigvals, eigvecs = eigh(k, m, eigvals_only=False)
eigvecs_normed = eigvecs / np.linalg.norm(eigvecs, axis=0)
xxxxxxxxxx
ๆฏๅ
ๆฏๅ
xxxxxxxxxx
display(Math('\mathbf{\Phi} = '+latex_matrix(eigvecs)))
import matplotlib.pyplot as plt
plt.figure(figsize=(2, 4))
plt.plot(np.append([0],eigvecs[:,0]), np.append([0],frame_z_abss),label='$\phi_1$')
plt.plot(np.append([0],eigvecs[:,1]), np.append([0],frame_z_abss),label='$\phi_2$')
plt.plot(np.append([0],eigvecs[:,2]), np.append([0],frame_z_abss),label='$\phi_3$')
plt.legend();
plt.xlabel('$\phi$');
plt.ylabel('$z$');
xxxxxxxxxx
$w^2$
xxxxxxxxxx
display(Math('w^2 = '+latex_matrix(eigvals)))
xxxxxxxxxx
่ชๆฏๅจๆ
่ชๆฏๅจๆ
xxxxxxxxxx
T = []
for i, w2 in enumerate(eigvals):
T.append(2*np.pi/np.sqrt(w2))
display(Math('T = '+latex_matrix(T)))
xxxxxxxxxx
้่ฆๅบๅฐไฟกๆฏ่ฟ่กๅ็ปญ่ฎก็ฎ
โ
ๆๆ$0.1g$, $T_g = 0.4$
โ
ๆ นๆฎ
โ
GB50011-2010 p34 5.1.5
โ
GB50011-2010 p36 5.2.2
โ
ๆSRSS็ปๅ
้่ฆๅบๅฐไฟกๆฏ่ฟ่กๅ็ปญ่ฎก็ฎ
ๆๆ,
ๆ นๆฎ
GB50011-2010 p34 5.1.5
GB50011-2010 p36 5.2.2
ๆSRSS็ปๅ
xxxxxxxxxx
T_g = 0.4
alpha_max = 0.5
# GB50011-2010 p34 5.1.5
def alpha(T, T_g, alpha_max, eta_2=1, zeta=0.05):
gamma = 0.9 + (0.05-zeta)/(0.3+6*zeta)
if T<0.1:
alpha = (5.5*T+0.45)*eta_2*alpha_max
elif T<T_g:
alpha = eta_2*alpha_max
elif T<5*T_g:
alpha = np.power(T_g/T,gamma)*eta_2*alpha_max
elif T<6:
eta_1 = 0.02+(0.05-zeta)/(4+32*zeta)
if eta_1<0:
eta_1 = 0
alpha = np.abs(eta_2*np.power(0.2, gamma)-eta_1*(T-5*T_g))*alpha_max
return(alpha)
โ
G = np.array([m_1, m_2, m_3])*g
gamma_j = (eigvecs.T@G)/((eigvecs.T*eigvecs.T)@G)
โ
alpha_j = np.array([alpha(T[0], T_g, alpha_max), alpha(T[1], T_g, alpha_max), alpha(T[2], T_g, alpha_max)])
F = eigvecs.copy()
โ
for j in range(len(gamma_j)):
for i in range(len(G)):
F[j,i] = alpha_j[j]*gamma_j[j]*eigvecs[j,i]*G[i]
display(Math('F = '+latex_matrix(F)))
โ
F_1s_2 = np.sqrt(sum(F[:,1]*F[:,1]))
display(Math('F_{1s,2} = '+str(F_1s_2)))
xxxxxxxxxx
#### 4.2.2 ๆ้ฐๆฅ ่่ๆๆ๏ผ้ๅฑๆฒๆฏๆ๏ผ ่ฎก็ฎ
โ
ๆฏๆ
โ
$$0.3 \times 0.3$$
xxxxxxxxxx
# GB50011-2010 p35
โ
v_support = Beam(material_glubam, 0.2, 0.2)
v_support_length = np.sqrt((frame_y_span/2)**2+(frame_z_1)**2)
cos_theta = (frame_y_span/2)/v_support_length
โ
k_1 = 4 * material_glubam.E * v_support.A * cos_theta
โ
k_2 = k_1
โ
k_3 = k_1
โ
m = np.array(
[[m_1,0,0],
[0,m_2,0],
[0,0,m_3]])
โ
k = np.array(
[[k_1+k_2, -k_2, 0],
[ -k_2, k_2+k_3, -k_3],
[ 0, -k_3, k_3]])
xxxxxxxxxx
$$
(\mathbf{k}-\mathbf{\omega^2} \mathbf{m}) \mathbf{\phi} = \mathbf{0}
$$
xxxxxxxxxx
from scipy.linalg import eigh, det
eigvals, eigvecs = eigh(k, m, eigvals_only=False)
eigvecs_normed = eigvecs / np.linalg.norm(eigvecs, axis=0)
xxxxxxxxxx
ๆฏๅ
ๆฏๅ
xxxxxxxxxx
display(Math('\mathbf{\Phi} = '+latex_matrix(eigvecs)))
import matplotlib.pyplot as plt
plt.figure(figsize=(2, 4))
plt.plot(np.append([0],eigvecs[:,0]), np.append([0],frame_z_abss),label='$\phi_1$')
plt.plot(np.append([0],eigvecs[:,1]), np.append([0],frame_z_abss),label='$\phi_2$')
plt.plot(np.append([0],eigvecs[:,2]), np.append([0],frame_z_abss),label='$\phi_3$')
plt.legend();
plt.xlabel('$\phi$');
plt.ylabel('$z$');
xxxxxxxxxx
$w^2$
xxxxxxxxxx
display(Math('w^2 = '+latex_matrix(eigvals)))
xxxxxxxxxx
่ชๆฏๅจๆ
่ชๆฏๅจๆ
xxxxxxxxxx
T = []
for i, w2 in enumerate(eigvals):
T.append(2*np.pi/np.sqrt(w2))
display(Math('T = '+latex_matrix(T)))
xxxxxxxxxx
้่ฆๅบๅฐไฟกๆฏ่ฟ่กๅ็ปญ่ฎก็ฎ
โ
ๆๆ$0.1g$, $T_g = 0.4$
โ
ๆ นๆฎ
โ
GB50011-2010 p34 5.1.5
โ
GB50011-2010 p36 5.2.2
โ
ๆSRSS็ปๅ
้่ฆๅบๅฐไฟกๆฏ่ฟ่กๅ็ปญ่ฎก็ฎ
ๆๆ,
ๆ นๆฎ
GB50011-2010 p34 5.1.5
GB50011-2010 p36 5.2.2
ๆSRSS็ปๅ
xxxxxxxxxx
T_g = 0.4
alpha_max = 0.5
# GB50011-2010 p34 5.1.5
def alpha(T, T_g, alpha_max, eta_2=1, zeta=0.05):
gamma = 0.9 + (0.05-zeta)/(0.3+6*zeta)
if T<0.1:
alpha = (5.5*T+0.45)*eta_2*alpha_max
elif T<T_g:
alpha = eta_2*alpha_max
elif T<5*T_g:
alpha = np.power(T_g/T,gamma)*eta_2*alpha_max
elif T<6:
eta_1 = 0.02+(0.05-zeta)/(4+32*zeta)
if eta_1<0:
eta_1 = 0
alpha = np.abs(eta_2*np.power(0.2, gamma)-eta_1*(T-5*T_g))*alpha_max
return(alpha)
โ
G = np.array([m_1, m_2, m_3])*g
gamma_j = (eigvecs.T@G)/((eigvecs.T*eigvecs.T)@G)
โ
alpha_j = np.array([alpha(T[0], T_g, alpha_max), alpha(T[1], T_g, alpha_max), alpha(T[2], T_g, alpha_max)])
F = eigvecs.copy()
โ
for j in range(len(gamma_j)):
for i in range(len(G)):
F[j,i] = alpha_j[j]*gamma_j[j]*eigvecs[j,i]*G[i]
display(Math('F = '+latex_matrix(F)))
โ
F_1s_2 = np.sqrt(sum(F[:,1]*F[:,1]))
display(Math('F_{1s,2} = '+str(F_1s_2)))
xxxxxxxxxx
็ปๆ็ฎๅไธบ้ๅฎๆกๆถ๏ผๆฏๆๆ่ฝดๅๆไปถ่ฎก็ฎ
็ปๆ็ฎๅไธบ้ๅฎๆกๆถ๏ผๆฏๆๆ่ฝดๅๆไปถ่ฎก็ฎ
xxxxxxxxxx
N = F_1s_2/4/cos_theta
โ
l = k_l*v_support_length
i = np.sqrt(v_support.crosec_width**2/12)
lambda_ = l/i
display(Markdown('$$\phi='+str(phi(lambda_))+'$$'))
xxxxxxxxxx
print("็ญๆๅบๅ")
display(Markdown('$$\sigma='+str(N/phi(lambda_)/column.A)+'$$'))
xxxxxxxxxx
ๅฐไบglubamๆๅๅผบๅบฆ
ๅฐไบglubamๆๅๅผบๅบฆ
xxxxxxxxxx
$$[\sigma] = 62.9e6$$
xxxxxxxxxx
ๆฏๆๅฎๅ
จ
ๆฏๆๅฎๅ จ
xxxxxxxxxx
## 4.3 ้ช็ฎ1ๅฑๅๆฑ
โ
1ๅฑๆปๆจชๅๅๆไธ่ฟฐๆนๆณไธญ่พๅคงๅผ
1ๅฑๆปๆจชๅๅๆไธ่ฟฐๆนๆณไธญ่พๅคงๅผ
xxxxxxxxxx
F_1s = max(F_1s_1, F_1s_2)
display(Math('F_1s = '+str(F_1s)))
xxxxxxxxxx
ๆฑ่งฃๅๅฑ2ๆฆ่ฟ็ปญ้ขๆถ๏ผไธๅฎ้
็ปๆ็ธๆฏ่ฏฅ็ปๆ็บฆๆไธ่ถณ๏ผๆดๅ ๅฑ้ฉ๏ผๅ ๆญค่ฎก็ฎๆฏๅฎๅ
จ็๏ผ๏ผๅ
จ่็นๅบๆฅ๏ผไธ่่ไบ้ถๆๅบ๏ผๆUCB CEE220
ๆฑ่งฃๅๅฑ2ๆฆ่ฟ็ปญ้ขๆถ๏ผไธๅฎ้ ็ปๆ็ธๆฏ่ฏฅ็ปๆ็บฆๆไธ่ถณ๏ผๆดๅ ๅฑ้ฉ๏ผๅ ๆญค่ฎก็ฎๆฏๅฎๅ จ็๏ผ๏ผๅ จ่็นๅบๆฅ๏ผไธ่่ไบ้ถๆๅบ๏ผๆUCB CEE220
xxxxxxxxxx
EIc = material_glubam.E*column.I
EIb = material_glubam.E*beam.I
Lc = frame_z_1
Lb = frame_y_span
k11 = 12*EIc/Lc**3 * 3
k12 = -6*EIc/Lc**2
k13 = k12
k14 = k12
k21 = k12
k22 = 4*EIc/Lc + 4*EIb/Lb
k23 = EIb/Lb
k24 = 0
k31 = k13
k32 = k23
k33 = 4*EIc/Lc + 8*EIb/Lb
k34 = k23
k41 = k14
k42 = k24
k43 = k34
k44 = k22
โ
K = np.array([
[k11,k12,k13,k14],
[k21,k22,k23,k24],
[k31,k32,k33,k34],
[k41,k42,k43,k44]
])*(frame_x_span_n+1)
โ
display(Math('K = '+latex_matrix(K)))
โ
P0 = np.array([F_1s, 0,0,0])
display(Math('P_0 = '+latex_matrix(P0)))
Uf = np.linalg.inv(K)@P0
โ
print("1ๅฑๅนฟไนไฝ็งป")
display(Math('U_f = '+latex_matrix(Uf)))
โ
F_1 = Uf[0]*12*EIc/Lc**3 - Uf[2]*6*EIc/Lc**2
print("1ๆฅผไธญๆฑๅชๅ")
display(Math('F_1 = '+str(F_1)))
โ
M_1 = Uf[0]*(-6)*EIc/Lc**2 + Uf[2]*2*EIc/Lc
print("1ๆฅผไธญๆฑๆฏๅบงๅผฏ็ฉ")
display(Math('M_1 = '+str(M_1)))
xxxxxxxxxx
ๆ นๆฎ GB50005-2017 p39 5.3.2 ้ช็ฎๅผบๅบฆ
ๆ นๆฎ GB50005-2017 p39 5.3.2 ้ช็ฎๅผบๅบฆ
xxxxxxxxxx
N = standardload_column_1
A_n = column.A
f_c = 71.2e6
M_0 = -M_1
e_0 = 0.05 * column.crosec_height
Wn = column.I/(column.crosec_height/2)
f_m = 84.3e6
โ
N/A_n/f_c + (M_0+N*e_0)/Wn/f_m<1
display(Math('\cfrac{N}{A_n f_c} + \cfrac{M_0+Ne_0}{Wn f_m} = '+str(N/A_n/f_c + (M_0+N*e_0)/Wn/f_m) + '<1'))
โ
xxxxxxxxxx
ๆ นๆฎ GB50005-2017 p39 5.3.2 ้ช็ฎ็จณๅฎๆง
ๆ นๆฎ GB50005-2017 p39 5.3.2 ้ช็ฎ็จณๅฎๆง
xxxxxxxxxx
A_0 = column.A
A = column.A
k = (M_0+N*e_0)/Wn/f_m/(1+np.sqrt(N/A/f_c))
display(Math('k = \cfrac{M_0+N e_0}{Wn f_m (1+\sqrt{\cfrac{N}{A f_c}})} = '+str((M_0+N*e_0)/Wn/f_m/(1+np.sqrt(N/A/f_c)))))
k_0 = N*e_0/(Wn*f_m*(1+np.sqrt(N/A/f_c)))
display(Math('k_0 = \cfrac{N e_0}{Wn f_m (1+\sqrt{\cfrac{N}{A f_c}})} = '+str(N*e_0/(Wn*f_m*(1+np.sqrt(N/A/f_c))))))
phi_m=(1-k)**2*(1-k_0)
display(Math('\phi_m=(1-k)^2 (1-k_0) = '+str((1-k)**2*(1-k_0))))
N/phi(lambda_)/phi_m/A_0
display(Math('\cfrac{N}{\phi \phi_m A_0} = '+str(N/phi(lambda_)/phi_m/A_0) + '< ' + str(f_c)))
xxxxxxxxxx
ๆไปถ็จณๅฎ
ๆไปถ็จณๅฎ
xxxxxxxxxx
ๆ นๆฎ GB50005-2017 p39 5.3.3 ้ช็ฎไพงๅ็จณๅฎๆง
$\phi_l$ ๆ นๆฎGB50005-2017 p34 5.2.2 ๆ่ถๅๆจ่ฎก็ฎ
โ
$f_{mk}$ ๆ นๆฎ Y. Wu, Y. Xiao, Steel and glubam hybrid space truss, Engineering Structures 171, 2018, p140 ๅ$84.3e6$
ๆ นๆฎ GB50005-2017 p39 5.3.3 ้ช็ฎไพงๅ็จณๅฎๆง
ๆ นๆฎGB50005-2017 p34 5.2.2 ๆ่ถๅๆจ่ฎก็ฎ
ๆ นๆฎ Y. Wu, Y. Xiao, Steel and glubam hybrid space truss, Engineering Structures 171, 2018, p140 ๅ
xxxxxxxxxx
l = k_l*frame_z_1
i = np.sqrt(column.crosec_width**2/12)
lambda_ = l/i
โ
I_y = column.crosec_height**3*column.crosec_width/12
lambda_y = l/np.sqrt(I_y / column.A)
phi_y = phi(lambda_y)
W = I_y/(column.crosec_width/2)
โ
a_m = 0.7
b_m = 4.9
c_m = 0.9
beta = 1.05
E_k = 10000e6
f_mk = 84.3e6
lambda_m = c_m*np.sqrt(beta*E_k/f_mk)
b = column.crosec_width
h = column.crosec_height
l_e = frame_z_1
lambda_B = np.sqrt(l_e*h/b**2)
if lambda_B>lambda_m:
phi_l = a_m*beta*E_k/lambda_B**2/f_mk
else:
phi_l = 1/(1+lambda_B**2*f_mk/b_m/beta/E_k)
โ
N/phi_y/A_0/f_c + ((M_0)/phi_l/W/f_m)**2
display(Math('\cfrac{N}{\phi_y A_0 f_c} + (\cfrac{M_0}{\phi_l W f_m})^2 = '+str(N/phi_y/A_0/f_c + ((M_0)/phi_l/W/f_m)**2) + '<1'))
xxxxxxxxxx
ไพงๅ็จณๅฎ
ไพงๅ็จณๅฎ
โ