1)Model, Node(節点)の設定
2) 部材の定義
3) Element(要素)の設定
についての説明は、
OpenSees Basic Examples (鉄筋コンクリート門型フレーム 重力の柱軸力のみを作用させた解析) 解説(節点、要素、部材の定義)
と、同じです。
また、外力としての重力の設定についても、
OpenSees Basic Examples (鉄筋コンクリート門型フレーム 重力の柱軸力のみを作用させた解析) 解説(外力、解析の設定)
と同じものを使用するため、
OpenSees Basic Examples (鉄筋コンクリート門型フレーム :重力の柱軸力のみを作用させた解析) コマンドのサマリ
で作成した
RCF-G.tcl
ファイルをソースとして読み込みます。
また、実際に「鉄筋コンクリート門型フレーム 横荷重解析」のtdlコマンドをOpenSeesで動作させたとき、「鉄筋コンクリート門型フレーム重力荷重解析」は、
source RCF-G.tcl
のラインが実行されると終了するので、
"Gravity Analysis Completed"
と、画面に表示するようにしています。
さらに、loadConst コマンドにより、解析する時間をリセットします。
# ----------------------------------------------------
# Start of Model Generation & Initial Gravity Analysis
# ----------------------------------------------------
# Do operations of Example3.1 by sourcing in the tcl file
source RCF-G.tcl
puts "Gravity Analysis Completed"
# Set the gravity loads to be constant & reset the time in the domain
loadConst -time 0.0
# ----------------------------------------------------
# End of Model Generation & Initial Gravity Analysis
# ----------------------------------------------------
4)外力の設定
Node 3,4 に横荷重10kipをかけます。
Opensees のコマンドは、以下の通りです。
各コマンドの説明は、「OpenSeesコマンド集」を参照してください
変数H に 10の値を代入して後、
$H とすることでX軸方向に 荷重をかけるように設定しています。
# --------------------
# Define lateral loads
# --------------------
# Set some parameters
set H 10.0; # Reference lateral load
# Set lateral load pattern with a Linear TimeSeries
pattern Plain 2 "Linear" {
# Create nodal loads at nodes 3 & 4
# nd FX FY MZ
load 3 $H 0.0 0.0
load 4 $H 0.0 0.0
}
# ----------------------------------------------------
# End of additional modelling for lateral loads
# ----------------------------------------------------
5)解析の設定
解析する時の、連立方程式の解き方の手法などを設定は、
RCF-G.tcl
で設定したものと同じものを使います。
これについての説明は、
OpenSees Basic Examples (鉄筋コンクリート門型フレーム 重力の柱軸力のみを作用させた解析) 解説(外力、解析の設定)
を参照してください。
また、横荷重解析として、今回は
Node 3 のX軸方向への変位の増加分を基準として、記録をします。
解析する変位の増加分は 0.1 です。
integrator DisplacementControl [Node番号] [自由度における方向] [初期値] [反復回数] [変化の間隔(最大)] [変化の間隔(最小)]
各コマンドの説明は、「OpenSeesコマンド集」を参照してください
# ----------------------------------------------------
# Start of modifications to analysis for push over
# ----------------------------------------------------
# Set some parameters
set dU 0.1; # Displacement increment
# Change the integration scheme to be displacement control
# node dof init Jd min max
integrator DisplacementControl 3 1 $dU 1 $dU $dU
# ----------------------------------------------------
# End of modifications to analysis for push over
# ----------------------------------------------------
また、
解析結果として、Node 3,4 の x, y, θ 方向での変位を記録します。
( integrator DisplacementControl で指定しているので、Node3のx方向は 0.1 から 0.1づつ変位していきます)
この解析結果を node32.txt に保存します。
Element 1,2 の結果を ele32.txtに保存します。
# ------------------------------
# Start of recorder generation
# ------------------------------
# Stop the old recorders by destroying them
# remove recorders
# Create a recorder to monitor nodal displacements
recorder Node -file node32.txt -time -node 3 4 -dof 1 2 3 disp
# Create a recorder to monitor element forces in columns
recorder EnvelopeElement -file ele32.txt -time -ele 1 2 forces
# --------------------------------
# End of recorder generation
# ---------------------------------
この横荷重解析は、Node3 のX方向の変位が15.0になるまで続けます。
そのため、while文 で、currentDisp(Node3 のX方向の変位)がmaxU(15.0) よりも小さく、かつ(&&)、
analyze コマンドの戻り値が 成功(0) している間は、回し続けます。
なお、
set currentDisp [nodeDisp 3 1]
によって、X方向の変位をcurrentDisp に代入します。
set ok [analyze 1]
によって、analyze コマンドの戻り値を ok に代入します。
さらに、
analyze コマンドで、連立方程式を解くことを失敗すると、その戻り値が0ではなくなりますが、
その場合の処理については、下記のif文で、解析の設定を再設定します。
# if the analysis fails try initial tangent iteration
if {$ok != 0} {
・
・
・
}
再設定の内容は、
puts "regular newton failed .. lets try an initial stiffness for this step"
test NormDispIncr 1.0e-12 1000
algorithm ModifiedNewton -initial
収束判定の値を替え、また、連立方程式の解法をModifiedNewtonに変更したのち、
analyzeコマンドを再実行します。
set ok [analyze 1]
if {$ok == 0} {puts "that worked .. back to regular newton"}
test NormDispIncr 1.0e-12 10
algorithm Newton
もし、新しく設定した解法で、計算が成功した場合は、収束判定の値と、連立方程式の解法を
元にもどします。
# ------------------------------
# Finally perform the analysis
# ------------------------------
# Set some parameters
set maxU 15.0; # Max displacement
set currentDisp 0.0;
set ok 0
while {$ok == 0 && $currentDisp < $maxU} {
set ok [analyze 1]
# 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 1000
algorithm ModifiedNewton -initial
set ok [analyze 1]
if {$ok == 0} {puts "that worked .. back to regular newton"}
test NormDispIncr 1.0e-12 10
algorithm Newton
}
set currentDisp [nodeDisp 3 1]
}
while 文で行っている解析が、Node3 のX方向の変位が15.0以上になった場合、解析を終了しますが、その際、最後のanalyzeコマンドの実行結果が成功(0) だった場合は "SUCCESSFULLY" と表示し、失敗した場合は "FAILED" と表示して、終了します。
if {$ok == 0} {
puts "Pushover analysis completed SUCCESSFULLY";
} else {
puts "Pushover analysis FAILED";
}
OpenSees Basic Examples (鉄筋コンクリート門型フレーム 横荷重解析) コマンドのサマリ
Opensees コマンド 日本語解説 : 目次 |
0 件のコメント:
コメントを投稿