OpenSees Blog 日本語 目次

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

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







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

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


2016年12月24日土曜日

PowerShell で OpenSeesコマンドを実行するには


2016/12/24 メリークリスマス

http://business.newsln.jp/news/201612072350480000.html
Microsoft: 最新のWindows 10リリースで「コマンドプロンプト」を削除

という記事をみつけましたので、DOSコマンドプロンプトの代わりに、PowerShellでOpenSeesを実行することができるだろうか、ということで調査してみました。

PowerShellでOpenSeesを実行するには、以下の2つの方法があることを確認しました!

---------------------------------------------------------

PowerShellでの問題は、WindowsのpathをPowerShell 上で設定しなければいけない事

PowerShell上でスクリプトを実行させるときは、実行ポリシーを変更しなければいけない事
に注意しなければいけません。

<方法1>

1) PowerShell を立ち上げる

2) OpenSeesのTCLファイルがあるディレクトリへ移動する

3) $env:path += ";C:\Tcl\bin;C:\OpenSees\tools;"
を実行

4)  $env:path
を実行。OpenSeesとTclのディレクトリにパスが通っていることを確認する

5) OpenSees XXXXX.tcl
OpenSeesコマンドが記述されているtcl ファイルをOpenSeesコマンドで実行

方法1では、pathの設定のためのコマンドが長いので、いちいちタイピングするのは面倒です。
そのため、この部分とOpenSeesの実行を一つのPowerShellスクリプトとして実行することによって、タイプするコマンドを少なくする方法が<方法2>です。

<方法2>

0) 前準備として、
OpenSeesのTCLファイルがあるディレクトリで、下記のファイルを作成する

a) envPS.bat ファイル

@echo off
echo OpenSeesを実行しています
powershell -NoProfile -ExecutionPolicy Unrestricted .\envPS-OS  %1
echo 実行終了


b) envPS-OS.ps1 ファイル

$env:path += ";C:\Tcl\bin;C:\OpenSees\tools;"
OpenSees $Args[0]

1) PowerShell を立ち上げる

2) OpenSeesのTCLファイルがあるディレクトリへ移動する

3) .\envPS  XXXXX.tcl
を実行

例えば
truss-test.tcl を実行するには

.\envPS truss-test.tcl

になり、
実行結果は以下のとおりです





2016年12月21日水曜日

OpenSees Basic Examples (F9:2D 梁への固体動力学問題) 解析結果

2D 梁への固体動力学問題(ここ)で作成した、Ex6_4.tclファイルの OpenSeesコマンドを実行すると、以下の様な画面が表示されます。

















コンピュータのディスプレイ画面の右上に
OpenSees Basic Examples (F6::2D 梁への固体動力学問題) シュミレーション結果の画像表示
で指定した画像が動画として表示されます。

上辺の真ん中のNode (77) と底辺の真ん中のNode(9) に外力を加えてから、レイリー減衰する様子が動画としてみることができます。




















外力を加えたNode
I1 :  底辺の真ん中  → 9
I2 : 上辺の真ん中  → 77

固定点
1 : 左下
bn : 右下 → 17

また、 下記コマンド

# define the recorder
#---------------------
recorder Node -file Data/Node.txt -time -node $l1 -dof 1 2 disp

から、Dataフォルダーに、テキストファイル
Node.txt
が出力されます

底辺の真ん中のNode(9) のY方向の変位を記録しています。

time Node9でのY方向の変位
1 -0.0408198
2 -0.0816397
3 -0.12246
4 -0.163279
5 -0.204099
6 -0.244919
7 -0.285739
8 -0.326559
9 -0.367379
10 -0.408198
0.5 -0.397438
1 -0.377159
1.5 -0.357813
2 -0.333959
2.5 -0.305644
  :
  :
      :
      :
745 0.00546469
745.5 0.00631982
746 0.00708078
746.5 0.00773715
747 0.00828008
747.5 0.00870237
748 0.00899857
748.5 0.00916506
749 0.00920007
749.5 0.00910375
750 0.00887808

時間が10秒の後、0.5秒になっていますが、これは、

OpenSees Basic Examples (F7::2D 梁への固体動力学問題) レイリー減衰を追加しての解析設定
で、測定時間を0.0 秒にリセットしたためです。
setTime 0.0

そのため、実際は、0.5秒ではなく、10.5秒、 11.0秒・・・となります。

これをグラフにしたものは以下のとおりです。
















Node9は、外力を加えたNodeであり、また、固定されているNode同士の中間地点であるので、一番レイリー減衰を顕著にみることができます。


2016年12月14日水曜日

OpenSees Basic Examples (F8:2D 梁への固体動力学問題) コマンドサマリ


Basic Examples (2D 梁への固体動力学問題)   解説
のコマンドのサマリは以下の通りです。

このコマンドを ファイル名 EigenAnal_twoStoreyFrame1.tcl として、テキストフォーマットで作成し、
OpenSeesの起動環境 で 起動しているOpenSees のコマンドラインに

OpenSees EigenAnal_twoStoreyFrame1.tcl  <Enter>

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

----- EigenAnal_twoStoreyFrame1.tcl 始まり ------
# Eigen analysis of a two-storey one-bay frame; Example 10.5 from "Dynamics of Structures" book by Anil Chopra

# units: kips, in, sec

#       Vesna Terzic, 2010

#delete all previosly constructed objects
wipe;    

#set input variables
#--------------------

#mass
set m  [expr 100.0/386.0]

#number of modes
set numModes 2

#material
set A 63.41
set I 320.0
set E 29000.0

#geometry
set L 240.
set h  120.

# 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;

# 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 $A $E [expr 2.*$I] $TransfTag;
element elasticBeamColumn 2 3 5 $A $E $I           $TransfTag;
element elasticBeamColumn 3 2 4 $A $E [expr 2.*$I] $TransfTag;
element elasticBeamColumn 4 4 6 $A $E $I           $TransfTag;
# beams
element elasticBeamColumn 5 3 4 $A $E [expr 2.*$I] $TransfTag;
element elasticBeamColumn 6 5 6 $A $E $I           $TransfTag;

# record eigenvectors
#----------------------
for { set k 1 } { $k <= $numModes } { incr k } {
    recorder Node -file [format "modes/mode%i.out" $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

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

# 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

# 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_twoStoreyFrame1.tcl 終わり ------

 次のページ → 
OpenSees Basic Examples (F9::2D 梁への固体動力学問題) 解析結果

2016年12月7日水曜日

OpenSees Basic Examples (F7:2D 梁への固体動力学問題) レイリー減衰を追加しての解析設定


12) レイリー減衰を追加しての解析設定

レコーダー、外力の設定 で設定した外力を加えた後、レイリー減衰により、減衰をさせ、
減衰中のデータを解析するための設定を行い、シュミレーションを行います。

rayleigh [質量マトリクス係数] [瞬間剛性マトリクス係数] [初期剛性マトリクス係数] [committed stiffness matrix係数]

rayleigh コマンドの詳細については、「Getting started 地震波データの入力・解析」 での 「外力の設定-レイリー減衰の指定」  を参照してください

# ---------------------------------------
# Create and Perform the dynamic analysis
# ---------------------------------------
#define damping
rayleigh 0. 0. 0. [expr 2*0.02/sqrt([eigen 1])];

wipeAnalysisコマンドで、いままで使っていた解析設定をすべてリセットします

setTimeコマンドで、解析開始時刻を0.0 にリセットします

removeコマンドで、かけていた外力をなくします

# Remove the static analysis & reset the time to 0.0
wipeAnalysis
setTime 0.0

# Now remove the loads and let the beam vibrate
remove loadPattern 1

かかっていた外力がなくなった状態でレイリー減衰した時のシュミレーションを行うための解析の設定を行います。
ほぼ、
OpenSees Basic Examples (F5::2D 梁への固体動力学問題)解析の設定
と同じものを使用しています。

test EnergyIncr [耐性基準] [もし収束判定がエラーだった場合、再試行する回数] [判定結果の表示方法の指定]

注)  [判定結果の表示方法の指定] は 「何も表示しない」(=0) と指定している

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



方程式の解法は、Newton法を使用します。(algorithmコマンド)

algorithm Newton


有限要素法解析で生成される係数行列での疎行列を解く場合の、行列の再配列方法は逆カットヒル・マキー法 (Reverse Cuthill–McKee algorithm ,RCM)を使用する (numbererコマンド)

numberer RCM

制約のついた非線形問題を制約なし問題に変換して解く変換法は、Plainを使用する(constraintsコマンド)

constraints Plain

analysisコマンド で Transient と指定しています。

analysis [解析タイプ] Static / Transient / VariableTransient
analysis Transient

Transientでのニューマーク法を使用します。Newmark コマンドの説明は ここ にあります。

integrator Newmark [ γ値 ] [ β値 ]

ここでは
γ値 0.5  β値 0.25
ニューマーク法の定加速度法
を使用しています

integrator Newmark 0.5 0.25

線形連立方程式)の解法のために使用するプログラムは、LAPACKライブラリ(DGBSV)の実帯連立一次方程式を使用する (systemコマンド)
system BandGeneral

解析設定が終わった時点でシュミレーションを実行します
analyze [実行する回数] [増加させる秒数]

# Perform the transient analysis (50 sec)
analyze 1500 0.5

まとめると、以下の通り。

# ---------------------------------------
# Create and Perform the dynamic analysis
# ---------------------------------------
#define damping
rayleigh 0. 0. 0. [expr 2*0.02/sqrt([eigen 1])];

# Remove the static analysis & reset the time to 0.0
wipeAnalysis
setTime 0.0

# Now remove the loads and let the beam vibrate
remove loadPattern 1

# Create the transient analysis
test EnergyIncr 1.0e-12 10 0
algorithm Newton
numberer RCM
constraints Plain
integrator Newmark 0.5 0.25
system BandGeneral
analysis Transient

# Perform the transient analysis (50 sec)
analyze 1500 0.5


 次のページ → 
OpenSees Basic Examples (F8::2D 梁への固体動力学問題) コマンドサマリ