OpenSees Blog 日本語 目次

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

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







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

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


2015年12月26日土曜日

Merry christmas and Happy new year 2016 (冬休みのお知らせ)

OpenSees ファンの皆様、

このblogを見ていただきまして、ありがとうございます。冬休みのお知らせです。
毎週1つづつのペースで、投稿しておりますが、今週から3週間ほど、お休みさせていただきます。

「OpenSees コマンド 日本語解説」につきましては、自分が見慣れてしまってきているせいか、だんだん書き方がぞんざいになってきているような気がします。過去の投稿にリンクを張ることで、わかりやすくなってるかなあ、と思ってはいますが。。。

「OpenSeesのソースコード解析」は、「OpenSees コマンド 日本語解説」でのexampleを調査しているとき、わからない部分がでてくると、その部分のソースコードを読んでみたりしているため、どうも統一的な解説を書くことが難しい状態です。あるていどまとまりができてから、まとめてUpしようと思ってはいます(できる時が来るのだろうか・・・)

と、言ったような状態です。

ところで、
Microsoft Visual Studio 2015
が、公開されました。

やはり、OpenSeesのSourceCodeも、Microsoft Visual Studio 2015上で展開してみたいと思い、現在これに挑戦しています。
しかしながら、
VisualStudio 2010では問題なく動作しているSolutionが2015上で動作していない、という状況です。
(2015/12/25現在)

なにはともあれ、Microsoft Visual Studio 2015の導入方法についての説明です
(Visual Studio 2010のインストール方法は、ここ にあります。が、現在MicrosoftのWebSiteからは消えてしまっています)

こちらのページ
https://www.visualstudio.com/products/free-developer-offers-vs.aspx
から、ダウンロードできます。




使用するものは、
"Visual Studio Community"
です。

赤丸の"Visual Studio Community"をクリックしますと ダウンロードページに進みます。

最初に、Visual Studio2015の「ご利用について」をよく読んでください。

ダウンロードを行いますと
vs_community.exe
ファイルが、ダウンロードされますので、これをinstall します。

途中、「標準」と「カスタム」のどちらかを選択する表示がでてきますので
「プログラミング言語」の「Visual C++」が選択できる「カスタム」を選びます。
(Visual C++を選択することを、忘れないように)

Installする際に、MicrosoftのID (メールアドレス等)を要求されますので
指定して、Installを行います。 

また、2015/11/30 にリリースされた Visual Studio 2015 Update 1 も、
ダウンロードしてインストールしてください。
https://www.visualstudio.com/news/vs2015-update1-vs



Installが成功すると、上記のアイコンが生成されますので、"Visual Studio 2015"をクリックし、起動することができます。

Visual Studio2015が立ち上がった後、「プロジェクトを開く」で、
OpenSeesではない、たとえば「「有限要素法における平面トラスの解析」プログラム
で、作成したSolutionを選択しますと、
2010から2015用にsolutionの変換がプロセスされたあと、2010と変わらず、使用することができます。

こちらのブログは、あくまで趣味として、まったりと追記しておりますが、
冬休み後は、さらにまったりモードで投稿していく予定です。

Innovativeな建物がたくさんできますように!

2015/12/25 
Satoko Toengawa





2015年12月18日金曜日

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


Basic Examples (鉄筋コンクリート門型フレーム 地震波を作用させた解析)   解説
のコマンドのサマリは以下の通りです。

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

OpenSees RCF-GE.tcl  <Enter>

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

この時、このtcl スクリプトは、

Basic Examples (鉄筋コンクリート門型フレーム:重力の柱軸力のみを作用させた解析)  で作成した RCF-G.tcl ファイル

OpenSees Basic Examples (:鉄筋コンクリート門型フレーム 地震波を作用させた解析) 解説(地震加速度データについて)  で会絶した ARL360.at2 ファイル

と、 このファイルをOpenSeesコマンドの入力データにするための tclスクリプトが入っている
ReadRecord.tcl ファイル

も使用しますので、同じディレクトリに、これらの ファイルもおいておきます。

----- RCF-GE.tcl 始まり ------
#Reinforced Concrete Frame Earthquake Analysis

# Do operations of RCFrameGravity by sourcing in the tcl file
source RCF-G.tcl

# Set the gravity loads to be constant & reset the time in the domain
loadConst -time 0.0

# Define nodal mass in terms of axial load on columns
set g 386.4
set m [expr $P/$g];       # expr command to evaluate an expression

#    tag   MX   MY   RZ
mass  3    $m   $m    0
mass  4    $m   $m    0

# Set some parameters
set record ARL360

# Source in TCL proc to read PEER SMD record
source ReadRecord.tcl

# Permform the conversion from SMD record to OpenSees record
#              inFile     outFile dt
ReadRecord $record.at2 $record.dat dt nPts

# Set time series to be passed to uniform excitation
timeSeries Path 1 -filePath $record.dat -dt $dt -factor $g

# Create UniformExcitation load pattern
#                         tag dir 
pattern UniformExcitation  2   1  -accel 1

# set the rayleigh damping factors for nodes & elements
rayleigh 0.0 0.0 0.0 0.000625

# Create a recorder to monitor nodal displacements
recorder Node -time -file disp12.txt -node 1 2 -dof 1 2 3 disp
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

# Delete the old analysis and all it's component objects
wipeAnalysis

# 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

# Perform an eigenvalue analysis
puts "eigen values at start of transient: [eigen 2]"

# set some variables
set tFinal [expr $nPts * $dt]
set tCurrent [getTime]
set ok 0

# 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]
}

# Print a message to indicate if analysis succesfull or not
if {$ok == 0} {
   puts "Transient analysis completed SUCCESSFULLY";
} else {
   puts "Transient analysis completed FAILED";    
}

# Perform an eigenvalue analysis
puts "eigen values at end of transient: [eigen -Umfpack 2]"

# Print state of node 3
print node 3

----- RCF-GE.tcl 終わり ------


 次のページ → 

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

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 コマンド 日本語解説 : 目次

2015年12月2日水曜日

OpenSees Basic Examples (E4: 鉄筋コンクリート門型フレーム 地震波を作用させた解析) 外力としての地震波の設定 2



OpenSees Basic Examples (E3:鉄筋コンクリート門型フレーム 地震波を作用させた解析) 解説(地震加速度データについて)
での、ARL360.at2 ファイルを変換して、地震データとして読み込ませる方法です。

最初に、
record というシンボルに”ARL360” という文字列をセットします。

# Set some parameters
set record ARL360


次に、変換を行うための
proc ReadRecord {inFilename outFilename dt nPts}
プログラムが格納されているtcl スクリプトファイル ReadRecord.tcl を
ソースとして読み込ませます。

# Source in TCL proc to read PEER SMD record
source ReadRecord.tcl


ReadRecord ( ) を動作させます

# Permform the conversion from SMD record to OpenSees record
#              inFile     outFile dt
ReadRecord $record.at2 $record.dat dt nPts

ここで、


NPTS は number of points で、このファイルに入っている地震加速度データの総数です。
DT は delta time で、地震の測定された加速度データの測定間隔⊿t です。

$record には ”ARL360” という文字列 が入っているので
入力ファイルは ARL360.at2、 出力ファイルは、ARL360.dat
と、なります。


出力した ARL360.dat を 地震加速度データとして、取り扱うために、
timeSeries コマンドを使用します。
このコマンドについての説明は、ここ。 ( または「OpenSeesコマンド集」を参照してください )
入力したデータの間隔が いつも一定時間の場合は、このコマンドを使用します。

timeSeries Path [タグ番号] -dt [測定間隔] -filePath[入力ファイル] -factor [入力したデータに掛けるデータ]


# Set time series to be passed to uniform excitation
timeSeries Path 1 -filePath $record.dat -dt $dt -factor $g

ここで、
-dt には、dt の値 (0.02sec)
-factor には、重力加速度 g 386.4
が入ります。
これは、ARL360.datのデータが重力加速度に対しての比率として入っている為
地震波の加速度は、このデータと重力加速度の積となるためです。
このコマンドは tag 1 として考えます。

次に、実際にOpenSeesとして動作するときに、加速度として読み込ませるため、

UniformExcitation [タグ番号] [読み込ませる軸方向] -accel [データのあるタグ番号]
# Create UniformExcitation load pattern
#                         tag dir 
pattern UniformExcitation  2   1  -accel 1

ここでは1:X軸方向に読み込むように指示しています。
( 「OpenSeesコマンド集」を参照してください )

レ 次に加速度データの入力に対する減衰方法について定義します。
   ここではレイリー減衰を使用します

rayleigh [$alphaM] [$betaK] [$betaKinit] [$betaKcomm]

# set the rayleigh damping factors for nodes & elements
rayleigh 0.0 0.0 0.0 0.000625

これについての説明は、OpenSeesのコマンドはここ、 Blog内では ここ を参照してください。
( または「OpenSeesコマンド集」を参照してください )

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

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

2015年11月24日火曜日

OpenSees Basic Examples (E3:鉄筋コンクリート門型フレーム 地震波を作用させた解析) 解説(地震加速度データについて)


ARL360.at2 ファイルは、以下の様になっています。

PACIFIC ENGINEERING AND ANALYSIS STRONG-MOTION DATA
NORTHRIDGE 01/17/94 1231, ARLETA, 360
ACCELERATION TIME HISTORY IN UNITS OF G
NPTS=  2000, DT= .02000 SEC
   .1297983E-02   .1742817E-02   .3793137E-02   .1321806E-02   .1469841E-02
   .1023223E-02   .1666993E-02   .3890893E-03   .3178530E-03   .3413724E-02
   .2240902E-02   .3143787E-02   .1219239E-02   .5135218E-02   .3153564E-02
   ............................. 

ここで、
NPTS は number of points で、このファイルに入っている地震加速度データの総数です。
DT は delta time で、地震の測定された加速度データの測定間隔⊿t です。

これらの数字は、後程 tcl コマンドとして、nPts および dt として使用します。

また、それ以降の  .1297983E-02   .1742817E-02  の値は 重力加速度に対しての比率を表しています。

この ARL360.at2 ファイル を OpenSeesのコマンドとして読み込ませるために、まず、ファイルをReadRecord.tcl を使用して、変換します。 変換されたファイルは、ARL360.dat として出力されます。


このReadRecord.tclファイルのダウンロードの仕方は、
OpenSeesで紹介されているサンプルで使用するtclスクリプトやデータの取得方法
を参照してください。


このファイルの中には、
proc ReadRecord {inFilename outFilename dt nPts}
のtcl コマンドによる、プログラムが記載されています。

また、nPts および dt についても、書きのようにそれぞれ値がセットされています

    # Pass dt by reference
    upvar $dt DT
    upvar $nPts NPTS

このReadRecord.tcl を使用して地震加速度データを作成する方法は、
OpenSees Basic Examples (E4: 鉄筋コンクリート門型フレーム 地震波を作用させた解析) 外力としての地震波の設定 2
を参照してください。

なお、出力した ARL360.dat  ファイルの中身は、以下の様になっています。



   .1297983E-02   .1742817E-02   .3793137E-02   .1321806E-02   .1469841E-02
   .1023223E-02   .1666993E-02   .3890893E-03   .3178530E-03   .3413724E-02
   .2240902E-02   .3143787E-02   .1219239E-02   .5135218E-02   .3153564E-02

   ............................. 


 次のページ → 
OpenSees Basic Examples (鉄筋コンクリート門型フレーム 地震波を作用させた解析) 外力としての地震波の設定 2


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

2015年11月18日水曜日

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



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 コマンドにより、解析する時間をリセットします。


#Reinforced Concrete Frame Earthquake Analysis

# Do operations of RCFrameGravity by sourcing in the tcl file
source RCF-G.tcl

# Set the gravity loads to be constant & reset the time in the domain
loadConst -time 0.0




4) 外力としての地震波の設定
最初に、必要となる定数、値などを、定義します。

まずは重力加速度 g として 386.4
次に、Node3, 4における質量 m として、 180/386.4

このm は、 source RCF-G.tcl で定義されている P (重力加速度による力としての 180kip) に 重力加速度 g をわることよって、質量を算出しています。


# Define nodal mass in terms of axial load on columns
set g 386.4
set m [expr $P/$g];       # expr command to evaluate an expression


ここで expr は、mにセットする計算を P/g でtclコマンドとして計算を行います、という意味です。

次に Node3, 4 に対して 質量の定義を行います。

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

#    tag   MX   MY   RZ
mass  3    $m   $m    0
mass  4    $m   $m    0


次に 地震加速度を外力として設定します。
データはPEERの Ground Motion Database から、ARL360.at2 ファイルを使用します。
これは、1994/1/17にカルフォルニアのアリータという場所で起きた実際の地震 のデータです。

ダウンロードの仕方は、
OpenSeesで紹介されているサンプルで使用するtclスクリプトやデータの取得方法
を参照してください。


 次のページ → 
OpenSees Basic Examples (鉄筋コンクリート門型フレーム 地震波を作用させた解析) 解説(地震加速度データについて)

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

2015年11月4日水曜日

Blogの画像 ほぼ 復活しました


OpenSeesファンの皆様

このブログを見ていただきましてありがとうございます。

2015/10/22 に 本ブログの投稿に貼ってありました画像がすべて消えてしまった、というお知らせをいたしましたが、本日2015/11/4現在、ほぼすべての画像が復活しております。

このブログを見るためのガイド で書かれておりますとおり
本ブログでの3つのトピックの内、


OpenSees コマンド 日本語解説
OpenSees のソースコード解析に挑戦してみる


については、すべて画像は復活しました。

有限要素法における平面トラスの解析」プログラムをC言語で書いてみる
一部のページについて、画像が復活しておりません。
こちらにつきましては、ゆっくり復活させていく予定です。

ともあれ
Innovativeな建物がたくさんできますように!
2015/11/04 Satoko Toengawa

2015年11月2日月曜日

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


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












































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

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

出力される結果ファイルは、下記コマンドで指定されています。
# 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

<Node32.txt>









































































































Node 3 のX軸方向への変位の増加分を基準として、記録をしています。
解析する変位の増加分は 0.1 づつ、Node3 のX方向の変位が15.0になるまで続けています

Node3, Node4のX,Yの変位をグラフにしたものが以下です。
最初は降伏点まで、耐えていますが、降伏点を超えると変位が大きく進んでいることがわかります




















イメージとしては、鉄筋コンクリート部分がねじ伸びた状態になってしまった、ということだと考えます(下図のスケールは正しくありません)

















<ele32.txt >
Version 2.4.6 (rev6062) での主力は、以下の表のようになっています。
しかしながら、この値はVersionごとに違うので、解析が必要です。






なお、ここで出力している部分のソースコードは
OpenSees Developer : ユークリッドノルムノルムの計算
を参照してください。



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

2015年10月28日水曜日

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



 Reinforced Concrete Frame Earthquake Analysis 参照


OpenSees Basic Examples (曲げモーメント-曲率計算) 例題 で、使用した鉄筋コンクリート
を使用して、実際に門型フレームで解析します。

鉄筋コンクリート門型フレーム重力の柱軸力のみを作用させた解析 での、
重力加速度をかけたものに対して、地震加速度をかけたものについての解析です。


element 1 と 2 に先ほどの鉄筋コンクリート部材が使用されています。
長さは、12feet (144inch) です。
桁の部分は、30feet (360inch)です。

Node 3  と 4 に 重力加速度による力として(180kip) が掛っています。
X方向に、地震波の加速度をかけます。
地震波の加速度データは、OpenSeesのサイトからダウンロードします。
ファイル名はARL360.at2 です。
これは、1994/1/17にカルフォルニアのアリータという場所で起きた実際の地震 のデータです。

ダウンロードの仕方は、
OpenSeesで紹介されているサンプルで使用するtclスクリプトやデータの取得方法
を参照してください。

 次のページ → 
OpenSees Basic Examples (鉄筋コンクリート門型フレーム 地震波を作用させた解析) 外力としての地震波の設定 1

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


2015年10月22日木曜日

Blogの画像が消えてしまっています


OpenSeesファンの皆様

このブログを見ていただきましてありがとうございます。

Google+の方をいじっていましたら、Blogの画像がほとんどすべて消えてしまいました。
画像はストレージに保存してあると思いますので、復活はできると思いますが
しばらくご不便をおかけします。

がっかり。

いままでのデータを復旧および、現在までのデータを内部ドキュメント化するため、
次回公開予定の、
鉄筋コンクリート門型フレーム横荷重解析 - 解析結果
を終了した後、 現在解析している
鉄筋コンクリート門型フレーム地震波を作用させた解析  
についての公開は、 1か月後をめどに再開する予定です。

ともあれ
Innovativeな建物がたくさんできますように!
2015/10/22 Satoko Toengawa

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 コマンド 日本語解説 : 目次

2015年10月9日金曜日

12345 ! ありがとうございます

OpenSeesファンの皆様

このブログを見ていただきましてありがとうございます。

このたびView数(*) が12345 のキリ番になりました。記念のスクリーンショットが↓です。

























前回の10000Viewは、取り損ねたのでちょっと小市民な喜びです、ありがとうございます。

ところで
Microsoft Visual Studio 2015 が公開されました

https://www.visualstudio.com/products/free-developer-offers-vs.aspx


しかし、2015年9月現在、
"Visual Studio Community"でOpenSeesのソースコードをBuildしようとすると、リンクエラーを起こすようです。Microsoft Visual C++ 2010 ExpressでBuildが成功したOpenSeesのsolutionで、リンクエラーを起こします)

ただし、(OpenSeesではない)2010 Expressで作成したプログラムは、普通にbuildできます。

OpenSeesのDeveloperの方は、Microsoft Visual C++ 2010 Expressの環境をしばらくは、とっておいた方がよさそうです。

Innovativeな建物がたくさんできますように!
2015/10/9 Satoko Toengawa

(*)Tonegawaが閲覧したビュー数、リダイレクトしたビュー数は除いた数字です

2015年10月8日木曜日

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


 Reinforced Concrete Portal Pushover Analysis 参照


OpenSees Basic Examples (曲げモーメント-曲率計算) 例題 で、使用した鉄筋コンクリート
を使用して、実際に門型フレームで解析します。

重力 と 横荷重をかけたものについての解析です。


element 1 と 2 に先ほどの鉄筋コンクリート部材が使用されています。
長さは、12feet (144inch) です。
桁の部分は、30feet (360inch)です。

Node 3  と 4 に 重力加速度による力として(180kip)  と 横荷重の力(10kip) が掛っています。

 次のページ →
OpenSees Basic Examples (鉄筋コンクリート門型フレーム 横荷重解析)
解説(節点、要素、部材の定義)



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

2015年9月30日水曜日

OpenSees Basic Examples (G5:鉄筋コンクリート門型フレーム :重力の柱軸力のみを作用させた解析) 解析結果


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




上図は、下記のコマンドで表示されているものです

# ------------------------------
# Finally perform the analysis
# ------------------------------

# perform the gravity load analysis, requires 10 steps to reach the load level
analyze 10

# Print out the state of nodes 3 and 4
print node 3 4

# Print out the state of element 1
print ele 1 



表示されるのは、この解析を10ステップ行った後の
Node 3 4 の 自由度3つ(x, y, θ)の値 を全体座標系で、
および
Element 1 (Node 1と3) の、 両端の 軸力、せん断力、モーメントの値を部材座標系で表示しています。






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

2015年9月24日木曜日

OpenSeesで紹介されているサンプルで使用するtclスクリプトやデータの取得方法


OpenSeesで紹介されているサンプルで使用するtclスクリプトやデータの取得方法の説明です。


    Examples 参照


には、OpenSeesを使用するための、OpenSeesコマンドを使ったスクリプトの説明がありますが、
ここで使用している

  • tcl スクリプトファイル
  • OpenSeesを起動する時に使用する地震データ

は、バークレー校のサーバーからSVN(SubVersion)を使用して、ダウンロードできます。

ダウンロードの方法は、以下の通りです。


1) SubVersionをインストールしてください。
2) OpenSeesのソースコードをSubVersionを使ってダウンロードします。
ソースコードのダウンロートの仕方は、ここを見てください。


または
http://opensees.berkeley.edu/WebSVN/

で、SVNに登録しているファイルを参照することができます。
スクリプトファイル、example で使用している地震データなどは

(root)/trunk/EXAMPLES/ExampleScripts/
(root)/trunk/EXAMPLES/ExamplesForTesting/

に保管されています。

2015年9月16日水曜日

OpenSees Basic Examples (L3:鉄筋コンクリート門型フレーム: 横荷重解析) コマンドのサマリ


Basic Examples (鉄筋コンクリート門型フレーム: 横荷重解析)   解説
のコマンドのサマリは以下の通りです。

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

OpenSees RCF-GP.tcl  <Enter>

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

この時、このtcl スクリプトは、
Basic Examples (鉄筋コンクリート門型フレーム:重力の柱軸力のみを作用させた解析)  で作成した
RCF-G.tcl
も使用しますので、同じディレクトリに、RCF-G.tcl ファイルもおいておきます。

----- RCF-GP.tcl 始まり ------


# Units: kips, in, sec
#
# Written: GLF/MHS/fmk
# Date: January 2001


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


# ----------------------------------------------------
# Start of additional modelling for lateral loads
# ----------------------------------------------------

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



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


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


# ------------------------------
# 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]
}


if {$ok == 0} {
  puts "Pushover analysis completed SUCCESSFULLY";
} else {
  puts "Pushover analysis FAILED";  
}



----- RCF-GP.tcl 終わり ------

 次のページ →
OpenSees Basic Examples (鉄筋コンクリート門型フレーム 横荷重解析)解析結果


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

2015年9月9日水曜日

OpenSees Basic Examples (G3:鉄筋コンクリート門型フレーム 重力の柱軸力のみを作用させた解析) 解説(外力、解析の設定)



4)外力の設定
Node 3,4 に垂直方向にかかる力は、
OpenSees Basic Examples (曲げモーメント-曲率計算) 部材の定義3
において、
# Set axial load 
set P -180
と、定義しました、180です。これは、

「10% of axial capacity of columns」ということで、重力加速度による力として全体の 10%の力として180という値がセットされています。

Opensees のコマンドは、以下の通りです。

各コマンドの説明は、「OpenSeesコマンド集」を参照してください

# --------------------
# Define gravity loads

# --------------------

# Set a parameter for the axial load
set P 180.0;                # 10% of axial capacity of columns

# Create a Plain load pattern with a Linear TimeSeries
pattern Plain 1 "Linear" {

        # Create nodal loads at nodes 3 & 4
#    nd    FX          FY  MZ 
load  3   0.0  [expr -$P] 0.0
load  4   0.0  [expr -$P] 0.0
}


5)解析の設定


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




# ------------------------------
# Start of analysis generation
# ------------------------------

# Create the system of equation, a sparse solver with partial pivoting
system BandGeneral

# Create the constraint handler, the transformation method
constraints Transformation

# Create the DOF numberer, the reverse Cuthill-McKee algorithm
numberer RCM

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

# Create the solution algorithm, a Newton-Raphson algorithm
algorithm Newton

# Create the integration scheme, the LoadControl scheme using steps of 0.1 
integrator LoadControl 0.1

# Create the analysis object
analysis Static

# ------------------------------
# End of analysis generation
# ------------------------------

10回分解析し、10回後のNode3 4 および 要素 1 の結果を表示します。

# ------------------------------
# Finally perform the analysis
# ------------------------------

# perform the gravity load analysis, requires 10 steps to reach the load level
analyze 10

# Print out the state of nodes 3 and 4
print node 3 4

# Print out the state of element 1
print ele 1 

 次のページ →
OpenSees Basic Examples (鉄筋コンクリート門型フレームの柱軸力のみを作用させた解析) コマンドのサマリ



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

2015年9月2日水曜日

OpenSees Basic Examples (G2:鉄筋コンクリート門型フレーム 重力の柱軸力のみを作用させた解析) 解説(節点、要素、部材の定義)



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

各コマンドの説明は、「OpenSeesコマンド集」を参照してください

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

model basic -ndm 2 -ndf 3


1.2) パラメーターをセットします。
# Set parameters for overall model geometry

set width    360 #  30feetをinchに換算した値
set height   144 #  12feetをinchに換算した値



1.3) Node(節点) の 座標を設定します
Node [ nodeの番号 ] [ x座標] [y座標]

# Create nodes
#    tag        X       Y 
node  1       0.0     0.0 
node  2    $width     0.0 
node  3       0.0 $height
node  4    $width $height


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

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


# Fix supports at base of columns
#    tag   DX   DY   RZ
fix   1     1    1    1
fix   2     1    1    1


2) 部材の定義


前回の
OpenSees Basic Examples (曲げモーメント-曲率計算) 
で、使用したものと同じコマンドで
鉄筋コンクリートを定義します。


# Define materials for nonlinear columns
# ------------------------------------------
# CONCRETE                  tag   f'c        ec0   f'cu        ecu
# Core concrete (confined)
uniaxialMaterial Concrete01  1  -6.0  -0.004   -5.0     -0.014

# Cover concrete (unconfined)
uniaxialMaterial Concrete01  2  -5.0   -0.002   0.0     -0.006

# STEEL
# Reinforcing steel 
set fy 60.0;      # Yield stress
set E 30000.0;    # Young's modulus
#                        tag  fy E0    b
uniaxialMaterial Steel01  3  $fy $E 0.01

# Define cross-section for nonlinear columns
# ------------------------------------------

# set some paramaters
set colWidth 15
set colDepth 24 

set cover  1.5
set As    0.60;     # area of no. 7 bars

# some variables derived from the parameters
set y1 [expr $colDepth/2.0]
set z1 [expr $colWidth/2.0]

section Fiber 1 {

    # Create the concrete core fibers
    patch rect 1 10 1 [expr $cover-$y1] [expr $cover-$z1] [expr $y1-$cover] [expr $z1-$cover]

    # Create the concrete cover fibers (top, bottom, left, right)
    patch rect 2 10 1  [expr -$y1] [expr $z1-$cover] $y1 $z1
    patch rect 2 10 1  [expr -$y1] [expr -$z1] $y1 [expr $cover-$z1]
    patch rect 2  2 1  [expr -$y1] [expr $cover-$z1] [expr $cover-$y1] [expr $z1-$cover]
    patch rect 2  2 1  [expr $y1-$cover] [expr $cover-$z1] $y1 [expr $z1-$cover]

    # Create the reinforcing fibers (left, middle, right)
    layer straight 3 3 $As [expr $y1-$cover] [expr $z1-$cover] [expr $y1-$cover] [expr $cover-$z1]
    layer straight 3 2 $As 0.0 [expr $z1-$cover] 0.0 [expr $cover-$z1]
    layer straight 3 3 $As [expr $cover-$y1] [expr $z1-$cover] [expr $cover-$y1] [expr $cover-$z1]

}  

3) Element(要素)の設定


解析する時の、要素(Element)の
Opensees のコマンドは、以下の通りです。

各コマンドの説明は、「OpenSeesコマンド集」を参照してください



# Define column elements
# ----------------------

# Geometry of column elements
#                tag 

geomTransf PDelta 1 



ガウスーロバート積分を使用しますが、その積分点は5つです

# Number of integration points along length of element
set np 5

柱には、forceBeamColumn を使用します。

# Create the coulumns using Beam-column elements
#               e            tag ndI ndJ nsecs secID transfTag
set eleType forceBeamColumn
element $eleType  1   1   3   $np    1       1 
element $eleType  2   2   4   $np    1       1 

# Define beam elment
# -----------------------------

# Geometry of column elements
#                tag 
geomTransf Linear 2  

桁には、elasticBeamColumnを使用します。
断面積は360、ヤング率は4030、モーメントは8640です。

# Create the beam element
#                          tag ndI ndJ     A       E    Iz   transfTag
element elasticBeamColumn   3   3   4    360    4030  8640    2


 次のページ → 

OpenSees Basic Examples (鉄筋コンクリート門型フレーム の柱軸力のみを作用させた解析)解説(外力、解析の設定)



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