不同阻尼比不同特征周期下设计加速度反应谱变化Python实现

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()

 若只需不同特征周期,只需同不同阻尼比情况下操作删除阻尼比变化的代码,将特征周期作为变量即可。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值