OpenSees Blog 日本語 目次

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

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







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

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


2015年12月9日水曜日

OpenSees Basic Examples (E5:鉄筋コンクリート門型フレーム 地震波を作用させた解析) 解説(解析の設定)


まず、解析をおこなった結果について収集するデータについての設定を行います。

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

コメントを投稿