PowerShellでBuiファイルを書き換えてTRNSYSを実行する
前回、前々回とTRNSYSで条件を変えた計算を行う方法を書きました。前回までの2回は方法が違うだけで、やっていることはDckファイルの編集と実行です。これだけでも計算の自由度が随分と上がります。
ところで計算方法はともかく建物自体のパラメータを変更して何度も計算したい時ってありますよね?
例えば開口部の面積による影響を見たいとか、材料の厚みを変えた影響を見たいとかです。この手のパラメータはDckファイルには含まれていません。こういう場合Type56/Buiファイルの変更が必要になります。こうなると前回までの方法だと、ちょっと対応しにくくなります。
という事で、材料のパターンを変えて計算を実行する方法を試してみました。
処理内容は「外壁の断熱材の厚みを変えて計算」としてみました。
建物は前回まで使っていたのと同じで、Simulation Stuidoが生成したモデルをします。
やりかたは基本的には前々回と同じでPowerShellを使って処理しますが、今回はbuiファイルを編集します。
Buiファイルの中身を調べる
まずは、Buiファイル(*.b17)をメモ帳などで開いて、材料の設定を確認します。Simulation Studioが生成するモデルだと、外壁は”OUTWALL”という名前になっているので、これを手掛かりに探していきます。
以下、Buiファイルの抜粋です。
*————————————————-
* W a l l s
*————————————————-
WALL GROUND
LAYERS = FLOOR STONE SILENCE CONCRETE INSUL
THICKNESS= 0.005 0.06 0.04 0.24 0.08
ABS-FRONT= 0.8 : ABS-BACK= 0.4
EPS-FRONT= 0.9 : EPS-BACK= 0.9
HFRONT = 11 : HBACK= 999
WALL OUTWALL ← これが外壁になるWall Typeの定義の始まり
LAYERS = BRICK INSUL PLASTER ← ここが材料の並び
THICKNESS= 0.24 0.1 0.015 ← でもって、これが材料の厚みの定義
ABS-FRONT= 0.75 : ABS-BACK= 0.3
EPS-FRONT= 0.9 : EPS-BACK= 0.9
HFRONT = 11 : HBACK= 64
WALL INTWALL
LAYERS = GYPSUM INSUL GYPSUM
THICKNESS= 0.012 0.05 0.012
ABS-FRONT= 0.6 : ABS-BACK= 0.6
EPS-FRONT= 0.9 : EPS-BACK= 0.9
HFRONT = 11 : HBACK= 11
スクリプトを書いてみる
このモデルだと外壁は3種類の材料で構成されています。真ん中に断熱材っぽい材料があるので、この厚みを変えてみます。
単純な話、この行を差し替えてTRNSYSの計算を繰り返せばOKです。
100mm(0.1m)で設定されているので、0.1から0.5まで0.1づつ厚みを変えて計算してみます。
で、書いてみたのが以下のスクリプト。
※注意
以下のスクリプトでは” THICKNESS= 0.24 0.1 0.015″と書かれた行を単純に置き換えています。もし、同じファイルの中に同じ文字列が複数あると、すべて置き換えてしまいます。
この例で使ったBuiファイルでは、この文字列が一カ所しかないので問題ありませんが、同じような処理をされる場合には、この点注意してください。
【サンプルファイルのダウンロード(Google Docsからダウンロード)】
スクリプト:WallThickness.ps1
# TRNSYSを複数回実行する
# Buiファイルを編集して、断熱材の厚みを変えて計算を繰り返す
# ファイル名
$dckfile = "SingleZoneProject.dck" # 計算実行用のDckファイル
$buifile = "SingleZone.b17" # 内容を変更するBuiファイルの名前
$orgBuifile = "SingleZone.b17.org" # オリジナルのbuiファイルの名前(予めコピーしておいてください)
# カレントフォルダをスクリプトと同じフォルダへ変更
Set-Location (Split-Path $MyInvocation.MyCommand.Path -parent)
# 断熱材の厚みを0.1mから0.5mまで0.1m刻みで計算する
for($i=1;$i -le 5; $i++)
{
# 断熱材の厚みを計算する
$thickness = " THICKNESS= 0.24 " + ($i*0.1).ToString("0.#") + " 0.015"
# オリジナルのBuiファイルを読み込んで断熱材の厚みの"行"を置換する
$bui = $(Get-Content $orgBuifile) -replace " THICKNESS= 0.24 0.1 0.015",$thickness
# 計算用にBuiファイルを上書きで書き出す
$bui | Out-File -encoding default -filepath $buifile
# 計算実行
# TRNSYSの起動処理(最後の"| out-null"はプログラム終了待ちをするためのおまじない)
C:\Trnsys17\Exe\TRNExe.exe $dckfile /n | out-null
# 計算結果のファイルが上書きされないようにコピーしておく
$csvname = "ZoneTemp_THICKNESS_" + ($i*100).ToString("0#mm")+".csv"
Copy-Item ZoneTemp.csv $csvname
}
計算結果を確かめると。。。
計算結果をExcelで加工してグラフにしてみました。以下は2/1の0:00~24:00までの計算結果です。
ちゃんと断熱材の厚みの変更による傾向が出てますねー。
という事で無事に計算終了です。