Translate

2012/01/14

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までの計算結果です。

ちゃんと断熱材の厚みの変更による傾向が出てますねー。
という事で無事に計算終了です。






0 件のコメント:

コメントを投稿