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

概要

OpenModelicaでLBNLのBuildingsライブラリを使う。初心者なのでいろいろ教えて頂けるとありがたい。 SpaceCoolingのSystem2をやる。前回はhexとoutとsenTemHXOut廻りを見たので今回はcooCoiとsouWat廻りを見る。計算までやりたかったけれどそれは次回いろいろいじりながらやってみたい。のんびりやりすぎな気がしなくもないが続けることが大事なのだと思う。
使用バージョン
-OpenModelica1.12.0 →Modelica標準ライブラリ3.2.2
-Buildings 5.0.1

チュートリアル SpaceCoolingのSystem2

f:id:kinonotofu:20180606201749p:plain
今回は水配管廻りを見ていく。mWatで指定された流量の冷水を冷水ポンプsouWatで冷却コイルcooCoiに送り、還りの冷水はsinWatにつながっているというものである。

cooCoi以外の3つのモデルの使い分けは以下のようになっている。FixedBoundaryとMassFlowSource_Tの違いがやや分かりにくいような気がするので後で確認したい。
* Modelica.Blocks.Sources.Constant→定数を出力
* Buildings.Fluid.Sources.FixedBoundary→流体(Medium)の状態を出力
* Buildings.Fluid.Sources.MassFlowSource_T→流量と温度の設定をして流体(Medium)の状態を出力

cooCoiとsouWat廻りのコネクタは以下のとおり。

  connect(souWat.ports[1], cooCoi.port_a1);
  connect(cooCoi.port_b1, sinWat.ports[1]);
  connect(mWat_flow.y, souWat.m_flow_in);
  connect(senTemHXOut.port_b, cooCoi.port_a2);
  connect(cooCoi.port_b2, senTemSupAir.port_a);

コイルはport_a1とport_b1が水、port_a2とport_b2が空気のコネクタになっている。

mWat廻り

mWatの設定は以下のとおり。

Modelica.Blocks.Sources.Constant mWat_flow(k=mW_flow_nominal)

mAir_flowとおなじでBuildingsライブラリではなくModelica標準ライブラリを使って流量を定数で出力している。

sinWat廻り

sinWatの設定は以下のとおり。

Buildings.Fluid.Sources.FixedBoundary sinWat(nPorts=1, redeclare package Medium = MediumW)

出力用のコネクタの数の設定と流体の指定をしている。冷水の設定なので変数としてMediumW(=Buildings.Media.Water)を指定している。特に数値を設定しているわけでもないので、冷却コイルの出口がどこかへ値を渡す必要がありとりあえずつくっているものなのかもしれない。たぶんFixedBoundaryというよりGradientZeroみたいな条件になっているような気がする。
OMEdit上の設定は以下のとおり。
f:id:kinonotofu:20180712222203p:plain
設定できるのは、圧力と密度、温度と比エンタルピ、湿度?、その他汚染物質等、が設定できるようである。どうやら境界条件用のモデルなので相手からこのモデルに流れてくる流れ方向のときは圧力を除いて影響がないらしい。流出境界になるときは圧力境界条件としては使えるけれど、出口温度固定などをしたいならこのモデルではダメなんだと思われる。

souWat廻り

souWatの設定は以下のとおり。

Buildings.Fluid.Sources.MassFlowSource_T souWat(
    nPorts=1,
    redeclare package Medium = MediumW,
    use_m_flow_in=true,
    T=TWSup_nominal)

出力用のコネクタの数、流体、流量コネクタ使用の有無、出力する温度を指定している。use_m_flow_in=trueとすることでmWatから流量を受け取ることができる。nominalとついてある値を入力するときはだいたい計算を行うときのオーダーがどの程度なのかを数値計算上の理由により指定しているもののような気がしていたのだが、ここでは出力する温度を指定している。まぁモデル側ではただのTなので深く考えるところではないかもしれない。
OMEdit上の設定は以下のとおり。
f:id:kinonotofu:20180712224228p:plain FixedBoundaryとの違いはいくつかあるのだけれど、まず圧力と密度ではなく流量を扱っている点とこちらは比エンタルピが使えない点がある。それから、FixedBoundaryはその名前のとおり定数を指定しなければならなかったけれど、MassFlowSource_Tはinputのコネクタから値を受け取って出力することができ、コネクタのオンオフの設定がある。流出境界の扱いについてはこちらは流量のみ有効になるようだ。
本来ポンプとしてもモデルはファンで使ったものと同じものを使うのだけれど、これでも流量を指定できるのでポンプのように使うこともできるということだろう。

cooCoi廻り

cooCoiの設定は以下のとおり。

 Buildings.Fluid.HeatExchangers.WetCoilCounterFlow cooCoi(redeclare package Medium1 =
        MediumW, redeclare package Medium2 = MediumA,
    m1_flow_nominal=mW_flow_nominal,
    m2_flow_nominal=mA_flow_nominal,
    dp1_nominal=6000,
    dp2_nominal=200,
    UA_nominal=-QCoiC_flow_nominal/
        Buildings.Fluid.HeatExchangers.BaseClasses.lmtd(
        T_a1=THeaRecLvg,
        T_b1=TASup_nominal,
        T_a2=TWSup_nominal,
        T_b2=TWRet_nominal),
    show_T=true,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)

コイルはモデル名から向流型熱交換器で潜熱負荷も処理するモデルだろうと思われる。2つの流体、流量、差圧、熱コンダクタンスと温度表示、計算モデルの種類の設定を行っている。熱コンダクタンスはコイルの処理熱量を対数平均温度差で割って逆算してもとめているので熱コンダクタンス×対数平均温度差で処理熱量を求めるモデルであることが想定される。
OMEdit上の設定は以下のとおり。コイルも熱交換器の一種なので空気の熱交換器で見たものと同じパラメータが多い。
f:id:kinonotofu:20180712225453p:plain
↑2つの流体、流量、差圧、熱コンダクタンスの指定に加えて、空気と水の対流熱伝達率の比、空気と水とコイルそれぞれの時定数を指定できる。あとnEleはコイルの離散化時の分割数らしく、コイルをいくつかの部分に区切って計算しているらしい。コイルは解析的に長さで積分して出口温度出すやつじゃないのだろうか。コイルのパラメータを指定してコイルの熱コンダクタンスを求めたりはできないらしい。
f:id:kinonotofu:20180712230027p:plain
↑流れの逆流に関する指定。熱交換器で見たのと同じ。
f:id:kinonotofu:20180712230011p:plain
↑流量0近傍の扱い。熱交換器で見たのと同じだがホモトピー法は使っていないようだ。 f:id:kinonotofu:20180712225956p:plain
↑流れの抵抗に関する指定。熱交換器で見たのと同じ。
f:id:kinonotofu:20180712225941p:plain
↑エネルギーバランスの式の設定。ファンとか室で見たのと同じもの。 f:id:kinonotofu:20180712225926p:plain
↑水と空気それぞれの対流熱伝達率が流量や温度に依存するかどうかの設定。デフォルトでは流量のみに依存となっている。ラジエーターみたいなものだと空気側は温度に依存とかするのかもしれない。
f:id:kinonotofu:20180712225915p:plain
↑拡散に近似する熱コンダクタンス?の設定。とりあえず流量0近傍の扱いなので計算安定化に寄与するのかもしれないがExperimentalの項目なので気にしなくてもいいだろう。

おわりに

ようやくSystem2のモデルの設定を全部確認できた。次回は計算して気になってたところとかの確認をしたい。このライブラリのドキュメントはあまり読み込まず適当にやっていたけれど、もうちょっとちゃんとしないとなぁと思ってきたので翻訳をはじめてみた。HPのほうのユーザーガイド。どうでもいいところから訳し始めている感が強いが短いところからやっていきたい性分なのだと思う。
github.com
英語は得意でもないし、意味はなんとなくわかっても日本語にするのが難しかったりして翻訳なんて無駄な作業なんじゃないかと思うのだけれど、git使ってみたかったというのもあるしよいのだ。まだ途中だけれど終わったらライブラリ内のドキュメントを訳していこうかと思う。ただドキュメントに知りたいこと全部書いてるわけでもないんだよなぁ。。。