Dsl (Digital Simulation Library) for .Net
The Processor type exposes the following members.
コンストラクター
名前 | 説明 | |
---|---|---|
Processor()()()() |
デフォルトのコンストラクター
|
|
Processor(String) |
Processorオブジェクトの名前を指定したコンストラクター
|
メソッド
名前 | 説明 | |||||
---|---|---|---|---|---|---|
AddVariables |
Processor オブジェクトに Variable(複数可)を登録します。
既に登録されている Variable は登録されません(二重登録のチェックが実行されます)。
|
|||||
DeterminateOrder()()()() |
Processor オブジェクトが保持する配列 Variables に登録された Variable の(非定常状態)計算順序を決定し、必要なら連立方程式を組み立てます。
|
|||||
DeterminateOrder(Boolean) |
配列 Variables に登録された Variable の計算順序を決定し、必要なら連立方程式を組み立てます。
|
|||||
Equals | (Inherited from Object.) | |||||
Finalize | (Inherited from Object.) | |||||
GetHashCode |
特定の型のハッシュ関数として機能します。 (Inherited from Object.) |
|||||
GetType |
現在のインスタンスの Type を取得します。 (Inherited from Object.) |
|||||
GetValueBeforeIntegration |
与えられた Variable の各時間ステップ毎の積分計算開始前における値を返します。
<I>型以外の変数は単にその時の値(Value)が返ります。<I>型変数の場合
積分計算開始前に内部で保存されている(1ステップ前の)値が帰ります。
|
|||||
IsLeafVariable |
代数計算時、指定した Variable が「右辺変数」を持たないとき true、値(Value)が別な変数から計算される場合は false になります。
<S>型や<T>型変数等(代数計算時に「定数」とみなされるもの)からのみ直接または間接的に計算される変数も true と
なります(これは DeterminateOrder() の結果に依存します)。
|
|||||
LogFlush |
ログファイル出力を確定(Flush)させる。
|
|||||
LogString |
ログファイルに文字列を書き込む
|
|||||
LogTime |
Processor オブジェクトが作成された時刻(BornTime)からの経過時間と現在時刻を文字列として返します。
|
|||||
LogWrite |
"LogTime()+st"の形式でログファイルに出力する。
|
|||||
LogWriteLine |
"LogTime()+st"の形式でログファイルに出力後、改行する。
|
|||||
MemberwiseClone |
現在の Object の簡易コピーを作成します。 (Inherited from Object.) |
|||||
OnAfterAlgebraicComputation |
代数計算実行直後に呼ばれる メソッドです。
Run()が代数計算実行直後に呼び出します。
本メソッドは virtual です。base は AfterAlgebraicComputation が設定されていればそちらを呼び出します。
設定されていなければ単にリターンします。
代数計算は各積分ステップ毎に計算されるので終了時間に達するまで繰り返し呼び出されます。
|
|||||
OnAfterBlockComputation |
代数計算中の連立方程式を解いた直後に呼ばれるメソッドです。
Run()が連立方程式計算実行直後に呼び出します。
本メソッドは virtual です。base は AfterBlockComputation が設定されていればそちらを呼び出します。
代数計算は各積分ステップ毎に計算されます。通常、代数計算には複数の連立方程式が含まれますので、それぞれの
連立方程式が計算された直後に本メソッドが呼ばれることになります(連立方程式が無ければ呼ばれません)。
|
|||||
OnAfterComputation |
計算実行後に呼ばれる メソッドです。
DeterminateOrder()と
Run()が実行直後に呼び出します。
どちらのメソッドから呼び出されたかは ExecutionStatus で区別できます。本メソッドは virtual です。
base は AfterComputation が設定されていればそちらを呼び出します。設定されていなければ
単にリターン。
|
|||||
OnAfterIntegration |
各積分ステップで常微分方程式を解いた直後に呼ばれるメソッドです。
Run()が常微分方程式を解いた直後に呼び出します。
本メソッドは virtual です。base は AfterIntegration が設定されていればそちらを呼び出します。
代数計算は各積分ステップ毎に計算されます。
|
|||||
OnAfterRestore |
Processor オブジェクトの情報を TextReader から読み込む Restore(Object, TextReader) と RestoreContents(Object, TextReader) メソッドの終了時に
呼び出されるメソッドです。最初は Restore() の終了時、次に RestoreContents() の終了時です。
終了処理が必要な場合は override します。
base クラスでは AfterRestore が設定されていればそれを呼び出します。
AfterRestore が設定されていなければ何もせず true をリターンします。
|
|||||
OnAfterSave |
Processor オブジェクトの情報を TextWriter に出力するSave(Object, TextWriter) と SaveContents(Object, TextWriter)メソッドの終了時に
呼び出されるメソッドです。呼び出しは2回です。最初は Save() の終了時、次に SaveContents() の終了時です。
終了処理が必要な場合は override します。
base クラスでは AfterSave が設定されていればそれを呼び出します。
AfterSave が設定されていなければ何もせずリターンします。
|
|||||
OnBeforeAlgebraicComputation |
代数計算実行直前に呼ばれるメソッドです。
Run()が代数計算実行直前に呼び出します。
本メソッドは virtual です。base は BeforeAlgebraicComputation が設定されていればそちらを呼び出します。
設定されていなければ単に true をリターンします。
代数計算は各積分ステップ毎に計算されるので終了時間に達するまで繰り返し呼び出されます。
|
|||||
OnBeforeBlockComputation |
代数計算中の連立方程式を解く直前に呼ばれるメソッドです。
Run()が代数計算中の連立方程式を解く直前に呼び出します。
本メソッドは virtual です。base は BeforeBlockComputation が設定されていればそちらを呼び出します。
設定されていなければ単に true をリターンします。
代数計算は各積分ステップ毎に計算されます。通そして、通常、代数計算には複数の連立方程式が含まれますので、それぞれの
連立方程式が計算される直前に本メソッドが呼ばれることになります(連立方程式が無ければ呼ばれません)。
|
|||||
OnBeforeComputation |
計算実行前に呼ばれるメソッドです。
DeterminateOrder()と
Run()が実行直前に呼び出します。
どちらのメソッドから呼び出されたかは ExecutionStatus で区別できます。本メソッドは virtual です。
base は BeforeComputation が設定されていればそちらを呼び出します。設定されていなければ
単に true を返します。
|
|||||
OnBeforeIntegration |
各積分ステップで常微分方程式を解く直前に呼ばれるメソッドです。
Run()が常微分方程式を解く直前に呼び出します。
本メソッドは virtual です。base は BeforeIntegration が設定されていればそちらを呼び出します。
代数計算は各積分ステップ毎に計算されます。
|
|||||
OnBeforeRestore |
Processor オブジェクトの情報を TextReader から読み込むRestore(Object, TextReader) と RestoreContents(Object, TextReader)メソッドの直前に
呼び出されるメソッドです。呼び出しは2回です。最初は Restore() の開始時、次に RestoreContents() の開始時です。
開始処理が必要な場合は override します。
base クラスでは BeforeRestore が設定されていればそれを呼び出します。
BeforeRestore が設定されていなければ何もせず true をリターンします。
|
|||||
OnBeforeSave |
Processor オブジェクトの情報を TextWriter に出力するSave(Object, TextWriter) と SaveContents(Object, TextWriter) メソッドの開始直前に
呼び出されるメソッドです。呼び出しは2回です。最初は Save() の呼び出し時、次に SaveContents() の呼び出し時です。
開始処理が必要な場合は override します。
base クラスでは BeforeSave が設定されていればそれを呼び出します。
BeforeSave が設定されていなければ何もせず true をリターンします。
|
|||||
OnIncrementTime |
積分計算実行前に呼ばれるメソッドで、次の積分開始時間を計算します。
Run()が積分計算実行後に呼び出します。
積分は各積分ステップ毎に計算されるので終了時間に達するまで繰り返し呼び出されます。
|
|||||
OnIsPrintTime |
代数計算実行前に呼ばれる delegate で、与えられた時刻が「印刷」時刻かどうかを判定します。
「印刷」時刻の場合、COMPUTED_PRINT_TIME のフラグを持つ Variable が計算対象に追加されます。
Run()が代数計算実行直前に呼び出します。
代数計算は各積分ステップ毎に計算されるので終了時間に達するまで繰り返し呼び出されます。
|
|||||
Reset |
Processorの状態を DeterminateOrder() 呼び出し前の状態に戻します。
|
|||||
ResetIndex |
変数の Index と OrderIndex を設定します。DeterminateOrder() が終了したときに自動的に Processor 内部で呼び出されますが、
変数を Processor に追加したり削除したりした場合、呼び出すことができます。ただし、当然ですが OrderIndex は DeterminateOrder() が
正常終了した後以外は意味がありません。また、これらの整数領域は DeterminateOrder() が内部で作業用に使用します。従って、 DeterminateOrder()
呼び出しの途中(delegate内部などで)に呼び出さないでください。
|
|||||
Restore |
Processor オブジェクトの情報を TextReader から読み込み復元します。
※Processorに登録されている変数は一旦全て解放され、再作成されてから登録されます。 従って、以下の例の変数 x は Rsstore() 後に Processor とは無関係になります。さらに再作成された 変数は Save() 時の値や属性は保持しますが計算式 ComputeValueAt 等の delegate は再構築されません。 Restore()後に必ず、delegate 等を別途再設定してください。詳細はリファレンスの例題等を参照してください。
|
|||||
RestoreContents |
Processor オブジェクトの情報を TextReader から読み込み復元します。
|
|||||
ResultString |
リザルトコード res の文字列表現を返す。
|
|||||
Run()()()() |
DeterminateOrder()で決定された計算順序に従って、時刻 Time から TimeLimit まで刻み Step で計算します。
|
|||||
Run(Double) |
DeterminateOrder()で決定された計算順序に従って、時刻 Time から endTime まで刻み Step で計算します。
TimeLimit には endTime が代入されます。
|
|||||
Run(Double, Double) |
DeterminateOrder()で決定された計算順序に従って、時刻 Time から endTime まで刻み step で計算します。
TimeLimit には endTime が、Step には step が代入されます。
|
|||||
Run(Double, Double, Double) |
DeterminateOrder()で決定された計算順序に従って、開始時刻 startTime、刻み幅 step で時刻 endTime まで計算します。
Time には startTime、TimeLimit には endTime 、Step には step が代入されます。
|
|||||
Save |
オブジェクト(obj)の作成情報を TextWriter sw に出力します。
Dslオブジェクトを継承した独自オブジェクトを使用している場合、
必要なら本メソッドをoverrideしてください。
IDsiSerializer メンバ |
|||||
SaveContents |
Processor オブジェクトの情報を TextWriter に出力します。出力した情報は後に RestoreContents() メソッドで
復元することができます。
IDslSerializableメンバ |
|||||
SetLogItem |
個々のログ項目をオン、またはオフに設定します。
|
|||||
ToString | (Inherited from Object.) | |||||
Variable(Int32) |
Processor オブジェクトに登録されている Variable を返します。
|
|||||
Variable(String) |
指定した名前と一致した Variable を返します。
|
|||||
VariableIndex(String) |
指定した名前の Variable の登録インデックスを返します。
Processorは登録に際して名前の重複はチェックしません。従って同じ名前が複数ある時は一番小さいインデックス値が返ります。
|
|||||
VariableIndex(Variable) |
指定した Variable の登録インデックスを返します。
|
プロパティ
名前 | 説明 | |
---|---|---|
AfterAlgebraicComputation |
代数計算実行後に呼ばれる delegate です。
Run()が代数計算実行後に呼び出します。
代数計算は各積分ステップ毎に計算されるので終了時間に達するまで繰り返し呼び出されます。
詳細はOnAfterAlgebraicComputationを参照してください。
|
|
AfterBlockComputation |
代数計算中の連立方程式を解いた直後に呼ばれる delegate です。
Run()が呼び出します。
詳細はOnAfterBlockComputationを参照してください。
|
|
AfterComputation |
計算実行後に呼ばれる delegate です。
DeterminateOrder()と
Run()が計算実行直後に呼び出します。
どちらのメソッドから呼び出されたかは ExecutionStatus で区別できます。
|
|
AfterIntegration |
積分計算実行後に呼ばれる delegate です。
Run()が積分計算実行後に呼び出します。
積分は各積分ステップ毎に計算されるので終了時間に達するまで繰り返し呼び出されます。
詳細はOnAfterIntegrationを参照してください。
|
|
AfterRestore |
Processor オブジェクトの情報を TextReader から読み込む Restore() メソッドの終了時に
呼び出されるメソッドです。
|
|
AfterSave |
Processor オブジェクトの情報を TextWriter に出力する Save() メソッドの処理終了時に
呼び出されるメソッドです。
|
|
BeforeAlgebraicComputation |
代数計算実行前に呼ばれる delegate です。
Run()が代数計算実行前に呼び出します。
代数計算は各積分ステップ毎に計算されるので終了時間に達するまで繰り返し呼び出されます。
|
|
BeforeBlockComputation |
代数計算中の連立方程式を解く直前に呼ばれる delegate です。
Run()が呼び出します。
詳細はOnBeforeBlockComputationプロパティを参照してください。
|
|
BeforeComputation |
計算実行前に呼ばれる delegate です。
DeterminateOrder()と
Run()が実行直前に呼び出します。
どちらのメソッドから呼び出されたかは ExecutionStatus で区別できます。
|
|
BeforeIntegration |
積分計算実行前に呼ばれる delegate です。
Run()が積分計算実行前に呼び出します。
積分は各積分ステップ毎に計算されるので終了時間に達するまで繰り返し呼び出されます。
詳細はOnBeforeIntegrationを参照してください。
|
|
BeforeRestore |
Processor オブジェクトの情報を TextReader から読み込む Restore() メソッドの開始直前に
呼び出されるメソッドです。
|
|
BeforeSave |
Processor オブジェクトの情報を TextWriter に出力する Save() メソッドの直前に
呼び出されるメソッドです。
|
|
BornTime |
Processorオブジェクトが作成された時刻。
|
|
ComputingOrder |
計算順序に従って並べられた Variable の配列です。
DeterminateOrder()が正常に終了した後でないと意味を持ちません。
また配列の順序や登録されている Variable の属性などを変更すると以後のRun()メソッドが正常に
実行できなくなります。
|
|
DerivativeRatio |
連立方程式(y=f(x))を解く場合 Jacobian 行列 dy/dx を計算します。
dy/dx を計算する場合 Dsl では数値微分を実行します。
(数式微分は現バージョンではサポートしていません)。ここで数値微分を計算する場合
まず x を dx だけ変化させた時の y の変化分 dy を計算して「数値微分値 = dy/dx」とするわけですが、
このときの dx の初期値を決定する際に DerivativeRatio が使用されます(初期値は 100.0)。
最初に dx = |x| / DerivativeRatio を計算して、 dx がゼロ(に近い)なら次に
dx = |y| / DerivativeRatio 、それでも小さければ dx = DerivativeRatio / 1000 と計算します。
dx は計算の過程で自動的に調節されるので DerivativeRatio の値を変更する必要性は少ないと考えられます。
|
|
Eps |
収束判定誤差定数(デフォルト値は 1.0E-6)
全て|<T>変数の (現在値-目的地)の二乗和 < Eps なら収束とみなします。
|
|
ExecutionStatus |
実行中の状態を返します。
詳細はEXECUTION_STATUSを参照してください。
|
|
FileVersion |
Processorオブジェクトの内容を Restore() した場合のバージョン番号配列。
つまり、Save() した Dsl のバージョン番号になりますので、Restore() 後でなければ意味がありません。
|
|
FtCheckLimit |
連立方程式を組み立てる際に<F>型と<T>型変数の個数が一致して、かつ、<F>型から<T>型に達する
独立したルートが存在する必要があります。
ただ「独立したルートが存在」のチェックは比較的コストの高い処理なので、<F>型(または<T>型)変数の数が FtCheckLimit 以上のときは
実行されません。もし「独立したルートが存在」しない場合、計算実行時に Jacobian 行列の行列式がゼロ(Singular)になり連立方程式を解くことはできません
(もちろん「独立したルートが存在」しても連立方程式が解けない場合はあります)。その場合は FtCheckLimit を大きくして再度 DeterminateOrder() を
実行してみて下さい(デフォルト値は 500 です)。
|
|
IncrementTime |
積分計算実行前に呼ばれる delegate で、次の積分開始時間を計算します。
Run()が積分計算実行後に呼び出します。
積分は各積分ステップ毎に計算されるので終了時間に達するまで繰り返し呼び出されます。
詳細はOnIncrementTimeを参照してください。
|
|
IntegrationMethod |
常微分方程式の解法を指定します。
詳細はINTEGRATORを参照してください。
|
|
IsPrintTime |
代数計算実行前に呼ばれる delegate で、与えられた時刻が「印刷」時刻かどうかを判定します。
「印刷」時刻の場合、COMPUTED_PRINT_TIME のフラグを持つ Variable が計算対象に追加されます。
Run()が代数計算実行直前に呼び出します。
代数計算は各積分ステップ毎に計算されるので終了時間に達するまで繰り返し呼び出されます。
詳細はOnIsPrintTimeを参照してください。
|
|
LogFile |
Processor の実行状況を書き込むログファイル(StreamWriter)オブジェクト。
デフォルトは null ですので設定しなければログファイルは作成されません。
ログファイルに書き込まれる内容はLOG_ITEMを
SetLogItem()等を利用して設定します。
書き込まれる内容は Processor のバージョン等により変更されます。
|
|
LogItem |
ログ出力する項目。個々のログ項目は直接設定することができます。または
SetLogItem()で
オン、またはオフに設定できます。
|
|
Name |
プロセッサーオブジェクトの名前(任意)です。タブ等の特殊文字を含めないでください。
|
|
NumDivided |
<DD>型変数の個数(ループの数)です。DeterminateOrder()が正常終了した後でないと意味がありません。
|
|
Silent |
true ならエラー時等にメッセージを表示しない、falseならメッセージを表示します。
デフォルトは false です。
|
|
SolverMethod |
代数計算中の連立方程式の解法をです。現状は EQUATION_SOLVER.NEWTON 固定です。
|
|
SparseCriteria |
Jacobian行列の非ゼロ要素の割合(%)が SparseCriteria を下回るとスパース専用の解法に移行します。
つまり、SparseCriteria = 100 なら常にスパース専用解法が用いられます。
逆に SparseCriteria = 0 ならスパース専用解法は用いられません。
デフォルトは 20(%)。
|
|
SteadyStateComputation |
DeterminateOrder()に定常状態計算の指定をした場合(引数の値)
true になります。
|
|
Step |
積分の時間ステップ値です。積分実行中に調節することも可能です。
|
|
Tag |
ユーザが任意のオブジェクトを設定できます。
Processor が参照することはありません。
|
|
Time |
積分開始時刻であると同時に積分進行中の現在時刻です。
Run()()()()メソッド中での計算進行時間です。
積分開始時刻として設定できますが、Run() メソッド実行中は値をセットできません。
|
|
TimeLimit |
Run()メソッドで指定された積分終了時間です。
|
|
UseMklSolver |
true の場合、CPU に最適化されたインテル社の高速な Mkl を使用します。
true ならJacobian行列の非ゼロ要素の割合(%)が SparseCriteria を下回るとスパース専用の解法に移行します。
ここで「ゼロ要素」とは「計算の結果たまたまゼロ」という意味ではなく関数関係が無いため「恒久的にゼロ」という意味です。
false なら Mkl とスパース専用の解法は使用せず、C# で記述された内部の行列解法を用います。
特に2つの解法を比較するような場合を除いて、true でご使用ください。
デフォルトは true。
|
|
Variables |
Processor オブジェクトに登録されている Variable の配列です。グラフ処理の対象になります。
|