または
tclプロジェクトのcommands.cpp
の中の
int analyzeModel(ClientData clientData, Tcl_Interp *interp, int argc, TCL_Char **argv)
で実行される
result = theStaticAnalysis->analyze(numIncr);
で、構造計算が始まります。(下図参照)
が、その前に構造計算で使用する連立方程式を解くための、クラスをアロケートする必要があります。
ここ で説明がありますとおり、構造計算で使用する線形連立方程式などには、解析するものによって、使用する方程式の解法が違ってきます。どの解法を使うかは、tcl スクリプトによって指定されています。
今回は この tcl スクリプトを使用しています。 その中で、連立方程式の解法に関するコマンドは下記になります。
# 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
algorithm Linear
たとえば、
system BandSPD
の場合、
system のコマンドが実行されるとき、流れるプログラムは、
tclプロジェクトのcommands.cpp
の中の
specifySOE(ClientData clientData, Tcl_Interp *interp, int argc, TCL_Char **argv)
です。
今回は、LAPACKライブラリ(DPBSV)の実対称正定値帯連立一次方程式の解放を使用します。
そのため、
system では、BandSPDが指定されているので、上記の図、オレンジで囲まれた部分にあるとおり、
BandSPDLinLapackSolver
と
BandSPDLinSOE
のクラスをアロケートしています。
ちなみに、
このクラス領域を使って、実際に実対称正定値帯連立一次方程式を解いているところが、最初に書きました
result = theStaticAnalysis->analyze(numIncr);
です。
次のページ →
ここまでのページの説明は、(静的・線形解析)をもとにして書いてありますが、(静的・非線形解析)の場合でも、同じ流れになります。次の「2」の説明から、プログラムは分かれてきます。
OpenSees Developer : 構造計算(静的・非線形解析) 2
OpenSees のソースコード解析に挑戦してみる : 目次 |