TRNSYSの計算の仕組み

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

TRNSYSではコンポーネントを組み合わて計算を行う

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

データが順番に流れて計算が進む

相互に値を参照するコンポーネント

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

相互接続されたコンポーネント

Building(Type56)は室温を計算し、Switchでは換気の調整を行っています。(いわゆる外気導入の処理) こういった接続では、お互いの計算結果が相互に影響します。さて、どちらの計算結果が優先されるのでしょうか?そもそもどちらが先に計算されるのでしょうか?

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

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

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

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

イテレーション

この例では最終的に換気するか、しないかどちらかに落ち着きます。 Debug機能を使ってログを書き出すと、コンポーネントの間を流れるデータの値がイテレーションを通して、次第に安定していく状態を確認することができます。(参考:「TRNSYSのDebug機能を使ってみる」) これって、他のツールだと収束処理として内部で行われていると思うんですが、TRNSYSはその様子を確認する手段が用意されています。

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

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

  1. 室温が上昇→外気導入開始
  2. 外気導入で室温が低下→外気導入停止
  3. 外導入停止で室温が上昇→1.へ戻る

という流れで、結果的に計算が終わらなくなるような気がします。

実際、単純な判定処理、例えば「外気温」<「室温」で換気するような判定にすると、1~3の処理の繰り返しになっていまい、計算結果が安定しなくなります。

イテレーションが終わらなくなる(収束しない)ので、計算が先に進めず最終的にはエラーとして処理されます。 通常、こういった判定では、サーモスタットなどのコントローラーを使って、ある程度判定の幅を設けて処理を行います。

日常生活でも窓を開けてから、多少肌寒くなるぐらいまでは開けっ放しにしますよね?それと同じように換気開始と終了の条件を分けて室温が28℃以上なら換気を開始、25℃になったら換気を止める、といった換気の開始条件と終了条件に幅を持たせておきます。こうすることでイテレーションの繰り返しの中でも計算結果が安定し、外気導入が成り立つようになります。

このモデルの例ではコントローラー(Type2)を複数使って、判定処理を行っています。 注:換気量が極端に多かったり、外気温が低かったりと、室温が急に下がる条件になっていると、やはり1~3の繰り返しになってイテレーションが終わらなくなります。

Pocket

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です