OpenSees Blog 日本語 目次

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

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







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

このブログ内の単語を検索したい場合は、左上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 のソースコード解析に挑戦してみる : 目次