5.2 设计加速度反应谱
5.2.1 设计加速度反应谱S(T) 应由下式确定,如图 5.2.1 所示。
式中:T ——周期(s);
T0 ——反应谱直线上升段最大周期,取 0.1s;
Tg ——特征周期(s);
Smax ——设计加速度反应谱最大值(g)。
5.2.2 设计加速度反应谱最大值 Smax 应由下式确定。
Smax = 2.5CiCsCd A (5.2.2)
式中:Ci ——抗震重要性系数,应按本规范表 3.1.3-2 取值;
Cs ——场地系数,水平向和竖向应分别按本规范表 5.2.2-1、表 5.2.2-2 取值;
Cd ——阻尼调整系数,应按本规范第 5.2.4 条确定;
A ——水平向基本地震动峰值加速度,应按本规范表 3.2.2 取值。
5.2.4 除有专门规定外,结构的阻尼比 应取值 0.05。式(5.2.2)中的阻尼调整系数Cd 应按下式取值。
桥梁抗震重要性系数Ci ,应按表 3.1.3-2 确定。
以上参考自《《公路桥梁抗震设计规范》(JTGT 2231-01—2020)》
以下是实现的Python源代码,具体参数请根据规范选择,规范已经在上面列出,参考取值即可
import numpy as np
import matplotlib.pyplot as plt
plt.style.use("classic")
plt.rcParams['font.sans-serif'] = ['SimSun']
plt.rcParams['axes.unicode_minus'] = False
Ci = 1.3 ##抗震重要性系数,按规范3.1.3-2取值
Cs = 0.2 ##场地系数,水平和竖向分别按规范表5.2.2-1、5.2.2-2取值
A = 0.1 ##水平向基本地震动峰值加速度,按规范表3.2.2取值
T1 = 0.02 #起点
T = 6 #最大周期
dT = 0.02 #周期步长
T0 = 0.1 #反应谱直线上升段最大周期,取0.1s
def Cd(kesi):
cd = 1 + (0.05 - kesi) / (0.08 + 1.6 * kesi)#阻尼调整系数,按规范第5.2.4条确定
return max(cd, 0.55)
def S(T5, kesi, Tg): #反应谱公式
Smax = 2.5 * Ci * Cs * Cd(kesi) * A
if T5 <= T0:
return Smax * ((0.6 * T5) / T0)
elif T0 < T5 <= Tg:
return Smax
elif Tg < T5 <= T:
return Smax * (Tg / T5)
T5_range = np.linspace(T1, T, int(T / dT))
kesi_values = [0.0, 0.1, 0.15, 0.2, 0.25] ##阻尼比
colors = ['b', 'g', 'r', 'c', 'm']
Tg_values = [0.3, 0.5, 1] #特征周期
fig, axs = plt.subplots(nrows=len(Tg_values), ncols=1, figsize=(8, 10), sharex=True)
for i, Tg in enumerate(Tg_values):
axs[i].set_title(f'Tg={Tg}s')
axs[i].set_ylabel('加速度反应谱 (m/s^2)')
for kesi, color in zip(kesi_values, colors):
S_range = [S(T5, kesi, Tg) for T5 in T5_range]
axs[i].plot(T5_range, S_range, color=color, label=f'ξ={kesi}', lw=2)
axs[i].legend()
axs[-1].set_xlabel('周期 (s)')
plt.suptitle('地震反应谱')
plt.show()
不同阻尼比:
import numpy as np
import matplotlib.pyplot as plt
plt.style.use("classic")
plt.rcParams['font.sans-serif'] = ['SimSun']
plt.rcParams['axes.unicode_minus'] = False
Ci = 1.3
Cs = 0.2
A = 0.1
Tg = 0.5
T1 = 0.02
T = 6
dT = 0.02
T0 = 0.1
def Cd(kesi):
cd = 1 + (0.05 - kesi) / (0.08 + 1.6 * kesi)
return max(cd, 0.55)
def S(T5, kesi):
Smax = 2.5 * Ci * Cs * Cd(kesi) * A
if T5 <= T0:
return Smax * ((0.6 * T5) / T0)
elif T0 < T5 <= Tg:
return Smax
elif Tg < T5 <= T:
return Smax * (Tg / T5)
T5_range = np.linspace(T1, T, int(T / dT))
kesi_values = [0.05, 0.1, 0.15, 0.2, 0.25]
colors = ['b', 'g', 'r', 'c', 'm']
for kesi, color in zip(kesi_values, colors):
S_range = [S(T5, kesi) for T5 in T5_range]
plt.plot(T5_range, S_range, color=color, label=f'ξ={kesi}',lw=2)
plt.legend()
plt.title('地震反应谱')
plt.xlabel('周期 (s)')
plt.ylabel('加速度反应谱 (m/s^2)')
plt.show()
若只需不同特征周期,只需同不同阻尼比情况下操作删除阻尼比变化的代码,将特征周期作为变量即可。