python地震动反应谱

合集下载

python地震数据可视化详解

python地震数据可视化详解

python地震数据可视化详解本⽂实例为⼤家分享了python地震数据可视化的具体代码,供⼤家参考,具体内容如下参考源码:准备⼯作:在windows10下安装python3.7,下载参考源码到本地。

1. demo绘图测试demo绘图指令cmd> python seisplot.py --demo问题1)缺少依赖包File "D:/Desktop/python可视化/seisplot/seisplot.py", line 16, in <module>import yamlModuleNotFoundError: No module named 'yaml'>pip3 install yamlCould not find a version that satisfies the requirement yaml (from versions: )No matching distribution found for yaml查看environment.yml:channels:- defaults- conda-forgedependencies:- matplotlib- numpy- obspy- pillow- pyyaml安装相关依赖包,如 obspy pillow pyyamlcmd> pip3 install obspy出现proxy error,添加选项 --proxy server:port安装ok问题2)配置⽂件的编码异常D:\Desktop\python可视化\seisplot>python seisplot.py --demo[91mWelcome to┌─┐┌─┐┬┌─┐┌─┐┬┌─┐┌┬┐└─┐├┤│└─┐├─┘││││└─┘└─┘┴└─┘┴┴─┘└─┘┴Good luck[0mTraceback (most recent call last):File "seisplot.py", line 421, in <module>cfg = yaml.load(f)File "D:\ProgramFiles\Python36\lib\site-packages\yaml\__init__.py", line 70, in loadloader = Loader(stream)File "D:\ProgramFiles\Python36\lib\site-packages\yaml\loader.py", line 34, in __init__Reader.__init__(self, stream)File "D:\ProgramFiles\Python36\lib\site-packages\yaml\reader.py", line 85, in __init__self.determine_encoding()File "D:\ProgramFiles\Python36\lib\site-packages\yaml\reader.py", line 124, in determine_encodingself.update_raw()File "D:\ProgramFiles\Python36\lib\site-packages\yaml\reader.py", line 178, in update_rawdata = self.stream.read(size)UnicodeDecodeError: 'gbk' codec can't decode byte 0x99 in position 2003: illegal multibyte sequence分析源码中参数传递情况:def load(stream, Loader=Loader):"""Parse the first YAML document in a streamand produce the corresponding Python object."""print(stream) ## debug by huanying03loader = Loader(stream)try:return loader.get_single_data()finally:loader.dispose()打印结果如下:<_io.TextIOWrapper name='config.yml' mode='r' encoding='cp936'>编码不对?65001 :UTF-8代码页936 :默认的GBK437 :是美国英语仔细检查发现config.yml中有异常字符,更正config.yml中错误字符:ok 问题3)python调试打印语句print ("value=%d"%value)demo数据绘图结果如下:2. 本地数据绘图测试应⽤指令cmd > python seisplot.py data/my.sgy问题1)数据道的采样值异常filename data2/t10.sgyseismic.py:104:dt=4000seismic.py:104:ns=512seismic.py:144:header=b'C 1 CLIENT'n_traces 500n_samples 512dt 0.004t_start 0t_end 2.044max_val infmin_val -infclip_val 180462501764003194804057887685476352Read data in 0.4 s++++++++++++++++++++++++++++++++++++++++++++++++++++++++ PLOTTINGplot width 17.00 inplot height 11.00 inTraceback (most recent call last):File "seisplot.py", line 442, in <module>main(t, cfg)File "seisplot.py", line 214, in maincfg)File "D:\Desktop\python可视化\seisplot\plotter.py", line 123, in plot_histogramy, x, _ = ax.hist(np.ravel(data), bins=int(100.0 / (clip_val / largest)), OverflowError: cannot convert float infinity to integer解决办法:将数据做归⼀化处理问题2)数据⽂件的卷头异常filename data2/marmousi_vel.segy.hdrs.sgy.cdp.sgyseismic.py:104:dt=10000seismic.py:104:ns=350seismic.py:144:header=b' c3@ f1@ c3 d3 c9 c5 d5 e3'Traceback (most recent call last):File "seisplot.py", line 442, in <module>main(t, cfg)File "seisplot.py", line 40, in mains = Seismic.from_segy(target, params={'ndim': cfg['ndim']})File "D:\Desktop\python可视化\seisplot\seismic.py", line 164, in from_segyreturn cls.from_obspy(stream, params=params)File "D:\Desktop\python可视化\seisplot\seismic.py", line 147, in from_obspyx =np.array(list(stream.textual_file_header.decode()))UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 0: invalid continuation byte解决办法:重写3200字节的segy卷头marmousi相关数据绘图速度模型绘图结果如下:marmousi模型正演的炮集数据绘图结果如下:测试备忘1cygwin执⾏指令,可以看到反馈信息为彩⾊,分析信息很⽅便。

地震工程作业哈工大 MATLAB程序

地震工程作业哈工大  MATLAB程序

地震工程大作业哈工大李金平弹性反应谱原创性声明,主程序由本人独立编写完成,支持各种检验。

所选地震动RSN2345CHICHI.AT2 peer索取号:2345:010203040506070 -0.25-0.2-0.15-0.1-0.050.050.10.150.20.25时间 (s)加速度(m/s2)位移反应谱局部放大12345678910周期T (s)位移 (m m )11.021.041.06 1.081.11.129.29.259.39.359.49.459.59.559.69.659.7周期T (s)位移 (m m )求比值123456789100.940.950.960.970.980.9911.011.021.031.04周期T (s)比值绝对加速度反应谱局部放大0.20.40.60.81 1.2 1.41.61.8200.10.20.30.40.50.60.70.80.91周期T (s)S a (m /s 2)-0.25-0.2-0.15-0.1-0.0500.050.10.150.20.250.150.20.250.30.350.40.45周期T (s)S a (m /s 2)求比值进行比较速度反应谱123456789100.940.950.960.970.980.9911.011.021.031.04周期T (s)比值1234567891000.010.020.030.040.050.060.070.080.090.1周期T (s)速度 (m /s )局部放大观察差异求比值进行比较。

00.020.040.060.080.10.12-4周期T (s)速度 (m /s )123456789100.70.80.911.11.21.3周期T (s)比值结论:对比:拟合效果非常好,短周期0s<T<0.2s误差较大,其中相对速度谱的误差较大,接近30%,加速度和位移误差都在3%以内,周期0.2s<T<10s各反应谱的误差都保持在1%以内,精度相同,猜想,两种计算程序应该用的同一种计算方法(newmark法)。

地震工程学-反应谱和地震时程波的相互转化matlab编程#(精选.)

地震工程学-反应谱和地震时程波的相互转化matlab编程#(精选.)

地震工程学作业课程名称:地震工程学______ 指导老师:_______翟永梅_________ 姓名:史先飞________ 学号:1232627________一、地震波生成反应谱1 所取的地震波为Elcentro地震波加速度曲线,如图1所示。

图1 Elcentro地震波加速度曲线2 所调用的Matlab程序为:% ***********读入地震记录***********ElCentro;Accelerate= ElCentro(:,1)*9.8067;%单位统一为m和sN=length(Accelerate);%N 读入的记录的量time=0:0.005:(N-1)*0.005; %单位 s%初始化各储存向量Displace=zeros(1,N); %相对位移Velocity=zeros(1,N); %相对速度AbsAcce=zeros(1,N); %绝对加速度% ***********A,B矩阵***********Damp=0.02; %阻尼比0.02TA=0.0:0.05:6; %TA=0.000001:0.02:6; %结构周期Dt=0.005; %地震记录的步长%记录计算得到的反应,MaxD为某阻尼时最大相对位移,MaxV为某阻尼最大相对速度,MaxA某阻尼时最大绝对加速度,用于画图MaxD=zeros(3,length(TA));MaxV=zeros(3,length(TA));MaxA=zeros(3,length(TA));t=1;for T=0.0:0.05:6NatualFrequency=2*pi/T ; %结构自振频率DampFrequency=NatualFrequency*sqrt(1-Damp*Damp); %计算公式化简e_t=exp(-Damp*NatualFrequency*Dt);s=sin(DampFrequency*Dt);c=cos(DampFrequency*Dt);A=zeros(2,2);A(1,1)=e_t*(s*Damp/sqrt(1-Damp*Damp)+c);A(1,2)=e_t*s/DampFrequency;A(2,1)=-NatualFrequency*e_t*s/sqrt(1-Damp*Damp);A(2,2)=e_t*(-s*Damp/sqrt(1-Damp*Damp)+c);d_f=(2*Damp^2-1)/(NatualFrequency^2*Dt);d_3t=Damp/(NatualFrequency^3*Dt);B=zeros(2,2);B(1,1)=e_t*((d_f+Damp/NatualFrequency)*s/DampFrequency+(2*d_3t+1/NatualFrequency^2)*c)-2*d_3 t;B(1,2)=-e_t*(d_f*s/DampFrequency+2*d_3t*c)-1/NatualFrequency^2+2*d_3t;B(2,1)=e_t*((d_f+Damp/NatualFrequency)*(c-Damp/sqrt(1-Damp^2)*s)-(2*d_3t+1/NatualFrequency^2 )*(DampFrequency*s+Damp*NatualFrequency*c))+1/(NatualFrequency^2*Dt);B(2,2)=e_t*(1/(NatualFrequency^2*Dt)*c+s*Damp/(NatualFrequency*DampFrequency*Dt))-1/(NatualF requency^2*Dt);for i=1:(N-1) %根据地震记录,计算不同的反应Displace(i+1)=A(1,1)*Displace(i)+A(1,2)*Velocity(i)+B(1,1)*Accelerate(i)+B(1,2)*Accelerate(i +1);Velocity(i+1)=A(2,1)*Displace(i)+A(2,2)*Velocity(i)+B(2,1)*Accelerate(i)+B(2,2)*Accelerate(i +1);AbsAcce(i+1)=-2*Damp*NatualFrequency*Velocity(i+1)-NatualFrequency^2*Displace(i+1);endMaxD(1,t)=max(abs(Displace));MaxV(1,t)=max(abs(Velocity));if T==0.0MaxA(1,t)=max(abs(Accelerate));elseMaxA(1,t)=max(abs(AbsAcce));endDisplace=zeros(1,N);%初始化各储存向量,避免下次不同周期计算时引用到前一个周期的结果Velocity=zeros(1,N);AbsAcce=zeros(1,N);t=t+1;End% ***********PLOT***********close allfigure %绘制地震记录图plot(time(:),Accelerate(:))title('PEER STRONG MOTION DATABASE RECORD')xlabel('time(s)')ylabel('acceleration(g)')gridfigure %绘制位移反应谱plot(TA,MaxD(1,:),'-.b',TA,MaxD(2,:),'-r',TA,MaxD(3,:),':k')title('Displacement')xlabel('Tn(s)')ylabel('Displacement(m)')legend('ζ=0.02')Gridfigure %绘制速度反应谱plot(TA,MaxV(1,:),'-.b',TA,MaxV(2,:),'-r',TA,MaxV(3,:),':k') title('Velocity')xlabel('Tn(s)')ylabel('velocity(m/s)')legend('ζ=0.02')Gridfigure %绘制绝对加速度反应谱plot(TA,MaxA(1,:),'-.b',TA,MaxA(2,:),'-r',TA,MaxA(3,:),':k') title('Absolute Acceleration')xlabel('Tn(s)')ylabel('absolute acceleration(m/s^2)')legend('ζ=0.02')Grid3 运行的结果得到的反应谱图2 位移反应谱图3 速度反应谱图4 加速度反应谱一、反应谱生成地震波1所取的反应谱为上海市设计反应谱图5 上海市设计反应谱2反应谱取值程序为:%%规范反应谱取值程序参照01年抗震规范function rs_z=r_s_1(pl,zn,ld,cd,fz) %%%pl 圆频率,zn阻尼比,ld烈度,cd场地类型,场地分组fz %%%%烈度选择if ld==6arfmax=0.11;endif ld==7arfmax=0.23;endif ld==8arfmax=0.45;endif ld==9arfmax=0.90;end%%%%场地类别,设计地震分组选择if cd==1if fz==1Tg=0.25;endif fz==2Tg=0.30;endif fz==3Tg=0.35;endendif cd==2if fz==1Tg=0.35;if fz==2Tg=0.40;endif fz==3Tg=0.45;endendif cd==3if fz==1Tg=0.45;endif fz==2Tg=0.55;endif fz==3Tg=0.65;endendif cd==4if fz==1Tg=0.65;endif fz==2Tg=0.75;endif fz==3Tg=0.90;endend%%%%%%%%%ceita=zn; %%%%%阻尼比lmt1=0.02+(0.05-ceita)/8;if lmt1<0lmt1=0;endlmt2=1+(0.05-ceita)/(0.06+1.7*ceita); if lmt2<0.55lmt2=0.55;endsjzs=0.9+(0.05-ceita)/(0.5+5*ceita); %%%%%分段位置 T1 T2 T3T1=0.1;T2=Tg;T_jg=2*pi./pl;%%%% 第一段 0~T1if T_jg<=T1arf_jg=0.45*arfmax+(lmt2*arfmax-0.45*arfmax)/0.1*T_jg;end%%%% 第二段 T1~T2if T1<T_jg&T_jg<=T2arf_jg=lmt2*arfmax;end%%%% 第三段 T2~T3if T2<T_jg&T_jg<=T3arf_jg=((Tg/T_jg)^sjzs)*lmt2*arfmax;end%%%% 第四段 T3~6.0if T3<T_jg&T_jg<=6.0arf_jg=(lmt2*0.2^sjzs-lmt1*(T_jg-5*Tg))*arfmax;end%%%% 第五段 6.0~if 6.0<T_jgarf_jg=(lmt2*0.2^sjzs-lmt1*(6.0-5*Tg))*arfmax;end%%%%%%反应谱值拟加速度值rs_z=arf_jg*9.8;end3生成人造地震波主程序:%%%主程序%%%%%%%%确定需要控制的反应谱Sa(T)(T=T1,...,TM)的坐标点数M,反应谱控制容差rc Tyz=[0.04:0.016:0.1,0.15:0.05:3.0,3.2:0.05:5.0];rc=0.06;nTyz=length(Tyz);ceita=0.035;%%%阻尼比:0.035for i=1:nTyzSyz(i)=r_s_1(2*pi/Tyz(i),ceita,8,2,1); %%%%8度,2类场地,第1地震分组end%%%%%% 变换的频率差:2*pi*0.005(可以保证长周期项5s附近有5项三角级数);%%%%频率变化范围 N1=30, 30*0.005*2*pi ;N2=3000, 5000*0.005*2*piplc=2*pi*0.005;pl=30*0.005*2*pi:0.005*2*pi:10000*0.005*2*pi;npl=length(pl);P=0.9; %%%保证率%%%%%%人造地震动持续时间40s,时间间隔:0.02sTd=40;dt=0.02;t=0:0.02:40;nt=length(t);%%%%%%% 衰减包络函数t1=8; %%%%上升段t2=8+24; %%%%%平稳段; 下降段则为40-32=8sc=0.6; %%%%衰减段参数for i=1:ntif t(i)<=t1f(i)=(t(i)/t1)^2;endif t(i)>t1 & t(i)<t2f(i)=1;endif t(i)>=t2f(i)=exp(-c*(t(i)-t2));endend%%%%%%% 反应谱转换功率谱for i=1:nplSw(i)=(2*ceita/(pi*pl(i)))*r_s_1(pl(i),ceita,8,2,1)^2/(-2*log(-1*pi*log(P)/(pl(i)*Td))); Aw(i)=sqrt(4*Sw(i)*plc);end%%%%%%%%%%%%%% 合成地震动at=zeros(nt,1);atj=zeros(nt,1);for i=1:nplfai(i)=rand(1)*2*pi;for j=1:ntatj(j)=f(j)*Aw(i)*real(exp(sqrt(-1)*(pl(i)*t(j)+fai(i))));endat=at+atj;end%%%%%%% 计算反应谱验证是否满足rc在5%的要求,需要时程动力分析%%%%%%%%%%%% response spectra of callidar%%%%%%% parameterg=9.8;m=1;x0=0;v0=0;ww=2*pi./Tyz;%%%%%%%% loadag=at; %%%%%%%修改%%%%%%% solutionfor y=1:nTyzz=0.037;w=ww(y);c=2*z*w;k=w^2;for i=1:nt-1p(i)=-ag(i+1)+ag(i);a0=m\(-ag(i)-c*v0-k*x0);kk=k+(dt^2)\(6*m)+dt\(3*c);pp=p(i)+m*(dt\(6*v0)+3*a0)+c*(3*v0+2\(dt*a0)); dx=kk\pp;dv=dt\(3*dx)-3*v0-2\(dt*a0);x1=x0+dx;x0=x1;v1=v0+dv;v0=v1;as(i)=a0;as(i)=as(i)+ag(i);vs(i)=v0;xs(i)=x0;endmaxas(y)=max(as);maxvs(y)=max(vs);maxxs(y)=max(xs);endfor i=1:nTyzrspa(i)=maxas(i);end%%%%%%% 比较容差for i=1:nTyzrcrsp(i)=abs(rspa(i)-Syz(i))/max(Syz(:));endjsnum=1;while max(rcrsp(:))>rc%%%%%循环体函数blxs=Syz./rspa;for xsxs=1:nplif 2*pi/pl(xsxs)<Tyz(1)blxs1(xsxs)=blxs(1);endfor sxsx=1:nTyz-1if (2*pi/pl(xsxs)>=Tyz(sxsx)) & (2*pi/pl(xsxs)<=Tyz(sxsx+1))blxs1(xsxs)=blxs(sxsx)+(blxs(sxsx+1)-blxs(sxsx))*(2*pi/pl(xsxs)-Tyz(sxsx))/(Tyz(sxsx+1)-Tyz(sxsx));endendif 2*pi/pl(xsxs)>Tyz(nTyz)blxs1(xsxs)=blxs(nTyz);endendAw=Aw.*blxs1;%%%%%%%%%%%%%% 合成地震动at=zeros(nt,1);atj=zeros(nt,1);for i=1:nplfor j=1:ntatj(j)=f(j)*Aw(i)*real(exp(sqrt(-1)*(pl(i)*t(j)+fai(i))));endat=at+atj;end%%%%%%% 计算反应谱验证是否满足rc在5%的要求%%%%%%%%%%%% response spectra of callidar%%%%%%% parameterg=9.8;m=1;x0=0;v0=0;ww=2*pi./Tyz;%%%%%%%% loadag=at; %%%%%%%修改%%%%%%% solutionfor y=1:nTyzz=0.037;w=ww(y);c=2*z*w;k=w^2;for i=1:nt-1p(i)=-ag(i+1)+ag(i);a0=m\(-ag(i)-c*v0-k*x0);kk=k+(dt^2)\(6*m)+dt\(3*c);pp=p(i)+m*(dt\(6*v0)+3*a0)+c*(3*v0+2\(dt*a0)); dx=kk\pp;dv=dt\(3*dx)-3*v0-2\(dt*a0);x1=x0+dx;x0=x1;v1=v0+dv;v0=v1;as(i)=a0;as(i)=as(i)+ag(i);vs(i)=v0;xs(i)=x0;endmaxas(y)=max(as);maxvs(y)=max(vs);maxxs(y)=max(xs);endfor i=1:nTyzrspa(i)=maxas(i);end%%%%%%% 比较容差for i=1:nTyzrcrsp(i)=abs(rspa(i)-Syz(i))/max(Syz(:));endjsnum=jsnum+1max(rcrsp(:))end%%%%%%% 最终的反应谱与规范谱%%%%%%%%%%%% response spectra of callidar%%%%%%% parameter%% Tjs=0.05:0.01:6;%% nTjs=length(Tjs);g=9.8;m=1;x0=0;v0=0;ww=2*pi./Tyz;%%%%%%%% loadag=at; %%%%%%%修改%%%%%%% solutionfor y=1:nTyzz=0.037;w=ww(y);c=2*z*w;k=w^2;for i=1:nt-1p(i)=-ag(i+1)+ag(i);a0=m\(-ag(i)-c*v0-k*x0);kk=k+(dt^2)\(6*m)+dt\(3*c);pp=p(i)+m*(dt\(6*v0)+3*a0)+c*(3*v0+2\(dt*a0));dx=kk\pp;dv=dt\(3*dx)-3*v0-2\(dt*a0);x1=x0+dx;x0=x1;v1=v0+dv;v0=v1;as(i)=a0;as(i)=as(i)+ag(i);vs(i)=v0;xs(i)=x0;endmaxas(y)=max(as);maxvs(y)=max(vs);maxxs(y)=max(xs);endfor i=1:nTyzrspa(i)=maxas(i)/g;rspa_S(i)=r_s_1(2*pi/Tyz(i),ceita,8,2,1)/g;endsubplot(2,1,1);plot(t,at);subplot(2,1,2);plot(Tyz,rspa);hold on;plot(Tyz,rspa_S);4生成的人造地震波如图所示。

基于Newmark-β法的建筑结构地震响应简化计算

基于Newmark-β法的建筑结构地震响应简化计算

基于Newmark-β法的建筑结构地震响应简化计算摘要:地震是人类最严重的自然灾害之一,分析地震荷载下建筑结构体系的振动响应十分重要。

而对于建筑结构体系,一般将其离散为多自由度体系。

地震荷载下多自由度体系的响应可以采用中心差分法、分段解析法、Newmark-β法、Wilson-法等方法进行分析,其中Newmark-β法可以用来求解任意荷载下多自由度体系响应分析,包括地震荷载下的多自由度体系响应分析,精度较高。

本文主要结合振型叠加法和Newmark-β法思想,将建筑结构简化为多自由度体系,采用Python语言进行编程以获得基于Newmark-β法的建筑结构地震响应简化计算程序,最后通过简化算例验证了该算法程序的可行性,且由于Newmark-β法是一种显式求解法,故求解速度较快。

关键词:建筑结构;Newmark-β法;多自由度;地震响应;简化计算中图分类号:文章编号: 1000-565X1 引言地震是人类最严重的自然灾害之一。

有关记录表明,二十世纪因地震灾害造成的死亡人数至少在120万人以上。

发生在1976年我国的唐山大地震,死亡人数超过24.2万,因地震造成的直接间接损失超过百亿元。

减少因地震造成的生命财产损失对于国民经济的发展和人民生命财产的安全意义重大,其主要途径是工程结构抗震设计。

随着人类抗震经验的不断积累以及电子计算机的飞速进步,地震工程的理论和应用得到很大发展。

从早期的线性单自由度分析到如今的高度复杂的结构体系非线性弹塑性分析,并结合大型的模拟地震台作为检验,人们已经积累了一套相对完善的反映工程实际的抗震设计方法。

而地震反应的理论分析中,对响应的准确计算和分析是抗震设计的前提和基础。

结构地震响应计算方法经历了从静力法到反应谱法[1],最后落脚在时程分析法[2]的三大发展历程。

静力法只有在自振周期远小于地面运动周期时才足够精确,它忽略了结构自身的动力特性,因而存在很大局限性。

上世纪40年代提出了反应谱理论,但设计过程仍是静态方法,且无法反映许多实际复杂因素。

地震反应谱的特性

地震反应谱的特性

地震反应谱的特性崔济东(JiDong Cui)(华南理工大学土木与交通学院,广东广州,510640)1反应谱的基本概念(Introduction to Response Spectra)地震动反应谱:单自由度弹性系统对于某个实际地震加速度的最大反应(可以是加速度、速度和位移)和体系的自振特征(自振周期或频率和阻尼比)之间的关系。

前一篇博文《Earthquake Response Spectra地震反应谱》介绍了反应谱和伪反应谱的基本概念,并编制了相应的反应谱计算程序——SPECTR。

本文利用该软件,通过几个实测地震记录的反应谱分析,总结地震反应的一般谱特性。

2本文用到的地震加速度记录(Acceleration Time History Records)2.11999年台湾集集地震记录的加速度记录:(1)加速度记录信息:The Chi-Chi (Taiwan) earthquake of September 20, 1999.Source: PEER Strong Motion databaseRecording station: TCU045Frequency range: 0.02-50.0 HzMaximum Absolute Acceleration: 0.361g(2)加速度时程与相应的速度和位移图2-1 ChiChi地震加速度时程2.21994年美国北岭地震记录的加速度时程:(1)加速度记录信息:The Northridge (USA) earthquake of January 17, 1994.Source: PEER Strong Motion DatabaseRecording station: 090 CDMG STATION 24278Frequency range: 0.12-23.0 HzMaximum Absolute Acceleration: 0.5683g(2)加速度时程与相应的速度和位移作者:崔济东(1988- ),男,结构工程专业,博士研究生。

python地震波长的数值模拟

python地震波长的数值模拟

python地震波长的数值模拟
Python语言在地震波长的数值模拟中的应用越来越广泛。

地震波长是指地震波传播过程中波长的长度。

在地震工程中,地震波长的数值模拟是一项重要的研究,可以帮助预测地震的破坏程度,对于减轻地震灾害具有重要意义。

Python语言可以通过科学计算库等工具,实现地震波长的数值模拟。

其中,科学计算库NumPy可以用于处理数值计算;matplotlib 可以用于绘制图表;SciPy可以用于实现科学计算。

通过Python进行地震波长的数值模拟,可以通过设置不同的参数,模拟出不同的地震波传播情况,进行地震波传播的预测和分析。

同时,Python的可视化功能也可以帮助研究者更直观地了解地震波传播的情况。

总之,Python语言在地震波长的数值模拟中的应用,为地震工程的研究提供了强有力的工具和支持,也为减轻地震灾害提供了更加精准的预测和分析。

- 1 -。

傅里叶谱和反应谱之间的关系及其对经验地震动预测方程(GMPE)调整的影响研究(Ⅱ)

傅里叶谱和反应谱之间的关系及其对经验地震动预测方程(GMPE)调整的影响研究(Ⅱ)

傅里叶谱和反应谱之间的关系及其对经验地震动预测方程(GMPE)调整的影响研究(Ⅱ)杨国栋;石玉成【期刊名称】《国际地震动态》【年(卷),期】2017(000)004【总页数】12页(P30-41)【作者】杨国栋;石玉成【作者单位】【正文语种】中文【中图分类】P315.9借助图6和图7,我们总结一下在不同振荡频率范围内FAS与反应谱之间的关系。

在图6和图7中,我们模拟了RJB=20 km及MW=6的地震,随机模型参数与图1的相同。

图6描述了m0核|YSDOF(f, fosc)|2的不同部分在所选振荡频率m01\2(fosc)计算中的影响。

从图3可看出,在m0(fosc)峰值以下, SDOF传递函数振幅平方|I(f, fosc)|2对特定fosc的m01\2(fosc)计算影响很大。

为生成|YSDOF(f, fosc)|2而乘以|Ygm(f)|2的SDOF传递函数振幅平方|I(f, fosc)|2可以认为由一个平滑部分和一个代表|I(f, fosc)|2共振峰值的峰值部分组成。

为了更好地了解|I(f, fosc)|2的每一部分如何影响单个振荡频率fosc的m01\2(fosc)的计算,我们把|I(f, fosc)|2的平滑部分近似为|I(f, fosc,ζ=1/√2)|2,即像在图6a中描述的对70.7%阻尼计算的|I(f, fosc)|2。

图6b描述了fosc=15 Hz的两个|I(f, fosc)|2函数(ζ=0.05 和ζ=1/√2)的矩核|YSDOF(f, fosc)|2。

图6c描述了m01\2(fosc)和m01\2(fosc,ζ=1/√2)及由|Ygm(f)|2计算的(fint)。

在每个fosc,从m01\2(fosc)减去m01\2(f osc,ζ=1/√2)的差为|I(f, fosc)|2共振峰值引起的由图6c粗点虚线表示m01\2(fosc)的影响。

从图6c可以看出, fosc>f98%的高频段的m01\2(fosc)(平台)受平滑部分控制,共振峰值的影响(粗点虚线)减小。

地震动特性与反应谱ppt课件

地震动特性与反应谱ppt课件

整理版课件
26
与时域中的上述自相关函数描述相对应,在频 域中最重要的二阶统计数字特征是功率谱密度
函数(简称功率谱或谱密度),这一函数定义为自 相关函数的傅里叶变换,即:
Sx()
Rx
(
)ei
d
Rx
(
)
1
2
S
()ei
d
S(w)表示过程方差在频律w及其邻域内的分布 强度;或者过程功率在频率域内的分布函数。
振频率。
地震仪与强震加速度仪在原理上的差别就是在这 两个系数的不同。适当选择这两个系数可以使上式 中左端三项中的某一项远大于其它两项,从而使仪 器记录摆的相对位移分别代表地面运动的位移、速 度和加速度。
整理版课件
12
4.1.2 强震观测现状
强震观测是地震工程学的基础之一。自强震加速度仪出 现50余年来,强震观测记录有力地推动了地震工程学的发 展,正是在强震记录的基础上,产生了地震反应谱理论, 发展了随机振动理论,加深了对地震动特性的认识,促进 了结构动力反应分析技术的形成和振动台试验技术的实现。
整理版课件
25
随机过程x(t)的自相关函数定义为任意两个 不同状态x(t1)和x(t2)的原点相关距:
Rx(t1,t2)Ex(t1)x(t2)
二维概率分
布密度
x1x2px(x,t1;x2,t2)dx1dx2
相关函数描述了随机过程两个状态之间在时域 上的相关程度。一般,如果过程中不考虑周期份 量,则相关函数是时间差[t2-t1]的衰减函数。
3
探测地球与探测西瓜
整理版课件
4
全球地震台网分布
目前,全球已经建立了覆盖比较良好的地震观测网 络,可以实时监测确定地球任何角落发生的地震。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

python地震动反应谱
地震是一种自然灾害,对人类社会造成了巨大的破坏和损失。

为了
减少地震对建筑物和结构物的影响,人们需要对地震动进行分析和评估。

地震动反应谱是一种常用的工具,用于描述结构物在地震作用下
的动态响应。

Python是一种强大的编程语言,具有丰富的科学计算库和数据处理
工具。

在地震工程领域,Python可以用于地震动反应谱的计算和分析。

本文将介绍如何使用Python编程语言来计算地震动反应谱。

首先,我们需要了解地震动的基本概念。

地震动是指地震波在地表
上的振动,通常用加速度、速度或位移来描述。

地震动反应谱是一种
将地震动的加速度响应与结构物的特征频率进行对比的图表或曲线。

通过分析地震动反应谱,我们可以了解结构物在不同频率下的响应情况,从而评估其抗震性能。

在Python中,我们可以使用NumPy库来进行数值计算和数组操作。

首先,我们需要导入NumPy库:
import numpy as np
接下来,我们需要定义地震动的时间历程。

地震动通常用一个时间
序列来表示,其中包含了地震波在不同时间点上的加速度值。

我们可
以使用NumPy的数组来表示时间序列:
time = np.linspace(0, 10, 1000)
在上面的代码中,我们使用linspace函数生成了一个从0到10的等间隔的1000个数值的数组,表示了地震动的时间范围和采样点数。

接下来,我们需要定义地震动的加速度值。

地震动的加速度通常用一个函数来表示,其中包含了地震波在不同时间点上的加速度值。

我们可以使用NumPy的函数来定义加速度函数:
def acceleration(t):
return np.sin(2 * np.pi * t)
在上面的代码中,我们定义了一个名为acceleration的函数,它接受一个时间参数t,并返回一个正弦函数的值。

这个正弦函数表示了地震动的加速度随时间变化的情况。

接下来,我们可以使用Matplotlib库来绘制地震动的加速度时间历程图:
import matplotlib.pyplot as plt
plt.plot(time, acceleration(time))
plt.xlabel('Time (s)')
plt.ylabel('Acceleration (m/s^2)')
plt.title('Seismic Acceleration Time History')
plt.grid(True)
plt.show()
在上面的代码中,我们使用plot函数绘制了地震动的加速度时间历
程图,并使用xlabel、ylabel和title函数设置了图表的标题和坐标轴标签。

最后,我们使用grid函数显示了网格线,并使用show函数显示了
图表。

最后,我们可以使用SciPy库来计算地震动反应谱。

SciPy是一个用于科学计算和工程应用的库,其中包含了许多用于数值计算和信号处
理的函数。

我们可以使用scipy.signal库中的welch函数来计算地震动
的功率谱密度,并使用scipy.interpolate库中的interp1d函数来进行插
值计算。

import scipy.signal as signal
import scipy.interpolate as interpolate
freq, psd = signal.welch(acceleration(time))
interp_func = interpolate.interp1d(freq, psd)
在上面的代码中,我们使用welch函数计算了地震动的功率谱密度,其中freq表示频率,psd表示功率谱密度。

然后,我们使用interp1d函
数创建了一个插值函数interp_func,用于对地震动反应谱进行插值计算。

最后,我们可以使用Matplotlib库来绘制地震动反应谱图:
plt.loglog(freq, interp_func(freq))
plt.xlabel('Frequency (Hz)')
plt.ylabel('Response Spectral Density (m^2/s^4/Hz)')
plt.title('Seismic Response Spectrum')
plt.grid(True)
plt.show()
在上面的代码中,我们使用loglog函数绘制了地震动反应谱图,并
使用xlabel、ylabel和title函数设置了图表的标题和坐标轴标签。

最后,我们使用grid函数显示了网格线,并使用show函数显示了图表。

通过以上步骤,我们可以使用Python编程语言计算和绘制地震动反应谱。

这种方法不仅简单易用,而且具有灵活性和可扩展性,可以满
足不同地震工程问题的需求。

希望本文对您理解和应用Python地震动
反应谱有所帮助。

相关文档
最新文档