OpenSees Blog 日本語 目次

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

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







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

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


2014年10月28日火曜日

OpenSees Basic Examples (C4: 2階建てフレームでの固有値解析) コマンドサマリ



OpenSees Basic Examples  (2階建てフレームでの固有値解析) 解説
のコマンドのサマリは以下の通りです。

このコマンドを ファイル名 EigenAnal_twoStoreyShearFrame7.tcl として、テキストフォーマットで作成し、


OpenSeesの起動環境 で 起動しているOpenSees のコマンドラインに


OpenSees EigenAnal_twoStoreyShearFrame7.tcl  <Enter>

と打ち込んで、実行します。


----- EigenAnal_twoStoreyShearFrame7.tcl 始まり ------


# Eigen analysis of a two-storey shear frame; Example 10.4 from "Dynamics of Structures" book by Anil Chopra - using equalDOF and very high Ib

# units: in, kips

wipe

#input
set m  [expr 100.0/386.0]
set numModes 2

#material
set Ac 63.41
set Ic 320.0
set E 30000.0
set Ib 10e+12
set Ab 63.41

#geometry
set L 288.
set h  144.

# create data directory
file mkdir modes;

# define the model
#---------------------------------
#model builder
model BasicBuilder -ndm 2 -ndf 3

# nodal coordinates:
node 1   0.  0. ;
node 2   $L  0. ;
node 3   0.  $h ;
node 4   $L  $h ;
node 5   0.  [expr 2*$h];
node 6   $L  [expr 2*$h];

# Single point constraints -- Boundary Conditions
fix 1 1 1 1;
fix 2 1 1 1;

# MP constraints
equalDOF 3 4 2 3
equalDOF 5 6 2 3

# assign mass
mass 3 $m 0. 0. ;
mass 4 $m 0. 0. ;
mass 5 [expr $m/2.] 0. 0. ;
mass 6 [expr $m/2.] 0. 0. ;

# define geometric transformation:
set TransfTag 1;
geomTransf Linear $TransfTag ;

# define elements:
# columns
element elasticBeamColumn 1 1 3 $Ac $E  [expr 2.*$Ic] $TransfTag;
element elasticBeamColumn 2 3 5 $Ac $E  $Ic           $TransfTag;
element elasticBeamColumn 3 2 4 $Ac $E  [expr 2.*$Ic] $TransfTag;
element elasticBeamColumn 4 4 6 $Ac $E  $Ic           $TransfTag;
# beams
element elasticBeamColumn 5 3 4 $Ab $E  $Ib           $TransfTag;
element elasticBeamColumn 6 5 6 $Ab $E  $Ib           $TransfTag;

# record eigenvectors
#----------------------
for { set k 1 } { $k <= $numModes } { incr k } {
    recorder Node -file [format "modes/mode%i.txt" $k] -nodeRange 1 6 -dof 1 2 3  "eigen $k"
}

# perform eigen analysis
#-----------------------------
set lambda [eigen  $numModes];

# calculate frequencies and periods of the structure
#---------------------------------------------------
set omega {}
set f {}
set T {}
set pi 3.141593

foreach lam $lambda {
lappend omega [expr sqrt($lam)]
lappend f [expr sqrt($lam)/(2*$pi)]
lappend T [expr (2*$pi)/sqrt($lam)]
}

puts "periods are $T"

# write the output file cosisting of periods
#--------------------------------------------
set period "modes/Periods.txt"
set Periods [open $period "w"]
foreach t $T {
puts $Periods " $t"
}
close $Periods


# create display  for mode shapes
#---------------------------------
#                 $windowTitle $xLoc $yLoc $xPixels $yPixels
recorder display "Mode Shape 1"  10    10     500      500     -wipe
prp $h $h 1;                                         # projection reference point (prp); defines the center of projection (viewer eye)
vup  0  1 0;                                         # view-up vector (vup)
vpn  0  0 1;                                         # view-plane normal (vpn)  
viewWindow -200 200 -200 200;                        # coordiantes of the window relative to prp
display -1 5 20;                                     # the 1st arg. is the tag for display mode (ex. -1 is for the first mode shape)
                                                     # the 2nd arg. is magnification factor for nodes, the 3rd arg. is magnif. factor of deformed shape
recorder display "Mode Shape 2" 10 510 500 500 -wipe
prp $h $h 1;
vup  0  1 0;
vpn  0  0 1;
viewWindow -200 200 -200 200
display -2 5 20


# Run a one step gravity load with no loading (to record eigenvectors)
#-----------------------------------------------------------------------
integrator LoadControl 0 1 0 0

# Convergence test
#                     tolerance maxIter displayCode
test EnergyIncr       1.0e-10    100        0

# Solution algorithm
algorithm Newton

# DOF numberer
numberer RCM

# Constraint handler
constraints Transformation


# System of equations solver
system ProfileSPD

analysis Static
set res [analyze 1]
if {$res < 0} {
    puts "Modal analysis failed"
}

# get values of eigenvectors for translational DOFs
#---------------------------------------------------
set f11 [nodeEigenvector 3 1 1]
set f21 [nodeEigenvector 5 1 1]
set f12 [nodeEigenvector 3 2 1]
set f22 [nodeEigenvector 5 2 1]
puts "eigenvector 1: [list [expr {$f11/$f21}] [expr {$f21/$f21}] ]"
puts "eigenvector 2: [list [expr {$f12/$f22}] [expr {$f22/$f22}] ]"


after 10000

----- EigenAnal_twoStoreyShearFrame7.tcl 終わり ------



次のページ →
Basic Examples Manual (2階建てフレームでの固有値解析) 
解析結果


Opensees コマンド 日本語解説 : 目次


2014年10月16日木曜日

OpenSees Basic Examples (C3: 2階建てフレームでの固有値解析) 解説(固有値解析)



2)解析結果を記録するレコーダーの設定
Node(節点)について、解析結果を記録するためのファイル名、Node番号を設定します


ここでは、Recorder Node コマンドを使用して、

Node 1から6までの 3つの自由度の値を、1次固有モードから2次固有モードまで出力します。

解析したい固有値の数(numModes)は、2です。
そのため、変数K に 固有値の数を代入して、結果をファイル(modeディレクトリーの下にあるmode1.txt(1次)、mode2.txt(2次)に出力します。


# record eigenvectors
#----------------------

# kに初期値として1をセットし、recorder...部分のコマンドを 1 づつk ≦ 2になるまで kを増加させて実行します。
for { set k 1 } { $k <= $numModes } { incr k } {   
    recorder Node -file [format "modes/mode%i.txt" $k] -nodeRange 1 6 -dof 1 2 3  "eigen $k"
}


シンボル lambda に 解析したい固有値の数(numModes) 入れます

# perform eigen analysis
#-----------------------------
set lambda [eigen  $numModes];

 固有振動数ω 固有周期T  固有周波数 f
を下記式を使って求め、 それぞれの1次、2次の値を、omega[2], T[2], f[2] の行列の中に格納します。



# calculate frequencies and periods of the structure
#---------------------------------------------------
set omega {}
set f {}
set T {}
set pi 3.141593

foreach lam $lambda {
lappend omega [expr sqrt($lam)]
lappend f [expr sqrt($lam)/(2*$pi)]
lappend T [expr (2*$pi)/sqrt($lam)]
}

次に、
最初に、modeディレクトリの中にPeriods.txt というファイルを作成し
書き込みモード("w")で、ファイルをOpenします。
($periodのシンボルの中に、ファイル名が格納されています)

書き込むデータ領域は、 Periods[ ]です。
この領域に、先ほど 固有周期 T[ ] の中に格納した、1次、2次の固有周期を代入するとともに、ディスプレイ上で表示します。
(OpenSeesを起動したときに、プロンプトに表示されます ここ参照)
最後にファイルをCloseします。

puts "periods are $T"

# write the output file cosisting of periods
#--------------------------------------------
set period "modes/Periods.txt"
set Periods [open $period "w"]
foreach t $T {
puts $Periods " $t"
}
close $Periods

3) 振動モード形のグラフ表示

1次振動モード形を表示します。
振動モード形は、別Windowでグラフとして表示されます。

最初に、Windowsの大きさと位置とタイトルを設定します
recorder display [windowのタイトル] [Windowの左上のX位置]  [Windowの左上のY位置] [Windowの幅] [Windowの高さ] -wipe

# create display  for mode shapes
#---------------------------------
#                 $windowTitle $xLoc $yLoc $xPixels $yPixels

recorder display "Mode Shape 1"  10    10     500      500     -wipe  

# record eigenvectors の所で求めているRecorder Nodeの値からグラフを作成します

# projection reference point (prp); defines the center of projection (viewer eye)
prp $h $h 1;                             

vup  0  1 0;                               # view-up vector (vup) 
vpn  0  0 1;                               # view-plane normal (vpn)     
viewWindow -200 200 -200 200;   # coordinates of the window relative to prp  

# the 1st arg. is the tag for display mode (ex. -1 is for the first mode shape)
# the 2nd arg. is magnification factor for nodes, the 3rd arg. is magnif. factor of deformed shape
display -1 5 20;   

2次振動モード形を表示します。                      

recorder display "Mode Shape 2" 10 510 500 500 -wipe

prp $h $h 1;
vup  0  1 0;
vpn  0  0 1;
viewWindow -200 200 -200 200
display -2 5 20

4)OpenSeesで用意されているツールの設定
有限要素法で使用する連立方程式の解法を設定します。
ここで使用しているコマンドについての
参照ページは ここ 、 ここ と ここ 

# Convergence test で、Energy Increment Testを行っています
OpenSeesでの解説は、ここです。

# Run a one step gravity load with no loading (to record eigenvectors)
#-----------------------------------------------------------------------
integrator LoadControl 0 1 0 0

# Convergence test
#                     tolerance maxIter displayCode
test EnergyIncr       1.0e-10    100        0

# Solution algorithm
algorithm Newton

# DOF numberer
numberer RCM

# Constraint handler
constraints Transformation


# System of equations solver
system ProfileSPD

analysis Static


5) 固有ベクトル(固有振動モード)値の取得
analyze 1 で 1ステップ分OpenSeesを実行します

set res [analyze 1]
if {$res < 0} {
    puts "Modal analysis failed"
}

f11, f21, f12, f22 に 指定したnodeの固有ベクトル(固有振動モード)値をnodeEigenvectorを使って取得します。

nodeEigenvector [Nodeの値] [固有値] [対象となる自由度]

f11には、
Node3、X方向の1次固有ベクトル(固有振動モード)の値が入ります

f12には、
Node3、X方向の2次固有ベクトル(固有振動モード)の値が入ります


f21には
Node5、X方向の1次固有ベクトル(固有振動モード)の値が入ります

f22には
Node5、X方向の2次固有ベクトル(固有振動モード)の値が入ります

# get values of eigenvectors for translational DOFs
#---------------------------------------------------
set f11 [nodeEigenvector 3 1 1]
set f21 [nodeEigenvector 5 1 1]
set f12 [nodeEigenvector 3 2 1]
set f22 [nodeEigenvector 5 2 1]

また、1次、2次それぞれのNode3での固有ベクトルの比率(Node5での固有ベクトルとの)を求めます。

puts "eigenvector 1: [list [expr {$f11/$f21}] [expr {$f21/$f21}] ]"
puts "eigenvector 2: [list [expr {$f12/$f22}] [expr {$f22/$f22}] ]"


ちなみに f11, f21, f12, f22 の値は、上記のコマンドでは表示しませんが、下記の様になっています

f11 =             -0.80208062768966204000
f21 =             -1.60416125541353030000
f12 =             -1.13431330181963320000
f22 =              1.13431330179544520000

また、
Node3とNode5での固有ベクトルの比率をグラフ化すると以下のようになります。




6) これは追加
実際に、このTCLコマンドを実行すると、3)で表示させた振動モード形のグラフが、
あっと言う間に消えてしまうので、下記のコマンドを追加しました。
これは、次のコマンドの実行まで、10000msec 待つというコマンドです。

after 10000

次のページ →

Basic Examples Manual (2階建てフレームでの固有値解析) 
コマンドサマリ


Opensees コマンド 日本語解説 : 目次

2014年10月9日木曜日

OpenSees Basic Examples (C2: 2階建てフレームでの固有値解析) 解説(Node, Element)


0)必要となる数字をシンボルに代入しておき、実行環境を生成します


#input
set m  [expr 100.0/386.0]
set numModes 2      # 解析する固有値モードの数

#material
set Ac 63.41    # Element 1,2,3,4の断面積
set Ic 320.0       #Element 2,4の慣性モーメント
set E 30000.0  # ヤング率
set Ib 10e+12   #Element 5,6の慣性モーメント
set Ab 63.41      # Element  5,6の断面積

#geometry
set L 288.
set h  144.

# create data directory "mkdir"のディレクトリを生成します
file mkdir modes; 



1)Model, Node(節点), Element(要素)の設定
解析する時の、次元、節点(Node)、要素(Element)の
Opensees のコマンドは、以下の通りです。

1.1) 今までの設定をクリアします
wipe   

1.2) 2次元、自由度3 で、解析するよう設定します
model BasicBuilder [次元数] [自由度数] 

model BasicBuilder -ndm 2 -ndf 3

(参照ページはここ)

1.3) Node(節点) の 座標を設定します
Node [ nodeの番号 ] [ x座標] [y座標] -mass [節点質量(自由度の第1成分:u )]
[節点質量(自由度の第2成分:v )] [節点質量(自由度の第3成分:θ )]

$がついた変数は、0)の所で定義したシンボルの数字がはいります。


# nodal coordinates:
node 1   0.  0. ;
node 2   $L  0. ;
node 3   0.  $h ;
node 4   $L  $h ;
node 5   0.  [expr 2*$h];    #  = 2 x h 
node 6   $L  [expr 2*$h];       #  = 2 x h 


1.4) Nodeのどこを固定するかを設定します
ここでは、nodeの1と2を固定します。

fix [ nodeの番号 ] [ uの固定の定義]  [ vの固定の定義]  [ θの固定の定義] 
0: 固定されていない
1: 固定されている


# Single point constraints -- Boundary Conditions
fix 1 1 1 1;
fix 2 1 1 1;


(参照ページはここ)


1.5) 多点拘束(Multi Point Constraint、MPC)の定義
Node 3を主、Node4を従として、2番目の自由度(v)、3番目の自由度(θ)を拘束します
Node 5を主、Node6を従として、2番目の自由度(v)、3番目の自由度(θ)を拘束します

多点拘束を設定する時は、equalDOFコマンドを使用します。


equalDOF [ 主nodeの番号 ] [ 従nodeの番号 ] [ 拘束する自由度の番号 ] [ 拘束する自由度の番号 ]  


# MP constraints
equalDOF 3 4 2 3
equalDOF 5 6 2 3 


1.6) Nodeの質量の定義

Nodeの質量を指定します。

Node3,4 と Node5,6 の水平方向のみの質量が定義されています

mass [ nodeの番号 ] [ uの質量]  [ vの質量]  [ θ回転慣性質量] 


# assign mass
mass 3 $m 0. 0. ;
mass 4 $m 0. 0. ;
mass 5 [expr $m/2.] 0. 0. ;
mass 6 [expr $m/2.] 0. 0. ;

(参照ページはここ)


1.7) 座標変換の定義

geomTransf [座標変換の方法] [座標変換方法のID]


# define geometric transformation:
set TransfTag 1;
geomTransf Linear $TransfTag ;


(参照ページはここ)




1.8) Element(要素)を設定します。

Element コマンド の中の elasticBeamColum を使用します。

element elasticBeamColumn [ elementの番号 ] [ 片方のnode番号] [片方のnode番号] [ 断面積] [ヤング率] [Z軸の慣性モーメント] [座標変換方法のID]


# define elements:
# columns
element elasticBeamColumn 1 1 3 $Ac $E  [expr 2.*$Ic]  $TransfTag;
element elasticBeamColumn 2 3 5 $Ac $E  $Ic               $TransfTag;
element elasticBeamColumn 3 2 4 $Ac $E  [expr 2.*$Ic]  $TransfTag;
element elasticBeamColumn 4 4 6 $Ac $E  $Ic               $TransfTag;
# beams
element elasticBeamColumn 5 3 4 $Ab $E  $Ib               $TransfTag;
element elasticBeamColumn 6 5 6 $Ab $E  $Ib               $TransfTag;


(参照ページはここ)


次のページ →
Basic Examples Manual (2階建てフレームでの固有値解析) 
解説(固有値解析)


Opensees コマンド 日本語解説 : 目次





2014年9月30日火曜日

OpenSees Basic Examples (C1: 2階建てフレームでの固有値解析) 例題


 Eigen analysis of a two-storey shear frame 参照


例題は、下図の通りです。
Chopra教授の "Dynamic of Structures" からの例題です
10章  Free Vibration  part A Natural Vibration Frequencies and modes 10.4章 Orthogonality of modes

柱、桁の軸変形は無視、軸力の影響も無視した、理想的な形状として定義しています

単位は in, kips です















NodeとElementの場所は、下図のとおりです


h = 144
L = 2h = 288

m = 100.0/386.0 (集中質量)

解析する固有値モードの数 2

次のページ →
Basic Examples Manual (2階建てフレームでの固有値解析) 
解説(Node, Element)


Opensees コマンド 日本語解説 : 目次



2014年9月23日火曜日

2014年9月16日火曜日

OpenSees Basic Examples (H6: 弾性フレーム解析) 解析結果


Elastic Frame Example(ここ)で作成した、Truss.Tcl ファイル内の
OpenSeesコマンドを実行すると、以下の様な画面が表示されます。




固定荷重(重力)のみを外力として入れた場合での、X方向、Y方向の平衡点(バランス)のチェック 
SumX: Inputed: 0.0 + Computed: 0.0 = 0.0
SumY: Inputed: -3340.0 + Computed: 3340.0000000000005 = 4.547473508864641e-13


そのあと、横荷重を外力として入れた場合での、X方向、Y方向の平衡点(バランス)のチェック 

SumX: Inputed: 490.0 + Computed: -490.0 = 0.0
SumY: Inputed: -3340.0 + Computed: 3340.0000000000005 = 4.547473508864641e-13


Element(要素)1, 4, 7, 10の値を表示します

次に、1次から5次までの固有周期を表示します
Eigenvalues:
T1 = 1.0401120855641899
T2 = 0.3526488535190591
T3 = 0.19304096242066518
T4 = 0.15628822944549764
T5 = 0.13080165778115407

最後に、 下記コマンド
recorder Element -file EleForces.txt -ele 1 4 7 10 forces
recorder Node -file eigenvector.txt -nodeRange 5 16 -dof 1 2 3 eigen 0
を実行し

EleForces.txt
eigenvector.txt
をテキスト出力します

<EleForces.txt>
 
せん断力
軸力
曲げモーメント
せん断力
軸力
曲げモーメント
1(node1, 5)
-63.9773
401.845
8971.03
63.9773
-401.845
1683.13
4(node2, 6)
-150.946
1151.99
15200.9
150.946
-1151.99
10068.3
7(node 3,7)
-141.832
1129.67
14638.1
141.832
-1129.67
9131.38
10(node 4, 8)
-133.245
656.494
12620.2
133.245
-656.494
9426.02


<eigenvector.txt>


Node 5
x方向
Y方向
θ
1次固有モード
-0.141908
-0.00192151
0.00086474
2次固有モード
-0.35719
0.00195686
0.00120435
3次固有モード
0.431828
-0.000874166
0.000859069
4次固有モード
0.00113535
-0.00411668
0.000149871
5次固有モード
0.45603
-0.00247972
-0.00211809
Node 6
x方向
Y方向
θ
1次固有モード
-0.142232
0.000126621
0.000697339
2次固有モード
-0.352105
-5.94E-05
0.000872187
3次固有モード
0.416092
0.000112782
0.000695722
4次固有モード
1.19E-05
0.00301307
8.08E-05
5次固有モード
0.187679
0.0014713
-0.000610264
Node 7
x方向
Y方向
θ
1次固有モード
-0.142242
-0.000126704
0.000697378
2次固有モード
-0.352194
6.01E-05
0.000872272
3次固有モード
0.416344
-0.000114324
0.000695921
4次固有モード
8.92E-05
0.00301324
-8.09E-05
5次固有モード
-0.187375
0.00147179
0.000609905
Node 8
x方向
Y方向
θ
1次固有モード
-0.141942
0.00192161
0.000864941
2次固有モード
-0.357484
-0.00195769
0.00120486
3次固有モード
0.43262
0.000876127
0.000859769
4次固有モード
-0.00105958
-0.00411589
-0.000149894
5次固有モード
-0.455871
-0.00247799
0.00211801
Node 9
x方向
Y方向
θ
1次固有モード
-0.332789
-0.00293139
0.000822066
2次固有モード
-0.298525
0.00510052
-0.00186425
3次固有モード
-0.366312
-0.00078903
0.00146876
4次固有モード
-0.152834
-0.00774459
0.00198
5次固有モード
0.579406
-0.00624508
0.00155282
Node 10
x方向
Y方向
θ
1次固有モード
-0.332032
0.00017819
0.000700382
2次固有モード
-0.292031
-0.00028448
-0.00150294
3次固有モード
-0.349711
0.000144245
0.00103729
4次固有モード
-0.064785
0.0057054
0.000672374
5次固有モード
0.23704
0.00411487
0.000493141
Node 11
x方向
Y方向
θ
1次固有モード
-0.332051
-0.00017824
0.000700388
2次固有モード
-0.29206
0.000286104
-0.00150323
3次固有モード
-0.349832
-0.000146826
0.00103795
4次固有モード
0.0647796
0.00570575
-0.000671884
5次固有モード
-0.236956
0.00411593
-0.000492116
Node 12
x方向
Y方向
θ
1次固有モード
-0.332851
0.00293145
0.00082207
2次固有モード
-0.298608
-0.00510251
-0.00186567
3次固有モード
-0.366709
0.000792319
0.00147209
4次固有モード
0.152825
-0.00774302
-0.00197966
5次固有モード
-0.579395
-0.0062416
-0.0015523
Node 13
x方向
Y方向
θ
1次固有モード
-0.48966
-0.00319905
0.000773951
2次固有モード
0.377294
0.00652022
-0.00396465
3次固有モード
0.152521
0.000566604
-0.00415026
4次固有モード
-0.8081
-0.00940267
0.00396648
5次固有モード
-0.134941
-0.00822157
0.00455885
Node 14
x方向
Y方向
θ
1次固有モード
-0.487395
0.000188019
0.000689379
2次固有モード
0.365529
-0.00037264
-0.00336496
3次固有モード
0.141468
-2.98E-06
-0.00316668
4次固有モード
-0.33136
0.00692308
0.00137543
5次固有モード
-0.0515771
0.00550954
0.0015585
Node 15
x方向
Y方向
θ
1次固有モード
-0.487407
-0.000188033
0.000689337
2次固有モード
0.365579
0.000374514
-0.00336533
3次固有モード
0.141462
1.09E-06
-0.00316744
4次固有モード
0.331257
0.0069235
-0.00137499
5次固有モード
0.0514816
0.00551084
-0.00155771
Node 16
x方向
Y方向
θ
1次固有モード
-0.489695
0.00319907
0.000773751
2次固有モード
0.377449
-0.00652252
-0.00396581
3次固有モード
0.152533
-0.000564119
-0.00415457
4次固有モード
0.808059
-0.00940088
-0.00396642
5次固有モード
0.134926
-0.00821753
-0.00455894


次のページ →


Basic Examples Manual (Elastic Frame Example) 
振動モード形 グラフ


Opensees コマンド 日本語解説 : 目次