OpenSees Blog 日本語 目次

最初に「このブログをみるためのガイド」をご覧ください。

Update中OpenSees コマンド 日本語解説 の 目次 OpenSeesコマンド はじめての方は「ここから
このblogで使用しているOpenSeesコマンド集は「ここ」 Update中
OpenSees のソースコード 解析に挑戦してみる 目次最初のページは「ソースコードのダウンロードとビルド」
Appendix:C言語での 「有限要素法における平面トラスの解析」目次最初のページは「Microsoft Visual Studioの導入方法」







目次の中で、更新したページにはNewがついています

このブログ内の単語を検索したい場合は、左上OpenSeesロゴの上に検索窓から検索できます。


2015年10月14日水曜日

OpenSees Basic Examples (L2:鉄筋コンクリート門型フレーム 横荷重解析) 解説(外力、解析の設定)


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 件のコメント:

コメントを投稿