Basic exampleの中の 基本的なトラス解析 で使用したOpenSeesのtcl スクリプトファイルを使用して どのように静的・線形解析の場合の構造計算がされているか、をたどっていきます。
使用するtcl スクリプトファイルは ここ にあります。
tcl スクリプトに書かれている通り、
セットしたデータをつかっての構造計算は、
# create the analysis object
analysis Static
analyze 1
で、行います。
まず、
analysis Static
は、
C:\OpenSees-work\OpenSees5621\OpenSees\SRC\tcl\commands.cpp
または
tclプロジェクトのcommands.cpp
の中の
int specifyAnalysis(ClientData clientData, Tcl_Interp *interp, int argc, TCL_Char **argv)
で実行されます。
この中で、
構造計算に必要となるデータについての、クラス単位のメモリの準備が行われます。
その時、
ここ で 説明しましたOpenSeesのコマンド"analysis"で、
さらに呼ばれるファンクションが変わっていきます。
"analysis"では、以下の3つが引数として指定できます。
- Static
- Transient
- VariableTransient
が、この「基本的なトラス解析」では、Staticな解析を指定していますので、
theStaticAnalysis = new StaticAnalysis(theDomain,
*theHandler,
*theNumberer,
*theAnalysisModel,
*theAlgorithm,
*theSOE,
*theStaticIntegrator,
theTest);
により、Staticな解析の指定が行われます。
なお、このfunctionの中で
theAnalysisModel
theTest
theAlgorithm
theHandler
theNumberer
theStaticIntegrator
theSOE
は、解析を行う中で出力される、データの構造体(=出力データ)。
theDomain
は、
tcl スクリプトファイルの中で、定義されていたNodeやElementなどのデータが入っている構造体(
=入力データ)です。
余談ですが、
OpenSees UserのWebSiteには、まだ記載がありませんが、プログラムの中を見る限り、ここでの"analysis"の方法は、他にも増えてきているようです。
次に、
analyze 1
は、
C:\OpenSees-work\OpenSees5621\OpenSees\SRC\tcl\commands.cpp
または
tclプロジェクトのcommands.cpp
の中の
int analyzeModel(ClientData clientData, Tcl_Interp *interp, int argc, TCL_Char **argv)
で実行されます。
ここでも、
ここ で 説明しましたOpenSeesのコマンド"analysis"で、
さらに呼ばれるファンクションが変わっていきます。
この基本的なトラス解析では、Staticな解析を指定していますので、
result = theStaticAnalysis->analyze(numIncr);
により、Staticな構造計算が行われます。
なお、このfunctionの中で
numIncr
は、解析する回数(ここでは、analyze 1 なので、1回)が入ります。
構造計算の結果は、
theStaticAnalysis
構造体の中に格納されます。
OpenSees のソースコード解析に挑戦してみる : 目次 |
0 件のコメント:
コメントを投稿