Dsl (Digital Simulation Library) for .Net

このトピックスは以下のセクションを含みます。

例題

例題

ここでは例題を2つ、すべてのプログラムリストと結果を載せておきます。

注意事項:

 ソースコードは一部ヘルプ用に編集している部分があります。最新のソースコードがダウンロード可能ですので、テストにはそちらをご利用ください。

単純な液面レベル系

最初は非常に簡単な液面レベル系の例です。

単純な円筒形のタンクがあり、上からパイプを通じて水が流れ込みます。 同時にタンクの底からパイプを通じて水が流れ出します。 流れ出る単位時間当たりの水量はタンクの液面高の平方根に比例するとします。 出口にはバルブがあり、出ていく水量を調節します(バルブ抵抗が大きいほど水量は小さくなります)。 液面高は当然「(入った水の量-流れ出る水の量)/タンクの底面積」に応じて変化します。

ここでは、全ての式をまとめて定義しています。最も簡便な方法ですが柔軟性に欠けます。 Example2ではTank、Pipe、やValve等のエレメントを定義して、 その中で式を記述すると同時に Save()/Restore() 機能にも対応しています。

先頭へ

カスケード接続した液面レベル系

次はカスケード接続した液面レベル系の例です。 タンクとパイプは前の例と同じですが、タンクを2つカスケード接続してから、 流れ出る水の一部を分流させて最初のタンクに戻しています。 また、戻るパイプは時間遅れを与えています。プログラム的にはタンク、パイプ、バルブなどをすべて「部品(クラス)」化(エレメント化)して、 それらを相互に接続させる形になっています。また、途中の結果を Save() してから Restore() して作業を続行できるようになっています。 さらに、ProcessorやVariableを継承した独自のオブジェクトを作成して、Dslのほとんどの機能を利用した、より柔軟性の高い例になっています。

チップ:

継承や Save()/Restore() 機能をサポートしているせいでソースコードはかなり増えますが、同じことの繰り返しなのでそれほど複雑ではありません。

先頭へ

参照

先頭へ