OpenSees Blog 日本語 目次

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

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







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

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


2015年1月8日木曜日

OpenSees Developer : プログラムの全体的な流れ


全体的な、OpenSeesプログラムの流れとしては、

 Tcl_CreateCommand
で、OpenSeesとして使用するなコマンド(たとえば、Node,Element,wipeなど)が
実行するときに、どのファンクションを動作させるかを定義します。

次に
Tcl_EvalFile
で、tcl スクリプトファイルを読み込み、書いてある順に、
Tcl_CreateCommand でセットされたファンクションが一気に実行されます。


Tcl_CreateCommand は、以下の通りです。

 Tcl_CreateCommand
(interp, "<Openseesコマンド>", 
<OpenSeesコマンドを読み込むファンクション>,
 (xxxxx)NULL, (xxxxxx)NULL);


たとえば
Tcl_CreateCommand(interp, "node", TclCommand_addNode,  (ClientData)NULL, NULL);

は、 OpenSeesコマンドのとしてtclファイルに書かれているnodeの行を、プログラムの中にデータととして格納する時、ファンクション TclCommand_addNode( ) を使用してデータの格納を行います。
つまり、 TclCommand_addNode( )の中で、
Nodeクラスに OpenSeesコマンドのNodeのデータをセットしている、ということになります。


そして、最終的に実行する
Tcl_EvalFile
は、

OpenSees\SRC\tcl\tclmain.cpp
または
OpenSeesプロジェクトのtclmain.cpp
にあります。(緑丸部分)

Tcl_EvalFile(interp, tclStartupScriptFileName);
tclStartupScriptFileName には、OpenSeesをDOSコマンドプロンプトから動作させるときにセットして引数の、ファイル名が入っています。




ここで注意しなければいけないのは、以下の通りです。

OpenSeesのプログラムは、基本的にtcl スクリプトファイルに書かれている順に動作する、ということ。

Tcl_CreateCommand( )で定義されているコマンドは、OpenSees用のコマンドで、クラスとして定義されている、ということ。

もし、OpenSeesの計算結果などに対して、簡単な追加計算を行いたいならば、tcl スクリプトファイルに、tcl でプログラムを記載できる、ということ。
(tcl 言語についての説明は、ここのサイト が良くまとまっています)

もし、OpenSeesの計算結果などに対して、複雑な追加計算を行いたいならば、自分で新しいOpenSeesのコマンドをTcl_CreateCommand( )で定義できる、ということ。
ただし、C++ として正しくクラスを設計する必要があります。


次のページ → 

OpenSees のソースコード解析に挑戦してみる : 目次

0 件のコメント:

コメントを投稿