Dsl (Digital Simulation Library) for .Net
数値シミュレーションライブラリ(Dsl)は、変数(ノード)間の関係を「グラフ処理」によって柔軟に扱う手段を提供します。
さらに、計算実行部分(ソルバー)は、グラフ処理によって組み立てられた計算順序に従って、(非線形)連立方程式や(一般的には時間に関する)常微分方程式を計算します。
全体の概念などは「概要」等を参照してください。
クラス
クラス | 説明 | |
---|---|---|
_Dsl |
全ての Dsl オブジェクトの基本クラスです。
|
|
DelayedVariable |
DelayedVariable は右辺(一個)変数の指定時間前の値を持つ
時系列データ(時間遅れの値)を扱う Variable です。
時間遅れの値を計算は内部で実行します(OnComputeValueAt() は既に定義されています)。
従って右辺変数は定義に従って正しく設定する必要があります。
右辺変数は順に(値を取得する変数、時間遅れを与える変数、最低サンプリング時間を与える変数)
の3個です。さらに計算実行前に一度サンプリングのための領域を確保するために Init() メソッドを呼ぶ必要があります。
時系列データの取得(サンプリング)は各積分ステップ後に実行されます。
Save()/Restore()はInit()で確保された領域なども保存/復元されます。
|
|
GException |
Dslで使用している Exception (を継承した)クラス。
|
|
Processor |
グラフ処理を実行し変数(Variable)の因果関係から計算順序を決定し(非線形)連立方程式と連立常微分方程式を組み立て
て解きます。
|
|
Variable |
デリゲート
デリゲート | 説明 | |
---|---|---|
Processor..::..AtAfterAlgebraicComputation |
代数計算実行直後に一度呼び出される delegate 関数宣言。代数計算は時間刻み毎に実行される常微分方程式計算の直前に毎回実行されます。
常微分方程式の解法が後退オイラー法の場合は常微分方程式計算が代数計算に含まれます。従って積分変数はこの時点で step 時間後の値になっています。
|
|
Processor..::..AtAfterBlockComputation |
代数計算に含まれる(非線形)連立方程式の計算直後に呼び出される delegate 関数宣言。
代数計算は時間刻み毎に実行される常微分方程式計算の直前に毎回実行されます。連立方程式が複数組あれば、それぞれの計算直後に複数回呼び出されます。
|
|
Processor..::..AtAfterComputation |
計算順序の決定(DeterminareOrder()メソッド)、計算の実行(Run()メソッド)後にそれぞれ一度呼び出される delegate 関数宣言。
|
|
Processor..::..AtAfterIntegration |
積分計算実行直後に呼び出される delegate 関数宣言。積分計算は時間刻み毎に実行されるので、そのたびに毎回呼び出されます。
常微分方程式の解法が後退オイラー法の場合は常微分方程式計算が代数計算に含まれますので、この関数が設定されていても呼び出されません。
|
|
Processor..::..AtAfterRestore |
Processor オブジェクトの情報を TextReader から読み込む RestoreContents() メソッドの処理終了時に
呼び出される delegate 宣言です。
|
|
Processor..::..AtAfterSave |
Processor オブジェクトの情報を TextWriter に出力する SaveContents() メソッドの終了時に
呼び出される delegate 宣言です。
|
|
Processor..::..AtBeforeAlgebraicComputation |
代数計算実行直前に一度呼び出される delegate 関数宣言。代数計算は時間刻み毎に実行される常微分方程式計算の直前に毎回実行されます。
常微分方程式の解法が後退オイラー法の場合は常微分方程式計算が代数計算に含まれます。
詳細はBeforeAlgebraicComputationプロパティを参照してください。
|
|
Processor..::..AtBeforeBlockComputation |
代数計算に含まれる(非線形)連立方程式を解く直前に呼び出される delegate 関数宣言。
代数計算は時間刻み毎に実行される常微分方程式計算の直前に毎回実行されます。連立方程式が複数組あれば、それぞれの計算直前に複数回呼び出されます。
|
|
Processor..::..AtBeforeComputation |
計算順序の決定(DeterminareOrder()メソッド)、計算の実行(Run()メソッド)前にそれぞれ一度呼び出される delegate 関数宣言。
詳細はBeforeComputationプロパティを参照してください。
|
|
Processor..::..AtBeforeIntegration |
積分計算実行直前に呼び出される delegate 関数宣言。積分計算は時間刻み毎に実行されるので、そのたびに毎回呼び出されます。
常微分方程式の解法が後退オイラー法の場合は常微分方程式計算が代数計算に含まれますので、この関数が設定されていても呼び出されません。
|
|
Processor..::..AtBeforeRestore |
Processor オブジェクトの情報を TextReader から読み込む RestoreContents() メソッドの直前に
呼び出される delegate 宣言です。
|
|
Processor..::..AtBeforeSave |
Processor オブジェクトの情報を TextWriter に出力する SaveContents() メソッドの直前に
呼び出される delegate 宣言です。
|
|
Processor..::..AtIncrementTime |
Run(startTime,endTime,step)で指定した
連立常微分方程式の時間刻み(step)をコントロールしたい場合に設定する delegate 関数宣言。
|
|
Processor..::..AtIsPrintTime |
指定された時刻(time)が印刷時刻かどうかを決定する delegate 関数宣言。
true を返すと時刻(time)は印刷時刻とみなされ RFLAG.COMPUTED_PRINT_TIME のフラグを持つ変数が
計算対象に追加されます。
詳細はIsPrintTimeプロパティを参照してください。
|
|
Variable..::..AtComputeValueAt |
右辺変数から左辺変数(自分自身の値)を計算するための計算式を与える delegate 宣言です。
|
列挙型
列挙値 | 説明 | |
---|---|---|
EQUATION_SOLVER |
代数連立方程式を解くソルバーの指定。
|
|
EXECUTION_STATUS |
実行中状況のフラグで、delegate 等のコールバック中で利用できます。
|
|
FLAG |
Processor が個々の Variable に設定するフラグ。ユーザは参照することはできるが値を設定することはできません。
|
|
INTEGRATOR |
微分方程式を解く(積分)ソルバーの指定。
|
|
Processor..::..LOG_ITEM |
ログ出力する項目
|
|
RESULT |
DeterminateOrder() や Run() メソッドの終了(RESULT)コード。
|
|
USERFLAG |