Translate

2017/01/18

Type21 Time Valuesが謎の値を返す

1h未満のタイムステップ

以前に紹介したType21を使っていて、タイムステップが1h未満では妙な値を出力していることに気づきました。

TIME Month Day Hour                    
----    -----   ----    ----
23.25 1.0 1.0 24.0
23.50 1.0 1.0 24.0
23.75 1.0 1.0 24.0
24.00 1.0 1.0 24.0
24.25 1.0 2.0 1.0 ← 24:15なのに1が出力される
24.50 1.0 2.0 1.0      〃
24.75 1.0 2.0 1.0      〃
25.00 1.0 2.0 1.0 ← ここは1:00なので問題なし
25.25 1.0 2.0 2.0
25.50 1.0 2.0 2.0

なにこれ?24:00 < Hour ≦01:00 は「1」が出力されています。というか、Hourは実数で1.25とか出力されるのかと思いきや、正時の値が出力されるようです。

ドキュメントを調べると。。。

不思議な動きですが、何かルールがあるのかもしれません。こういう時はまずドキュメントを調べてみます。

To coincide with the TRNSYS specification of time, the values 
reset during the timestep after the last hour of the segment.
For example with a simulation timestep of 0.25 hour, when the
simulation time is at 24.00 hours, the hour of day value would
be 24, and at simulation time 24.25
the hour of day value would be 1.

TRNSYS Vol.4 Component Mathematical Reference より

どうやら仕様のようです。1h未満では次のタイムステップの時刻(正時)を出力するようになっています。どういう理由でそうなるかは不明ですが、もしかして24時間を1~24(0~23ではなくて)で処理しているのと関係ありそうだけど、どうだろう?

対策

そのままだと扱いにくいので対策を考えてみました。Equationを使って、Timeから時刻を計算してやると、いい具合に出力できます。以下の例では「分」の値も含めて処理して一緒に出力しています。

例)Equationの設定

day = int(time/24)
hour = time-day*24 ! 時刻を小数点以下までHourで計算
hourOnly = int(hour) ! 正時に変換する[0~23hour]
min = (hour-hourOnly)*60 ! 「分」を計算

※注:「月」「日」はType21のCalendar month, Day of the monthをそのまま利用します。

【出力例】0-23hで適切に出力される
TIME  	Month 	Day    	Hour    Min(計算値)
----    -----   ----    ----    ----
23.00 	1.0 	1.0 	23.0 	0.0 
23.25 	1.0 	1.0 	23.0 	15.0 
23.50 	1.0 	1.0 	23.0 	30.0 
23.75 	1.0 	1.0 	23.0 	45.0 
24.00 	1.0 	1.0 	0.0 	0.0 
24.25 	1.0 	2.0 	0.0 	15.0 
24.50 	1.0 	2.0 	0.0 	30.0 
24.75 	1.0 	2.0 	0.0 	45.0 
25.00 	1.0 	2.0 	1.0 	0.0 

まとめ

タイムステップが1h未満の計算では、ちょっと工夫が要りますが、Equationで簡単に対策できました。(タイムステップが1hなら特に対策不要です)

参考までにサンプル(TimeValues_0.25h.tpf)をGithub/TRNSYS.JPに登録しておきました。

image

0 件のコメント:

コメントを投稿