Translate

2016/05/11

TRNSYSの計算の仕組み

TRNSYSではコンポーネントを組み合わて計算を行います。図のように標準コンポーネントやオプションのコンポーネントを必要に応じて組み合わせて計算を行います。

2016-05-02_14h26_13

この例では左端のEqua(Equation)から出力されたデータが矢印に沿って、Type194、Type65dへ順番に流れて計算が進んでいきます。順番にデータが処理されていくので、非常に流れとして分かりやすいモデルになっています。

2016-05-02_14h29_41

ところでこのデータの流れですが、モデルによってはループ状になることがあります。例えば下の図の例(TRNSYS17\Examples\3D_Building)では2つのコンポーネントが相互にループ状に接続されています。(お互いに相手のデータを受け取って計算する接続になっている)

2016-05-02_14h44_03

Building(Type56)は室温を計算し、Switchでは換気の調整を行っています。(いわゆる外気導入の処理)

こういった接続では、お互いの計算結果が相互に影響します。さて、どちらの計算結果が優先されるのでしょうか?そもそもどちらが先に計算されるのでしょうか?

くるくる回るよイテレーション

TRNSYSでは基本的にコンポーネントが配置された順番に計算が行われます。ただし、これは一回のみの計算ではなく、タイムステップごとにすべてのコンポーネントを呼び出して何度も繰り返して計算を行います。(この繰り返し処理をイテレーションと呼びます。)

ループ状に接続されているコンポーネントの間では、このイテレーションを通して、お互いの計算結果を相互に受け取り再計算が繰り返されます。最終的にすべてのコンポーネントの計算結果が変化しなくなった(収束した)時点で次のタイムステップへと処理を進めます。

このようにイテレーションを繰り返すことで相互に依存する接続関係を含め、すべてのコンポーネントの計算を処理します。(図にすると以下のような処理を繰り返しています。)

2016-05-02_15h32_57

このモデルの例でいえば、最終的に換気するか、しないかどちらかに落ち着きます。

Debug機能を使ってログを書き出すと、コンポーネントの間を流れるデータの値がイテレーションを通して、次第に安定していく状態を確認することができます。(参考:「TRNSYSのDebug機能を使ってみる」)

これって、他のツールだと収束処理として内部で行われていると思うんですが、TRNSYSだとちゃんと見えるんですよね。

 

実はイテレーションが終わらないケースも。。。

さて、このモデルですが、イテレーションの流れを順番に見ていくと。。。

1)室温が上昇→外気導入開始

2)外気導入で室温が低下→外気導入停止

3)外導入停止で室温が上昇→1)へ戻る

といった流れで、結果的に計算が終わらなくなるような気がします。実際、単純な判定処理、例えば「外気温」<「室温」なら換気するような判定にすると、1~3の処理の繰り返しになっていまい、計算結果が安定しなくなります。つまりイテレーションが終わらなくなるので、計算が先に進めず最終的にはエラーとして処理されます。

通常、こういった判定では、コントローラーなどを使って、ある程度判定の幅を設けて処理を行います。日常生活でもそうだと思いますが窓を開けて、多少肌寒くなるぐらいまでは開けっ放しにしますよね?それと同じように換気開始と終了の条件を分けて室温が28℃以上なら換気を開始、25℃になったら換気を止める、といったように換気の開始条件と終了条件に幅を持たせておきます。こうすることでイテレーションの繰り返しの中でも計算結果が安定し、外気導入が成り立つようになります。このモデルの例ではコントローラー(Type2)を複数使って、判定処理を行っています。

注:換気量が極端に多かったり、外気温が低かったりと、室温が急に下がる条件になっていると、やはり1~3の繰り返しになってイテレーションが終わらなくなります。

0 件のコメント:

コメントを投稿