SlideShare a Scribd company logo
OpenModelica超初級チュートリアル
7.5 番外編 stream変数
1
“OpenModelica tutorial for beginner 7.5 extra edition stream variable”
by UedaShigenori is licensed under CC BY 2.0
注意事項
・ 本チュートリアルは以下の内容が理解できていることを前提と
しております。
「OpenModelica超初級チュートリアル1.解析モデルの作成と実行」
「OpenModelica超初級チュートリアル2.コーディング」
「OpenModelica超初級チュートリアル3.モデルのカスタマイズ1」
「OpenModelica超初級チュートリアル4.モデルのカスタマイズ2」
「OpenModelica超初級チュートリアル5.モデルのカスタマイズ3」
「OpenModelica超初級チュートリアル7.プラントモデルの作り方」
・ OpenModelica1.14.1 (64bit – windows版)を利用して
本チュートリアルは作成されています。
2
3
目次
1. 概要
2. stream変数が表す物理現象と計算式
3. ゼロ点の回避
4. 双方向流れ(逆流)への対応
5. 分岐・合流
6. 実装時のルールとオペレータ
1. 実装の概要とConnectorクラスの実装例
2. actualStreamオペレータの実装例
3. inStreamオペレータの実装例
4. 熱の流入出がある場合
4
目次
1. 概要
2. stream変数が表す物理現象と計算式
3. ゼロ点の回避
4. 双方向流れ(逆流)への対応
5. 分岐・合流
6. 実装時のルールとオペレータ
1. 実装の概要とConnectorクラスの実装例
2. actualStreamオペレータの実装例
3. inStreamオペレータの実装例
4. 熱の流入出がある場合
5
流体の移動現象を表す物理量
流体の移動現象を表す場合、圧力、質量流量、比エンタルピー*1や化学成分の質量分率を取り扱うことがあります。
この中で比エンタルピーや質量分率は流れに応じて輸送される単位質量や単位体積当たりの物理量です。
(これらを便宜的に輸送される比状態量と呼ぶことにします)
輸送される比状態量をstream変数で表すと計算が安定しコードもシンプルになります。
変数の種類 表現する対象 例となる物理量 Modelicaコード例 単位
across変数 ポテンシャル 圧力 Real p; N/m2
flow変数 フラックス 質量流量 flow Real m; kg/s
stream変数 輸送される比状態量 比エンタルピー
質量分率
stream Real h;
stream Real Xi;
J/kg
kg/kg
流体の移動現象を表す為にconnectorクラス内で宣言する物理量の例
*1 単位質量当たりのエンタルピーH*2
*2 熱エネルギーを表す内部エネルギーと圧力pと体積Vに関するエネルギーを表すpVの和(H=U+pV)
流体の熱輸送現象を計算する際にエンタルピーがよく使用される
6
stream変数に関する計算式
p1 = p2 =p3
across変数 p
flow変数 m
m1 + m2+ m3 =0
stream変数 h
ブロック3のポートのh3を例示 (j = 1,2)
across変数、flow変数はポート接続時に自動的に方程式が作成されます。
しかしstream変数は方程式は自動的に作成されません。そのためstream変数を使ってモデルを作成する場合、
計算したい対象に合わせてオペレータを選択する必要があります。
1
2
p1
m1
h1
p2
m2
h2
p3
m3
h3 hc
3
下付き添え字が数字の時、各ブロックのポートの値
本資料での記号は以下を表します
圧力 p[N/m2]
質量流量 m[kg/s]
比エンタルピー h[J/kg]
エンタルピー流量 H[J/s]
正の微小量 𝜖
3つのブロックの接続と方程式
本資料では輸送される比状態量が式(1)や式(2)で表されることを確認していきます。
𝑎𝑐𝑡𝑢𝑎𝑙𝑆𝑡𝑟𝑒𝑎𝑚(ℎ3) =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ3
(𝑚3 > 0) 流入
(𝑚3 ≤ 0) 流出
𝑖𝑛𝑆𝑡𝑟𝑒𝑎𝑚 ℎ3 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
・・・(1)
・・・(2)
h3=hc
or
hcはブロック3の内部の
比エンタルピー
計算した
い内容に
合わせて
どちらか
を選択
7
stream変数の難しさ
stream変数は以下の5つの理由から難しいと感じてしまうかもしれません。
本資料では、一つずつ整理しながら出来るだけ分かりやすく解説していきます。
stream変数が表
す物理現象
•stream変数が表す代表的な物理現象に比エンタルピーや化学成分
の質量分率があります。それらの性質を解説します。
ゼロ点の回避
•数値計算上の不安定性の原因となるゼロ点の発生を
回避するための工夫を紹介します。
双方向流れ(逆流)への対応
•輸送される比状態量は流れの方向に応じて計算式を
切り替える必要があります。
•分岐・合流時の計算は一見複雑ですが保存式から考え
るとシンプルなものとなります。
•stream変数はinStreamもしくはactualStream
オペレータと必ずセットで使用します。
•使い方や注意点についても解説します。
分岐・合流
実装時のルールと
オペレータ
8
stream変数の計算式サマリー
stream変数が表す
物理現象
ゼロ点の回避
双方向流れ(逆流)
への対応
分岐・合流
実装時の
ルールとオ
ペレータ
1 2
p1
m1
h1
p2
m2
h2
分岐・合流無し 一方向流れ
ℎ2 =
−𝑚1ℎ1
−𝑚1
ℎ2 =
max(−𝑚1,𝜖)ℎ1
max(−𝑚1,𝜖)
1
p1
m1
h1
p2
m2
h2
分岐・合流無し 双方向流れ
2
h2=hc
ℎ2 =
max(−𝑚1, 𝜖)ℎ1
max(−𝑚1, 𝜖)
ℎ𝑐
(𝑚2 > 0) 流入
(𝑚2 < 0) 流出
𝑎𝑐𝑡𝑢𝑎𝑙𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 = ൞
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ𝑖
(𝑚𝑖 > 0, 𝑗 ≠ 𝑖)
(𝑚𝑖 ≤ 0)
𝑖𝑛𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖) (𝑗 ≠ 𝑖)
or
分岐・合流有り 双方向流れ
1
2
p1
m1
h1
p2
m2
h2
p3
m3
h3
3
h3=hc
ℎ3 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ𝑐
(𝑚3 > 0, 𝑖 = 1,2) 流入
(𝑚3 < 0) 流出
コーディング
本資料では、左図のフローチャートに
従ってstream変数の解説を行います
9
目次
1. 概要
2. stream変数が表す物理現象と計算式
3. ゼロ点の回避
4. 双方向流れ(逆流)への対応
5. 分岐・合流
6. 実装時のルールとオペレータ
1. 実装の概要とConnectorクラスの実装例
2. actualStreamオペレータの実装例
3. inStreamオペレータの実装例
4. 熱の流入出がある場合
10
stream変数が表す物理現象と計算式
stream変数が表す
物理現象
ゼロ点の回避
双方向流れ(逆流)
への対応
分岐・合流
実装時の
ルールとオ
ペレータ
1 2
p1
m1
h1
p2
m2
h2
分岐・合流無し 一方向流れ
ℎ2 =
−𝑚1ℎ1
−𝑚1
ℎ2 =
max(−𝑚1,𝜖)ℎ1
max(−𝑚1,𝜖)
1
p1
m1
h1
p2
m2
h2
分岐・合流無し 双方向流れ
2
h2=hc
ℎ2 =
max(−𝑚1, 𝜖)ℎ1
max(−𝑚1, 𝜖)
ℎ𝑐
(𝑚2 > 0) 流入
(𝑚2 < 0) 流出
𝑎𝑐𝑡𝑢𝑎𝑙𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 = ൞
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ𝑖
(𝑚𝑖 > 0, 𝑗 ≠ 𝑖)
(𝑚𝑖 ≤ 0)
𝑖𝑛𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖) (𝑗 ≠ 𝑖)
or
分岐・合流有り 双方向流れ
1
2
p1
m1
h1
p2
m2
h2
p3
m3
h3
3
h3=hc
ℎ3 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ𝑐
(𝑚3 > 0, 𝑖 = 1,2) 流入
(𝑚3 < 0) 流出
コーディング
本資料では、左図のフローチャートに
従ってstream変数の解説を行います
11
stream変数が表す物理現象
物理現象の中には流動量(flow変数)に応じて輸送される物理量(輸送量)があります。
Modelicaでは、単位質量や体積当たりの輸送量をstream変数で定義すると色々と便利です。
(輸送量) = (flow変数) ×(stream変数)
輸送量とstream変数の関係は次式となります
輸送される物質や物理量を含んだ流れ
: 流れに応じて移動する物理量(ベクトル)
例:エンタルピー、物質量
輸送量
: 単位質量や単位体積当たりに含まれる輸
送量の大きさ(スカラー)
例:比エンタルピー、質量分率
輸送される比状態量
(stream変数)
H = m×h
stream変数を比エンタルピーとすると、エンタルピー流量の計算は次式となる。
質量流量 m[kg/s]
比エンタルピー h[J/kg]
エンタルピー流量 H[J/s]
山頂
河口
stream変数の計算式
川の流れをブロック図で表して
山頂から河口に輸送される比エンタルピーh2を求めてみましょう。
p1
m1
h1
p2
m2
h2
山頂 河口
質量流量の保存式
𝑚1 + 𝑚2 = 0
エンタルピーの保存式からh2を導出
H1 + H2 = 0
𝑚1ℎ1 + 𝑚2ℎ2= 0
ℎ2 =
−𝑚1ℎ1
𝑚2
𝑚2 = −𝑚1
ℎ2 =
−𝑚1ℎ1
−𝑚1
h2について整理
m2=-m1を代入
川の流れのブロック図
山頂
河口
川の流れをブロック図化
13
目次
1. 概要
2. stream変数が表す物理現象と計算式
3. ゼロ点の回避
4. 双方向流れ(逆流)への対応
5. 分岐・合流
6. 実装時のルールとオペレータ
1. 実装の概要とConnectorクラスの実装例
2. actualStreamオペレータの実装例
3. inStreamオペレータの実装例
4. 熱の流入出がある場合
14
ゼロ点の回避
stream変数が表す
物理現象
ゼロ点の回避
双方向流れ(逆流)
への対応
分岐・合流
実装時の
ルールとオ
ペレータ
1 2
p1
m1
h1
p2
m2
h2
分岐・合流無し 一方向流れ
ℎ2 =
−𝑚1ℎ1
−𝑚1
ℎ2 =
max(−𝑚1,𝜖)ℎ1
max(−𝑚1,𝜖)
1
p1
m1
h1
p2
m2
h2
分岐・合流無し 双方向流れ
2
h2=hc
ℎ2 =
max(−𝑚1, 𝜖)ℎ1
max(−𝑚1, 𝜖)
ℎ𝑐
(𝑚2 > 0) 流入
(𝑚2 < 0) 流出
𝑎𝑐𝑡𝑢𝑎𝑙𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 = ൞
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ𝑖
(𝑚𝑖 > 0, 𝑗 ≠ 𝑖)
(𝑚𝑖 ≤ 0)
𝑖𝑛𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖) (𝑗 ≠ 𝑖)
or
分岐・合流有り 双方向流れ
1
2
p1
m1
h1
p2
m2
h2
p3
m3
h3
3
h3=hc
ℎ3 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ𝑐
(𝑚3 > 0, 𝑖 = 1,2) 流入
(𝑚3 < 0) 流出
コーディング
本資料では、左図のフローチャートに
従ってstream変数の解説を行います
15
逆流が発生したり流れが止まると流量が0となる瞬間が発生します。
数値計算において、0が生じると計算がゼロ割りや非明示な解がなくなるなど不安
定になることが多くなります。
0を避けるため、 流量は以下のように計算することにしましょう。
質量流量がゼロとならないようにした場合のh2の計算
ℎ2 =
max(−𝑚1,𝜖)ℎ1
max(−𝑚1,𝜖)
(正の微小量 𝜖)
m1が0に近づいた
らεに切り替え
𝑎𝑐𝑡𝑢𝑎𝑙𝑆𝑡𝑟𝑒𝑎𝑚(ℎ3) =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ3
比較のためacturalStreamの計算式を再掲
流入の式はΣ以外導
出できました
(𝑚3 > 0) 流入
(𝑚3 ≤ 0) 流出
ℎ2 =
−𝑚1ℎ1
−𝑚1
p1
m1
h1
p2
m2
h2
山頂 河口
・・・(2)
ゼロ点の回避
16
目次
1. 概要
2. stream変数が表す物理現象と計算式
3. ゼロ点の回避
4. 双方向流れ(逆流)への対応
5. 分岐・合流
6. 実装時のルールとオペレータ
1. 実装の概要とConnectorクラスの実装例
2. actualStreamオペレータの実装例
3. inStreamオペレータの実装例
4. 熱の流入出がある場合
17
双方向流れ(逆流)への対応
stream変数が表す
物理現象
ゼロ点の回避
双方向流れ(逆流)
への対応
分岐・合流
実装時の
ルールとオ
ペレータ
1 2
p1
m1
h1
p2
m2
h2
分岐・合流無し 一方向流れ
ℎ2 =
−𝑚1ℎ1
−𝑚1
ℎ2 =
max(−𝑚1,𝜖)ℎ1
max(−𝑚1,𝜖)
1
p1
m1
h1
p2
m2
h2
分岐・合流無し 双方向流れ
2
h2=hc
ℎ2 =
max(−𝑚1, 𝜖)ℎ1
max(−𝑚1, 𝜖)
ℎ𝑐
𝑎𝑐𝑡𝑢𝑎𝑙𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 = ൞
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ𝑖
(𝑚𝑖 > 0, 𝑗 ≠ 𝑖)
(𝑚𝑖 ≤ 0)
𝑖𝑛𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖) (𝑗 ≠ 𝑖)
or
分岐・合流有り 双方向流れ
1
2
p1
m1
h1
p2
m2
h2
p3
m3
h3
3
h3=hc
ℎ3 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ𝑐
(𝑚3 > 0, 𝑖 = 1,2) 流入
(𝑚3 < 0) 流出
コーディング
本資料では、左図のフローチャートに
従ってstream変数の解説を行います
(𝑚2 > 0) 流入
(𝑚2 < 0) 流出
18
双方向流れ(逆流)
かいしょう せんとうこう
海嘯と呼ばれる現象によってアマゾン川や銭塘江では逆流が発生します。
逆流が起きた場合でも計算が出来るようにstream変数の計算を考えましょう。
川の流れが逆流(河口→山頂への流れ)となった場合、
河口モデルのポートの比エンタルピーh2は、河口より上流側(海)の比エンタルピーhcを仮定する
ことで計算できます。 hcは河口モデルの内部に定義します。
stream変数は上流側の値を定義することで逆流も計算可能です。
p1
m1
h1
p2
m2
h2
山頂
河口
hc
山頂
河口
逆流(河口→山頂への流れ)の場合
h2の計算式は次式となる。
h2 = hc
19
逆流を考慮した計算式
逆流した場合にも対応できるように計算式を考えてみましょう。
河口のポートの比エンタルピーh2の計算式は次のように場合分けが必要です。
max(−𝑚1, 𝜖)ℎ1
max(−𝑚1, 𝜖) (山頂から流れてくる場合 m2>0)
(河口から流れてくる場合 m2<0)
ℎ𝑐
=
p1
m1
h1
p2
m2
h2
山頂
河口
hc
𝑎𝑐𝑡𝑢𝑎𝑙𝑆𝑡𝑟𝑒𝑎𝑚(ℎ3) =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ𝑐
(𝑚3 ≤ 0)
(𝑚3 > 0)
流れの方向に応じて式を切り替えることで
上の式と式(2)は似た形式となってきました。
比較のためacturalStreamの計算式を再掲
ℎ2
・・・(2)
20
目次
1. 概要
2. stream変数が表す物理現象と計算式
3. ゼロ点の回避
4. 双方向流れ(逆流)への対応
5. 分岐・合流
6. 実装時のルールとオペレータ
1. 実装の概要とConnectorクラスの実装例
2. actualStreamオペレータの実装例
3. inStreamオペレータの実装例
4. 熱の流入出がある場合
21
分岐・合流
stream変数が表す
物理現象
ゼロ点の回避
双方向流れ(逆流)
への対応
分岐・合流
実装時の
ルールとオ
ペレータ
1 2
p1
m1
h1
p2
m2
h2
分岐・合流無し 一方向流れ
ℎ2 =
−𝑚1ℎ1
−𝑚1
ℎ2 =
max(−𝑚1,𝜖)ℎ1
max(−𝑚1,𝜖)
1
p1
m1
h1
p2
m2
h2
分岐・合流無し 双方向流れ
2
h2=hc
ℎ2 =
max(−𝑚1, 𝜖)ℎ1
max(−𝑚1, 𝜖)
ℎ𝑐
𝑎𝑐𝑡𝑢𝑎𝑙𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 = ൞
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ𝑖
(𝑚𝑖 > 0, 𝑗 ≠ 𝑖)
(𝑚𝑖 ≤ 0)
𝑖𝑛𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖) (𝑗 ≠ 𝑖)
or
分岐・合流有り 双方向流れ
1
2
p1
m1
h1
p2
m2
h2
p3
m3
h3
3
h3=hc
ℎ3 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ𝑐
(𝑚3 > 0, 𝑖 = 1,2) 流入
(𝑚3 < 0) 流出
コーディング
本資料では、左図のフローチャートに
従ってstream変数の解説を行います
(𝑚2 > 0) 流入
(𝑚2 < 0) 流出
22
𝑚1ℎ1 + 𝑚2ℎ2 + 𝑚3ℎ3 = 0
ℎ3 =
−𝑚1ℎ1 − 𝑚2ℎ2
(−𝑚1 − 𝑚2)
以下の図のように山頂とダムの水が合流して河口モデルへ流れるとしましょう。
このときの河口のポートの比エンタルピーh3を求めてみましょう。
山頂
河口
ダム
p1
m1
h1
p3
m3
h3
山頂
河口
p2
m2
h2
ダム
合流部のエンタルピーの保存式からh3を導出
𝐻1 + 𝐻2 + 𝐻3 = 0
ℎ3 =
σ𝑗=1,2 −𝑚𝑗ℎ𝑗
σ𝑗=1,2 −𝑚𝑗
ℎ3 =
σ𝑗=1,2 max(−𝑚𝑗, 𝜖)ℎ𝑗
σ𝑗=1,2 max(−𝑚𝑗, 𝜖)
ゼロ点回避
分岐・合流
23
分岐・合流の計算の一般化
下図のように接続した場合、モデルMiのポートのstream変数hiは次式で計算できます。
・
・
・
M1
ℎ𝑖 =
σ𝑗 −𝑚𝑗ℎ𝑗
σ𝑗 −𝑚𝑗
ℎ𝑖 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ゼロ点回避
Miへ流入する場合(𝑚𝑖 > 0)
p1
m1
h1
pi
mi
hi
p2
m2
h2
pn
mn
hn
hc
M2
Mn
Mi
Miから流出する場合(𝑚𝑖 < 0)
ℎ𝑖 = ℎ𝑐
(𝑗 ≠ 𝑖)
(𝑗 ≠ 𝑖)
24
目次
1. 概要
2. stream変数が表す物理現象と計算式
3. ゼロ点の回避
4. 双方向流れ(逆流)への対応
5. 分岐・合流
6. 実装時のルールとオペレータ
1. 実装の概要とConnectorクラスの実装例
2. actualStreamオペレータの実装例
3. inStreamオペレータの実装例
4. 熱の流入出がある場合
25
実装時のルールとオペレータ
stream変数が表す
物理現象
ゼロ点の回避
双方向流れ(逆流)
への対応
分岐・合流
実装時の
ルールとオ
ペレータ
1 2
p1
m1
h1
p2
m2
h2
分岐・合流無し 一方向流れ
ℎ2 =
−𝑚1ℎ1
−𝑚1
ℎ2 =
max(−𝑚1,𝜖)ℎ1
max(−𝑚1,𝜖)
1
p1
m1
h1
p2
m2
h2
分岐・合流無し 双方向流れ
2
h2=hc
ℎ2 =
max(−𝑚1, 𝜖)ℎ1
max(−𝑚1, 𝜖)
ℎ𝑐
𝑎𝑐𝑡𝑢𝑎𝑙𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 = ൞
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ𝑖
(𝑚𝑖 > 0, 𝑗 ≠ 𝑖)
(𝑚𝑖 ≤ 0)
𝑖𝑛𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖) (𝑗 ≠ 𝑖)
or
分岐・合流有り 双方向流れ
1
2
p1
m1
h1
p2
m2
h2
p3
m3
h3
3
h3=hc
ℎ3 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ𝑐
(𝑚3 > 0, 𝑖 = 1,2) 流入
(𝑚3 < 0) 流出
コーディング
本資料では、左図のフローチャートに
従ってstream変数の解説を行います
(𝑚2 > 0) 流入
(𝑚2 < 0) 流出
26
実装時のルールとオペレータ
stream変数には以下のルールがあります
No. ルール
1 接頭辞streamはコネクタークラス内のみで使用できます。
2 stream変数が宣言されたコネクタークラスはacross変数とflow変数が一つずつ必要です。
3 stream変数は、ポート同士が接続されても自動的に方程式は生成されません。
そのためinStreamオペレータあるいはactualStreamオペレータを使用してstream変数に
関する値を計算する必要があります。
27
二つのオペレータ
inStreamオペレータ
ポートのstream変数を引数として、流れの向きとは関係なくそのポートに接続されたコネクタか
ら計算される輸送される比状態量の値を返します。流れの向きとは関係なく計算されるため使用に
は注意が必要ですがactualStreamより計算負荷が少なく安定的です。
actualStreamオペレータ
ポートのstream変数を引数として、逆流を考慮してそのポートを通過する輸送される比状態量
の値を返します。actualStreamオペレータは本当に必要な時のみ使用してください。
𝑎𝑐𝑡𝑢𝑎𝑙𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 = ൞
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ𝑖
(𝑚𝑖 > 0, 𝑗 ≠ 𝑖)
M1
p1
m1
h1
pi
mi
hi
p2
m2
h2
hc
M2
Mi
Miモデルへ流入する場合
Miモデルから流出する場合
hiの値は別途定義しておく
𝑖𝑛𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
(𝑚𝑖 ≤ 0)
(𝑗 ≠ 𝑖)
28
stream変数学習用ライブラリ StreamConnectors
stream変数を学習するためのライブラリStreamConnectorsがOpenModelicaのシステムライブラ
リにあります。
(ソースコードはRene Just Nielsen氏(アカウント名)のGitHubで公開されています。)
このライブラリ内を参考にstream変数の実装方法を確認しましょう。
ライブラリブラウザ上の
StreamConnectorsライブラリ
StreamConnectorsライブラリには流体抵抗を表
すPipeモデル、DynamicPipeやPumpモデルなど
があります。
境界条件として以下のモデルがあります。
・圧力、比エンタルピー定義
・質量流量、比エンタルピー定義
29
StreamConnectorsライブラリのローディング
1. StreamConnectorsライブラリはOpenModelicaの「ファイル」→「システムライブラリ」→
「 StreamConnectors 」から開くことができます。
2. ライブラリブラウザから確認できます。
30
connectorクラスの実装例
StreamConnectorsライブラリでは、以下のようにconnectorクラスFluidPortに圧力、質量流量、
比エンタルピーが宣言されています。
connector FluidPort "Simple stream connector.“
Real p "Potential/effort variable";
flow Real m_flow "Flow variable";
stream Real h_outflow "Specific enthalpy";
end FluidPort;
stream変数のルール1,2に基づいてconnectorクラスが作成されています
No. ルール
1 接頭辞streamはコネクタークラス内のみで使用できます。
2 stream変数が宣言されたコネクタークラスはacross変数とflow変数が一つずつ必要です。
31
目次
1. 概要
2. stream変数が表す物理現象と計算式
3. ゼロ点の回避
4. 双方向流れ(逆流)への対応
5. 分岐・合流
6. 実装時のルールとオペレータ
1. 実装の概要とConnectorクラスの実装例
2. actualStreamオペレータの実装例
3. inStreamオペレータの実装例
4. 熱の流入出がある場合
32
actualStreamオペレータの実装例
stream変数が表す
物理現象
ゼロ点の回避
双方向流れ(逆流)
への対応
分岐・合流
実装時の
ルールとオ
ペレータ
1 2
p1
m1
h1
p2
m2
h2
分岐・合流無し 一方向流れ
ℎ2 =
−𝑚1ℎ1
−𝑚1
ℎ2 =
max(−𝑚1,𝜖)ℎ1
max(−𝑚1,𝜖)
1
p1
m1
h1
p2
m2
h2
分岐・合流無し 双方向流れ
2
h2=hc
ℎ2 =
max(−𝑚1, 𝜖)ℎ1
max(−𝑚1, 𝜖)
ℎ𝑐
𝑎𝑐𝑡𝑢𝑎𝑙𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 = ൞
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ𝑖
(𝑚𝑖 > 0, 𝑗 ≠ 𝑖)
(𝑚𝑖 ≤ 0)
𝑖𝑛𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖) (𝑗 ≠ 𝑖)
or
分岐・合流有り 双方向流れ
1
2
p1
m1
h1
p2
m2
h2
p3
m3
h3
3
h3=hc
ℎ3 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ𝑐
(𝑚3 > 0, 𝑖 = 1,2) 流入
(𝑚3 < 0) 流出
コーディング
本資料では、左図のフローチャートに
従ってstream変数の解説を行います
(𝑚2 > 0) 流入
(𝑚2 < 0) 流出
33
actualStreamオペレータの実装例 – Pipeモデル
Pipeクラスを参考にactualStreamオペレータの使用方法を確認しましょう。
まずは系の途中で熱の流入出がない場合を想定します。
StreamConnectors.Components.Pipe
Pipeクラスの概要
• 両端のFluidPort(port_a, port_b)から圧力p、質量流量m、比エンタルピーhが流
入出する単成分の流体抵抗モデル
質量保存則
圧力-質量流量の関係式
port_a port_b
𝑚𝑎 + 𝑚𝑏 = 0
エンタルピーの保存式
実装式(簡易的に記載しています)
𝑚𝑎
ℎ𝑎
𝑃𝑎
𝑚𝑏
ℎ𝑏
𝑃𝑏
𝑃𝑎 − 𝑃𝑏 = 𝐾𝑚𝑎
2
流入出エンタルピーの保存
𝑚𝑎 × actualStream ℎ𝑎 + 𝑚𝑏 × actualStream ℎ𝑏 = 0
流入出する比エンタルピーは等しい
ℎ𝑎 = ℎ𝑏
(パラメータ K : pressure drop coeficient)
𝑃𝑋:port_X.p
𝑚𝑋:port_X.m_flow
ℎ𝑋:port_X.h_outflow
X:ポート名
可読性のため以下のように置き換えています。
34
下図のような場合にpipe2のh2a, h2bに着目してactualStreamオペレータの計算順序を確認しましょう。
通過する比エンタルピーはすべて一定のためh1b=h2a=h2bとなりますが、計算になれるために1つず
つ計算してみます。
𝑎𝑐𝑡𝑢𝑎𝑙𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 = ൞
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ𝑖
(𝑚𝑖 > 0, 𝑗 ≠ 𝑖)
(𝑚𝑖 ≤ 0)
actualStreamオペレータの定義式
pipe2.port_a.h2a, h2bについてのエネルギー保存則
𝑚2𝑎 × actualStream ℎ2𝑎 + 𝑚2𝑏 × actualStream ℎ2𝑏 = 0
ℎ2𝑎 = ℎ2𝑏
actualStreamオペレータの実装例 – 簡単な例
pipe1 pipe2
𝑚1𝑏
ℎ1𝑏
𝑃1𝑏
𝑚2𝑎
ℎ2𝑎
𝑃2𝑎
port_a port_b
port_a
port_b
𝑚2𝑏
ℎ2𝑏
𝑃2𝑏
赤字:未知変数
黒字:既知変数
35
pipe2.port_aに流体が流入する場合(𝑚2𝑎> 0)、エンタルピーの保存式よりh2a, h2bは次式で計算できます。
𝑚2𝑎 × actualStream ℎ2𝑎 + 𝑚2𝑏 × actualStream ℎ2𝑏 = 0
ℎ2𝑎 = ℎ2𝑏
𝑚2𝑎 ×
max(−𝑚1𝑏, 𝜖)ℎ1𝑏
max(−𝑚1𝑏, 𝜖)
+ 𝑚2𝑏 × ℎ2𝑏 = 0
ℎ2𝑎 = ℎ2𝑏
actualStreamオペレー
タの定義式を適用
ℎ2𝑎 = ℎ2𝑏
h2a,h2bについて整理
ℎ2𝑏 = −
1
𝑚2𝑏
𝑚2𝑎 ×
max(−𝑚1𝑏, 𝜖)ℎ1𝑏
max(−𝑚1𝑏, 𝜖)
actualStreamオペレータを使用してh2a, h2bがエンタルピーの保存式から適切に導出されて
いることが分かります。
ℎ2𝑎 = ℎ2𝑏
質量保存則より
𝑚1𝑏 + 𝑚2𝑎 = 0
𝑚2𝑎 + 𝑚2𝑏 = 0 ℎ2𝑏 = ℎ1𝑏
h2a, h2bの計算
actualStreamオペレータの実装例 – 簡単な例
𝑎𝑐𝑡𝑢𝑎𝑙𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 = ൞
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ𝑖
(𝑚𝑖 > 0, 𝑗 ≠ 𝑖)
(𝑚𝑖 ≤ 0)
actualStreamオペレータの定義式
36
境界(ソース)モデルの実装例
境界条件となるソースモデルにはポートへ直接値を代入するためinStream, actualStreamオペレータ
を使用せずに実装できます。
質量流量境界モデル
パラメータ*
・質量流量 m_flow
・比エンタルピー h
圧力境界モデル
パラメータ*
・圧力 p
・比エンタルピー h
port
port
* Modelicaコードではinputで宣言されていますが、分かりやすさを優先して「パラメータ」と記載しています。
実装コード 実装コード
各境界モデルが上流となる場合、ポートの比エンタルピーの値は接続されたモデルに受け渡
されますが下流となる場合は受け渡されないため無視しても構いません。
37
actualStreamオペレータの実装例 – 合流がある場合
Exercise1
以下のpipe3の比エンタルピーh3a, h3bを手計算で求めてください。
pipe1
pipe2
pipe3
port_b
port_a
質量流量境界モデル
・質量流量
・比エンタルピー
𝑚𝑠1 = 1
ℎ𝑠1 = 2
𝑃𝑠3 =0
圧力境界モデル
・圧力
・比エンタルピー
𝑚3𝑎
ℎ3𝑎
𝑃3𝑎
𝑚3𝑏
ℎ3𝑏
𝑃3𝑏
𝑚1𝑏
ℎ1𝑏
𝑃1𝑏
𝑚2𝑏
ℎ2𝑏
𝑃2𝑏
この境界モデルは下流にありパ
ラメータに定義された比エンタル
ピーの値は計算に使用されないた
めXXとしています。
ℎ𝑠3 = 𝑋𝑋
パラメータ
𝑚𝑠2 = 4
ℎ𝑠2 = 3
パラメータ
パラメータ
38
actualStreamオペレータの実装例 – 合流がある場合
解答1
𝑚3𝑎 × actualStream ℎ3𝑎 + 𝑚3𝑏 × actualStream ℎ3𝑏 = 0
ℎ3𝑎 = ℎ3𝑏
𝑚3𝑎 ×
max −𝑚1𝑏, 𝜖 ℎ1𝑏 + max(−𝑚2𝑏, 𝜖)ℎ2𝑏
max −𝑚1𝑏, 𝜖 + max(−𝑚2𝑏, 𝜖)
+ 𝑚3𝑏 × ℎ3𝑏 = 0
ℎ2𝑎 = ℎ2𝑏
actualStreamオペレー
タの定義式を適用
ℎ3𝑏 =
−𝑚1𝑏ℎ1𝑏 − 𝑚2𝑏ℎ2𝑏
𝑚3𝑏
ℎ3𝑎 = ℎ3𝑏
h3a,h3bについて整理
ℎ3𝑏 =
1 × 2 + 4 × 3
1 + 4
= 2.8
ℎ3𝑎 = 2.8
値を代入
actualStreamオペレータを使用してh3a, h3bがエネルギー保存則から適切に導出されている
ことが分かります。
Pipe3のエネルギー保存則
39
目次
1. 概要
2. stream変数が表す物理現象と計算式
3. ゼロ点の回避
4. 双方向流れ(逆流)への対応
5. 分岐・合流
6. 実装時のルールとオペレータ
1. 実装の概要とConnectorクラスの実装例
2. actualStreamオペレータの実装例
3. inStreamオペレータの実装例
4. 熱の流入出がある場合
40
inStreamオペレータの実装例
stream変数が表す
物理現象
ゼロ点の回避
双方向流れ(逆流)
への対応
分岐・合流
実装時の
ルールとオ
ペレータ
1 2
p1
m1
h1
p2
m2
h2
分岐・合流無し 一方向流れ
ℎ2 =
−𝑚1ℎ1
−𝑚1
ℎ2 =
max(−𝑚1,𝜖)ℎ1
max(−𝑚1,𝜖)
1
p1
m1
h1
p2
m2
h2
分岐・合流無し 双方向流れ
2
h2=hc
ℎ2 =
max(−𝑚1, 𝜖)ℎ1
max(−𝑚1, 𝜖)
ℎ𝑐
𝑎𝑐𝑡𝑢𝑎𝑙𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 = ൞
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ𝑖
(𝑚𝑖 > 0, 𝑗 ≠ 𝑖)
(𝑚𝑖 ≤ 0)
𝑖𝑛𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖) (𝑗 ≠ 𝑖)
or
分岐・合流有り 双方向流れ
1
2
p1
m1
h1
p2
m2
h2
p3
m3
h3
3
h3=hc
ℎ3 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
ℎ𝑐
(𝑚3 > 0, 𝑖 = 1,2) 流入
(𝑚3 < 0) 流出
コーディング
本資料では、左図のフローチャートに
従ってstream変数の解説を行います
(𝑚2 > 0) 流入
(𝑚2 < 0) 流出
41
inStreamオペレータの実装例 – サンプルモデルの作成
inStreamオペレータの使用方法を確認しましょう。
inStreamオペレータを使ったSimplePipeクラスの比エンタルピーは以下のように実装できます。
質量保存則
圧力-質量流量の関係式
port_a port_b 𝑚𝑎 + 𝑚𝑏 = 0
エンタルピーの保存式に対応する計算式
実装式
port_aに接続されたコネクタから計算される比エンタルピーはport_bに代入し
port_bは上記と逆となっています。
このように実装することで条件分岐が無くなり計算が簡便になります。
しかしこの実装にはいくつかの注意事項があります。
𝑚𝑎
ℎ𝑎
𝑃𝑎
𝑚𝑏
ℎ𝑏
𝑃𝑏
𝑃𝑎 − 𝑃𝑏 = 𝐾𝑚𝑎
2
ℎ𝑎 = 𝑖𝑛Stream ℎ𝑏
ℎ𝑏 = 𝑖𝑛Stream ℎ𝑎
(パラメータ K : pressure drop coeficient)
𝑖𝑛𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
(𝑗 ≠ 𝑖)
Modelica.Fluid.Pipes.StaticPipeにも
近い形の計算式が使用されています
SimplePipe
42
inStreamオペレータの実装例 – サンプルモデルの作成
port_a port_b
エネルギー保存則に対応する計算式
実装式
𝑚𝑎
ℎ𝑎
𝑃𝑎
𝑚𝑏
ℎ𝑏
𝑃𝑏
ℎ𝑎 = 𝑖𝑛Stream ℎ𝑏
ℎ𝑏 = 𝑖𝑛Stream ℎ𝑎
𝑖𝑛𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
(𝑗 ≠ 𝑖)
SimplePipe
Exercise2
StreamConnectors.Components.Pipeクラスのエンタルピーの保存式に関する式を
以下の実装式のように修正してSimplePipeクラスを作成してください。
またアイコンの色を変更してください。
43
inStreamオペレータの実装例 – サンプルモデルの作成
解答2
エネルギー保存則に対応する計算式
アイコンの色については省略
44
inStreamオペレータの実装例 – 簡単な例
inStreamオペレータを使用した場合の計算順序を確認しましょう。
inStreamオペレータの定義式
simplePipe1
port_a port_b
h1a, h1bの計算式
ℎ1𝑎 = 𝑖𝑛Stream ℎ1𝑏
ℎ1𝑏 = 𝑖𝑛Stream ℎ1𝑎
𝑖𝑛𝑆𝑡𝑟𝑒𝑎𝑚 ℎ𝑖 =
σ𝑗 max −𝑚𝑗, 𝜖 ℎ𝑗
σ𝑗 max(−𝑚𝑗, 𝜖)
(𝑗 ≠ 𝑖)
𝑚1𝑏
ℎ1𝑏
𝑃1𝑏
𝑚1𝑏
ℎ1𝑏
𝑃1𝑏
𝑚𝑠1 = 1
ℎ𝑠1 = 2
𝑃𝑠2 =0
ℎ𝑠2 = 3
パラメータ パラメータ
圧力境界モデル
・圧力
・比エンタルピー
入力した比エンタルピーはポー
トに与えられます。今回の場合、
下流側の輸送量が計算に使用され
ます。
inStreamオペレータの定義式から考えるとh1a, h1bに入る値はいくらになるでしょうか?
45
inStreamオペレータの実装例 – 簡単な例
ℎ1𝑎 = 𝑖𝑛Stream ℎ1𝑏
ℎ1𝑏 = 𝑖𝑛Stream ℎ1𝑎
ℎ1𝑎 =
max(−𝑚𝑠2, 𝜖)ℎ𝑠2
max(−𝑚𝑠2, 𝜖)
ℎ1𝑏 =
max(−𝑚1𝑏, 𝜖)ℎ𝑠1
max(−𝑚1𝑏, 𝜖)
actualStreamオペレー
タの定義式を適用
simplePipe1モデルから流出する比エンタルピーh1bは適切に計算されていますが
流入する比エンタルピーh1aは不自然な計算式となっています。
上記は一例ですが他の場合も同様にstream変数の計算結果を確認する際は注意が必要となります。
ℎ1𝑏 = ℎ𝑠1
ℎ1𝑎 = ℎ𝑠2
h2a, h2bの計算
simplePipe1
port_a port_b
𝑚1𝑎
ℎ1𝑎
𝑃1𝑎
𝑚1𝑏
ℎ1𝑏
𝑃1𝑏
𝑚𝑠1 = 1
ℎ𝑠1 = 2
𝑃𝑠2 =0
ℎ𝑠2 = 3
パラメータ パラメータ
h1a,h1bについて整理
ℎ1𝑏 = 2
ℎ1𝑎 = 3
値を代入
h1bにはport_aに接続されてい
る比エンタルピーを与えている
h1aにはport_bに接続されてい
る比エンタルピーを与えている
46
inStreamオペレータの実装例 – 合流がある場合
Exercise3
以下のsimplePipe3の比エンタルピーh3a, h3bを手計算で求めてください。
simplePipe1
port_b
port_a
質量流量境界モデル
・質量流量
・比エンタルピー
𝑚𝑠1 = 1
ℎ𝑠1 = 2
𝑃𝑠3 =0
圧力境界モデル
・圧力
・比エンタルピー
𝑚3𝑎
ℎ3𝑎
𝑃3𝑎
𝑚3𝑏
ℎ3𝑏
𝑃3𝑏
𝑚1𝑏
ℎ1𝑏
𝑃1𝑏
𝑚2𝑏
ℎ2𝑏
𝑃2𝑏
ℎ𝑠3 = 7
パラメータ
𝑚𝑠2 = 4
ℎ𝑠2 = 3
パラメータ
パラメータ
simplePipe2
simplePipe3
47
inStreamオペレータの実装例 – 合流がある場合
解答3
simplePipe1
port_b
port_a
𝑚𝑠1 = 1
ℎ𝑠1 = 2
𝑃𝑠3 =0
圧力境界モデル
・圧力
・比エンタルピー
𝑚3𝑎
ℎ3𝑎
𝑃3𝑎
𝑚3𝑏
ℎ3𝑏
𝑃3𝑏
𝑚1𝑏
ℎ1𝑏
𝑃1𝑏
𝑚2𝑏
ℎ2𝑏
𝑃2𝑏
ℎ𝑠3 = 7
パラメータ
𝑚𝑠2 = 4
ℎ𝑠2 = 3
パラメータ
パラメータ
simplePipe2
simplePipe3
ℎ3𝑎 = 𝑖𝑛Stream ℎ3𝑏
ℎ3𝑏 = 𝑖𝑛Stream ℎ3𝑎
ℎ3𝑎 = ℎ𝑠3
ℎ3𝑏 =
𝑚1𝑏ℎ1𝑏 + 𝑚2𝑏ℎ2𝑏
𝑚1𝑏 + 𝑚2𝑏
ℎ3𝑎 = 7
ℎ3𝑏 =
14
5
途中式は省略
値を代入
inStreamオペレータを使用すると下流の値が上流のポートに入力されることに気をつけてください。
48
コラム:比エンタルピーの変数名がh_outflowである意味
StreamConnectorsライブラリやMSL.Fluidライブラリのポート内で宣言されている比エンタルピー
の変数名はh_outflow(比エンタルピーの流出量)となっています。
これはstream変数は流出量を計算することが目的であることを表しています。
actualStream、inStreamオペレータを使用した場合流入するstream変数の値が適切に計算されな
い場合があります。
そのようなことを考慮して、変数名にoutflowをつけて流出量を計算することが目的であることを
示しているのかと思います。
connector FluidPort "Simple stream connector.“
Real p "Potential/effort variable";
flow Real m_flow "Flow variable";
stream Real h_outflow "Specific enthalpy";
end FluidPort;
49
目次
1. 概要
2. stream変数が表す物理現象と計算式
3. ゼロ点の回避
4. 双方向流れ(逆流)への対応
5. 分岐・合流
6. 実装時のルールとオペレータ
1. 実装の概要とConnectorクラスの実装例
2. actualStreamオペレータの実装例
3. inStreamオペレータの実装例
4. 熱の流入出がある場合
50
熱の流入出がある場合
熱の流入出がある場合を検討してみましょう。Pipeモデルは熱流量Qの流入出が考慮できるように
なっています。Qはパラメータとして宣言しています。
StreamConnectors.Components.Pipe
port_a port_b エンタルピーの保存式
実装式
𝑚𝑎
ℎ𝑎
𝑃𝑎
𝑚𝑏
ℎ𝑏
𝑃𝑏
流入出エンタルピーの保存
𝑚𝑎 × actualStream ℎ𝑎 + 𝑚𝑏 × actualStream ℎ𝑏 + 𝑄 = 0
上記のままだとhaかhbの値が未定となるためダミー値を入力する
ℎ𝑎 = ℎ𝑏
𝑃𝑋:port_X.p
𝑚𝑋:port_X.m_flow
ℎ𝑋:port_X.h_outflow
X:ポート名
可読性のため以下のように置き換えています。
Q 説明のため式は一部簡易化し、エンタルピーの保存式のみを表示しています
51
下図のような場合にh2a, h2bに着目してactualStreamオペレータの計算順序を確認しましょう。
熱の流入出がある場合 – 簡単な例
赤字:未知変数
黒字:既知変数
pipe1 pipe2
𝑚1𝑏
ℎ1𝑏
𝑃1𝑏
𝑚2𝑎
ℎ2𝑎
𝑃2𝑎
port_a port_b
port_a
port_b
𝑚2𝑏
ℎ2𝑏
𝑃2𝑏
Q
𝑚2𝑎 × actualStream ℎ2𝑎 + 𝑚2𝑏 × actualStream ℎ2𝑏 + 𝑄 = 0
ℎ2𝑎 = ℎ2𝑏
途中式は省略
ℎ2𝑎 = ℎ2𝑏
ℎ2𝑏 = ℎ1𝑏 +
𝑄
𝑚2𝑎
上記のように、h2bは適切に計算されているがh2aは不自然な計算式となっている。しかし、
stream変数は流出量を計算することが目的であることから使用上の問題はないことが分かる。
正しい答えは
𝒉𝟐𝒂 = 𝒉𝟏𝒃
52
これまで見てきた方法ではポートのstream変数に不自然な結果が返ってきてしまい不便です。
以下のように実装することで自然な結果が返ってくるようになります。
熱の流入出がある場合 – 検討案
ポートのstream変数に自然な結果が返ってくるためには他に適切な方法があると思います。
色々と検討してみてください。
//h_cはパイプの中央部分の比エンタルピー
h_c = semiLinear(sign(m_a), inStream(h_a), -inStream(h_b))+Q/abs(m_a);
h_a = semiLinear(sign(m_a), inStream(h_a), h_c);
h_b = semiLinear(sign(m_b), inStream(h_b), -h_c);
port_a port_b
𝑚𝑎
ℎ𝑎
𝑃𝑎
𝑚𝑏
ℎ𝑏
𝑃𝑏
Q
hc
53
(1) Francesco Casella, Martin Otter, Michael Sielemann and Rüdiger Franke, Stream Connectors - An Extension of
Modelica for Device-Oriented Modeling of Convective Transport Phenomena, 7th Modelica Conference(2009)
(2) Modelica Specification 3.4
参考資料
(3) Overview and Rationale for Modelica Stream Connectors,
https://doc.modelica.org/Modelica%204.0.0/Resources/Documentation/Fluid/Stream-Connectors-
Overview-Rationale.pdf (参照日 2021/8/22)

More Related Content

PPTX
OpenModelica tutorials_5 Make Original Models(超初級チュートリアル5.オリジナルモデルの作成)
PPTX
OpenModelica tutorials_6 Tips(超初級チュートリアル6.便利技 CSVファイルの出力)
PPTX
OpenModelica tutorials_3 Model customization1 (超初級チュートリアル3.モデルのカスタマイズ1)
PDF
OpenModelica tutorials_7 PlantModel(超初級チュートリアル7.プラントモデル)
PPTX
OpenModelica tutorials_2 coding (超初級チュートリアル 2.コーディング)
PPTX
OpenModelica tutorials_1(超初級チュートリアル1 解析モデルの作成と実行)
PPTX
OpenModelica tutorials_6 Tips(超初級チュートリアル6.便利技 モデルを一つのファイルにまとめる)
PPTX
24Jun17 MBD-Case - Room and MBD and I Ver3
OpenModelica tutorials_5 Make Original Models(超初級チュートリアル5.オリジナルモデルの作成)
OpenModelica tutorials_6 Tips(超初級チュートリアル6.便利技 CSVファイルの出力)
OpenModelica tutorials_3 Model customization1 (超初級チュートリアル3.モデルのカスタマイズ1)
OpenModelica tutorials_7 PlantModel(超初級チュートリアル7.プラントモデル)
OpenModelica tutorials_2 coding (超初級チュートリアル 2.コーディング)
OpenModelica tutorials_1(超初級チュートリアル1 解析モデルの作成と実行)
OpenModelica tutorials_6 Tips(超初級チュートリアル6.便利技 モデルを一つのファイルにまとめる)
24Jun17 MBD-Case - Room and MBD and I Ver3

What's hot (20)

PPTX
OpenModelica tutorials_6 Tips(超初級チュートリアル6.便利技 Tableモデルの使い方)
PPTX
OpenModelica tutorials_4 Model customization2 (超初級チュートリアル4.モデルのカスタマイズ2)
PDF
2019年 これからの人向け 超速習!流体解析ツールボックスOpenFOAM
PDF
高速にコンテナを起動できるイメージフォーマット
PDF
PHPからgoへの移行で分かったこと
PDF
イマドキのExcelスクショの撮り方
PPTX
GraphQLのsubscriptionで出来ること
PDF
Azure Network 概要
PDF
FMI1.0 FMI for Co-Simulation について
PDF
Pythonによる黒魔術入門
PDF
PHPで大規模ブラウザゲームを開発してわかったこと
PDF
Reactive extensions入門v0.1
PPTX
本当は恐ろしい分散システムの話
PPTX
Mixed Reality Toolkit V3について
PDF
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
PDF
Goでかんたんソースコードの静的解析
PDF
Riderはいいぞ!
PDF
Linux女子部 systemd徹底入門
PDF
MHA for MySQLとDeNAのオープンソースの話
PDF
最適化計算/パラメータスタディーとFreeCADの連携についての調査
OpenModelica tutorials_6 Tips(超初級チュートリアル6.便利技 Tableモデルの使い方)
OpenModelica tutorials_4 Model customization2 (超初級チュートリアル4.モデルのカスタマイズ2)
2019年 これからの人向け 超速習!流体解析ツールボックスOpenFOAM
高速にコンテナを起動できるイメージフォーマット
PHPからgoへの移行で分かったこと
イマドキのExcelスクショの撮り方
GraphQLのsubscriptionで出来ること
Azure Network 概要
FMI1.0 FMI for Co-Simulation について
Pythonによる黒魔術入門
PHPで大規模ブラウザゲームを開発してわかったこと
Reactive extensions入門v0.1
本当は恐ろしい分散システムの話
Mixed Reality Toolkit V3について
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Goでかんたんソースコードの静的解析
Riderはいいぞ!
Linux女子部 systemd徹底入門
MHA for MySQLとDeNAのオープンソースの話
最適化計算/パラメータスタディーとFreeCADの連携についての調査
Ad

Similar to OpenModelica tutorials_7-5 Stream variable(超初級チュートリアル7-5.番外編 Stream変数) (20)

PDF
Modeling an ODE: 3 different approaches - Part 3
DOCX
Lab 2.docx
PDF
Design of de-coupler for an interacting tanks system
PDF
1D Simulation of intake manifolds in single-cylinder reciprocating engine
PDF
Poster: Characterizing Ignition behavior through morphing to generic curves
PDF
Hydraulic Scilab toolbox for water distribution systems
PDF
Engineering project non newtonian flow back step
PDF
3.10 valves modeling dynamics - engineering libre-texts
PPT
Project Presentation Nus
PPT
Project Presentation Nus
PDF
Bifurcation Analysis and Model Redictive the Control of the Jewettforger-Kron...
PDF
Bifurcation Analysis and Model Redictive the Control of the Jewettforger-Kron...
PPT
6주차
PDF
Sensors and Actuators Engineering System Instrumentation 2nd Silva Solution M...
PDF
The describing function
PDF
Simple Exponential Observer Design for the Generalized Liu Chaotic System
PPTX
EE-433-L2discrete_control_kfupm____.pptx
DOCX
Conservation of Mass_ long form (Completed)
PDF
Sensors and Actuators Engineering System Instrumentation 2nd Silva Solution M...
PDF
Sensors and Actuators Engineering System Instrumentation 2nd Silva Solution M...
Modeling an ODE: 3 different approaches - Part 3
Lab 2.docx
Design of de-coupler for an interacting tanks system
1D Simulation of intake manifolds in single-cylinder reciprocating engine
Poster: Characterizing Ignition behavior through morphing to generic curves
Hydraulic Scilab toolbox for water distribution systems
Engineering project non newtonian flow back step
3.10 valves modeling dynamics - engineering libre-texts
Project Presentation Nus
Project Presentation Nus
Bifurcation Analysis and Model Redictive the Control of the Jewettforger-Kron...
Bifurcation Analysis and Model Redictive the Control of the Jewettforger-Kron...
6주차
Sensors and Actuators Engineering System Instrumentation 2nd Silva Solution M...
The describing function
Simple Exponential Observer Design for the Generalized Liu Chaotic System
EE-433-L2discrete_control_kfupm____.pptx
Conservation of Mass_ long form (Completed)
Sensors and Actuators Engineering System Instrumentation 2nd Silva Solution M...
Sensors and Actuators Engineering System Instrumentation 2nd Silva Solution M...
Ad

More from Shigenori Ueda (10)

PPTX
CAE初心者サークル_2018年の振り返りと2019年の目標
PDF
Consideration of cae learner community
PPTX
Redmineによる試験勉強管理の結末
PPTX
計算力学技術者試験 Redmineによる試験勉強管理
PPTX
計算力学技術者試験勉強会の告知
PPTX
170415 MBD-Case_Room and MBD and I Ver2
PDF
170311 MBD-Case_Room and MBD and I Ver1
PDF
161126 Introduction of the investigative action about Examples of Modelica St...
PDF
161029 open cae-studygroup_openmodelicaexample_onemass2
PDF
160917 オープンcae勉強会 open_modelicaexample_onemass
CAE初心者サークル_2018年の振り返りと2019年の目標
Consideration of cae learner community
Redmineによる試験勉強管理の結末
計算力学技術者試験 Redmineによる試験勉強管理
計算力学技術者試験勉強会の告知
170415 MBD-Case_Room and MBD and I Ver2
170311 MBD-Case_Room and MBD and I Ver1
161126 Introduction of the investigative action about Examples of Modelica St...
161029 open cae-studygroup_openmodelicaexample_onemass2
160917 オープンcae勉強会 open_modelicaexample_onemass

Recently uploaded (20)

PDF
Enhancing Cyber Defense Against Zero-Day Attacks using Ensemble Neural Networks
PPTX
UNIT-1 - COAL BASED THERMAL POWER PLANTS
PDF
Embodied AI: Ushering in the Next Era of Intelligent Systems
PDF
BIO-INSPIRED HORMONAL MODULATION AND ADAPTIVE ORCHESTRATION IN S-AI-GPT
PDF
R24 SURVEYING LAB MANUAL for civil enggi
PDF
PPT on Performance Review to get promotions
PDF
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
PPTX
additive manufacturing of ss316l using mig welding
PPTX
Construction Project Organization Group 2.pptx
PDF
Categorization of Factors Affecting Classification Algorithms Selection
PPTX
CYBER-CRIMES AND SECURITY A guide to understanding
PDF
Well-logging-methods_new................
PPTX
6ME3A-Unit-II-Sensors and Actuators_Handouts.pptx
PPT
Mechanical Engineering MATERIALS Selection
PPTX
Geodesy 1.pptx...............................................
PPTX
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
DOCX
573137875-Attendance-Management-System-original
PDF
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
PDF
Automation-in-Manufacturing-Chapter-Introduction.pdf
PDF
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
Enhancing Cyber Defense Against Zero-Day Attacks using Ensemble Neural Networks
UNIT-1 - COAL BASED THERMAL POWER PLANTS
Embodied AI: Ushering in the Next Era of Intelligent Systems
BIO-INSPIRED HORMONAL MODULATION AND ADAPTIVE ORCHESTRATION IN S-AI-GPT
R24 SURVEYING LAB MANUAL for civil enggi
PPT on Performance Review to get promotions
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
additive manufacturing of ss316l using mig welding
Construction Project Organization Group 2.pptx
Categorization of Factors Affecting Classification Algorithms Selection
CYBER-CRIMES AND SECURITY A guide to understanding
Well-logging-methods_new................
6ME3A-Unit-II-Sensors and Actuators_Handouts.pptx
Mechanical Engineering MATERIALS Selection
Geodesy 1.pptx...............................................
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
573137875-Attendance-Management-System-original
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
Automation-in-Manufacturing-Chapter-Introduction.pdf
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk

OpenModelica tutorials_7-5 Stream variable(超初級チュートリアル7-5.番外編 Stream変数)