TRNSYSで実測データでシミュレーションする

2020/12/23更新 経度の±を逆に表記していたため修正
2020/06/04更新 サンプルファイルの記載を追加

実測データや気象庁などの観測データから計算用の気象データを作る際の注意点をまとめます。

TRNSYSには標準的な気象データを読み込んで出力する各種気象データリーダーが用意されています。通常は、これらを使って市販やオープンソースの気象データを扱います。

実測データを使いたいケースでは、User Formatフォルダに対応したコンポーネント、Type99が用意されています。このコンポーネントを使って実測データなど標準気象データ以外の形式のファイルを扱うことができます。

User Format Type99
User Format Type99

Type99のデータフォーマット

Type99専用フォーマットが用意されているので、それに合せて実測データを加工します。以下、データフォーマットの構造を紹介します。

データはテキスト形式のファイルです。

サンプル(”C:\TRNSYS18\Examples\Data Files\Type99-UserFormat.99″)が用意されているので、メモ帳などのエディタで開いてみると参考になります。

以下はサンプルからの抜粋です。

<userdefined>
<longitude>	-9.9       ! east of greenwich: negative
<latitude>	49.8       ! Wuerzburg, Germany 
<gmt>       1		   ! time shift from GMT, east: positive (hours) - if solar time-> write "solar"
<interval>	1		   ! Data file time interval between consecutive lines
<firsttime>	1          ! Time corresponding to first data line (hours)
<var>	IBEAM_H	<col>	5  <interp> 0  <add>  0  <mult>  1	 <samp>  -1	!...to get radiation in W/mイ
<var>	IBEAM_N	<col>	0  <interp> 0  <add>  0  <mult>  1	 <samp>   0	!...to get radiation in W/mイ
<var>	IDIFF_H	<col>	6  <interp> 0  <add>  0  <mult>  1	 <samp>  -1	!...to get radiation in W/mイ
<var>	IGLOB_H	<col>	0  <interp> 0  <add>  0  <mult>  1	 <samp>   0	!...to get radiation in W/mイ
<var>	TAMB	<col>	3  <interp> 2  <add>  0  <mult>  1	 <samp>   0	!...to get ーC
<var>	RHUM	<col>	4  <interp> 1  <add>  0  <mult>  100 <samp>   0	!...to get relative humidity in %
<var>	WSPEED	<col>	2  <interp> 1  <add>  0  <mult>  1   <samp>   0	!...to get wind speed in m/s
<var>	WDIR	<col>	1  <interp> 1  <add>  0  <mult>  1	 <samp>   0	!...to get wind direction in degree
<var>   udef1	<col>   0  <interp> 0  <add>  0  <mult>  1	 <samp>   0	!...to get ... in ...
<var>   udef2	<col>	0  <interp> 1  <add>  0  <mult>  1	 <samp>   0	!...to get ... in ...
<var>   udef3	<col>	0  <interp> 1  <add>  0  <mult>  1	 <samp>   0	!...to get ... in ...
<var>   udef4	<col>   0  <interp> 0  <add>  0  <mult>  1	 <samp>   0	!...to get ... in ...
<data>
270   2.6     .7   .93        0   0
330   1.5     .6   .94        0   0
270   2.6     .7   .94        0   0
290   1.0     .8   .93        0   0
270   1.5     .8   .91        0   0

<userdefined>につづく20行ほどはヘッダーで、実測値点の緯度経度やタイムゾーン、実測値の種類を定義しています。それにつづいて実測データが<data>行以降に続きます。

緯度経度とタイムゾーン

実測値点の緯度(latitude)経度(longitude)とタイムゾーンを指定します。緯度は北半球(+)、南半球(-)、経度はグリニッジを基準に東(-)、西(+)で指定します。
タイムゾーンはグリニッジ標準時との時差を指定します。日本は+9です。

以下は東京の例です。

<longitude> -139.76 
<latitude>  35.69 
<gmt>       9 

インターバルと開始時刻

実測データのインターバル(interval)は、実測の間隔に合わせてHourで指定します。例えば15分間隔であれば0.25を指定します。Type99では標準は1hを前提にしているため短い間隔を指定するとエラーの原因になることがあります。とくに理由がない場合は1h間隔のデータがお勧めです。

開始時刻(firsttime)は1/1 1:00から始まる通し時間で指定します。例えば、2/1 1:00から始まる実測データであれば745を指定します。

インターバル1h,開始時刻2/1 1:00の例

<interval>  1
<firsttime> 745

データの指定

<var>で始まる行ではデータの種類とカラム位置を指定します。

リストはサンプルデータ(”C:\TRNSYS18\Examples\Data Files\Type99-UserFormat.99″)の抜粋です。この例では水平面直達日射、水平面天空日射、外気温、相対湿度、風向、風速のデータを定義しています。

<var> IBEAM_H <col> 5 <interp> 0 <add> 0 <mult> 1 <samp> 1
<var> IBEAM_N <col> 0 <interp> 0 <add> 0 <mult> 1 <samp> 0
<var> IDIFF_H <col> 6 <interp> 0 <add> 0 <mult> 1 <samp> -1
<var> IGLOB_H <col> 0 <interp> 0 <add> 0 <mult> 1 <samp> 0
<var> TAMB    <col> 3 <interp> 2 <add> 0 <mult> 1 <samp> 0
<var> RHUM    <col> 4 <interp> 1 <add> 0 <mult> 100<samp> 0
<var> WSPEED  <col> 2 <interp> 1 <add> 0 <mult> 1 <samp> 0
<var> WDIR    <col> 1 <interp> 1 <add> 0 <mult> 1 <samp> 0

データの指定は値のキーワードと、<data>行以降のカラム番号の組み合わせで指定します。

この例では最初の行のキーワード IBEAM_H水平面直達日射、カラム位置は<col>5 です。これでデータ部分の5カラム目が水平面直達日射という意味になります。

データの定義としては図のような対応関係になります。5カラム目に0が並んでいるのは開始時刻が夜間なのと、たまたま直達日射がないため。6カラム目の水平面天空日射(IDIFF_H)は値があるので、ひどい曇天か雨天で直達日射がないようです。

キーワードは以下の通りです。

  • 水平面直達日射(IBEAM_H)
  • 法線面直達日射(IBEAM_N)
  • 水平面天空日射(IDIFF_H)
  • 水平面全天日射(IGLOB_H)
  • 外気温(TAMB)
  • 相対湿度(RHUM)
  • 風速(WSPEED)
  • 風向(WDIR)

日射量についてはすべてを用意する必要はありませんが、直散分離の関係で、最低限必要な項目が決まっています。以下のいずれかの組み合わせで指定が必要です。

  • 水平面直達日射(Ib)、水平面天空日射(Id)
  • 水平面全天日射(I)、水平面天空日射(Id)
  • 水平面全天日射(I)、法線面直達日射(Ibn)
  • 水平面全天日射(I)、外気温(Tamb)、相対湿度(RH)

<interp>は補完処理の指定です。1h間隔のデータを使って、タイムステップ0.25hで計算するようなケースで値の補完処理が行われます。0:補完なし、1:線形補完、2:は5点スプライン補完です。

スプライン補完では、実際の値よりも大きな値や小さな値に補完されることがあります。このため相対湿度へ指定すると、計算上100%を超えるケースがあります。湿度については<interp>2の指定は避けてください。

日射量に関しては、日の出、日没を考慮する補間処理が行われるため、<interp>を指定しても無視されます。

<add>, <mult>値への係数。必要に応じて指定します。(あまり使わないです)

2022/08/03 追記 この記事で使用しているデータでは相対湿度(RHUM)が小数表記のため、同じ行で<mult>100を指定して%へ換算しています。相対湿度の値がすでに%であれば<mult>1としてください。

<samp>データのサンプリング範囲の補正値。日射データなど計測した範囲の指定です。具体的には1h間隔で日射量を計測した場合、その値がある時刻の直前のタイムステップ(-1)、前後1/2のタイムステップ(0)、次のタイムステップ(1)分なのかを指定します。ケースバイケースですが実測データでは直前の1ステップ分になっていることが多いようです。

ちなみにEA気象データについては前後1/2の範囲(0)になっていますので、もしEA気象データを利用される場合は注意してください。気温、湿度などは通常は0で指定してください。

その他、詳しくはマニュアルの「4.12.2. Type 99: User-Defined File Format Data Reader / Processor」参照

データ作成の注意点

欠測データの補正

割とありがちですが、欠測でデータがない、もしくはデフォルト値が含まれていることがあります。Type65でグラフを描くと、明らかに変な値が見つかることがあります。こういった場合はなんらかの方法で補正を行ってください。

データ数は24hの倍数

<data>以降の行は24hの倍数必要です。これは仕様なので、実測データの最後が半日分で終わっているような場合は、その日のデータは捨てて24hの倍数になるように調整してください。

<interval>は割り切れる値がおすすめ

計算上はHourで扱うため、割り切れない値(例、5分間隔=0.08333333)ではエラーの原因になることがあります。(おそらく計算上の誤差が積み重なってエラーになる)

3分(0.05h)、6分(0.1h)などHourに換算して割り切れる値がお勧めです。
上述したように一般に気象データは1hour間隔のデータが多いため、特に理由がなければ1h間隔がお勧めです。

動作環境

以下の環境で動作を確認しています。

Windows10 Pro(64bit)
TRNSYS18.00.0017(64bit)

Pocket

4件のピンバック

コメントする

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