Translate

2018/02/23

湿った衣服からの蒸散量はどれぐらい?(TRNSYS-USERSより)

TRNSYS-USERSに流れていた投稿からですが、質問者は観光船の窓の結露検討を行っているようです。ワーストケースシナリオとして、雨の日に濡れた衣服を着た乗船者を想定しています。で、こういったケースのモデルは無いか質問しています。

詳しくはこちら↓

http://lists.onebuilding.org/pipermail/trnsys-users-onebuilding.org/2018-February/029867.html

これに対してANNEX 14 sourcebookを参考にしているという返答がついています。

それがこちら→ http://www.iea-ebc.org/Data/publications/EBC_Annex_14_source_book.pdf

6.3.1 Vapour Production Rates in Rooms に湿った衣類からの蒸散量の他、シャワーや樹木からの蒸散量なども記載されています。こういうの日本にもあるんですかね?何かの時に役に立ちそうなので、備忘の意味でまとめてみました。

雨の日に犬の散歩をする人のイラスト

2018/02/22

加湿、除湿のコントロール(TRNSYS-USERSより)

TRNSYS-USERSでType56の加湿、除湿についての話題が流れていました。

[TRNSYS-users] Conditional Output

http://lists.onebuilding.org/pipermail/trnsys-users-onebuilding.org/2018-February/029874.html

外部の除湿器、加湿器を使って湿度が一定以上なら除湿、一定以下なら加湿としたいようです。(type56のDehumidification,Humidificationでもできますが、除湿器、加湿器そのものをシミュレーションしたいんでしょうね。下図はcooling typeの設定例)

image

メーリングリストでは対策としてThermostatの利用が提案されています。温度の場合と同じように、Thermostatで制御して、おらくVentilation typeで給気へ加湿するような処理なんでしょう。

Thermostatってそういう使い方もあるのか。でも温度と湿度じゃ単位違うからTRNSYSに怒られるかも?(コンポーネントによって単位系をしっかりチェックしているのでエラーになる可能性があります。まあ、そういう場合はEquationを経由すると回避できるんですけどね)

2018/02/01

太陽光発電システム用の日射量データベース

NEDOのサイトで新しい日射データベースが公開されています。と言っても昨年(2017年)の6月から公開されていたのに気付きました。

くわしくはこちら


アジア標準日射量データベース

image

アジア全域、地点が沢山用意されています。

image

地点を選ぶと日射のデータが閲覧&ダウンロードできる。

image

日射スペクトルデータなんてのも公開されています。こちらは国内限定のようです。

image

2018/01/29

TRNSYS,TRNBuildで地面の温度を扱う

基礎など地面に接している部位の設定

建物の地面側の温度って割と重要です。土間床になっている建物、例えば倉庫とかではかなり室温に影響します。地面側の温度が低ければ、室温は低くく、夏期は冷房負荷は少なくなりますが冬期は逆に暖房負荷が増えます。

TRNSYS/TRNBuildでは基礎や地下室など地面に接している壁は境界条件として扱います。

設定は至って簡単で、TRNBuildで壁のCategoryBOUNDARYを選択、boundary conditionで地面側の温度を指定するだけです。

例)C:\TRNSYS18\Examples\3D_Building

  1. 床面(基礎)のConstructionを選択
  2. CategoryをBOUNDARYへ変更
  3. boundary conditionで地面側の温度を指定

※"C:\TRNSYS18\Examples\3D_Building\6_Step_Add_Daylight\Building.tpf"より

image


地面側の温度

地面側の温度は何らかの方法で計算した値、もしくは固定値で指定します。計算する期間が短ければ固定で指定するのもありかと思いますが、おそらく季節変動などを見込んだ値にしたいケースがほとんどだと思います。こういう場合は、外部のコンポーネントを使って、Input経由で値を取り込みます。

図はExamples\3D_Buildingの例ですが、Type77(Simple Ground Temperature Model)で地面側の温度を計算、Type56へ引き渡しています。Type56側では上の図のようにTGROUNDで受け手取って、地面側の温度として処理しています。
image


地面側の温度を計算する


Type77の他、地面側の温度の計算方法はいくつか考えられます。TRNSYS-USERSで調べると "f factor" approach(日本語で何というのか不明)という方法が紹介されています。

上記で紹介したType77は年間の平均温度温度振幅だけで計算できるのでお手軽ですが、地下室などでは深さによっても温度が変わってくるはずです。すべてのケースにType77を当てはまるのはどうかという気がします。地面側の温度は建物や気象条件、土の種類、計算の目的なども含めて検討してみてください。

2018/1/30追記

後で気がついたのですが、Type77では地表面からの深さを複数指定できます。下の図は0.5m, 1.0m, 1.5mの3箇所の温度を計算した例です。地表面に近い基礎部分は浅い深さの温度、地下室の壁や床は深めで計算した値を指定して計算するのもありかもです。

image

一年分計算すると、深さに応じて変動したカーブが描かれます。

image


EA気象データの地中温度計算プログラム(GTWin)で予め計算、そのデータを使って計算するのも手かも知れません。(計算結果をファイルに書き出して、それをType9で読み込んで計算するとか)

その他、TRNSYSで地面側の温度の計算に利用できるコンポーネントを紹介しておきます。

・標準コンポーネント

Type 49: Slab on Grade

詳細はマニュアル「4.6.4. Type 49: Slab on Grade」を参照
参考:TRNSYSで地中温度

http://www.kankyoukei.com/2011/10/trnsys_20.html

・TESS Individual Component Libraries(オプション)

Type1276 "Be All End All" Ground Coupling

http://www.trnsys.com/tess-libraries/individual-components.php

※日本国内でのお取り扱いはこちらの窓口まで。


動作環境

以下の環境で動作を確認しています。
Windows10 Pro(64bit)
TRNSYS18.00.0017(64bit)

2018/01/24

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

実測データや気象庁などの観測データから計算用の気象データを作る際の注意点をまとめてみます。
TRNSYSには標準的な気象データを読み込んで出力する各種気象データリーダーが添付されています。これらを使って市販やオープンソースの気象データを扱うことができます。
実測データを使いたいケースではUser Formatに対応したコンポーネント、Type99も用意されています。このコンポーネントを使って実測データなど標準気象データ以外を扱うことができます。

Type99のデータフォーマット

Type99には専用フォーマットが用意されているので、それに合せて実測データを加工します。データフォーマットの構造です。<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カラム目が水平面直達日射として扱われます。
下のリストは<data>行の抜き出したものです。赤い部分が5カラム目、水平面直達日射の値です。(0が並んでいるのは開始時刻が夜間なので日射がないため)
<data>
  0   0.0   -2.1   .93        0   0
 80   0.0   -2.5   .95        0   0
340    .5   -2.9   .96        0   0
  0   0.0   -3.4   .96        0   0
 30    .5   -4.1   .95        0   0
 50   0.0   -4.9   .94        0   0
 40   1.0   -5.5   .93        0   0
 70   1.5   -5.6   .91        0   0
120    .5   -5.4   .91       22  28
データのキーワードは以下の通りです。
  • 水平面直達日射(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の指定は避けてください。
<add>, <mult>値への係数。必要に応じて指定します。(あまり使わないです)
<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間隔がお勧めです。

助走計算期間も忘れずに
建物(TRNBuild/Type56)を含むプロジェクトでは蓄熱などの関係から、ある程度の助走計算の期間を取る必要があります。(参考:TRNSYSの助走期間)建物の種類などにもよりますが、1週間から2週間程度は取る事が多いようです。
実測期間が十分長ければ問題ありません。はじめの1~2週間分のデータを助走して捨てれば済みます。
実測期間が1~2週間では、助走期間をどう扱うか検討が必要になります。例えば、実測データを再利用して助走期間に充てる(実測が7/1から1週間なら同じデータを6/24から1週間分として利用する。いいのかな、これ?)、近隣の気象データで代用するなど、何らかの対策が必要です。このあたりはコメントしにくいので考えてみてください。

動作環境

以下の環境で動作を確認しています。
Windows10 Pro(64bit)
TRNSYS18.00.0017(64bit)

2018/01/18

Dead Bandってなに?

TRNSYSには制御系として一連のコンポーネントが用意されています。

image

が、しかし制御の話って用語の意味がよくわからない。(制御とか完全に門外漢なんですよね)

設定項目にDead Band、とかTemperature Dead Bandって用語があちこちで使われているのですが、日本語だとなんというのか分からない。(Deadって単語が不気味だし)

これ日本語だと「不感帯」とか「調節感度」のことのようです。(アズワンさんのサイトの説明が簡潔で分かりやすい)

Type166 Simple Thermostat

このDead Bandがどのように働くのか、TRNSYS18から新しく追加されたコンポーネント、Type166を使って確認してみます。これ暖房設定温度、冷房設定温度の両方が設定できる便利なコンポーネントです。試しに用意したのは図のような、ごくごくシンプルなプロジェクト。

image

Parameters/Temperature dead bandはデフォルトの2.0℃Inputs/Heating setpoint,Cooling setpointもデフォルトで、それぞれ20℃,24℃のままにしてあります。

image

image

テスト用の気温の値が要るので、これはEquationで16℃~28℃範囲で変化するシンプルな値(サインカーブ)を生成して代用します。

ちなみに、こんな感じ。

angle=mod(time,360)
val = sin(angle)*6+22 !22℃±6℃のサインカーブ

この値を使ってType166の動きを見ると、図のよう温度によってCooling/Heating signalの値が変化して出力されます。

image

ちょっと分かりにくいのでCooling Signalの部分を拡大すると、Cooling Setpoint(24℃)を中心にTemperature Dead Band(2℃)なので、気温25℃でOn,23℃に下がるとOffの動きになります。(実際に計算する場合は、このOn/Offでエアコンを制御することになるので、室温はこの幅でハンチングすることになります)

image

ハンチングの例

図はType166で暖房の制御をしているサンプル("C:\TRNSYS18\Examples\HVACTemplates\System1.tpf")の室温の出力を取りだした例です。Heating SetpointとDead Bandの範囲でキレイに制御されている様子が分かります。

image

ほかにも制御系はあるんですが、単純なOn/Off制御はこんな感じで行う事ができます。

動作環境

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

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

2018/01/12

PythonでBuiファイルを操作する

年末年始にPythonをあれこれ試してみました。Type169で使えるようになったというのもあるんですが、他にも使い道がないかと思ったわけです。

とはいえ、そもそもPythonの文法もよく分かっていないので、勉強がてらちょっとしたプログラム書いてみました。

テーマはBuiファイル(.b18)の解析ライブラリ。解析ライブラリというと大げさですがBuiファイルを読み込んで、Layerの厚みを変更するぐらいのプログラムを想定して試作してみました。

Buiファイルはテキスト形式で構造がシンプルなのでプログラムからは比較的扱いやすい内容になっています。厚みを変更するのであれば、ひとまずLayer,Constructionのデータが扱えれば事足りそうです。

Pythonと格闘すること数日。なんかそれっぽく動くライブラリ(パッケージ)が出来上がりました。

Buiファイルの保存にも対応したので、Layerの厚みを更新して、保存、計算に利用するような使い方ができそうです。(大量に計算を回すときに使えそう)

#coding:utf-8
"""
Buiファイルを読み込んで、EXT_WALLの断熱材の厚みを変更して保存する
load a Bui file, update the thickness of the insulation material in EXT_WALL and save it.
"""
from b18 import BuiFile

if __name__ == '__main__':
    bui = BuiFile('Building.b18')
    # Search 'EXT_WALL'
    wall = next( (con for con in bui.constructions if con.name=='EXT_WALL') ,None)
    if(wall != None):
        wall.thickness[2] = 0.2 #Thickness for 'DAEMA'
        bui.save('copy_Building.b18')

実際に変更前後のBuiファイルを比べてみるとこんな感じ。ちゃんと厚みが変更されている。

処理前のファイル

CONSTRUCTION EXT_WALL
  LAYERS   = PUTZ  KST   DAEMA HOLZ 
  THICKNESS= 0.015 0.175 0.167 0.02 
  ABS-FRONT= 0.4   : ABS-BACK= 0.5 

処理後のファイル

CONSTRUCTION EXT_WALL
  LAYERS   = PUTZ KST DAEMA HOLZ
  THICKNESS= 0.015 0.175 0.2 0.02
  ABS-FRONT= 0.4   : ABS-BACK= 0.5 


これにTRNSYSの実行処理を加えたら壁の構成を変えながらパラメトリックスタディができそうです。

しかし、たまに新しい言語を覚えるのは楽しいですね。なんというか、新しい道具を手に入れると、やれることが広がる感じが好きです。

動作環境

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

Windows10 Pro(64bit)
Python:Anaconda 5.0.1(Python 3.6/64bit) https://www.anaconda.com/download/
TRNSYS18.00.0016(64bit)