減衰定数hの1質点弾性系について考えます。
総入力エネルギーの速度換算値Veと
固有周期Tの関係を
エネルギースペクトルと定義しています。
それをfortranにより求めていきます。
real h,w,dt,beta,pi,T,Sacc(0:3000),Ve
real acc(0:5000),vel(0:5000),def(0:5000),E
integer i,j
open(1,file='KOBNS.csv',status='old')
h =0.1
dt =0.02
pi =3.14159265358979
do 110 i=0,1499
read(1,*) Sacc(i)
110 continue
acc(0)=-Sacc(0)
vel(0)=0. ![m/s]
def(0)=0. ![m]
beta=1./6.
do 200 j=1,100
T=j*0.05
w=2.*pi/T
E=0.
do 10 i=0,1499
acc(i+1)=-((Sacc(i)+(w**2.)*def(i)+(2.*h*w+(w**2.)*dt)*vel(i))
& +(h*w*dt+(0.5-beta)*(w**2.)*(dt**2.))*acc(i))
& /(1.+h*w*dt+beta*(w**2.)*(dt**2.))
el(i+1)=vel(i)+(acc(i+1)+acc(i))*dt/2.
def(i+1)=def(i)+vel(i)*dt+(0.5-beta)*acc(i)*(dt**2.)
& +beta*acc(i+1)*(dt**2.)
E=E-Sacc(i)*vel(i+1)*dt
10 continue
Ve=sqrt(E*2.)
open(2,file='report3.csv',status='unknown')
write(2,100) j*0.05,Ve
100 format(2f15.6)
200 continue
stop
end
KOBNS.csvという0.02秒刻みの地震波のデータを読み込んでいます。
総入力エネルギーの速度換算値を求める際、
質量mは約分されて無くなるので、
総入力エネルギーEには、上のプログラム上、mを入れていません。
また、本来、連続数として積分により求めますが、
入力地震派のデータが離散的なので、
その刻みに合わせて加算として求めています。
固有周期を0.05刻みでデータを求めてます。
横軸に固有周期T、縦軸に速度換算値Veとすれば、
エネルギースペクトルの図が出来上がります。