OpenModelicaのBuildingsライブラリを学ぶ_その4

概要

OpenModelicaでLBNLのBuildingsライブラリを使う。初心者なのでいろいろ教えて頂けるとありがたい。 前回でチュートリアル SpaceCoolingのSystem1はとりあえず終わったのでSystem2を見ていく。 今回はSystem2の全体像と気象データの読み込み部分だけ。
使用バージョン
-OpenModelica1.12.0 →たぶんModelica標準ライブラリ3.2.2
-Buildings 5.0.1

チュートリアル SpaceCoolingのSystem2

f:id:kinonotofu:20180606201749p:plain
気象データを読み込む部分と室を冷房する部分が増えてコネクタのつながりが少しややこしくなった。System1との違いは以下の通り
* TOutの温度Tを気象データのテキストを読み込むモデルweaDatとつなげて与えるようになった
* volでnPorts=2の設定がでてきた。たぶん給排気用。空調空気を給気し、排気は熱交換器で熱回収を行う。
* 熱交換器hexと冷却コイルcooCoiとファンfanなどのモデルを使って室を空調(外調?)している。
* 冷却コイル用の冷水廻りのモデルも色々ある。
* Mediaとして室内を満たす空気Buildings.Media.Air に加えて冷却コイル用の水Buildings.Media.Waterがでてきた。
* 制御用のモデルも色々ある。

全部一気に見るのが大変そうなので少しずつ見ていく。 System2に登場するモデルは以下の通り。

Buildings.Fluid.Movers.FlowControlled_m_flow fan;
Buildings.Fluid.HeatExchangers.ConstantEffectiveness hex;
Buildings.Fluid.HeatExchangers.WetCoilCounterFlow cooCoi;
Buildings.Fluid.Sources.Outside out;
Buildings.Fluid.Sources.MassFlowSource_T souWat;
Buildings.Fluid.Sources.FixedBoundary sinWat;
BoundaryConditions.WeatherData.ReaderTMY3 weaDat;
BoundaryConditions.WeatherData.Bus weaBus;
Modelica.Blocks.Sources.Constant mAir_flow;
Modelica.Blocks.Sources.Constant mWat_flow;
Buildings.Fluid.Sensors.TemperatureTwoPort senTemHXOut;
Buildings.Fluid.Sensors.TemperatureTwoPort senTemSupAir;

気象データ関係のところでBuildingsを省略しているのは長いからだろうか。本来Buildings.BoundaryConditions.~となるはずである。他のモデルも短く宣言してもいいのかもしれない。

まずはBoundaryConditionsとなるweaDat(ReaderTMY3)とweaBus(Bus)をみてみる。各モデルのコネクタでのつながりは以下のとおり。weaDatはweaBusというコネクタがあり、weaBusはTDryBulというコネクタがある上にweaBus自身もコネクタとなっている。不思議である。

connect(weaDat.weaBus, out.weaBus);
connect(weaDat.weaBus, weaBus);
connect(weaBus.TDryBul, TOut.T);

weaBusのコードは以下のとおり。

within Buildings.BoundaryConditions.WeatherData;
expandable connector Bus "Data bus that stores weather data"
  extends Modelica.Icons.SignalBus;
  annotation (省略);
end Bus;

expandable connectorクラスであるがアイコン以外特に何も書いていない。普通のコネクタは何かしらの変数を持ってその変数を通して値を受け渡しするはずだがexpandableがつくとコネクタ側で変数を持たずとも受け取ったデータを他のモデルに受け渡すことが出来るのかもしれない。

とりあえず気象データの使い方としてはweaDatからweaBusやout.weaBusで一式丸ごとうけとって、そこからほしい物を取り出すという使い方をするものなのだろう。ところで今までチュートリアルのモデルを眺めているだけで気づかなかったのだが、自分でモデルを作ってweaDatからBusにコネクタをつないでみると繋げる変数の一覧が出てきた。これでモデルがどんなコネクタをもっているのかがわかるのだがweaDatのコネクタの数がちょっと多すぎる。サイドバーを見れば変数の多さがわかると思う。繋げる変数は黒色、無効なものは灰色の文字になっている。
f:id:kinonotofu:20180606203933p:plain
ちなみにBusとThermalConductorをつなぐときにはweaBusの下のNew Variableを選択してweaBusの中の変数を手打ちでTDryBulと打って指定する必要がある。もっと良い方法はないものか。
f:id:kinonotofu:20180606204850p:plain

weaDatの設定は以下のようになっている。

BoundaryConditions.WeatherData.ReaderTMY3 weaDat(
    pAtmSou=Buildings.BoundaryConditions.Types.DataSource.Parameter,
    TDryBulSou=Buildings.BoundaryConditions.Types.DataSource.Parameter,
    TDryBul=TOut_nominal,
    filNam="modelica://Buildings/Resources/weatherdata/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.mos")
    "Weather data reader");

pAtmSouとTDryBulSouがBuildings.BoundaryConditions.Types.DataSource.Parameterとなっている。.Parameter以外に .Fileや.Inputがありそれぞれ、定数、ファイルからの入力、コネクタからの入力?となっているようである。特に指定しなければファイルからの入力がデフォルトになっている。
ファイルから読み込むときはfilNamで指定したmosファイル(気象データファイル)を読み込んでいる。 weaDatはややこしいのでOMEdit上の設定画面だけ確認してコードは割愛する。 f:id:kinonotofu:20180606205432p:plain
f:id:kinonotofu:20180606205445p:plain
湿球温度の計算はループが必要なので計算時間への影響が大きいのか計算のオンオフがある。あとは天空への放射の計算の際に天空温度を用いるか長波放射量とするかの切り替えもある。それ以外はそれぞれ.Parameterや.Fileや.Inputの選択とParameterのときの値の指定をするだけである。さらにParameterのときでもpAtmのように値を指定しなければデフォルト値が使われるようだ。

気象データファイルとして読み込んでいるmosファイルは自分でフォーマットを見て用意してもいいのだがEnergyPlusの気象データ(.epw)からライブラリ付属のjavaのプログラムにより変換して作成することが出来る。これで世界中の気象データを使うことが出来る。
まずはWeather Data | EnergyPlusから目的の地点の気象データを拾ってきて (OpenModelicaインストールフォルダ)\lib\omlibrary\Buildings 5.0.1\Resources\weatherdataにepwデータをおく。
たとえばJPN_Tokyo.Hyakuri.477150_IWEC.epwを.mosデータにする場合は以下のようにする。

cd (OpenModelicaインストールフォルダ)\lib\omlibrary\Buildings 5.0.1\Resources\weatherdata
java -jar ../bin/ConvertWeatherData.jar JPN_Tokyo.Hyakuri.477150_IWEC.epw

これでJPN_Tokyo.Hyakuri.477150_IWEC.mosができている。中身は以下の通り。 ヘッダーで記載した#C1から#C30までのデータがタブ区切りでならんでいる。項目が多く、すべてのデータがそろっているわけではない。

#1
double tab1(8760,30)
#LOCATION,TOKYO HYAKURI,-,JPN,IWEC Data,477150,36.18,140.42,9.0,35.0
#DESIGN CONDITIONS,1,Climate Design Data 2009 ASHRAE Handbook,,Heating,1,-6.9,-5.1,-12.8,1.2,1,-11.1,1.5,0.6,10.2,6.1,8.7,6.6,1.1,0,Cooling,8,7.7,32.1,26,30.9,25.8,29.2,24.8,26.8,30.6,26.1,29.6,25.5,28.7,4.8,210,26,21.4,29.3,25.1,20.3,28.3,24.2,19.2,27.1,84.8,30.6,81.4,29.6,78.4,28.6,1007,Extremes,9.7,8.3,7.3,32.8,-9.5,34.1,1.1,1.5,-10.3,35.2,-11,36,-11.6,36.9,-12.4,38
#TYPICAL/EXTREME PERIODS,6,Summer - Week Nearest Max Temperature For Period,Extreme,8/ 5,8/11,Summer - Week Nearest Average Temperature For Period,Typical,8/12,8/18,Winter - Week Nearest Min Temperature For Period,Extreme,1/22,1/28,Winter - Week Nearest Average Temperature For Period,Typical,2/12,2/18,Autumn - Week Nearest Average Temperature For Period,Typical,11/19,11/25,Spring - Week Nearest Average Temperature For Period,Typical,5/13,5/19
#GROUND TEMPERATURES,3,.5,,,,3.79,2.88,4.49,7.01,13.59,18.68,22.10,23.15,21.37,17.42,12.15,7.26,2,,,,7.13,5.51,5.84,7.18,11.58,15.57,18.75,20.46,20.10,17.86,14.23,10.38,4,,,,9.89,8.23,7.87,8.37,10.86,13.55,16.01,17.72,18.12,17.15,15.02,12.41
#HOLIDAYS/DAYLIGHT SAVINGS,No,0,0,0
#COMMENTS 1,"IWEC- WMO#477150 - Asia -- Original Source Data (c) 2001 American Society of Heating, Refrigerating and Air-Conditioning Engineers (ASHRAE), Inc., Atlanta, GA, USA.  www.ashrae.org  All rights reserved as noted in the License Agreement and Additional Conditions. DISCLAIMER OF WARRANTIES: The data is provided 'as is' without warranty of any kind, either expressed or implied. The entire risk as to the quality and performance of the data is with you. In no event will ASHRAE or its contractors be liable to you for any damages, including without limitation any lost profits, lost savings, or other incidental or consequential damages arising out of the use or inability to use this data."
#COMMENTS 2, -- Ground temps produced with a standard soil diffusivity of 2.3225760E-03 {m**2/day}
#DATA PERIODS,1,1,Data,Sunday, 1/ 1,12/31
#C1 Time in seconds. Beginning of a year is 0s.
#C2 Dry bulb temperature in Celsius at indicated time
#C3 Dew point temperature in Celsius at indicated time
#C4 Relative humidity in percent at indicated time
#C5 Atmospheric station pressure in Pa at indicated time
#C6 Extraterrestrial horizontal radiation in Wh/m2
#C7 Extraterrestrial direct normal radiation in Wh/m2
#C8 Horizontal infrared radiation intensity in Wh/m2
#C9 Global horizontal radiation in Wh/m2
#C10 Direct normal radiation in Wh/m2
#C11 Diffuse horizontal radiation in Wh/m2
#C12 Averaged global horizontal illuminance in lux during minutes preceding the indicated time
#C13 Direct normal illuminance in lux during minutes preceding the indicated time
#C14 Diffuse horizontal illuminance in lux  during minutes preceding the indicated time
#C15 Zenith luminance in Cd/m2 during minutes preceding the indicated time
#C16 Wind direction at indicated time. N=0, E=90, S=180, W=270
#C17 Wind speed in m/s at indicated time
#C18 Total sky cover at indicated time
#C19 Opaque sky cover at indicated time
#C20 Visibility in km at indicated time
#C21 Ceiling height in m
#C22 Present weather observation
#C23 Present weather codes
#C24 Precipitable water in mm
#C25 Aerosol optical depth
#C26 Snow depth in cm
#C27 Days since last snowfall
#C28 Albedo
#C29 Liquid precipitation depth in mm at indicated time
#C30 Liquid precipitation quantity
0.0 -1.1    -5.5    69  100905  0   1415    254 0   0   0   0   0   0   0   0   0.0 9   5   11.2    1500    9   999999999   0   0.1740  0   88  0.000   0.0 0.0 
7200.0  -1.1    -5.5    69  100905  0   1415    254 0   0   0   0   0   0   0   0   0.0 9   5   11.2    1500    9   999999999   0   0.1740  0   88  0.000   0.0 0.0 
10800.0 -1.9    -5.9    71  100905  0   1415    251 0   0   0   0   0   0   0   0   0.0 7   5   11.2    1500    9   999999999   0   0.1740  0   88  0.000   0.0 0.0 
(以下気象データが続く、省略)

なぜか1時間後のデータ(3600のデータ)がなかった。と思ったら7200から開始のようだ。たぶんアメリカはデータの開始が0時始まりで日本は1時始まりになっているせいだと思う。
System2で読み込むUSA_IL_Chicago-OHare.Intl.AP.725300_TMY3.mosも3600から開始でいずれにせよ0のときのデータは次のデータと同じ値になっているので0時点のデータは初期値として何かしらいれておくということだろうか。だとすると日本のデータは3600に0と同じようにデータをいれておいて計算を0ではなく3600から開始するようにせねばならないように思うのだが、値がないというのはいかがなものだろうか。 手動で調整する必要があるのかもしれない。

前回のMixingVolumeもそうだったが今回のReaderTMY3も全部理解するのは大変そうだった。ちゃんと読み込めばたいしたことないのかもしれないけれどまだ理解が追いついていない。とりあえずの気象データの使い方は分かった(気がする)ので次はvolのポートを増やしてファンで機械換気をしているところを見て行きたい。