Dsl (Digital Simulation Library) for .Net
数値シミュレーションライブラリ(Dsl)は、変数(ノード)間の関係を「グラフ処理」によって柔軟に扱う手段を提供します。 さらに、計算実行部分(ソルバー)は、グラフ処理によって組み立てられた計算順序に従って、(非線形)連立方程式や(一般的には時間に関する)常微分方程式を計算します。 全体の概念などは「概要」等を参照してください。

クラス

  クラス 説明
Public class _Dsl
全ての Dsl オブジェクトの基本クラスです。
Public class DelayedVariable
DelayedVariable は右辺(一個)変数の指定時間前の値を持つ 時系列データ(時間遅れの値)を扱う Variable です。 時間遅れの値を計算は内部で実行します(OnComputeValueAt() は既に定義されています)。 従って右辺変数は定義に従って正しく設定する必要があります。 右辺変数は順に(値を取得する変数、時間遅れを与える変数、最低サンプリング時間を与える変数) の3個です。さらに計算実行前に一度サンプリングのための領域を確保するために Init() メソッドを呼ぶ必要があります。 時系列データの取得(サンプリング)は各積分ステップ後に実行されます。 Save()/Restore()はInit()で確保された領域なども保存/復元されます。
Public class GException
Dslで使用している Exception (を継承した)クラス。
Public class Processor
グラフ処理を実行し変数(Variable)の因果関係から計算順序を決定し(非線形)連立方程式と連立常微分方程式を組み立て て解きます。
Public class Variable
個々の変数を表すオブジェクトです。 変数は値(Value)と属性(FLAGUSERFLAG)と(必要なら)右辺変数を持ち、Processorオブジェクトに管理されます。 「管理される」というのは、作成(new)した Variable は Processor オブジェクトに登録しなければ ならないということです。

デリゲート

  デリゲート 説明
Public delegate Processor..::..AtAfterAlgebraicComputation
代数計算実行直後に一度呼び出される delegate 関数宣言。代数計算は時間刻み毎に実行される常微分方程式計算の直前に毎回実行されます。 常微分方程式の解法が後退オイラー法の場合は常微分方程式計算が代数計算に含まれます。従って積分変数はこの時点で step 時間後の値になっています。
Public delegate Processor..::..AtAfterBlockComputation
代数計算に含まれる(非線形)連立方程式の計算直後に呼び出される delegate 関数宣言。 代数計算は時間刻み毎に実行される常微分方程式計算の直前に毎回実行されます。連立方程式が複数組あれば、それぞれの計算直後に複数回呼び出されます。
Public delegate Processor..::..AtAfterComputation
計算順序の決定(DeterminareOrder()メソッド)、計算の実行(Run()メソッド)後にそれぞれ一度呼び出される delegate 関数宣言。
Public delegate Processor..::..AtAfterIntegration
積分計算実行直後に呼び出される delegate 関数宣言。積分計算は時間刻み毎に実行されるので、そのたびに毎回呼び出されます。 常微分方程式の解法が後退オイラー法の場合は常微分方程式計算が代数計算に含まれますので、この関数が設定されていても呼び出されません。
Public delegate Processor..::..AtAfterRestore
Processor オブジェクトの情報を TextReader から読み込む RestoreContents() メソッドの処理終了時に 呼び出される delegate 宣言です。
Public delegate Processor..::..AtAfterSave
Processor オブジェクトの情報を TextWriter に出力する SaveContents() メソッドの終了時に 呼び出される delegate 宣言です。
Public delegate Processor..::..AtBeforeAlgebraicComputation
代数計算実行直前に一度呼び出される delegate 関数宣言。代数計算は時間刻み毎に実行される常微分方程式計算の直前に毎回実行されます。 常微分方程式の解法が後退オイラー法の場合は常微分方程式計算が代数計算に含まれます。 詳細はBeforeAlgebraicComputationプロパティを参照してください。
Public delegate Processor..::..AtBeforeBlockComputation
代数計算に含まれる(非線形)連立方程式を解く直前に呼び出される delegate 関数宣言。 代数計算は時間刻み毎に実行される常微分方程式計算の直前に毎回実行されます。連立方程式が複数組あれば、それぞれの計算直前に複数回呼び出されます。
Public delegate Processor..::..AtBeforeComputation
計算順序の決定(DeterminareOrder()メソッド)、計算の実行(Run()メソッド)前にそれぞれ一度呼び出される delegate 関数宣言。 詳細はBeforeComputationプロパティを参照してください。
Public delegate Processor..::..AtBeforeIntegration
積分計算実行直前に呼び出される delegate 関数宣言。積分計算は時間刻み毎に実行されるので、そのたびに毎回呼び出されます。 常微分方程式の解法が後退オイラー法の場合は常微分方程式計算が代数計算に含まれますので、この関数が設定されていても呼び出されません。
Public delegate Processor..::..AtBeforeRestore
Processor オブジェクトの情報を TextReader から読み込む RestoreContents() メソッドの直前に 呼び出される delegate 宣言です。
Public delegate Processor..::..AtBeforeSave
Processor オブジェクトの情報を TextWriter に出力する SaveContents() メソッドの直前に 呼び出される delegate 宣言です。
Public delegate Processor..::..AtIncrementTime
Run(startTime,endTime,step)で指定した 連立常微分方程式の時間刻み(step)をコントロールしたい場合に設定する delegate 関数宣言。
Public delegate Processor..::..AtIsPrintTime
指定された時刻(time)が印刷時刻かどうかを決定する delegate 関数宣言。 true を返すと時刻(time)は印刷時刻とみなされ RFLAG.COMPUTED_PRINT_TIME のフラグを持つ変数が 計算対象に追加されます。 詳細はIsPrintTimeプロパティを参照してください。
Public delegate Variable..::..AtComputeValueAt
右辺変数から左辺変数(自分自身の値)を計算するための計算式を与える delegate 宣言です。

列挙型

  列挙値 説明
Public enumeration EQUATION_SOLVER
代数連立方程式を解くソルバーの指定。
Public enumeration EXECUTION_STATUS
実行中状況のフラグで、delegate 等のコールバック中で利用できます。
Public enumeration FLAG
Processor が個々の Variable に設定するフラグ。ユーザは参照することはできるが値を設定することはできません。
Public enumeration INTEGRATOR
微分方程式を解く(積分)ソルバーの指定。
Public enumeration Processor..::..LOG_ITEM
ログ出力する項目
Public enumeration RESULT
DeterminateOrder() や Run() メソッドの終了(RESULT)コード。
Public enumeration USERFLAG
ユーザが個々のVariableに設定することのできるフラグでFLAGのサブセットになっています。 全ての、USERFLAG.xxxxxx は対応する FLAG.xxxxxx と値は同じです。