、「軸力、せん断力、曲げを受ける部際が任意の方向を向いている場合の剛性マトリクス」を作成する部分についてのプログラムです。
theIncIntegrator->formTangent(incrTangent)は、
C:\OpenSees-work\OpenSees5621\OpenSees\SRC\analysis\integrator\IncrementalIntegrator.cpp
または
\analysis\integrator\プロジェクトのIncrementalIntegrator.cpp
にあります。
theSOE->addA(elePtr->getTangent(this),elePtr->getID())
で、
「軸力、せん断力、曲げを受ける部際が任意の方向を向いている場合の剛性マトリクス」の場合の
全体座標系における、全体の剛性マトリクス
が作成されます。
while((elePtr = theEles2()) != 0)
で、elementがある限り(つまり、すべてのelementに対して)
theSOE->addA(elePtr->getTangent(this),elePtr->getID())
マトリクスを加算(赤字部分)しています。
(つまり、すべての要素剛性マトリクスを足し合わせているということで、これから全体の剛性マトリクスが計算されている、ということです)
また
theSOE->addA(elePtr->getTangent(this),elePtr->getID())
各要素剛性マトリクス(赤字)は、elePrtのクラスに代入されます。
ここで使用しているtcl スクリプトファイルは、Gravity Load です。
このtclスクリプトファイルの中で、elementは、以下の様にセットしています。
# element connectivity:
element elasticBeamColumn 1 1 3 3600 4227 1080000 1
element elasticBeamColumn 2 2 4 3600 4227 1080000 1
element elasticBeamColumn 3 3 4 5760 4227 4423680 1
elasticBeamColumnは、 、「軸力、せん断力、曲げを受ける部際が任意の方向を向いている場合の剛性マトリクス」を求める、という意味ですので、
elePtr->getTangent(this)で、求める要素剛性マトリクスは、、「軸力、せん断力、曲げを受ける部際が任意の方向を向いている場合の剛性マトリクス」を求める
elasticBeamColumnクラスを使用して、求めています。
elasticBeamColumnクラスでの、剛性マトリクスの説明については
elasticBeamColumnでの剛性マトリクス
を参照してください。
以上の様に、
elePtr->getTangent(this)
で、各要素での「平面トラスの剛性マトリクス」を算出し、
theSOE->addA(.....)
で、すべての要素剛性マトリクスを足し合わせる事によって
全体座標系における、全体の剛性マトリクスを算出しています。
なお、算出された全体座標系における、全体の剛性マトリクスは、
OpenSees Developer :構造計算(静的・非線形解析)4
で解説している 実帯連立一次方程式を解くための
連立方程式用のマトリクスのクラスのメモリ(theSOE)にダイレクトに代入されています。
次のページ →
OpenSees Developer :構造計算(静的・非線形解析)4
OpenSees のソースコード解析に挑戦してみる : 目次 |