まず、解析をおこなった結果について収集するデータについての設定を行います。
まず、Nodeについては、3,4 について時間ごとの変位を disp.txtに出力させます。
# Create a recorder to monitor nodal displacements
recorder Node -time -file disp.txt -node 3 4 -dof 1 2 3 disp
Elementについては、1 についての、軸力と、曲げモーメントについての 時間ごとの変位を ele1secForce.txt に出力させます。
また、1 についての 部品座標系における変形を ele1secDef.txt に出力させます。
# Create recorders to monitor section forces and deformations
# at the base of the left column
recorder Element -time -file ele1secForce.txt -ele 1 section 1 force
recorder Element -time -file ele1secDef.txt -ele 1 section 1 deformation
最初に RCF-G.tcl を読み込むことで行われた 「鉄筋コンクリート門型フレーム重力荷重解析」の解析をリセットします。
# Delete the old analysis and all it's component objects
wipeAnalysis
5)解析の設定
解析する時の、連立方程式の解き方の手法などを設定します。
各コマンドの説明は、「OpenSeesコマンド集」を参照してください
# Create the system of equation, a banded general storage scheme
system BandGeneral
# Create the constraint handler, a plain handler as homogeneous boundary
constraints Plain
# Create the convergence test, the norm of the residual with a tolerance of
# 1e-12 and a max number of iterations of 10
test NormDispIncr 1.0e-12 10
# Create the solution algorithm, a Newton-Raphson algorithm
algorithm Newton
# Create the DOF numberer, the reverse Cuthill-McKee algorithm
numberer RCM
# Create the integration scheme, the Newmark with alpha =0.5 and beta =.25
integrator Newmark 0.5 0.25
# Create the analysis object
analysis Transient
最初に2次固有値の値を表示します。
# Perform an eigenvalue analysis
puts "eigen values at start of transient: [eigen 2]"
次に、解析時間を求めます。
これは、データ数(nPts)と、測定間隔(dt)を掛け合わせることで算出できます。
この値を tFinal に代入します。
また、解析している現在の時間を getTimeコマンドで求め
この値を tCurrent に代入します。
また、analyzeコマンドの戻り値は シンボル ok に入りますが、
ここで初期化をします(ok を 0 にセットします)
# set some variables
set tFinal [expr $nPts * $dt]
set tCurrent [getTime]
set ok 0
While 文で tCurrent がtFinal になるまで、
analyzeコマンドを実行します。
ここで 解析1回ごとに、0.01secごと、時間を増加させます。
analyze [実行する回数] [transient analysis の時の時間増加数]
analyzeの戻り値が、0であれば、解析計算が成功してていますが、
そうではなかった場合($ok !=0) 計算方法を、modified Newton法に変更して、解析計算をし直します。(この計算が成功した場合は、Newton法に戻します)
また、
set tCurrent [getTime]
で、tCurrentに現在の時間をセットします。
# Perform the transient analysis
while {$ok == 0 && $tCurrent < $tFinal} {
set ok [analyze 1 .01]
# if the analysis fails try initial tangent iteration
if {$ok != 0} {
puts "regular newton failed .. lets try an initail stiffness for this step"
test NormDispIncr 1.0e-12 100 0
algorithm ModifiedNewton -initial
set ok [analyze 1 .01]
if {$ok == 0} {puts "that worked .. back to regular newton"}
test NormDispIncr 1.0e-12 10
algorithm Newton
}
set tCurrent [getTime]
}
tCurrent がtFinal になったら、最後の解析計算の戻り値を見て、
成功していたら、SUCCESSFULLY、失敗していたら、FAILED を画面上に表示します。
# Print a message to indicate if analysis succesfull or not
if {$ok == 0} {
puts "Transient analysis completed SUCCESSFULLY";
} else {
puts "Transient analysis completed FAILED";
}
また最後に、再び、2次固有値の値を表示します。これは、解析最後の状態で計算した固有値の値になります。
# Perform an eigenvalue analysis
puts "eigen values at end of transient: [eigen -Umfpack 2]"
Node 3 の情報を出力します。
# Print state of node 3
print node 3
次のページ →
OpenSees Basic Examples (鉄筋コンクリート門型フレーム 地震波を作用させた解析) コマンドサマリ
Opensees コマンド 日本語解説 : 目次 |
0 件のコメント:
コメントを投稿