OpenSees Blog 日本語 目次

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

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







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

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


2014年9月11日木曜日

OpenSees Basic Examples (H5: 弾性フレーム解析) コマンドサマリ


Basic Examples Manual (Elastic Frame Example) 解説
のコマンドのサマリは以下の通りです。

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


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


OpenSees ElasticFrame.tcl  <Enter>

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


----- ElasticFrame.tcl 始まり ------

# OpenSees -- Open System for Earthquake Engineering Simulation
# Pacific Earthquake Engineering Research Center
# http://opensees.berkeley.edu/
#
# Basic Elastic Frame
# ----------------------
#  2d Elastic Beam Column Elements
#  Distributed Load & Pushover Analysis
# Example Objectives
# -----------------
#  Simple Introduction to OpenSees
# Units: kips, in, sec
# Written: fmk
# Date: January 2011

#
# set some parameter
#
set PI  [expr 2.0 * asin(1.0)]
set g   386.4
set ft  12.0
set Load1 1185.0; 
set Load2 1185.0; 
set Load3  970.0;

# set floor masses 質量
set m1  [expr $Load1/(4*$g)]; # 4 nodes per floor
set m2  [expr $Load2/(4*$g)]
set m3  [expr $Load3/(4*$g)]

# set floor distributed loads
set w1  [expr $Load1/(90*$ft)];   # frame 90 ft long (1ft = 12in)
set w2  [expr $Load2/(90*$ft)]
set w3  [expr $Load3/(90*$ft)]

# ------------------------------
# Start of model generation
# ------------------------------

# Remove existing model
wipe

# Create ModelBuilder (with two-dimensions and 2 DOF/node)
model BasicBuilder -ndm 2 -ndf 3

# Create nodes
# ------------

# Create nodes & add to Domain - command: node nodeId xCrd yCrd <-mass $massX $massY $massRz>
# NOTE: mass in optional
node 1     0.0   0.0 
node 2   360.0   0.0 
node 3   720.0   0.0 
node 4  1080.0   0.0 
node 5    0.0  162.0 -mass $m1 $m1 0.0
node 6  360.0  162.0 -mass $m1 $m1 0.0
node 7  720.0  162.0 -mass $m1 $m1 0.0
node 8 1080.0  162.0 -mass $m1 $m1 0.0
node 9     0.0 324.0 -mass $m2 $m2 0.0
node 10  360.0 324.0 -mass $m2 $m2 0.0
node 11  720.0 324.0 -mass $m2 $m2 0.0
node 12 1080.0 324.0 -mass $m2 $m2 0.0
node 13    0.0 486.0 -mass $m3 $m3 0.0
node 14  360.0 486.0 -mass $m3 $m3 0.0
node 15  720.0 486.0 -mass $m3 $m3 0.0
node 16 1080.0 486.0 -mass $m3 $m3 0.0

# Set the boundary conditions - command: fix nodeID xResrnt? yRestrnt? rZRestrnt?
fix 1 1 1 1
fix 2 1 1 1
fix 3 1 1 1
fix 4 1 1 1

# Define geometric transformations for beam-column elements
geomTransf Linear 1; # beams
geomTransf PDelta 2; # columns

# Define elements
# Create elastic beam-column - command: element elasticBeamColumn eleID node1 node2 A E Iz geomTransfTag

# Define the Columns
#[ elementの番号 ] [ 片方のnode番号] [片方のnode番号] [ 断面積] [ヤング率] [Z軸の慣性モーメント] [$transfTag]
element elasticBeamColumn  1  1  5 75.6 29000.0 3400.0 2; # W14X257
element elasticBeamColumn  2  5  9 75.6 29000.0 3400.0 2; # W14X257
element elasticBeamColumn  3  9 13 75.6 29000.0 3400.0 2; # W14X257

element elasticBeamColumn  4  2  6 91.4 29000.0 4330.0 2; # W14X311
element elasticBeamColumn  5  6 10 91.4 29000.0 4330.0 2; # W14X311
element elasticBeamColumn  6 10 14 91.4 29000.0 4330.0 2; # W14X311
element elasticBeamColumn  7  3  7 91.4 29000.0 4330.0 2; # W14X311
element elasticBeamColumn  8  7 11 91.4 29000.0 4330.0 2; # W14X311
element elasticBeamColumn  9 11 15 91.4 29000.0 4330.0 2; # W14X311

element elasticBeamColumn 10  4  8 75.6 29000.0 3400.0 2; # W14X257
element elasticBeamColumn 11  8 12 75.6 29000.0 3400.0 2; # W14X257
element elasticBeamColumn 12 12 16 75.6 29000.0 3400.0 2; # W14X257

# Define the Beams
element elasticBeamColumn 13  5  6 34.7 29000.0 5900.0 1; # W33X118
element elasticBeamColumn 14  6  7 34.7 29000.0 5900.0 1; # W33X118
element elasticBeamColumn 15  7  8 34.7 29000.0 5900.0 1; # W33X118

element elasticBeamColumn 16  9 10 34.2 29000.0 4930.0 1; # W30X116
element elasticBeamColumn 17 10 11 34.2 29000.0 4930.0 1; # W30X116
element elasticBeamColumn 18 11 12 34.2 29000.0 4930.0 1; # W30X116

element elasticBeamColumn 19 13 14 20.1 29000.0 1830.0 1; # W24X68
element elasticBeamColumn 20 14 15 20.1 29000.0 1830.0 1; # W24X68
element elasticBeamColumn 21 15 16 20.1 29000.0 1830.0 1; # W24X68


# Define loads for Gravity Analysis
# ---------------------------------

#create a Linear TimeSeries (load factor varies linearly with time): command timeSeries Linear $tag
timeSeries Linear 1

# Create a Plain load pattern with a linear TimeSeries: 
#  command pattern Plain $tag $timeSeriesTag { $loads }
pattern Plain 1 1 {
    eleLoad -ele 13 14 15 -type -beamUniform -$w1
    eleLoad -ele 16 17 18 -type -beamUniform -$w2
    eleLoad -ele 19 20 21 -type -beamUniform -$w3
}

# ---------------------------------
# Create Analysis for Gravity Loads
# ---------------------------------

# Create the system of equation, a SPD using a band storage scheme
system BandSPD

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

# Create the constraint handler, a Plain handler is used as homo constraints
constraints Plain

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

# Create the solution algorithm, a Linear algorithm is created
test NormDispIncr 1.0e-10 6
algorithm Newton



# create the analysis object 
analysis Static 


# ---------------------------------
# Perform Gravity Analysis
# ---------------------------------

analyze 1

# ---------------------------------
# Check Equilibrium
# ---------------------------------

# invoke command to determine nodal reactions 
reactions

set node1Rxn [nodeReaction 1]; # nodeReaction command returns nodal reactions for specified node in a list
set node2Rxn [nodeReaction 2]
set node3Rxn [nodeReaction 3]
set node4Rxn [nodeReaction 4]

set inputedFy  [expr -$Load1-$Load2-$Load3]; # loads added negative Fy diren to ele
set computedFx [expr [lindex $node1Rxn 0]+[lindex $node2Rxn 0]+[lindex $node3Rxn 0]+[lindex $node4Rxn 0]]
set computedFy [expr [lindex $node1Rxn 1]+[lindex $node2Rxn 1]+[lindex $node3Rxn 1]+[lindex $node4Rxn 1]]

puts "\nEqilibrium Check After Gravity:"
puts "SumX: Inputed: 0.0 + Computed: $computedFx = [expr 0.0+$computedFx]"
puts "SumY: Inputed: $inputedFy + Computed: $computedFy = [expr $inputedFy+$computedFy]"

# ---------------------------------
# Lateral Load
# ---------------------------------

# set gravity loads constant and time in domain to e 0.0
loadConst -time 0.0

timeSeries Linear 2
pattern Plain 2 2 {
    load 13 220.0 0.0 0.0
    load  9 180.0 0.0 0.0
    load  5  90.0 0.0 0.0
}

# ---------------------------------
# Create Recorder
# ---------------------------------

recorder Element -file EleForces.txt -ele 1 4 7 10 forces

# ---------------------------------
# Perform Lateral Analysis
# ---------------------------------

analyze 1

# ---------------------------------
# Check Equilibrium
# ---------------------------------

reactions

set node1Rxn [nodeReaction 1]; # nodeReaction command returns nodal reactions for specified node in a list
set node2Rxn [nodeReaction 2]
set node3Rxn [nodeReaction 3]
set node4Rxn [nodeReaction 4]

set inputedFx  [expr 220.0+180.0+90.0] 
set computedFx [expr [lindex $node1Rxn 0]+[lindex $node2Rxn 0]+[lindex $node3Rxn 0]+[lindex $node4Rxn 0]]
set computedFy [expr [lindex $node1Rxn 1]+[lindex $node2Rxn 1]+[lindex $node3Rxn 1]+[lindex $node4Rxn 1]]

puts "\nEqilibrium Check After Lateral Loads:"
puts "SumX: Inputed: $inputedFx + Computed: $computedFx = [expr $inputedFx+$computedFx]"
puts "SumY: Inputed: $inputedFy + Computed: $computedFy = [expr $inputedFy+$computedFy]"

# print ele information for columns at base
print ele 1 4 7 10

# ---------------------------------
# Check Eigenvalues
# ---------------------------------

set eigenValues [eigen 5]

puts "\nEigenvalues:"
set eigenValue [lindex $eigenValues 0]
puts "T[expr 0+1] = [expr 2*$PI/sqrt($eigenValue)]"
set eigenValue [lindex $eigenValues 1]
puts "T[expr 1+1] = [expr 2*$PI/sqrt($eigenValue)]"
set eigenValue [lindex $eigenValues 2]
puts "T[expr 2+1] = [expr 2*$PI/sqrt($eigenValue)]"
set eigenValue [lindex $eigenValues 3]
puts "T[expr 3+1] = [expr 2*$PI/sqrt($eigenValue)]"
set eigenValue [lindex $eigenValues 4]
puts "T[expr 4+1] = [expr 2*$PI/sqrt($eigenValue)]"

recorder Node -file eigenvector.txt -nodeRange 5 16 -dof 1 2 3 eigen 0
record

exit


----- ElasticFrame.tcl  終わり ------


次のページ →
Basic Examples Manual (Elastic Frame Example) 
解析結果


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

0 件のコメント:

コメントを投稿