・解析モデルの設定
modelコマンドにて全体の解析モデルを定義します。
ndmは解析モデルの次元数、ndfは自由度数です。
今回は2次元の静定トラスを想定するので、いずれも2に設定します。
model('basic', '-ndm', 2, '-ndf', 2)
・トラスの節点座標の設定
nodeコマンドにて解析モデル各節点の座標を定義します。
2次元モデルの場合、node(節点番号、x座標、y座標)のように定義します。
・固定されている節点の境界条件の設定
fixコマンドにて解析モデルの各節点の境界条件を定義します。
2次元モデルの場合、fix(節点番号、x方向の境界条件、y方向の境界条件(いずれも0:フリー,1:固定)と定義します。
・トラス部材の材料の条件を設定
今回は弾性のトラス部材を想定するため、UniaxialMaterialコマンドにて部材のヤング係数のみを定義します。
・トラス部材を設定
elementコマンドにて各部材の特性を定義します。
トラス部材の場合、以下のように定義できます。
element(elementtype、部材番号、部材端部の節点番号、断面積、定義した材料番号)
・外力を設定
節点に生じる外力をloadコマンドにて以下のように定義します。
load(設定する節点番号、x方向の外力、y方向の外力)
上記が対象とする問題を想定した場合の主な解析モデル、荷重条件の設定項目になり、解析に関する種々の条件を定義したうえでanalyzeコマンドを実行すると、応力解析が実行されます。解析結果は「Output Commands」に用意されている各種コマンドを用いて確認することができます。例えば、確認したい項目が、節点変位であればnodeDispコマンド、部材応力であればbasicForceコマンドの結果をprintすることで確認できます。今回の場合、basicForceコマンドにより出力された値が手計算の値と一致することから、正しく解析が行われていることが確認できました。
以下、今回の検討に用いたソースコードを示します。
from openseespy.opensees import *
# ------------------------------
# モデルの作成
# ----------------------------
# モデルの初期化
wipe()
# モデルの定義
model('basic', '-ndm', 2, '-ndf', 2)
# 節点の定義
node(1, 0.0, 0.0)
node(2, 4.0, 4.0)
node(3, 8.0, 0.0)
# 境界条件の定義
fix(1, 1, 1)
fix(3, 0, 1)
# 部材材料の定義
uniaxialMaterial("Elastic", 1, 3000.0)
# 部材の定義
element("Truss",1,1,2,5.0,1)
element("Truss",2,1,3,5.0,1)
element("Truss",3,2,3,5.0,1)
# 時間に依存する荷重係数の定義
timeSeries("Linear", 1)
# 荷重パターンの定義
pattern("Plain", 1, 1)
# 節点荷重の定義
load(2, 0, -50)
# ------------------------------
# 解析条件の定義、解析実行
# ------------------------------
# create SOE
system("BandSPD")
# create DOF number
numberer("RCM")
# create constraint handler
constraints("Plain")
# create integrator
integrator("LoadControl", 1.0)
# create algorithm
algorithm("Linear")
# create analysis object
analysis("Static")
# perform the analysis
analyze(1)
# ------------------------------
# 解析結果の確認
# ------------------------------
N1=basicForce(1)
N2=basicForce(2)
N3=basicForce(3)
print("N1=",N1,"N2=",N2,"N3=",N3)
0 件のコメント:
コメントを投稿