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 梁への固体動力学問題) コマンドサマリ

2016年11月30日水曜日

OpenSees Basic Examples (F6:2D 梁への固体動力学問題) シュミレーション結果の画像表示

11) シュミレーション結果の画像表示


行うシュミレーションの結果をグラッフィック表示させます。

最初に、表示するWindowsについて設定します。
recorder display "[表示するWindowのタイトル]" [表示するWindowの左上の位置(x)]  [表示するWindowの左上の位置(y)] [表示するWindowの大きさ(幅)] [表示するWindowの大きさ(高さ)] -wipe 

ここでの「表示するWindowの左上」は、コンピュータ画面の左上からの位置になります。
また、単位はピクセル(画素数)です。

# -------------------------------------
# create display for transient analysis
#--------------------------------------
#                    $windowTitle       $xLoc $yLoc $xPixels $yPixels
recorder display "Simply Supported Beam" 10     10      800     200    -wipe

Projector reference point (prp) 投影基準点
View-up vector (vup)
View-plane normal (vpn)
View Reference Point (vrp)
は、コンピュータグラッフィックスについての用語で、下図の様な定義となります。
詳細については、Viewpoint Projections and Specifications に記載されています。


prp 20 5.0 1.0;
 # 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コマンドで指定します。

viewWindow [ViewPlain上でのu方向左端]  [ViewPlain上でのu方向右端]  [ViewPlain上でのv方向下端]   [ViewPlain上でのv方向上端] 

viewWindow -30 30 -10 10;                    
  # coordiantes of the window relative to prp

最後に表示させる為のdisplayコマンドを設定する。

display [表示の見せ方] [拡大係数] [変形形状の強さ]

2階建てフレームでの固有値解析 では、[表示の見せ方] は、マイナスの値をとり、絶対値の値がn次固有モードを表したが、今回は 10を設定しているので、固有モードではないので、注意してください。

display 10 0 5;                                
  # the 1st arg. is the tag for display mode
  # the 2nd arg. is magnification factor for nodes, 
 # the 3rd arg. is magnif. factor of deformed shape

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

# -------------------------------------
# create display for transient analysis
#--------------------------------------
#                    $windowTitle       $xLoc $yLoc $xPixels $yPixels
recorder display "Simply Supported Beam" 10     10      800     200    -wipe
prp 20 5.0 1.0;                                
  # 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 -30 30 -10 10;                      
  # coordiantes of the window relative to prp
display 10 0 5;                                  
  # the 1st arg. is the tag for display mode
  # the 2nd arg. is magnification factor for nodes, the 3rd arg. is magnif. factor of deformed shape



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

2016年11月15日火曜日

ありがとうございます

OpenSees ユーザーズガイド: インストールと初めての使い方(Kindle版)
を出してから半月ほどになりました。

ご購入していただいた方、こちらではお名前等なにもわからないのが残念ですが、大変ありがとうございます。



本日kindle shopを見てみましたら、インテリアデザインのカテゴリーで一位になっていました。おそらく瞬間的なのでしょうが、記念にとったスクリーンショットが、こちらです。

 

この本が、プログラムを使うにあたっての助けになれば幸いです。
よろしくお願い致します。

2016年11月9日水曜日

OpenSees Basic Examples (F5:2D 梁への固体動力学問題)解析の設定


10)解析の設定

9)外力の設定で指定した荷重をかけている間の解析について設定しています。

解析する時の、連立方程式の解き方の手法などを設定します。
各コマンドの説明は、「OpenSeesコマンド集」を参照してください

解析は、Static で行い(analysis コマンド)、解析の間隔は1secから10secまで、1secづつ行う。(Integratorコマンド) 

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

# Type of analysis analysis
analysis Static

integrator LoadControl  [解析する時間間隔] [解析を行う時間間隔の頻度間隔] [初期時間] [ 最終時間] 

(注) [解析を行う時間間隔の頻度間隔] は、
1がセットされた場合は、(初期値が1secの場合) 1, 2, 3, 4, 5sec となる
2がセットされた場合は、(初期値が1secの場合) 1, 3, 7, 15sec となる

# Load control with variable load steps
#                      init Jd min max
integrator LoadControl 1.0   1 1.0 10.0

連立方程式を解く時の収束判定は、エネルギーの変化をもとにして行う(testコマンド)

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

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

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

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

# Solution algorithm
algorithm Newton

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

# DOF numberer
numberer RCM

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

# Cosntraint handler
constraints Plain

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

# System of equations solver
system ProfileSPD

解析設定が終わった時点で、9)外力の設定で指定した荷重をかけて10secシュミレーションします。

analyze [実行する回数] 

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

# --------------------------------------------------------------------
# Start of static analysis (creation of the analysis & analysis itself)
# --------------------------------------------------------------------

# Load control with variable load steps
#                      init Jd min max
integrator LoadControl 1.0   1 1.0 10.0

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

# Solution algorithm
algorithm Newton

# DOF numberer
numberer RCM

# Cosntraint handler
constraints Plain

# System of equations solver
system ProfileSPD

# Type of analysis analysis
analysis Static

# Perform the analysis
analyze 10

# --------------------------
# End of static analysis
# --------------------------


 次のページ → 
OpenSees Basic Examples (F6::2D 梁への固体動力学問題) シュミレーション結果の画像表示

2016年11月4日金曜日

OpenSees Basic Examples (F4:2D 梁への固体動力学問題) レコーダー、外力の設定


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

recorder Node -file [ 出力ファイル名 ] -time(時間を基準として記録) -node[記録したいNode番号] -dof[記録したい自由度] disp(相対的な変位を出力) 

Node 9 での X,Y成分における変位を時間ごとに記録します。

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

$I1 は、ここで定義された 値が入ります。
I1 は、底辺の真ん中  → 9

Data/Node.out
の表記は、OpenSeesを動作させているフォルダーの下に、Dataというフォルダーを作成した上で、ファイル名 Node.out  に 出力結果を書きだします。

(参照ページはここ)

9)外力の設定
この構造物に加える外力(緑の部分)を設定します。

$I1、$I2 は、ここで定義された 値が入ります。
I1 は、底辺の真ん中  → 9
I2 は、上辺の真ん中  → 77

pattern Plain [Loadの通し番号] Linear  {
     load [Node番号] [自由度の1番目に対してかける力(X方向)] [ 自由度の1番目に対してかける力(Y方向)] 

      [ 自由度の3番目に対してかける力(θ方向)]
}

時間ごとに一定に、Node9 と Node77 に対して、Y方向 -1.0 の荷重をかけます。

# define load pattern
#---------------------
pattern Plain 1 Linear {
load $l1 0.0 -1.0
load $l2 0.0 -1.0


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

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

2016年10月6日木曜日

OpenSees ユーザーズガイド: インストールと初めての使い方 Kindle版






OpenSees ユーザーズガイド: インストールと初めての使い方 Kindle版


出荷を開始しました。

Blogにぽちぽち書いていた内容が、古くなっておりましたので、新しいデータと2016年10月現在の情報に書き直したものを、まとめました。

OpenSeesのInstall 方法、はじめての使い方を解説している Getting stared の内容の説明と、実際にOpenSeesで動作させた出力結果、および、”PEER Ground Motion Database”のデータベースの使い方 おもに「コンピュータの使い方」の視点からの解説しています。約100ページ。

ご使用いただけましたら幸いです。



2016年8月27日土曜日

現在 公開停止中です

この数週間、あるIPアドレスが示す国から、異常な数の閲覧数が、数日続いて起こったため、
しばらく、最新の情報と目次以外を残して、公開を止めています。

もし特別なご希望などがありましたら、メール、コメントいただければ対応いたします

よろしくご理解お願いします
管理者2016年 8月1日

しばらく時間がたったので、一部、もとに戻しました。
管理者2016年9月4日


2016年7月20日水曜日

OpenSees Basic Examples (F3:2D 梁への固体動力学問題)Node(節点), Element(要素)の設定


6) Node(節点), Element(要素)の設定

下図の様な構造物を設定します。



















構造物は、メッシュで設定されていますが、
X方向、Y方向それぞれのブロックの数は、Xは4つ、Yは16つです。

# set up the number of elements in x (nx) and y (ny) direction
set nx 16; # NOTE: nx MUST BE EVEN FOR THIS EXAMPLE
set ny 4

重要な部分のNodeの番号をシンボルとして代入しておきます。
bn は、右下 → 17
I1 は、底辺の真ん中  → 9
I2 は、上辺の真ん中  → 77

# define numbering of node at the left support (bn), and the two nodes at load application (l1, l2)
set bn [expr $nx + 1]
set l1 [expr $nx/2 + 1]
set l2 [expr $l1 + $ny*($nx+1)]

矩形の場合は、block2D コマンドで、自動的に設定できます。
block2Dコマンドの説明は、ここです。

block2Dコマンドでは、下記の点についての値を設定すると、Node、Elementを設定したことになります。(便利ですね)














構造物のX方向の長さは40feet、Y方向の長さは10feet です。

Quad と eleArgs は Mode、係数などの設定 で代入した値が入っています。

# create the nodes and elements using the block2D command
block2D $nx $ny 1 1 $Quad $eleArgs {
1   0   0
2  40   0
3  40  10
4   0  10
}

7) 固定点の設定
Nodeのどこを固定するかを設定します

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

(参照ページはここ

# define boundary conditions
fix   1 1 1
fix $bn 0 1


 次のページ → 
OpenSees Basic Examples (F4::2D 梁への固体動力学問題)レコーダー、外力の設定

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

2016年7月13日水曜日

OpenSees Basic Examples (F2:2D 梁への固体動力学問題)Model、係数などの設定

1)  今までの設定をクリアします
wipe; # clear opensees model 

2) データ保存用に、"Data"という名前のディレクトリを作成します
# create data directory
file mkdir Data

3)Modelの設定
解析するモデルを設定します。
解析する時の、次元、自由度を設定するためのOpensees のコマンドは、以下の通りです。

model ModelBuilder -ndm [次元数] -ndf [自由度数] 

# Create ModelBuilder with 2 dimensions and 2 DOF/node
model BasicBuilder -ndm 2 -ndf 2

(参照ページはここ

4) 部材を定義します。
部材は、等方性材料です
nDMaterial ElasticIsotropic [通し番号] [ 弾性係数] [ポアソン比] [質量密度]

# create the material
nDMaterial ElasticIsotropic 1 1000 0.25 3.0

5)  有限要素法で使用する解析方法を定義
この例題では、矩形構造体をのメッシュとして設定した時の、有限要素法で解析する時の方法を定義しています。

ここではさらに、3つの方法で、解析する用意がされています。
a) 双一次アイソパラメトリック要素
b)Bマトリクス誘導による双一次アイソパラメトリック要素
c)拡張ひずみモードを考慮した 双一次アイソパラメトリック要素

それぞれの項目を使用するには、使用する以外の項目に#をつけることによってコメントアウトします。

# set type of quadrilateral element (uncomment one of the three options)
set Quad quad
#set Quad bbarQuad
#set Quad enhancedQuad

上の例では、a) 双一次アイソパラメトリック要素での解析を行います。

# set up the arguments for the three considered elements
if {$Quad == "enhancedQuad" } {
set eleArgs "PlaneStress2D 1"
}
if {$Quad == "quad" } {
set eleArgs "1 PlaneStress2D 1"
}
if {$Quad == "bbarQuad" } {
set eleArgs "1"
}

それぞれ、下記の様な定義になります

a) 双一次アイソパラメトリック要素
Quadは "quad"
eleArgsは "PlaneStress2D 1"

b)Bマトリクス誘導による 双一次アイソパラメトリック要素
Quadは "bbarQuad"
eleArgsは "1"

c)拡張ひずみモードを考慮した 双一次アイソパラメトリック要素
Quadは "enhancedQuad"
eleArgsは "PlaneStress2D 1"


 次のページ → 
OpenSees Basic Examples (F3::2D 梁への固体動力学問題)Node(節点), Element(要素)の設定

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

2016年7月6日水曜日

OpenSees Basic Examples (F1:2D 梁への固体動力学問題)例題


 Simply supported beam modeled with two dimensional solid elements 参照


固体動力学の問題です。
下記の様なメッシュの四角形構造の梁に対して、真ん中に上から垂直方向に力(緑)をかけ、一度にその力がなくなった時、どのように波動が伝播していくかを解析します。






















赤のNode1の部分はX,Y方向とも固定され、青のNode9の部分は、Y方向は固定されていますが、X方向は固定されていません。
なお、
上記の図では、X方向のブロックは8つ、Y方向のブロックは2つですが、
実際の例題では、X方向は16個、Y方向は4個で計算しています。

長さはX方向40inch, Y方向10inchです。

単位は kip, inch, sec. 

弾性係数は 1000 ksi, ポアソン比は 0.25, 質量密度は 6.75 kip/cu in.

 次のページ → 
OpenSees Basic Examples (F2::2D 梁への固体動力学問題)Mode、係数などの設定

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

2016年6月29日水曜日

OpenSees Basic Examples (E10:鉄筋コンクリート門型フレーム 地震波を作用させた解析) 解析結果3

# 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

で得られた
< ele1secForce.txt> <ele1secDef.txt >
のグラフです。

Element(要素) 1 の変形のグラフです。< ele1secDef.txt>
X方向には地震波の加速度と同期する形で、変形が起こっていますが、Y方向には地震波の加速度が大きいほど伸びあがるように変形してしまっています。


















Element(要素) 1 の力グラフです。< ele1secForce.txt>
かかった軸力とモーメントですが、特に軸力は上記のY方向への変位を起こす軸力のかかり方がわかります。










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

2016年6月22日水曜日

OpenSees Basic Examples (E9:鉄筋コンクリート門型フレーム 地震波を作用させた解析) 解析結果2

# Create a recorder to monitor nodal displacements
recorder Node -time -file disp.txt -node 3 4 -dof 1 2 3 disp

で得られた
<disp.txt>
のグラフです。

Node,3 4のX方向の変位



























Node,3 4のY方向の変位



























Node3,4 のθ方向の変位



















Node3 と Node4 の変位の三次元データです。地震波の加速度に沿ってX方向に揺れながら、Yが大きく変位していることがわかります。

















 次のページ → 
OpenSees Basic Examples (鉄筋コンクリート門型フレーム 地震波を作用させた解析) 解析結果3

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






















2016年6月15日水曜日

OpenSees Basic Examples (E8:鉄筋コンクリート門型フレーム 地震波を作用させた解析) 解析結果1


鉄筋コンクリート門型フレーム 地震波を作用させた解析(ここ)で作成した、RCF-GE.tclファイル内の OpenSeesコマンドを実行すると、以下の様な画面が表示されます。













































最初は、鉄筋コンクリート門型フレーム 重力の柱軸力のみを作用させた解析結果 と同じものが表示されます。
つぎから、鉄筋コンクリート門型フレーム地震波を作用させた解析の計算結果が出力されます。

表示の中にWARNINGが出ています。これは、
構造計算のための連立方程式を、最初はNewron法で解いていくのですが、指定されたユークリッドノルムによる誤差範囲に入っていないため、ModifiedNewton法で解いているためです。
最後に成功しているのでSUCCESSFULLYが表示されています。

出力される結果ファイルは、下記コマンドで指定されています。


# Create a recorder to monitor nodal displacements
recorder Node -time -file disp.txt -node 3 4 -dof 1 2 3 disp

# 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

<disp.txt>
























<ele1secForce.txt>
< ele1secDef.txt>

 次のページ → 
OpenSees Basic Examples (鉄筋コンクリート門型フレーム 地震波を作用させた解析) 解析結果2

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


2016年5月11日水曜日

OpenSees Developer : Microsoft Visual Studio と OpenSeesソースコードの関係について


OpenSeesソースコード revision / version 番号とMicrosoft Visual stuido の関係をまとめてみました (2016/5/11現在)


このblogの中で、出てきましたVisual Studioについての情報は、以下の通りです。

 OpenSees Developer : ソースコードのダウンロードとビルド

冬休みのお知らせ

これらのblogにありますとおり、Visual Studio とOpenSeesのrevisionには、相性の関係があるらしく(^^) Buildできる組み合わせとできない組み合わせがあるようです。

ここでは、
私が試してみて、buildできて、正常に動作している(と思われる)組み合わせ
を、記載します。
(すべての組み合わせを試しているわけではないので、他にも動作可能な組み合わせがあるかもしれません)

なお
Visual Studio は 下記のURLからダウンロードできます
https://www.visualstudio.com/downloads/download-visual-studio-vs

最新版の2015 や すこし古い2013もここからダウンロードできます。
ちなみに OpenSeesで一番相性が良いのは、2013の様に見えます。
(2013は企業以外のアプリケーション開発用に無料で提供されています)

OpenSees  Visual Studio
Version revision 2010 2013 2015
2.4.3 5621 OK(32bit) 未調査 NG
2.4.5 5855 NG 未調査 NG
2.4.6 6016 NG 未調査 NG
2.4.6 6062 NG 未調査 NG
2.4.6 6185 未調査 OK(32bit) NG

現在の所、OpenSeesのソースコード解析をする場合には、
Visual Studio 2013 と revision 6185 
の組み合わせがよさそうです。

ただし、この組み合わせでBuildをしますと、下記のようなリンクエラーが出ます。

これは、バークレーのThe OpenSees Communityのblogに書かれている方法で回避できます

具体的には、

OpenSeesのプロパティを開いて
その中のLinker -> Advanced の中の赤丸部分 を No (/SAFESEH:NO) に設定
しますと、無事にOpenSees.exeが作成できます!

2016年2月9日火曜日

OpenSees Developer : ユークリッドノルムの計算

OpenSees Basic Examples (鉄筋コンクリート門型フレーム: 横荷重解析) 例題



# Create a recorder to monitor element forces in columns
recorder EnvelopeElement -file ele32.txt -time -ele 1 2 forces

で、出力されるele32.txtの中のデータ ユークリッドノルムのソースコードについての解説です。


StaticAnalysis.cpp 
のresult = theIntegrator->commit();
で、ele32.txtへ出力される timestampとユークリッドノルムが計算されています。

StaticAnalysis::analyze(int numSteps)




このcommit( ) が読んでいるファンクションの中に、
軸力、せん断力、曲げモーメント
を計算している部分があり、それは、PDeltaCrdTransf2d.cpp にあります。

(*) StaticAnalysis.cpp については、こちらも参照してください

PDeltaCrdTransf2d::getGlobalResistingForce(const Vector &pb, const Vector &p0)




赤でかこまれた部分で
pl[0], pl[3] が軸力
pl[1], pl[4] がせん断力
pl[2], pl[5] が曲げモーメント
を算出しています。

(特にせん断力 Vは、曲げモーメントの傾きから求めています)

つぎに
緑線の部分で 軸力とせん断力を部材座標系から全体座標系へ変換しています。

最終的に

pg(0), pg(3)  に 軸力
pg(1), pg(4)  に せん断力
pg(2), pg(5)  に 曲げモーメント
を入力して、このfunctionは終了します。

次に、

recorder EnvelopeElement -file ele32.txt -time -ele 1 2 forces
コマンドで、出力されるデータを計算している部分です。



EnvelopeElementRecorder.cpp
EnvelopeElementRecorder::record(int commitTag, double timeStamp)

で、ユークリッドノルムが計算されています。





① から、(最終的に)EnvelopeElementRecorder::record(int commitTag, double timeStamp)
が呼ばれます。

② の
eleInfo.getData();
で、上記の
pg(0), pg(3)  に 軸力
pg(1), pg(4)  に せん断力
pg(2), pg(5)  に 曲げモーメント
の値(ここでは、eleDataの成分になっています。)を取得します。

次に③、
normV += eleData(j) * eleData(j);

で、


の1/2 乗(√)の中身を計算してます。

1/2 乗(√)は、④で計算しています。

# Create a recorder to monitor element forces in columns

recorder EnvelopeElement -file ele32.txt -time -ele 1 2 forces

で、出力されるele32.txtの中のデータ は
<Time Stamp> <ユークリッドノルム> のペアで出力されていますが、
currentData( )に

<ユークリッドノルム>
が保存されることになります。

OpenSees のソースコード解析に挑戦してみる : 目次





2016年1月13日水曜日

OpenSees Basic Examples (E7:鉄筋コンクリート門型フレーム 地震波を作用させた解析) コマンドサマリ 2



OpenSees Basic Examples (E2:鉄筋コンクリート門型フレーム 地震波を作用させた解析) 解説 (外力としての地震波の設定 1) で解説した ARL360.at2 ファイルを、
OpenSees Basic Examples (E6:鉄筋コンクリート門型フレーム 地震波を作用させた解析) コマンドサマリ 1
における 地震波をの入力データとするための tclスクリプトが入っている ReadRecord.tcl は、以下の通りです。

----- ReadRecord.tcl 始まり ------

# ReadRecord.tcl
# ------------------------------------------------------------------------------------------------------------
#
# Written: fmk
# Date: July 2010

# A procedure which parses a ground motion record from the PEER
# strong motion database by finding dt in the record header, then
# echoing data values to the output file.
#
# Formal arguments
# inFilename -- file which contains PEER strong motion record
# outFilename -- file to be written in format G3 can read
# dt -- time step determined from file header
# nPts -- number of data points from file header
#
# Assumptions
# The header in the PEER record is, e.g., formatted as 1 of following:
#  1) new PGA database
# PACIFIC ENGINEERING AND ANALYSIS STRONG-MOTION DATA
#  IMPERIAL VALLEY 10/15/79 2319, EL CENTRO ARRAY 6, 230                        
#  ACCELERATION TIME HISTORY IN UNITS OF G                                      
#  3930 0.00500 NPTS, DT

#   2) old SMD database
# PACIFIC ENGINEERING AND ANALYSIS STRONG-MOTION DATA
#  IMPERIAL VALLEY 10/15/79 2319, EL CENTRO ARRAY 6, 230                        
#  ACCELERATION TIME HISTORY IN UNITS OF G                                      
#  NPTS=  3930, DT= .00500 SEC


proc ReadRecord {inFilename outFilename dt nPts} {

    # Pass dt by reference
    upvar $dt DT
    upvar $nPts NPTS
 
    # Open the input file and catch the error if it can't be read
    if [catch {open $inFilename r} inFileID] {
puts stderr "Cannot open $inFilename for reading"
    } else {
# Open output file for writing
set outFileID [open $outFilename w]

# Flag indicating dt is found and that ground motion
# values should be read -- ASSUMES dt is on last line
# of header!!!
set flag 0

# Look at each line in the file
foreach line [split [read $inFileID] \n] {
 
   if {[llength $line] == 0} {
# Blank line --> do nothing
continue
   } elseif {$flag == 1} {
# Echo ground motion values to output file
puts $outFileID $line
   } else {

# Search header lines for dt
set lengthLine [llength $line]

if {$lengthLine >= 4} {

   set word0 [lindex $line 0]
   set wordN [lindex $line [expr $lengthLine-1]]
 
   if {$word0 == "NPTS=" } {
# old SMD format
set count 0
foreach word [split $line] {
   incr count 1
   if {$word != ""} {
# Read in the time step
if {$flag == 1} {
   set DT $word
   break;
}
if {$flag == 2} {
   set NPTS [string trim $word ","]
   set flag 0
}
# Find the desired token and set the flag
if {[string match $word "DT="] == 1} {
   set flag 1
}
# Find the desired token and set the flag
if {[string match $word "NPTS="] == 1} {
   set flag 2
}
   }
}

   } elseif {$wordN == "DT"} {

# new NGA format
set count 0;
foreach word [split $line] {
   if {$word != ""} {
if {$count == 0} {
   set NPTS $word;
} elseif {$count == 1} {
   set DT $word;
} elseif {[string match $word "DT"] == 1} {
   set flag 1;
   break;
}
incr count 1
   }
}
   }
}
   }
}
# Close the output file
close $outFileID

# Close the input file
close $inFileID
    }
}


----- ReadRecord.tcl 終わり ------

 次のページ → 
OpenSees Basic Examples (鉄筋コンクリート門型フレーム 地震波を作用させた解析) 解析結果1

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