TRNSYSのエラーとコンポーネントオーダー
コンポーネントの配置と計算
普段あまり意識していませんが、コンポーネントの配置って、データの流れに沿って並べていないでしょうか?
この図はサンプルの例ですが、
- 左側に気象データやスケジュールなどデータを出力するコンポーネント
- 真ん中は計算の主になるコンポーネント
- 右側に計算結果を処理する出力用のコンポーネント
という順で並んでいます。計算の元になるデータは左側(上流)、出力は右側という並びになっています。(この並び順がTRNSYSでは一般的な配置です)
TRNSYSの計算順はといえば
ところがTRNSYSの処理順をSettings(Control Cards)で確認すると、意外にも順番がバラバラです。下の図のようにType1b(集熱パネル)、System_Plotter、Type15-6(気象データ)。。。のような並びです。
最初に集熱パネルの計算をして、いきなり結果を出力、その後に気象データの読み出し処理と、なんか順番がめちゃくちゃですよね?
ちょっと考えると変な順番に見えますが、複数のコンポーネントを繰り返し計算、収束判定しているので、基本的には順番に関係なく処理できます。
まれにエラーになる事も。。。
コンポーネントに組み合わせによって、まれに並び順が原因でエラーになる事があります。以下は実際に発生したエラーの例です。計算開始直後にType56でなにやらエラーが発生しています。
*** Fatal Error at time : 1.000000
Generated by Unit : 6
Generated by Type : 56
Message : The GetRadiationData routine has been called before the GlobalRadiationData array has been allocated.
これはTRNSYS内部の関数で呼び出し順が逆転しているのが原因です。たまにこういうのがありますが、エラーメッセージを調べるとコンポーネントの処理順が関係している事が推測できます。
こういうときはSettingsのComponent Orderタブで、Optimize components order をクリックして並び順を最適化すればOKです。(手動で並び替えることもできます)
最適化する前後の画面を見比べると、後の画面ではType15-6(気象データ)、Type14h(スケジュール)、Type1b(集熱パネル)。。。と、データの流れに沿った処理順になっている事が分かります。
この順だと収束も速くなるので、計算時間もほんのちょっと短くなる可能性があります。並び順が原因で発生するエラーは、大抵は計算直後に発生します。なにか新しいプロジェクトでは、ひとまずOptimize components order をクリックしておくのもありかもです。
とはいえエラーが発生した際に手掛かりになるのはエラーメッセージです。メッセージから発生箇所と原因を調べて対策を取ることが基本です。
余談
計算の途中で発生するエラーは並び順には関係なくて、コンポーネントのつなぎ方が違っていたり、計算値が間違っているなど、他の原因が考えられます。
こういうときはエラーが発生しているコンポーネントの上流側の計算値を書き出して検討したり、接続に問題が無いかなど調べて対策を施します。(いま思い出したけど、上流の値調べたら湿度100.2%とか計算上あり得ないケースとかありました)
動作環境
以下の環境で動作を確認しています。
Windows10 Pro(64bit, 1803)
TRNSYS18.00.0019(64bit)