【管理人おすすめ!】セットで3割もお得!大好評の用語集と図解集のセット⇒ 建築構造がわかる基礎用語集&図解集セット(※既に26人にお申込みいただきました!)
これまでのアルゴリズムや理論を使って応答スペクトルを求めるプログラムをつくってみましょう。あくまで、一例なので もっとスマートにプログラムを組む方法もあります。特に、このプログラムではサブルーチンを使っていませんが、サブルーチンを使うと グッとプログラムらしく、きれいな文が書けると思うのでトライしてみてください。
アルゴリズムの確認
まず、応答スペクトルとは縦軸を最大値、横軸を固有周期として描いたグラフです。よって、固有周期を変化させて時刻歴応答解析を行い、その時の最大値を拾っていきます。その時に利用するのが「2重ループ」 です。※フローチャートの図形は無視した概念図なので、流れだけを確認してくださいね。
早速、Fortranで書いてみる。
さて、ダウンロードしたエディタ(僕はTerapad)を開いてプログラムを書いてみます。 まだコンパイラしていません。とりあえず、「Terapad」を利用している方は
「名前をつけて保存」→保存形式を「全てのファイル」として→「○○.f90」と保存してください。
そうすると、F90ファイルが生成されます。
!応答スペクトルを求めるプログラム()
program supectoru
implicit none
real gg(5000) ! 入力加速度
real acc(5000) ! 応答加速度
real vel(5000) ! 応答速度
real dis(5000) ! 応答変位
real omg(5000) ! 固有円振動数
real kk(5000) ! 剛性
real cc(5000) ! 粘性係数
real ssacc(5000,600) ! 時刻歴波形用
real ssvel(5000,600) ! 時刻歴波形用
real ssdis(5000,600) ! 時刻歴波形用
real sacc(5000,600) ! 準備計算
real svel(5000,600) ! 準備計算
real sdis(5000,600) ! 準備計算
real mxa(1000,1000) ! 加速度応答スペクトル
real mxv(1000,1000) ! 速度応答スペクトル
real mxd(1000,1000) ! 変位度応答スペクトル
real mm,dt,Pi,hh,mol1,mol2,B,dtt,mx
integer i,i2
open(1, file='step-load.txt',status='old')
!'入力加速度の読み込み'
! zisin-data. から gg() に読み込む
do i = 1,2687
read(1,*) gg(i)
end do
!'Nemark's β'二重ループで計算
do i2 = 1,500
do i = 1,2687,1
if(i==1) then
acc(i) = gg(i)/mm
vel(i) = 0
dis(i) = 0
Else
mol1 = -((gg(i) + cc(i2) * (vel(i-1)) + 0.5 * acc(i-1) * dt)+ kk(i2) * (dis(i-1) + vel(i-1) * dt + (0.5-B) * acc(i-1) * dt * dt))
mol2 = (mm + 0.5 * cc(i2) * dt + B * kk(i2) * dt * dt)
acc(i) = mol1 / mol2
vel(i) = vel(i - 1) + 0.5 * (acc(i - 1) + acc(i)) * dt
dis(i) = dis(i - 1) + vel(i - 1) * dt + (0.5 - B) * acc(i - 1) * dt * dt + B * acc(i) * dt * dt
end if
!応答スペクトル用の配列へ入れる
sacc(i,i2)=abs(acc(i)+gg(i))
svel(i,i2)=abs(vel(i))
sdis(i,i2)=abs(dis(i))
!最大値を求めるプログラム
!加速度の最大値を探索
do i2 =1,500
mx=0
do i =1,2687
if(mx < sacc(i+1,i2))then
mx=sacc(i+1,i2)
else
mx=mx
endif
mxa(i2,1)=mx
end do
end do
outousupectoru.f90の説明
プログラム自体がもう少し長いので、省略しました。よって、コピペしてもプログラムは回らないですよ。ポイントは「!'Nemark's β'二重ループで計算」と「!加速度の最大値を探索」の部分です。2重ループを使って 固有周期を変化させた場合の時刻歴応答解析を行い、その最大値を探索して求めています。難しいことは何もしていなくて、これまでの知識だけでつくっています。
結果の確認
結果の確認としては、適当な地震波を読み込んで応答スペクトルのグラフを描いてみて下さい。教科書に載っている応答スペクトルのグラフを結果を比較して整合してみてください。
有料メルマガを無料で見てみませんか?⇒ 忙しい社会人、学生のためのビルディング・アップデート