11 第 11 回 1質点1自由度系の非線形地震応答(3)

構造振動特論-第 11 回資料
11 第 11 回
1質点1自由度系の非線形地震応答(3)
最終印刷日時:2014/06/26 12:57:00
1質点1自由度系の非線形地震応答(3)
応答計算例
11.1
次いで,応答計算例を示す.構造物が線形弾性応答している時の最大応答復元力 Qe と構造物の降
伏復元力 Qy の比を R とし,式(11.1)で定義する.
R=
Qe
Qy
(11.1)
ここで,R < 1 の場合には構造物が線形弾性範囲で応答する場合と対応し,R > 1 の場合には構造
物が降伏点を超えて非線形領域で応答する場合と対応する.そこで,入力地震動として El Centro
1940NS を用い,構造物の弾性時の固有周期 Te を 0.3 秒と 1.0 秒,R の値を 1.0~5.0 までの範囲で変
化させて,構造物の降伏耐力が応答に及ぼす影響を検討する.ここで,復元力特性としてはノーマ
ルバイリニアーモデルと剛性低下型バイリニアーモデルを用いることとし,骨格曲線における降伏
後の剛性は弾性時の 0.01 倍とする.また,弾性時における減衰定数は 0.05 とする.
図 11-1 に,構造物の弾性時の固有周期 Te を 0.3 秒とした場合における,線形弾性範囲(R = 1)
での応答変位と応答復元力の時刻歴,ならびに復元力特性としてノーマルバイリニアーモデルを用
いた場合(R = 5)での応答変位と応答復元力の時刻歴を示す.
図 11-1 より以下の傾向が確認できる.
(1)
応答変位に関しては,非線形領域で応答する場合(R = 5)の方が線形弾性範囲で応答
する場合(R = 1)と比べて大きくなる.加えて,R = 5 の場合では 5 秒以降で応答が正方向
に偏る傾向がみられる.
(2)
応答復元力に関しては,非線形領域で応答する場合(R = 5)の方が線形弾性範囲で応
答する場合(R = 1)と比べて小さくなり,応答復元力が降伏復元力 Qy の値でほぼ頭打ちと
なる.
同様に,図 11-2 に,復元力特性として剛性低下型バイリニアーモデルを用いた場合(R = 5)で
の応答変位と応答復元力の時刻歴を示す.図 11-2 より,図 11-1 と同様の傾向が確認できるが,剛
性低下型バイリニアーモデルの場合には,R = 1 の場合ならびに R = 5 として復元力特性としてノー
マルバイリニアーモデルを用いた場合と比べて,応答の周期が長くなっている傾向が明瞭に見られ
る.このように,骨格曲線は同一であっても,応答波形が大きく異なる事が確認できる.
なお,図 11-3 は,R = 5 の場合での復元力-変位関係(履歴応答と呼ぶ事もある)を,ノーマル
バイリニアーモデルと剛性低下型バイリニアーモデルで比較して示したものである.図 11-3 より,
どちらのモデルにおいても復元力-変位関係が仮定した復元力特性に応じてループを描いている事
が確認できる.ここで,履歴ループにより囲まれた面積が構造物により吸収されたひずみエネルギ
ーに対応する.
11-1
構造振動特論-第 11 回資料
図 11-1
1質点1自由度系の非線形地震応答(3)
最終印刷日時:2014/06/26 12:57:00
応答時刻歴波形(ノーマルバイリニアーモデル,Te = 0.3s)
11-2
構造振動特論-第 11 回資料
図 11-2
1質点1自由度系の非線形地震応答(3)
最終印刷日時:2014/06/26 12:57:00
応答時刻歴波形(剛性低下型バイリニアーモデル,Te = 0.3s)
図 11-3
11.2
履歴応答の比較(R = 5.0,Te = 0.3s)
古典的な経験則:エネルギー一定則と変位一定則
構造物の耐震設計において,昔からの最大の関心事の1つは,構造物に生じる最大塑性率 μ をあ
る許容値以内に収めるためには降伏耐力 Qy をどのくらいにすればよいか,ということである.これ
に関し,以下の2つの経験則が知られている。
経験則1(エネルギー一定則)
弾性時固有周期 Te が比較的短周期である構造物において,構造物が弾性挙動すると仮定したとき
の最大せん断力 Qe,最大応答変位を δe とする.これに対し,弾塑性領域で応答する場合の降伏せん
11-3
構造振動特論-第 11 回資料
1質点1自由度系の非線形地震応答(3)
最終印刷日時:2014/06/26 12:57:00
断耐力を Qy,弾塑性応答するときの最大応答変位を δmax(= μδy)とすると,式(11.2)の関係が概ね成
立する(図 11-4).
1
1
Q y ( 2δ max − δ y ) ≈ Qeδ e
2
2
図 11-4
(11.2)
エネルギー一定則
なお,このエネルギー一定則は,前述した「エネルギーのつり合い」とは全く別のものである点
に留意されたい.
経験則2(変位一定則)
弾性時固有周期 Te が比較的長周期である構造物において,構造物が弾性挙動すると仮定したとき
の最大応答変位 δe と弾塑性応答するときの最大応答変位を δmax は,概ね等しい(式(11.3)).
δ max ≈ δ e
(11.3)
上の経験則を確認するため,固有周期の違いによる最大応答の傾向の違いを調べる.図 11-5 に,
弾性時の固有周期 Te が 0.3 秒と 1.0 秒のケースについて,縦軸に最大応答加速度を取り横軸に最大
応答変位を取ったものを示す.
図 11-5(a)より,Te が 0.3 秒の場合には,R が大きくなる(降伏耐力が小さくなる)につれて最大
応答加速度が減少する一方で最大応答変位が増加する傾向にある事がわかる.特に,R が大きくな
るにつれて最大応答変位の増加が顕著となる.特に,ノーマルバイリニア―モデルの場合,エネル
ギー一定則と概ね対応していることがわかる.
一方,図 11-5(b)より,Te が 1.0 秒の場合には,R が大きくなる(降伏耐力が小さくなる)につれ
て最大応答加速度が減少するものの,最大応答変位もむしろ減少し,R = 5.0 とした場合でも最大応
答変位が弾性時(R = 1.0)と比べて小さくなっている.この傾向は他の地震動においても一般的に
見られる傾向である.
なお,Te が 0.3 秒と 1.0 秒のケースにおいて,復元力特性を剛性低下型バイリニアーモデルとした
場合では,ノーマルバイリニアーモデルの場合と比べて最大応答変位が大きくなる傾向が見られる.
11-4
構造振動特論-第 11 回資料
1質点1自由度系の非線形地震応答(3)
最終印刷日時:2014/06/26 12:57:00
図 11-5 最大応答の比較
11-5
構造振動特論-第 11 回資料
1質点1自由度系の非線形地震応答(3)
最終印刷日時:2014/06/26 12:57:00
演習問題
11.3
与えられた2つの Excel のマクロ(ノーマルバイリニアーモデル,剛性低下型ノーマルバイリニ
アーモデル)を用いて,以下の1自由度系の非線形時刻歴応答解析を実施し,応答性状を比較せよ.
構造物1:質量 100ton,弾性固有周期 Te = 0.4s
構造物2:質量 100ton,弾性固有周期 Te = 0.8s
構造物3:質量 100ton,弾性固有周期 Te = 2.0s
初期剛性の値は,与えられた質量と弾性固有周期から求める事.
減衰定数 h は 0.05 とする.降伏耐力 Qy と降伏後剛性と初期剛性の比は以下の通りとする.
z
Qy = Qe / R: R = 1, 1.5, 2, 3, 4, 5, 10
z
降伏後剛性と初期剛性の比(降伏後剛性低下率)=0.001 の1通り
Qe の求め方:初めに,Qy = 10000kN(十分に大きい値)としてマクロを実施し,最大応答せん断
力を求める.この値を Qe とする.
解析結果は,今回資料の図 11-5 と以下の表 11-1 のようにしてまとめること.
表 11-1
解析結果の取りまとめ
最大塑性率
R
ノーマルバイリニ
剛性低下型バイリ
アーモデル
ニアーモデル
1.000
1.000
1.000
*.***
*.***
*.***
エネルギー一定則
変位一定則
1.0
1.000
1.5
*.***
2.0
・・・・
なお,エネルギー一定則に基づく最大塑性率μの推定値は式(11.4)より,変位一定則によるμの推定
値は式(11.5)より与えられる.
μ=
1 2
( R + 1)
2
(11.4)
μ=R
(11.5)
注:グラフと表は,構造物1~3で分けて作成すること.なお,図には,ノーマルバイリニアー
モデルと剛性低下型バイリニアーモデルの解析結果を,同じ図に重ねて示すこと.
11-6
Sheet3 - 1
Sheet3 - 2
Sub SDF_Normal_Bi_Linear()
' 1自由度系モデルの非線形地震応答解析(Normal-Bi-Linear Model)(Excel用マクロ)Ver 1.1
'
'
Programmed by K. Fujii at 2012/05/31
'
Last Modified at 2014/06/20
'
'
本プログラムは,復元力特性がNormal-Bi-Linearモデルである1自由度系モデルの非線形地震応答解析プログラムである.
'
'
'
'
Dim mass As Double '系の質量
Dim stiff1 As Double '系の初期剛性
Dim qy As Double '系の降伏耐力
Dim alpha As Double '系の降伏後剛性と初期剛性の比
Dim h1 As Double '系の減衰定数(瞬間剛性比例型)
Dim
Dim
Dim
Dim
amp As Double '地動の入力倍率
nrecord As Integer '加速度の原データ数
istep As Integer '積分刻み
dt As Double '積分時間刻み(dt0=dt/istep)
Dim beta As Double 'Newmark-β法での定数
Dim
Dim
Dim
Dim
y0 As Double '前ステップでの相対変位
v0 As Double '前ステップでの相対速度
a0 As Double '前ステップでの相対加速度
ag0 As Double '前ステップでの地動加速度
Dim
Dim
Dim
Dim
y1 As Double '現ステップでの相対変位
v1 As Double '現ステップでの相対速度
a1 As Double '現ステップでの相対加速度
ag1 As Double '現ステップでの地動加速度
Dim
Dim
Dim
Dim
dy As Double '現ステップでの相対変位増分
dv As Double '現ステップでの相対速度増分
da As Double '現ステップでの相対加速度増分
dag As Double '現ステップでの地動加速度増分
Dim vmax As Double '最大相対速度
Dim amax As Double '最大絶対加速度
Dim frmas As Double '最大復元力
Dim duc As Double '最大塑性率
Dim eta As Double '累積塑性変形倍率
Dim
Dim
Dim
Dim
Wkmax
Wdmax
Wsmax
Eimax
As
As
As
As
Double
Double
Double
Double
'最大運動エネルギー
'最大減衰吸収エネルギー
'最大ひずみエネルギー
'最大入力エネルギー
'***** 初期設定 *****
Set ws1 = Worksheets("構造物データと解析結果の要約")
Set ws2 = Worksheets("加速度の原記録")
Set ws3 = Worksheets("運動方程式")
Worksheets("運動方程式").Cells.ClearContents
'***** データ読み込み *****
mass = ws1.Cells(2, 3)
stiff1 = ws1.Cells(4, 3)
qy = ws1.Cells(4, 5)
alpha = ws1.Cells(4, 7)
h1 = ws1.Cells(6, 3)
dt0 = ws1.Cells(8, 3)
amp = ws1.Cells(8, 5)
nrecord = ws1.Cells(8, 7)
istep = ws1.Cells(8, 9)
If istep <= 1 Then
istep = 1
dt = dt0
Else
Dim ktan0 As Double '前ステップでの瞬間剛性
Dim ktan1 As Double '現ステップでの瞬間剛性
dt = dt0 / istep
End If
Dim omega1 As Double '初期固有円振動数
Dim c0 As Double '前ステップでの減衰係数
Dim c1 As Double '現ステップでの減衰係数
Dim
Dim
Dim
Dim
Dim
fd0
fd1
fr0
fr1
ffr
As
As
As
As
As
Double
Double
Double
Double
Double
'前ステップでの瞬間剛性に基づく減衰力
'現ステップでの減衰力
'前ステップでの復元力
'現ステップでの復元力
'現ステップでの増分復元力
Dim dfd As Double '減衰係数の変化による不釣り合い力
Dim dfr As Double '瞬間剛性の変化による不釣り合い力
Dim df0 As Double '現ステップでの不釣り合い力(=次ステップにて解除)
Dim dpn As Double '増分変位算定のための等価増分外力
Dim kn As Double '増分変位算定のための等価剛性
Dim
Dim
Dim
Dim
il
yr
yl
di
As
As
As
As
Integer '復元力ルールNo (1: 弾性,2:降伏,3:除荷)
Double '現ルールにおける変位の上限
Double '現ルールにおける変位の下限
Integer '現ルールにおける変位の向きを表す変数(1: 正方向,2:負方向)
Dim
Dim
Dim
Dim
dWk0
dWd0
dWs0
dEi0
As
As
As
As
Double
Double
Double
Double
'前ステップでの運動エネルギーの増分
'前ステップでの減衰吸収エネルギーの増分
'前ステップでのひずみエネルギーの増分
'前ステップでの入力エネルギーの増分
Dim
Dim
Dim
Dim
dWk1
dWd1
dWs1
dEi1
As
As
As
As
Double
Double
Double
Double
'現ステップでの運動エネルギーの増分
'現ステップでの減衰吸収エネルギーの増分
'現ステップでのひずみエネルギーの増分
'現ステップでの入力エネルギーの増分
Dim
Dim
Dim
Dim
Dim
Wk As Double '現ステップまでの運動エネルギー
Wd As Double '現ステップまでの減衰吸収エネルギー
Ws As Double '現ステップまでのひずみエネルギー
Ei As Double '現ステップまでの入力エネルギー
Err As Double '現ステップでのエネルギーバランスのエラー
Dim ymax As Double '最大相対変位
beta = ws1.Cells(10, 3)
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
1) = "Time"
2) = "地動加速度 G.Acc"
3) = "相対変位 y"
4) = "相対速度 v"
5) = "絶対加速度 a"
6) = "減衰力 Fd"
7) = "復元力 Fr"
8) = "il"
9) = "yr"
10) = "yl"
11) = "di"
12) = "ktan"
13) = "dFd"
14) = "dFr"
15) = "dF"
16) = "Wk"
17) = "Wd"
18) = "Ws"
19) = "Ei"
20) = "Err"
y0 = 0#
v0 = 0#
a0 = 0#
ag0 = 0#
df0 = 0#
omega1 = Sqr(stiff1 / mass)
c0 = 2 * (h1 / omega1) * stiff1
ktan0 = stiff1
il
yr
yl
di
=
=
=
=
1
qy / stiff1
-yr
1
Sheet3 - 3
Sheet3 - 4
dWk0
dWd0
dWs0
dEi0
=
=
=
=
0#
0#
0#
0#
dWk1
dWd1
dWs1
dEi1
=
=
=
=
0#
0#
0#
0#
Wk
Wd
Ws
Ei
0#
0#
0#
0#
GoTo 2
Else
ktan1 = stiff1
fr1 = stiff1 * y1
End If
ElseIf il = 2 Then
=
=
=
=
2
'ルール2:降伏の場合
ktan1 = alpha * stiff1
ymax = 0#
vmax = 0#
amax = 0#
frmax = 0#
If di = 1 Then
fr1 = qy + ktan1 * (y1 - qy / stiff1)
If y1 < yl Then
Wkmax
Wdmax
Wsmax
Eimax
=
=
=
=
0#
0#
0#
0#
il =
di =
yr =
yl =
GoTo
'****** 応答計算 ******
For i = 1 To nrecord
'
3
2
y0
y0 - 2 * (qy / stiff1)
3
Else
地動加速度の読み込み
yl = y1
ag0 = ag1
ag1 = amp * ws2.Cells(i, 1)
End If
Else
ws3.Cells(i + 1, 1) = i * dt0
ws3.Cells(i + 1, 2) = ag1
fr1 = -qy + ktan1 * (y1 + qy / stiff1)
dag = (ag1 - ag0) / istep
agt = ag0 + dag
If y1 > yr Then
il =
di =
yl =
yr =
GoTo
For ii = 1 To istep
'
増分変位の算定
dpn = -mass * dag + mass * (1# / (beta * dt) * v0 + (1# / (2 * beta)) * a0) + c0 * ((1# / (2 * beta)) * v0
+ (1# / (4 * beta) - 1) * a0) + df0
kn = ktan0 + c0 / (2 * beta * dt) + mass / (beta * dt ^ 2)
dy = dpn / kn
'
3
1
y0
y0 + 2 * (qy / stiff1)
3
Else
yr = y1
増分速度,加速度の算定
End If
dv = 1# / (2 * beta * dt) * dy - 1# / (2 * beta) * v0 - (1# / (4 * beta) - 1) * a0
da = 1# / (beta * dt ^ 2) * dy - 1# / (beta * dt) * v0 - 1# / (2 * beta) * a0
End If
Else
'
現ステップでの変位,速度,加速度の算定
3
y1 = y0 + dy
v1 = v0 + dv
a1 = a0 + da
'
'ルール3:除荷の場合
ktan1 = stiff1
fr1 = fr0 + ktan1 * dy
復元力特性による現ステップでの復元力の算定
If y1 > yr Then
ffr = ktan0 * dy
il
di
yr
yl
If il = 1 Then 'ルール1:弾性の場合
=
=
=
=
2
1
1000 * (qy / stiff1)
y1
If y1 > yr Then
GoTo 2
il
di
yr
yl
=
=
=
=
2
1
(qy / stiff1) * 1000
y1
ElseIf y1 < yl Then
il
di
yr
yl
GoTo 2
=
=
=
=
2
2
y1
-1000 * (qy / stiff1)
ElseIf y1 < yl Then
GoTo 2
il
di
yr
yl
=
=
=
=
2
2
y1
-(qy / stiff1) * 1000
End If
End If
Sheet3 - 5
'
Sheet3 - 6
現ステップでの減衰力の算定
Next i
c1 = (2 * h1 / omega1) * ktan1
fd1 = c1 * v1
'
'
duc = ymax / (qy / stiff1)
eta = Ws / (qy ^ 2 / stiff1)
現ステップでの不釣り合い力の算定
dfd = c0 * v1 - fd1
dfr = fr0 + ffr - fr1
ws1.Cells(14,
ws1.Cells(15,
ws1.Cells(16,
ws1.Cells(17,
df0 = dfd + dfr
'
現ステップでのエネルギーの算定
dWk1
dWd1
dWs1
dEi1
=
=
=
=
Wk
Wd
Ws
Ei
Wk
Wd
Ws
Ei
=
=
=
=
0.5
0.5
0.5
0.5
*
*
*
*
(dWk0
(dWd0
(dWs0
(dEi0
+
+
+
+
dWk1)
dWd1)
dWs1)
dEi1)
If Ei <> 0 Then
Err = Abs(Ei - Wk - Wd - Ws) / Ei
Else
Err = 0#
End If
dWk0
dWd0
dWs0
dEi0
'
=
=
=
=
dWk1
dWd1
dWs1
dEi1
データの更新
y0 = y1
v0 = v1
a0 = a1
agt = agt + dag
ktan0 = ktan1
c0 = c1
fr0 = fr1
If
If
If
If
Abs(y1) > ymax Then ymax = Abs(y1)
Abs(v1) > vmax Then vmax = Abs(v1)
Abs(a1 + agt) > amax Then amax = Abs(a1 + agt)
Abs(fr1) > frmax Then frmax = Abs(fr1)
If
If
If
If
Abs(Wk)
Abs(Wd)
Abs(Ws)
Abs(Ei)
>
>
>
>
Wkmax
Wdmax
Wsmax
Eimax
Then
Then
Then
Then
Wkmax
Wdmax
Wsmax
Eimax
Next ii
'
結果の出力
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
3)
3)
3)
3)
=
=
=
=
ymax
vmax
amax
frmax
ws1.Cells(14, 5) = duc
ws1.Cells(15, 5) = eta
mass * a1 * v1 * dt
fd1 * v1 * dt
fr1 * v1 * dt
-mass * agt * v1 * dt
+
+
+
+
解析結果の要約の出力
3) = y1
4) = v1
5) = a1 + ag1
6) = fd1
7) = fr1
8) = il
9) = yr
10) = yl
11) = di
12) = ktan1
13) = dfd
14) = dfr
15) = df0
16) = Wk
17) = Wd
18) = Ws
19) = Ei
20) = Err
=
=
=
=
Abs(Wk)
Abs(Wd)
Abs(Ws)
Abs(Ei)
ws1.Cells(20,
ws1.Cells(21,
ws1.Cells(22,
ws1.Cells(23,
3)
3)
3)
3)
=
=
=
=
Wkmax
Wdmax
Wsmax
Eimax
ws1.Cells(20,
ws1.Cells(21,
ws1.Cells(22,
ws1.Cells(23,
ws1.Cells(25,
5)
5)
5)
5)
5)
=
=
=
=
=
Wk
Wd
Ws
Ei
Err
End Sub
Sheet3 - 1
Sheet3 - 2
Sub SDF_Degrading_Bi_Linear()
' 1自由度系モデルの非線形地震応答解析(Degrading-Bi-Linear Model)(Excel用マクロ)Ver 1.1
'
'
Programmed by K. Fujii at 2014/05/29
'
Last Modified at 2014/06/27
'
'
本プログラムは,復元力特性がDegrading-Bi-Linearモデルである1自由度系モデルの非線形地震応答解析プログラムである.
'
'
'
'
Dim mass As Double '系の質量
Dim stiff1 As Double '系の初期剛性
Dim qy As Double '系の降伏耐力
Dim alpha As Double '系の降伏後剛性と初期剛性の比
Dim h1 As Double '系の減衰定数(瞬間剛性比例型)
Dim
Dim
Dim
Dim
Dim
dt0 As Double '地動加速度データの時間刻み
amp As Double '地動の入力倍率
nrecord As Integer '加速度の原データ数
istep As Integer '積分刻み
dt As Double '積分時間刻み(dt0=dt/istep)
Dim
Dim
Dim
Dim
Dim
Wk As Double '現ステップまでの運動エネルギー
Wd As Double '現ステップまでの減衰吸収エネルギー
Ws As Double '現ステップまでのひずみエネルギー
Ei As Double '現ステップまでの入力エネルギー
Err As Double '現ステップでのエネルギーバランスのエラー
Dim
Dim
Dim
Dim
ymax As Double '最大相対変位
vmax As Double '最大相対速度
amax As Double '最大絶対加速度
frmas As Double '最大復元力
Dim duc As Double '最大塑性率
Dim eta As Double '累積塑性変形倍率
Dim
Dim
Dim
Dim
Wkmax
Wdmax
Wsmax
Eimax
As
As
As
As
Double
Double
Double
Double
'最大運動エネルギー
'最大減衰吸収エネルギー
'最大ひずみエネルギー
'最大入力エネルギー
Dim ypeak1 As Double '正側最大相対変位(ループ3-4開始点)
Dim ypeak2 As Double '負側最大相対変位(ループ3-4開始点)
Dim frpeak1 As Double '大ループの正側ピーク復元力(ループ3-4開始点)
Dim frpeak2 As Double '大ループの負側ピーク復元力(ループ3-4開始点)
Dim beta As Double 'Newmark-β法での定数
Dim
Dim
Dim
Dim
y0 As Double '前ステップでの相対変位
v0 As Double '前ステップでの相対速度
a0 As Double '前ステップでの相対加速度
ag0 As Double '前ステップでの地動加速度
Dim
Dim
Dim
Dim
y1 As Double '現ステップでの相対変位
v1 As Double '現ステップでの相対速度
a1 As Double '現ステップでの相対加速度
ag1 As Double '現ステップでの地動加速度
Dim
Dim
Dim
Dim
Dim
dy As Double '現ステップでの相対変位増分
dv As Double '現ステップでの相対速度増分
da As Double '現ステップでの相対加速度増分
dag As Double '現ステップでの地動加速度増分
agt As Double '分割ステップでの地動加速度
Dim ktan0 As Double '前ステップでの瞬間剛性
Dim ktan1 As Double '現ステップでの瞬間剛性
Dim
Dim
Dim
Dim
ktan04 As Double
ktan06 As Double
ktan08 As Double
ktan010 As Double
Dim omega1 As Double '初期固有円振動数
Dim c0 As Double '前ステップでの減衰係数
Dim c1 As Double '現ステップでの減衰係数
Dim
Dim
Dim
Dim
Dim
fd0
fd1
fr0
fr1
ffr
As
As
As
As
As
Double
Double
Double
Double
Double
'前ステップでの瞬間剛性に基づく減衰力
'現ステップでの減衰力
'前ステップでの復元力
'現ステップでの復元力
'現ステップでの増分復元力
Dim dfd As Double '減衰係数の変化による不釣り合い力
Dim dfr As Double '瞬間剛性の変化による不釣り合い力
Dim df0 As Double '現ステップでの不釣り合い力(=次ステップにて解除)
Dim dpn As Double '増分変位算定のための等価増分外力
Dim kn As Double '増分変位算定のための等価剛性
Dim
Dim
Dim
Dim
il
yr
yl
di
As
As
As
As
Integer '復元力ルールNo (1~11)
Double '現ルールにおける変位の上限
Double '現ルールにおける変位の下限
Integer '現ルールにおける変位の向きを表す変数(1: 正方向,2:負方向)
Dim
Dim
Dim
Dim
dWk0
dWd0
dWs0
dEi0
As
As
As
As
Double
Double
Double
Double
'前ステップでの運動エネルギーの増分
'前ステップでの減衰吸収エネルギーの増分
'前ステップでのひずみエネルギーの増分
'前ステップでの入力エネルギーの増分
Dim
Dim
Dim
Dim
dWk1
dWd1
dWs1
dEi1
As
As
As
As
Double
Double
Double
Double
'現ステップでの運動エネルギーの増分
'現ステップでの減衰吸収エネルギーの増分
'現ステップでのひずみエネルギーの増分
'現ステップでの入力エネルギーの増分
Dim ypeak01 As Double '小ループの正側ピーク変位(ループ5-6開始点)
Dim ypeak02 As Double '小ループの負側ピーク変位(ループ5-6開始点)
Dim frpeak01 As Double '小ループの正側ピーク復元力(ループ5-6開始点)
Dim frpeak02 As Double '小ループの負側ピーク復元力(ループ5-6開始点点)
Dim ypeak03 As Double '小ループの正側ピーク変位(ループ7-8開始点,ループ9-10開始点,ループ11-10開始点)
Dim ypeak04 As Double '小ループの負側ピーク変位(ループ7-8開始点,ループ9-10開始点,ループ11-10開始点)
Dim frpeak03 As Double '小ループの正側ピーク復元力(ループ7-8開始点,ループ9-10開始点,ループ11-10開始点)
Dim frpeak04 As Double '小ループの負側ピーク復元力(ループ7-8開始点,ループ9-10開始,ループ11-10開始点点)
Dim y01 As Double '大ループの正側復元力0点変位(ループ3-4中間点)
Dim y02 As Double '大ループの負側復元力0点変位(ループ3-4中間点)
Dim
Dim
Dim
Dim
y001
y002
y003
y004
As
As
As
As
Double
Double
Double
Double
'小ループの正側復元力0点変位(ループ5-6中間点)
'小ループの負側復元力0点変位(ループ5-6中間点)
'小ループの正側復元力0点変位(2周目,ループ7-8中間点,ループ9-10中間点,ループ11-10中間点)
'小ループの負側復元力0点変位(2周目,ループ7-8中間点,ループ9-10中間点,ループ11-10中間点)
'***** 初期設定 *****
Set ws1 = Worksheets("構造物データと解析結果の要約")
Set ws2 = Worksheets("加速度の原記録")
Set ws3 = Worksheets("運動方程式")
Worksheets("運動方程式").Cells.ClearContents
'***** データ読み込み *****
mass = ws1.Cells(2, 3)
stiff1 = ws1.Cells(4, 3)
qy = ws1.Cells(4, 5)
alpha = ws1.Cells(4, 7)
h1 = ws1.Cells(6, 3)
dt0 = ws1.Cells(8, 3)
amp = ws1.Cells(8, 5)
nrecord = ws1.Cells(8, 7)
istep = ws1.Cells(8, 9)
If istep <= 1 Then
istep = 1
dt = dt0
Else
dt = dt0 / istep
End If
beta = ws1.Cells(10, 3)
ws3.Cells(1, 1) = "Time"
ws3.Cells(1, 2) = "地動加速度 G.Acc"
Sheet3 - 3
Sheet3 - 4
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
3) = "相対変位 y"
4) = "相対速度 v"
5) = "絶対加速度 a"
6) = "減衰力 Fd"
7) = "復元力 Fr"
8) = "il"
9) = "yr"
10) = "yl"
11) = "di"
12) = "ktan"
13) = "dFd"
14) = "dFr"
15) = "dF"
16) = "Wk"
17) = "Wd"
18) = "Ws"
19) = "Ei"
20) = "Err"
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
21)
22)
23)
24)
=
=
=
=
"Ypeak1"
"Frpeak1"
"Ypeak2"
"Frpeak2"
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
25)
26)
27)
28)
=
=
=
=
"Ypeak01"
"Frpeak01"
"Ypeak02"
"Frpeak02"
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
29)
30)
31)
32)
=
=
=
=
"Ypeak03"
"Frpeak03"
"Ypeak04"
"Frpeak04"
Eimax = 0#
'****** 応答計算 ******
For i = 1 To nrecord
'
地動加速度の読み込み
ag0 = ag1
ag1 = amp * ws2.Cells(i, 1)
ws3.Cells(i + 1, 1) = i * dt0
ws3.Cells(i + 1, 2) = ag1
dag = (ag1 - ag0) / istep
agt = ag0 + dag
For ii = 1 To istep
'
増分変位の算定
dpn = -mass * dag + mass * (1# / (beta * dt) * v0 + (1# / (2 * beta)) * a0) + c0 * ((1# / (2 * beta)) * v0
+ (1# / (4 * beta) - 1) * a0) + df0
kn = ktan0 + c0 / (2 * beta * dt) + mass / (beta * dt ^ 2)
dy = dpn / kn
'
dv = 1# / (2 * beta * dt) * dy - 1# / (2 * beta) * v0 - (1# / (4 * beta) - 1) * a0
da = 1# / (beta * dt ^ 2) * dy - 1# / (beta * dt) * v0 - 1# / (2 * beta) * a0
'
ws3.Cells(1, 33) = "Y01"
ws3.Cells(1, 34) = "Y02"
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
ws3.Cells(1,
35)
36)
37)
38)
=
=
=
=
"Y001"
"Y002"
"Y003"
"Y004"
y0 = 0#
v0 = 0#
a0 = 0#
ag0 = 0#
ag1 = 0#
増分速度,加速度の算定
現ステップでの変位,速度,加速度の算定
y1 = y0 + dy
v1 = v0 + dv
a1 = a0 + da
'
復元力特性による現ステップでの復元力の算定
ffr = ktan0 * dy
If il = 1 Then 'ルール1:弾性の場合
If y1 > yr Then
il
di
yr
yl
df0 = 0#
omega1 = Sqr(stiff1 / mass)
c0 = 2 * (h1 / omega1) * stiff1
ktan0 = stiff1
il
yr
yl
di
=
=
=
=
=
=
=
=
0#
0#
0#
0#
dWk1
dWd1
dWs1
dEi1
=
=
=
=
0#
0#
0#
0#
Wk
Wd
Ws
Ei
0#
0#
0#
0#
=
=
=
=
2
1
(qy / stiff1) * 1000
y1
ktan1 = alpha * stiff1
ypeak2 = -qy / stiff1
frpeak2 = -qy
1
qy / stiff1
-yr
1
dWk0
dWd0
dWs0
dEi0
=
=
=
=
ypeak02 = -qy / stiff1
frpeak02 = -qy
GoTo 2
ElseIf y1 < yl Then
il
di
yr
yl
=
=
=
=
2
2
y1
-(qy / stiff1) * 1000
ypeak1 = qy / stiff1
frpeak1 = qy
ypeak01 = qy / stiff1
frpeak01 = qy
ymax = 0#
vmax = 0#
amax = 0#
frmax = 0#
ktan1 = alpha * stiff1
GoTo 2
Else
Wkmax = 0#
Wdmax = 0#
Wsmax = 0#
ktan1 = stiff1
fr1 = stiff1 * y1
Sheet3 - 5
Sheet3 - 6
ypeak04 = y1
frpeak04 = fr1
End If
ElseIf il = 2 Then
2
End If
'ルール2:降伏の場合
End If
If di = 1 Then
fr1 = qy + ktan1 * (y1 - qy / stiff1)
ElseIf il = 3 Then
3
If y1 < yl Then
'ルール3:除荷の場合(大ループ)
fr1 = fr0 + ktan1 * dy
il = 3
di = 2
If y1 > yr Then
If di = 2 Then
ypeak1 = y0
frpeak1 = fr0
il = 2
di = 1
ypeak01 = y0
frpeak01 = fr0
yr = 1000 * (qy / stiff1)
yl = y1
ktan1 = alpha * stiff1
ypeak03 = y0
frpeak03 = fr0
GoTo 2
ktan1 = stiff1 * Sqr(Abs((qy / stiff1) / ypeak1))
y01 = y0 - (fr0 / ktan1)
Else
yr = y0
yl = y01
il
di
yr
yl
GoTo 3
Else
=
=
=
=
4
1
ypeak1
y02
ktan1 = frpeak1 / (ypeak1 - y02)
fr1 = ktan1 * (y1 - y02)
yl = y1
ypeak1 = y1
frpeak1 = fr1
GoTo 4
End If
ypeak01 = y1
frpeak01 = fr1
ElseIf y1 < yl Then
ypeak03 = y1
frpeak03 = fr1
If di = 1 Then
il = 2
di = 2
yr = y1
yl = -1000 * (qy / stiff1)
ktan1 = alpha * stiff1
End If
Else
fr1 = -qy + ktan1 * (y1 + qy / stiff1)
GoTo 2
If y1 > yr Then
Else
il = 3
di = 1
ypeak2 = y0
frpeak2 = fr0
il
di
yr
yl
=
=
=
=
4
2
y01
ypeak2
ypeak02 = y0
frpeak02 = fr0
ktan1 = frpeak2 / (ypeak2 - y01)
fr1 = ktan1 * (y1 - y01)
ypeak04 = y0
frpeak04 = fr0
GoTo 4
End If
ktan1 = stiff1 * Sqr(Abs((qy / stiff1) / ypeak2))
y02 = y0 - (fr0 / ktan1)
End If
yl = y0
yr = y02
ElseIf il = 4 Then
4
'ルール4:逆方向載荷の場合(大ループ)
GoTo 3
If di = 1 Then
Else
fr1 = ktan1 * (y1 - y02)
yr = y1
ypeak2 = y1
frpeak2 = fr1
If y1 > yl Then
yl = y1
ypeak02 = y1
frpeak02 = fr1
If y1 > yr Then
Sheet3 - 7
Sheet3 - 8
il = 2
di = 1
yr = 1000 * (qy / stiff1)
yl = y1
ktan1 = alpha * stiff1
yl = y0
GoTo 5
End If
GoTo 2
End If
Else
ElseIf il = 5 Then
ypeak01 = y1
frpeak01 = fr1
5
'ルール5:除荷の場合(小ループ)
fr1 = fr0 + ktan1 * dy
ypeak03 = y1
frpeak03 = fr1
If y1 > yr Then
End If
If di = 2 Then
Else
il = 5
di = 2
il
di
yr
yl
=
=
=
=
4
1
ypeak1
y02
ypeak01 = y0
frpeak01 = fr0
ktan1 = frpeak1 / (ypeak1 - y02)
fr1 = ktan1 * (y1 - y02)
ypeak03 = y0
frpeak03 = fr0
GoTo 4
Else
ktan1 = stiff1 * Sqr(Abs((qy / stiff1) / ypeak1))
y001 = y0 - (fr0 / ktan1)
il
di
yr
yl
yr = y0
yl = y001
GoTo 5
=
=
=
=
6
1
ypeak1
y002
ktan1 = frpeak1 / (ypeak1 - y002)
fr1 = ktan1 * (y1 - y002)
End If
GoTo 6
Else
End If
fr1 = ktan1 * (y1 - y01)
ElseIf y1 < yl Then
If y1 < yr Then
If di = 1 Then
yr = y1
il
di
yr
yl
If y1 < yl Then
il = 2
di = 2
yl = -1000 * (qy / stiff1)
yr = y1
ktan1 = alpha * stiff1
=
=
=
=
4
2
y01
ypeak2
ktan1 = frpeak2 / (ypeak2 - y01)
fr1 = ktan1 * (y1 - y01)
GoTo 4
GoTo 2
Else
Else
il
di
yr
yl
ypeak02 = y1
frpeak02 = fr1
ypeak04 = y1
frpeak04 = fr1
=
=
=
=
6
2
y001
ypeak2
ktan1 = frpeak2 / (ypeak2 - y001)
fr1 = ktan1 * (y1 - y001)
End If
GoTo 6
Else
End If
il = 5
di = 1
End If
ypeak02 = y0
frpeak02 = fr0
ElseIf il = 6 Then
6
ypeak04 = y0
frpeak04 = fr0
ktan1 = stiff1 * Sqr(Abs((qy / stiff1) / ypeak2))
y002 = y0 - (fr0 / ktan1)
'ルール6:逆方向載荷の場合(小ループ)
If di = 1 Then
fr1 = ktan1 * (y1 - y002)
If y1 > yl Then
yr = y002
Sheet3 - 9
Sheet3 - 10
yl = y1
If y1 > yr Then
il = 2
di = 1
yr = 1000 * (qy / stiff1)
yl = y1
ktan1 = alpha * stiff1
ElseIf il = 7 Then
7
'ルール7:除荷の場合(小ループ2)
fr1 = fr0 + ktan1 * dy
If y1 > yr Then
If di = 2 Then
GoTo 2
il
di
yr
yl
Else
ypeak03 = y1
frpeak03 = fr1
=
=
=
=
6
1
ypeak1
y002
ktan1 = frpeak1 / (ypeak1 - y002)
fr1 = ktan1 * (y1 - y002)
End If
GoTo 6
Else
Else
il = 7
di = 2
ktan06 = frpeak1 / (ypeak1 - y004)
ktan08 = frpeak01 / (ypeak01 - y004)
ypeak03 = y0
frpeak03 = fr0
If ktan08 > ktan1 Or ktan08 < ktan06 Then
ktan1 = stiff1 * Sqr(Abs((qy / stiff1) / ypeak1))
y003 = y0 - (fr0 / ktan1)
y002 = y004
il
di
yr
yl
yr = y0
yl = y003
=
=
=
=
6
1
ypeak1
y002
GoTo 7
ktan1 = frpeak1 / (ypeak1 - y002)
fr1 = ktan1 * (y1 - y002)
End If
Else
GoTo 6
fr1 = ktan1 * (y1 - y001)
Else
If y1 < yr Then
il
di
yr
yl
yr = y1
=
=
=
=
8
1
ypeak01
y004
If y1 < yl Then
ktan1 = frpeak01 / (ypeak01 - y004)
fr1 = ktan1 * (y1 - y004)
il = 2
di = 2
yr = 1000 * (qy / stiff1)
yr = y1
ktan1 = alpha * stiff1
GoTo 2
Else
GoTo 8
End If
End If
ElseIf y1 < yl Then
ypeak04 = y1
frpeak04 = fr1
If di = 1 Then
il
di
yr
yl
End If
Else
il = 7
di = 1
=
=
=
=
6
2
y001
ypeak2
ktan1 = frpeak2 / (ypeak2 - y001)
fr1 = ktan1 * (y1 - y001)
ypeak04 = y0
frpeak04 = fr0
GoTo 6
Else
ktan1 = stiff1 * Sqr(Abs((qy / stiff1) / ypeak2))
y004 = y0 - (fr0 / ktan1)
yr = y004
yl = y0
GoTo 7
End If
End If
ktan06 = frpeak2 / (ypeak2 - y003)
ktan08 = frpeak02 / (ypeak02 - y003)
If ktan08 > ktan1 Or ktan08 < ktan06 Then
y001 = y003
il
di
yr
yl
=
=
=
=
6
2
y001
ypeak2
Sheet3 - 11
Sheet3 - 12
If y1 < yl Then
ktan1 = frpeak2 / (ypeak2 - y001)
fr1 = ktan1 * (y1 - y001)
il
di
yr
yl
GoTo 6
=
=
=
=
4
2
y01
ypeak2
Else
il
di
yr
yl
=
=
=
=
ktan1 = frpeak2 / (ypeak2 - y01)
fr1 = ktan1 * (y1 - y01)
8
2
y003
ypeak02
GoTo 4
Else
ktan1 = frpeak02 / (ypeak02 - y003)
fr1 = ktan1 * (y1 - y003)
ypeak04 = y1
frpeak04 = fr1
GoTo 8
End If
End If
Else
End If
il = 9
di = 1
End If
ElseIf il = 8 Then
8
ypeak04 = y0
frpeak04 = fr0
'ルール8:逆方向載荷の場合(小ループ2)
ktan1 = stiff1 * Sqr(Abs((qy / stiff1) / ypeak2))
If di = 1 Then
y004 = y0 - (fr0 / ktan1)
fr1 = ktan1 * (y1 - y004)
yr = y004
yl = y0
If y1 > yl Then
yl = y1
GoTo 9
If y1 > yr Then
il
di
yr
yl
=
=
=
=
End If
4
1
ypeak1
y02
End If
ElseIf il = 9 Then
9
'ルール9:ルール8からの除荷の場合(小ループ2)
ktan1 = frpeak1 / (ypeak1 - y02)
fr1 = ktan1 * (y1 - y02)
fr1 = fr0 + ktan1 * dy
GoTo 4
If y1 > yr Then
Else
If di = 2 Then
ypeak03 = y1
frpeak03 = fr1
il
di
yr
yl
End If
Else
=
=
=
=
8
1
ypeak01
y004
ktan1 = frpeak01 / (ypeak01 - y004)
fr1 = ktan1 * (y1 - y004)
il = 9
di = 2
ypeak03 = y0
frpeak03 = fr0
GoTo 8
Else
ktan1 = stiff1 * Sqr(Abs((qy / stiff1) / ypeak1))
ktan06 = frpeak1 / (ypeak1 - y004)
ktan010 = frpeak01 / (ypeak01 - y004)
y003 = y0 - (fr0 / ktan1)
If ktan010 > ktan1 Or ktan010 < ktan06 Then
yr = y0
yl = y003
GoTo 9
End If
Else
y002 = y004
il
di
yr
yl
=
=
=
=
6
1
ypeak1
y002
ktan1 = frpeak1 / (ypeak1 - y002)
fr1 = ktan1 * (y1 - y002)
fr1 = ktan1 * (y1 - y003)
GoTo 6
If y1 < yr Then
Else
yr = y1
il = 10
Sheet3 - 13
Sheet3 - 14
di = 1
yr = ypeak01
yl = y004
If ypeak1 > ypeak03 Then
il = 12
di = 1
ktan1 = frpeak01 / (ypeak01 - y004)
fr1 = ktan1 * (y1 - y004)
yr = ypeak1
yl = ypeak03
GoTo 10
ktan1 = (frpeak1 - frpeak03) / (ypeak1 - ypeak03)
fr1 = frpeak03 + ktan1 * (y1 - ypeak03)
End If
End If
GoTo 12
ElseIf y1 < yl Then
Else
If di = 1 Then
il
di
yr
yl
=
=
=
=
il = 2
di = 1
yr = 1000 * (qy / stiff1)
yl = y1
ktan1 = alpha * stiff1
8
2
y003
ypeak02
GoTo 2
ktan1 = frpeak2 / (ypeak02 - y003)
fr1 = ktan1 * (y1 - y001)
End If
GoTo 8
Else
Else
ypeak03 = y1
frpeak03 = fr1
ktan06 = frpeak2 / (ypeak2 - y003)
ktan010 = frpeak02 / (ypeak02 - y003)
End If
Else
If ktan010 > ktan1 Or ktan010 < ktan06 Then
il = 11
di = 2
y001 = y003
il
di
yr
yl
=
=
=
=
6
2
y001
ypeak2
ypeak03 = y0
frpeak03 = fr0
ktan1 = stiff1 * Sqr(Abs((qy / stiff1) / ypeak1))
ktan1 = frpeak2 / (ypeak2 - y001)
fr1 = ktan1 * (y1 - y001)
y003 = y0 - (fr0 / ktan1)
yr = y0
yl = y003
GoTo 6
Else
GoTo 11
il
di
yr
yl
=
=
=
=
10
2
y003
ypeak02
End If
Else
fr1 = ktan1 * (y1 - y003)
ktan1 = frpeak02 / (ypeak02 - y003)
fr1 = ktan1 * (y1 - y003)
GoTo 10
End If
End If
If y1 < yr Then
yr = y1
If y1 < yl Then
ypeak04 = yl
frpeak04 = ktan1 * (ypeak04 - y003)
End If
If ypeak2 < ypeak04 Then
ElseIf il = 10 Then
10
'ルール10:逆方向載荷の場合(小ループ2)
If di = 1 Then
il = 12
di = 2
yl = ypeak2
yr = ypeak04
fr1 = ktan1 * (y1 - y004)
If y1 > yl Then
yl = y1
If y1 > yr Then
ypeak03 = yr
frpeak03 = ktan1 * (ypeak03 - y004)
ktan1 = (frpeak2 - frpeak04) / (ypeak2 - ypeak04)
fr1 = frpeak04 + ktan1 * (y1 - ypeak04)
GoTo 12
Else
il = 2
di = 2
yl = -1000 * (qy / stiff1)
Sheet3 - 15
Sheet3 - 16
yr = y1
ktan1 = alpha * stiff1
fr1 = ktan1 * (y1 - y004)
GoTo 10
GoTo 2
End If
End If
End If
Else
ElseIf y1 < yl Then
ypeak04 = y1
frpeak04 = fr1
If di = 1 Then
End If
il
di
yr
yl
Else
il = 11
di = 1
=
=
=
=
10
2
y003
ypeak02
ktan1 = frpeak2 / (ypeak02 - y003)
fr1 = ktan1 * (y1 - y003)
ypeak04 = y0
frpeak04 = fr0
GoTo 10
ktan1 = stiff1 * Sqr(Abs((qy / stiff1) / ypeak2))
Else
y004 = y0 - (fr0 / ktan1)
ktan06 = frpeak2 / (ypeak2 - y003)
ktan010 = frpeak02 / (ypeak02 - y003)
yr = y004
yl = y0
If ktan010 > ktan1 Or ktan010 < ktan06 Then
GoTo 11
y001 = y003
End If
il
di
yr
yl
End If
ElseIf il = 11 Then
11
'ルール11:ルール10からの除荷の場合(小ループ2)
=
=
=
=
6
2
y001
ypeak2
ktan1 = frpeak2 / (ypeak2 - y001)
fr1 = ktan1 * (y1 - y001)
fr1 = fr0 + ktan1 * dy
GoTo 6
If y1 > yr Then
Else
If di = 2 Then
il
di
yr
yl
=
=
=
=
il
di
yr
yl
10
1
ypeak01
y004
=
=
=
=
10
2
y003
ypeak02
ktan1 = frpeak02 / (ypeak02 - y003)
fr1 = ktan1 * (y1 - y003)
ktan1 = frpeak01 / (ypeak01 - y004)
fr1 = ktan1 * (y1 - y004)
GoTo 10
GoTo 10
End If
Else
End If
ktan06 = frpeak1 / (ypeak1 - y004)
ktan010 = frpeak01 / (ypeak01 - y004)
End If
If ktan010 > ktan1 Or ktan010 < ktan06 Then
y002 = y004
il
di
yr
yl
=
=
=
=
6
1
ypeak1
y002
ElseIf il = 12 Then
12
'ルール12:ルール10から骨格曲線への載荷(小ループ2)
If di = 1 Then
fr1 = frpeak03 + ktan1 * (y1 - ypeak03)
If y1 > yl Then
ktan1 = frpeak1 / (ypeak1 - y002)
fr1 = ktan1 * (y1 - y002)
yl = y1
GoTo 6
If y1 > yr Then
Else
il
di
yr
yl
=
=
=
=
10
1
ypeak01
y004
il = 2
di = 1
yr = 1000 * (qy / stiff1)
yl = y1
ktan1 = alpha * stiff1
GoTo 2
ktan1 = frpeak01 / (ypeak01 - y004)
Sheet3 - 17
Sheet3 - 18
Else
df0 = dfd + dfr
ypeak03 = y1
frpeak03 = fr1
'
End If
Else
il = 7
di = 2
ypeak03 = y0
frpeak03 = fr0
現ステップでのエネルギーの算定
dWk1
dWd1
dWs1
dEi1
=
=
=
=
Wk
Wd
Ws
Ei
Wk
Wd
Ws
Ei
=
=
=
=
mass * a1 * v1 * dt
fd1 * v1 * dt
fr1 * v1 * dt
-mass * agt * v1 * dt
+
+
+
+
0.5
0.5
0.5
0.5
*
*
*
*
(dWk0
(dWd0
(dWs0
(dEi0
+
+
+
+
dWk1)
dWd1)
dWs1)
dEi1)
If Ei <> 0 Then
ktan1 = stiff1 * Sqr(Abs((qy / stiff1) / ypeak1))
y003 = y0 - (fr0 / ktan1)
Err = Abs(Ei - Wk - Wd - Ws) / Ei
yr = y0
yl = y003
Else
Err = 0#
GoTo 7
End If
End If
dWk0
dWd0
dWs0
dEi0
Else
fr1 = frpeak04 + ktan1 * (y1 - ypeak04)
If y1 < yr Then
'
yr = y1
=
=
=
=
dWk1
dWd1
dWs1
dEi1
データの更新
y0 = y1
v0 = v1
a0 = a1
agt = agt + dag
ktan0 = ktan1
c0 = c1
fr0 = fr1
If y1 < yl Then
il = 2
di = 2
yr = 1000 * (qy / stiff1)
yr = y1
ktan1 = alpha * stiff1
GoTo 2
If
If
If
If
Abs(y1) > ymax Then ymax = Abs(y1)
Abs(v1) > vmax Then vmax = Abs(v1)
Abs(a1 + agt) > amax Then amax = Abs(a1 + agt)
Abs(fr1) > frmax Then frmax = Abs(fr1)
If
If
If
If
Abs(Wk)
Abs(Wd)
Abs(Ws)
Abs(Ei)
Else
ypeak04 = y1
frpeak04 = fr1
>
>
>
>
Wkmax
Wdmax
Wsmax
Eimax
Then
Then
Then
Then
Wkmax
Wdmax
Wsmax
Eimax
End If
Next ii
Else
'
il = 7
di = 1
ypeak04 = y0
frpeak04 = fr0
ktan1 = stiff1 * Sqr(Abs((qy / stiff1) / ypeak2))
y004 = y0 - (fr0 / ktan1)
yr = y004
yl = y0
GoTo 7
End If
End If
End If
'
現ステップでの減衰力の算定
c1 = (2 * h1 / omega1) * ktan1
fd1 = c1 * v1
'
現ステップでの不釣り合い力の算定
dfd = c0 * v1 - fd1
dfr = fr0 + ffr - fr1
結果の出力
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
3) = y1
4) = v1
5) = a1 + agt
6) = fd1
7) = fr1
8) = il
9) = yr
10) = yl
11) = di
12) = ktan1
13) = dfd
14) = dfr
15) = df0
16) = Wk
17) = Wd
18) = Ws
19) = Ei
20) = Err
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
+
+
+
+
1,
1,
1,
1,
21)
22)
23)
24)
=
=
=
=
ypeak1
frpeak1
ypeak2
frpeak2
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
+
+
+
+
1,
1,
1,
1,
25)
26)
27)
28)
=
=
=
=
ypeak01
frpeak01
ypeak02
frpeak02
=
=
=
=
Abs(Wk)
Abs(Wd)
Abs(Ws)
Abs(Ei)
Sheet3 - 19
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
+
+
+
+
1,
1,
1,
1,
29)
30)
31)
32)
=
=
=
=
ypeak03
frpeak03
ypeak04
frpeak04
ws3.Cells(i + 1, 33) = y01
ws3.Cells(i + 1, 34) = y02
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
ws3.Cells(i
+
+
+
+
1,
1,
1,
1,
35)
36)
37)
38)
=
=
=
=
y001
y002
y003
y004
Next i
'
解析結果の要約の出力
duc = ymax / (qy / stiff1)
eta = Ws / (qy ^ 2 / stiff1)
ws1.Cells(14,
ws1.Cells(15,
ws1.Cells(16,
ws1.Cells(17,
3)
3)
3)
3)
=
=
=
=
ymax
vmax
amax
frmax
ws1.Cells(14, 5) = duc
ws1.Cells(15, 5) = eta
ws1.Cells(20,
ws1.Cells(21,
ws1.Cells(22,
ws1.Cells(23,
3)
3)
3)
3)
=
=
=
=
Wkmax
Wdmax
Wsmax
Eimax
ws1.Cells(20,
ws1.Cells(21,
ws1.Cells(22,
ws1.Cells(23,
ws1.Cells(25,
5)
5)
5)
5)
5)
=
=
=
=
=
Wk
Wd
Ws
Ei
Err
End Sub