1. HOME > 計算プログラムから構造力学を学ぶ > 応答スペクトル

応答スペクトル

これまでのアルゴリズムや理論を使って応答スペクトルを求めるプログラムをつくってみましょう。あくまで、一例なので もっとスマートにプログラムを組む方法もあります。特に、このプログラムではサブルーチンを使っていませんが、サブルーチンを使うと グッとプログラムらしく、きれいな文が書けると思うのでトライしてみてください。


アルゴリズムの確認

まず、応答スペクトルとは縦軸を最大値、横軸を固有周期として描いたグラフです。よって、固有周期を変化させて時刻歴応答解析を行い、その時の最大値を拾っていきます。その時に利用するのが「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重ループを使って 固有周期を変化させた場合の時刻歴応答解析を行い、その最大値を探索して求めています。難しいことは何もしていなくて、これまでの知識だけでつくっています。


結果の確認

結果の確認としては、適当な地震波を読み込んで応答スペクトルのグラフを描いてみて下さい。教科書に載っている応答スペクトルのグラフを結果を比較して整合してみてください。


▼この記事を今すぐSNSでシェアする▼


▼こちらも人気の記事です▼

▼人気の記事ベスト3▼

▼いつでも構造力学の問題が解ける!▼

構造ウェブ問題集

▼同じカテゴリの記事一覧▼

▼カテゴリ一覧▼

▼他の勉強がしたい方はこちら▼

スポンサーリンク

検索

カスタム検索

プロフィール

おすすめ特集

note始めました 構造ウェブ問題集

人気の記事ベスト3

建築の本、紹介します。▼

すぐにわかる構造力学の本

同じカテゴリの記事一覧

  1. HOME > 構造力学を勉強する前に > 構造家の出身大学