35
Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus Copyright protected under GPL3 part2 1 / 35 Modelica Fluid Hands-On 2019/06/29(Sat.) zeta_plusplus 流体供給システムのモデル化(part2) [筆者自己紹介] 学歴:機械・航空宇宙工学科 学士 職歴:機械系メーカ勤務、転職歴無し ガスタービン機関のパフォーマンス解析・モデル作成、1D 熱流体 回転機械冷却の冷却システムに関する解析、1D 熱流体・電熱・回転機械 遠心ポンプ内部流に関する解析、1D 流体・回転機械 専門:流体力学、熱力学、航空力学、CAE、オブジェクト指向プログラミング Modelica 使用歴 約 1 年。Modelica 自学自習のお題としてガスタービン系のライブラリ 「PropulsionSystemLibrary」を製作。手を広げて 「FluidSystemComponents」、「AircraftDynamics」を製作中。 Figure 1

Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 1 / 35

Modelica Fluid Hands-On

2019/06/29(Sat.)

zeta_plusplus

流体供給システムのモデル化(part2)

[筆者自己紹介]

◼ 学歴:機械・航空宇宙工学科 学士

◼ 職歴:機械系メーカ勤務、転職歴無し

➢ ガスタービン機関のパフォーマンス解析・モデル作成、1D 熱流体

➢ 回転機械冷却の冷却システムに関する解析、1D 熱流体・電熱・回転機械

➢ 遠心ポンプ内部流に関する解析、1D 流体・回転機械

◼ 専門:流体力学、熱力学、航空力学、CAE、オブジェクト指向プログラミング

◼ Modelica 使用歴

約 1 年。Modelica 自学自習のお題としてガスタービン系のライブラリ

「PropulsionSystemLibrary」を製作。手を広げて

「FluidSystemComponents」、「AircraftDynamics」を製作中。

Figure 1

Page 2: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 2 / 35

Figure 2

1 基本的な流れ

本ハンズオンは3回に分けて実施する。各 part の基本的な流れは以下の通り。

[Part1]

a) ライブラリ読み込みなどの下準備

b) GUIでモデル schema 組立

c) 必要に応じて code を直接編集

d) コンポーネントの解説

[Part2]

e) 各コンポーネントの parameter 解説・値設定

f) 計算実行・結果評価

[Part3]

g) システム構成変更

h) パラメータ設定

i) 計算実行・結果評価

2 各コンポーネント解説・値設定

Parameter の解説は、part1 でコンポーネントが扱う物理現象の解説をかなり省略したので、それも含めて重め

Page 3: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 3 / 35

に解説する。値の設定は現実的そうな領域で適当に設定しているものが多いので淡々と進める。

2.1 Boundary(流体ソース)

Figure 3

コンポーネントのクラス:Modelica.Fluid.Sources.Boundary_pT

コンポーネントの機能・表現する物理現象

流体ソース(供給源)。

圧力・温度を境界条件に与える。質量流量・エンタルピフローは流体システム全体の造り(圧力損失、ポンプ仕

様など)から決まる。ポートの数を設定可能で、2 つ以上の fluid コンポーネントに境界条件を与えることができ

る。圧力・温度は固定値を設定することも、信号線を接続して可変値を与えることも可能。航空機の燃料タンクの

ように、流体供給源の圧力・温度が運用条件に応じて変化する場合に信号入力を使う。

Page 4: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 4 / 35

Parameters

Figure 4

① use_p_in [nond]

スイッチ。圧力を信号線入力(可変値)にするかを選択。チェックを入れると可変値入力となる。

② use_T_in [nond]

スイッチ。圧力を信号線入力(可変値)にするかを選択。チェックを入れると可変値入力となる。

③ use_X_in [nond]

スイッチ。流体の組成比を信号線入力(可変値)にするかを選択。チェックを入れると可変値入力とな

る。

④ use_C_in [nond]

スイッチ。負荷物質の量を信号線入力(可変値)にするかを選択。チェックを入れると可変値入力とな

る。

⑤ p [Pa]

圧力入力値。固定値。

⑥ T [K]

温度入力値。固定値。

⑦ X [nond]

流体の組成(質量比)。固定値。

⑧ C [nond]

付加物質の量。固定値。

⑨ nPorts [nond]

ポート数。接続する他コンポーネントの数とポート数は一致している必要が有る。

設定値

グレイアウトしているものは設定する必要無しなので省略する。

Page 5: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 5 / 35

① P: 101.3*1000 [Pa]

海面高度、標準大気圧力値

② T: 288.15 [K]

= 15degC。海面高度、標準大気温度値

③ nPorts: 1 [nond]

(part1 で設定済みの筈)

2.2 定容積ポンプ

Figure 5

コンポーネントのクラス:FluidSystemComponents.HydroThermal.Components.PumpConstQflow_ideal

コンポーネントの機能・表現する物理現象

流体を圧送。ギアポンプ、ベーンポンプがこれに該当する。油圧作動油・潤滑油粘度が高い流体に適したポンプ。

機器内の容積空間(ex.ギアの歯と歯の間の空間)が回転に伴って動くことで流体を押し出し、ポンプに吐出される

流体の体積流量が回転数に対して 1 義的に決まる。

NkqFlow *= formula 1

k [m**3/rev]: 1回転あたりの押し出し体積

実際には内部リークや粘度の影響で吐出体積流量が低下することがある。しかし、本コンポーネントは最もシン

プルな完全理想ポンプのモデルであり、吐出体積流量の低下は模擬していない。なお、機械回転数は flange を介し

て入力。Mechanics.rotational のコンポーネントと完全互換である。

吐出圧力とポンプ仕事はポンプの特性・作動状態だけでは決定されない。下流の流路圧損の積み上げ結果から決

定される。従って、作動機械回転数が等しくても、流体温度(粘度・密度)・流体開放圧力が異なるとポンプ出口

圧力が異なる。

Page 6: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 6 / 35

),,,,(

)_(

pAmbzetaLossrhonuVf

downstreamdeltaPfpOut

=

=

formula 2

なお、流体が完全非圧縮性の場合、軸パワーは総て圧力上昇となって現れる。圧縮性(体積弾性)が有る場合、

吐出側の比エンタルピと温度は僅かに上昇する。

Parameters

Figure 6

① 「Initialization」の parameter

使う必要無し。計算収束の都合などで variable に初期値を手動設定したい場合のみ使用。

② 「Design Point Definition」の parameter

設定する必要無し。Baseのクラスに設けた parameter だが、本コンポーネントでは使用していない。

③ qFlowDes [m**3/s]

定格点の吐出体積流量。

④ NmechDes [rev/min]

定格点の機械回転数。③と合わせて回転数あたりの吐出体積流量が決まる。

⑤ 「Geometry」の parameter

設定する必要無し。Baseのクラスに設けた parameter だが、本コンポーネントでは使用していない。

Page 7: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 7 / 35

設定値

Figure 6 にてグレイアウトしているものは設定を触る必要無しなので省略する。

① qFlowDes: 0.2 [m**3/s]

= 200 [L/s]。途方もない吐出量だが、非現実的とも言えない。リンク先の消防車両の放水装置は約

2600[L/min]=40[L/s]の吐出能力を持っている。単純に考えると、これを並列に5つ並べれば 200[L/min]

の吐出能力が得られる。(消火士2人には多すぎる供給量だとは考えられるが。)

https://www.morita119.jp/fire_engine/pump/002feature.html

② NmechDes: 10,000 [rev/min]

きりの良い数字なら何でも良い。現在、「1回転あたりの吐出流量を xx にして、、、」「この定格流量

と回転数だとトルクが、、」とポンプ自体の概念設計を行っているわけではないため。非現実的な設定

値を入れても入力する回転数で吐出流量をコントロールできる。

2.3 speed1(角速度ソース)

Figure 7

コンポーネントクラス: Modelica.Mechanics.Rotational.Sources.Speed

コンポーネントの機能・表現する物理現象

Flange に角速度を与える。入力信号値は rad/sとして取り扱われる。トルクは繋いだ回転機械の power から決ま

る。

Page 8: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 8 / 35

Parameters

Figure 8

① phi.start [deg]

角度初期値。

設定値

Figure 8 にてグレイアウトしているものは設定を触る必要無しなので省略する。

① Phi.start: チェックを入れる。値はデフォルトの 0[deg]。

2.4 Ramp1(ランプ信号源・speed1 への入力)

Figure 9

Page 9: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 9 / 35

コンポーネントのクラス: Modelica.Blocks.Sources.Ramp

コンポーネントの機能・表現する物理現象

ランプ(線形変化)入力信号を生成する。

Parameters

Figure 10

Figure 11

① Height [nond]

変化前から変化後の出力値高低差。計算式表現を入力可能。

② Duration [s]

線形変化を行う時間。

③ Offset [nond]

線形変化前の出力値。計算式表現を入力可能。

④ startTime [s]

線形変化開始時刻。

Page 10: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 10 / 35

設定値

Figure 10にてグレイアウトしているものは設定を触る必要無しなので省略する。

① Heigit: (10000 - 100)*(2*Modelica.Constants.pi/60) [nond]

ポンプ軸の回転を 10,000rpm へ加速。(2*Modelica.Constants.pi/60)は[rev/min]から[rad/s]に変換す

るための値。

② Duration: 10 [s]

10 秒間かけて加速。

③ Offset: 100*(2*Modelica.Constants.pi/60) [nond]

最初から微小な回転を与えておく。0[rpm]で開始すると、0 割が原因で計算が止まってしまう。

(2*Modelica.Constants.pi/60)は[rev/min]から[rad/s]に変換するための値。

④ startTime: 10 [s]

時刻 10[s]で加速開始。

2.5 Volume(ボリューム)

Figure 12

コンポーネントのクラス: Modelica.Fluid.Vessels.ClosedVolume

コンポーネントの機能・表現する物理現象

過渡流れの、質量流量と熱量の溜め(=伝播の遅れ)をシミュレートする。質量流量溜めは流体に圧縮性(体積

弾性)が有る場合の現象で、完全非圧縮性の液体の場合は無視できるもの。

𝑑𝑚

𝑑𝑡= 𝑓 (∑𝑚_𝑓𝑙𝑜𝑤 ,

𝑑𝑝

𝑑𝑡, 𝑉, 𝑡) formula 3

𝑑𝑈

𝑑𝑡= 𝑓 [∑(𝑚_𝑓𝑙𝑜𝑤 ∗ ℎ) ,

𝑑𝑝

𝑑𝑡, 𝑉, 𝑡] formula 4

Page 11: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 11 / 35

m [kg]: ボリューム内流体質量

m_flow [kg/s]: 質量流量

p [Pa]: 圧力

V [m**3]: 容積

t [sec]: 時刻

U [J]: 内部エネルギ

h [J/kg]: 比エンタルピ

また、Heat port を通して、流体システムへ熱量を与える/熱量を抜き取ることが可能。筆者の turbojetの非定

常モデルにて、エンジン内を通過するガスと内部構造物の伝熱現象をシミュレートするのに用いている(下のリン

ク)。

http://virtuallabmodelica.blog.jp/archives/15824378.html

Pipes.DynamicPipe のように、配管要素の中で圧力損失と質量・熱量溜めを同時多発で計算するコンポーネント

を用いてもよいのだろうが、意図的に使わない。理由は以下2つ。*筆者の 1DCAE&MBD に関する思想が大いに入っ

ているので従う必要は無い。

① モデルを観てモデリングの細かさレベル・シミュレートしている現象の思想が読み取れるようにしたい。

1コンポーネントの現象が複雑・同時多発にするほど、モデル schematic を観ることからそれらを読み取

るのは難しくなる(見掛け上のコンポーネントは減り、一見 simple でスッキリして見えるが)。

② デバッグ・計算結果のトレースがしやすく、バグ探し・予想外な結果の要因探りが楽になる。意図しない

挙動・予想外の計算結果に遭遇した場合に、各コンポーネントが表現している物理現象が少なければ少な

いほど、観るべきコンポーネントを選び易く、追うべき方程式が減る。

余談だが、本コンポーネントは、流体の圧縮性が小さく、計算結果に有意な影響を与えない場合でも、複雑な流

体システムの過渡計算を実行するときに、計算収束性を改善してくれることが有る。しかし逆に、turbojet モデル

に ClosedVolume を初めて実装したとき(下のリンク)のように、初期値次第で計算が回らなくなってしまう事が起

こりうるので収束性を改善してくれると一概には言えない。

http://virtuallabmodelica.blog.jp/preview/edit/5536961ee38bb24772e778b3ef7c2891

Parameters

Figure 13

① V [m3]

Page 12: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 12 / 35

容積。圧縮性が有る場合、大きい値にするほど、過渡時の質量・熱量の溜めが大きく、システムの応答

が鈍くなる。

② nPorts [nond]

ポート数。

③ use_portsData [enum]

ボリューム出入口部のロスを含めるか否か。このボリュームは実際の閉容器ではなく、管路内の質量・

熱量溜めを代表する仮想的なものなので、出入口ロスを考える必要が無い。

また、機能説明の項でも述べたが、筆者の思想に「1コンポーネントを as simple & fundamental as

possible に」が有るので使わないことを推奨する。出入口部にロス源が有るのなら、ロスを計算するコ

ンポーネントをボリュームの隣に設足すれば済むし、ロス源の存在が schematic を一見して判る。

④ portsData [nond]

出入口ロス係数データ。今回、使わない。

設定値

グレイアウトしているものは設定を触る必要無しなので省略する。

① V: 0.010 [m**3]

=10 [L]。現実的そうな適当な大きさ。

② nPorts: 2 [nond]。Part1で設定済みの筈。

③ use_portsData: false

2.6 pipe(配管)

Figure 14

Page 13: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 13 / 35

コンポーネントのクラス:Modelica.Fluid.Pipes.StaticPipe

コンポーネントの機能・表現する物理現象

直管の管内摩擦による圧力損失をシミュレートする。Moody 線図に基づいた計算モデルが組み込まれている。

Figure 15

管内流れは十分に発達したものを仮定している。そのため、注意事項として、入口・曲がり部直後の流れの乱れ

の効果は加味できない、また、長さ/直径が小さいほど予測精度が下がる。

Fluid ライブラリ内の以下のクラスに詳しい解説が記されている。

Modelica.Fluid.UsersGuide.ComponentDefinition.WallFriction

Page 14: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 14 / 35

Parameters

Figure 16

① isCircular [enum]

管断面系が円形か否か。

② nParallel [nond]

並行管の数。全く同一の管が並行多数有る場合1より大きな整数を入力する。この時、圧力損失は、同

一流路断面積を持つ1本の管と同じにはならない。体積流量は1本の管の流路断面積 x数となる一方で、

圧力損失算出には Re・流速は1本の管の値が使われるためである。

③ length [m]

管長さ。

④ diameter [m]

管直径。

⑤ crossArea [m2]

流路断面積。円形断面管の場合は入力不要。

⑥ perimeter [m]

流路断面の周長。円形断面管の場合は入力不要。

⑦ roughness [m]

管内表面粗さ。相対粗さ[nond]ではなく、絶対粗さで有次元数であることに注意されたい。

⑧ height_ab [m]

管の出入口の高低差。head差の影響を加味したい場合に使う。値は、 [ポート bの高さ]-[ポート a の

高さ]を入力する。

Page 15: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 15 / 35

設定値

グレイアウトしているものは設定する必要無しなので省略する。

① isCircular: true (default)

② nParallel: 1 [nond] (default)

③ length: 5 [m]

④ diameter: 0.5 [m]

⑤ roughness: 2.5e-5 [m] (default)

2.7 pipe1(配管)

Figure 17

コンポーネントのクラス: 省略。項 2.6と同じ。

コンポーネントの機能・表現する物理現象

省略。項 2.6と同じ。

Parameters

省略。項 2.6と同じ。

Page 16: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 16 / 35

設定値

Figure 18

グレイアウトしているものは設定する必要無しなので省略する。

① isCircular: true (default)

② nParallel: 1 [nond] (default)

③ length: 1 [m]

④ diameter: 0.2 [m]

⑤ roughness: 2.5e-5 [m] (default)

Page 17: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 17 / 35

2.8 pipe2(配管)

Figure 19

コンポーネントのクラス: 省略。項 2.6と同じ。

コンポーネントの機能・表現する物理現象

省略。項 2.6と同じ。

Parameters

省略。項 2.6と同じ。

設定値

Page 18: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 18 / 35

Figure 20

グレイアウトしているものは設定する必要無しなので省略する。

① isCircular: true (default)

② nParallel: 1 [nond] (default)

③ length: 2 [m]

④ diameter: 0.2 [m]

⑤ roughness: 2.5e-5 [m] (default)

2.9 valveLinear1(流量特性が線形のバルブ)

Figure 21

コンポーネントのクラス: Modelica.Fluid.Valves.ValveLinear

コンポーネントの機能・表現する物理現象

通過質量流量が、前後の圧力差と開度に比例するバルブ。流量/差圧調整のための開度設定が行い易いのが特徴。

𝑑𝑚 = 𝑘 ∗ 𝑜𝑝𝑒𝑛𝑖𝑛𝑔 ∗ 𝑑𝑝 formula 5

𝑘 =𝑑𝑚𝑁𝑜𝑟𝑚

𝑑𝑝𝑁𝑜𝑟𝑚 formula 6

dm [kg/s]: 通過質量流量

k [kg/(s*Pa)]: 質量流量と圧力差の相関を表す係数

dp [Pa]: 圧力差

dmNorm [kg/s]: 定格点質量流量

dpNorm [Pa]: 定格点圧力差

質量流量と圧力差の相関係数は直接入力ではなく、定格点の質量流量・圧力差の入力値から決まる仕様。なので、

相関係数を直接入力するよりも、バルブの開閉ががどれだけ圧力差にピーキーに効くか、を感覚的に設定し易い。

Page 19: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 19 / 35

Parameters

Figure 22

① m_flow_nonminal [kg/s]

定格点の質量流量。

② dp_nominal [Pa]

定格点の圧力差。

設定値

① m_flow_nominal: 100 [kg/s]

ポンプ定格回転時の水供給量(質量流量)の半分。

② dp_nominal: 5*101.3*1000 [Pa]

5 気圧。流体システム全体の圧力損失の中で、バルブ差圧がより支配的となるように大きい値を設定。バル

ブ差圧が最も支配的な圧力損失要素であれば、供給流量や最高圧力をバルブの仕様/開度で調整し易い。開

度全開で差圧5気圧と言うと大きいが、ダイビング可な時計が 10 気圧まで耐えられることを考えると、現

実的な範囲内の圧力ではありそう。

Page 20: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 20 / 35

2.10 valveLinear2(流量特性が線形のバルブ)

Figure 23

コンポーネントのクラス: 省略。項 2.4と同じ。

コンポーネントの機能・表現する物理現象

省略。項 2.4と同じ。

Parameters

省略。項 2.4と同じ。

設定値

Figure 24

① m_flow_nominal: 100 [kg/s]

② dp_nominal: 5*101.3*1000 [Pa]

Page 21: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 21 / 35

2.11 Ramp2(ランプ信号源・valvelinear1 への入力)

Figure 25

コンポーネントのクラス: 省略。項 2.4と同じ。

コンポーネントの機能・表現する物理現象

省略。項 2.4と同じ。

Parameters

省略。項 2.4と同じ。

設定値

Figure 26

① Height: 0 [nond]

バルブ開度を変化させない。

② Duration: 10 [nond]

Height=0なので値は何でも良い。

Page 22: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 22 / 35

③ Offset: 1 [nond]

バルブ全開。

④ startTime: [nond]

Height=0なので値は何でも良い。

2.12 Ramp3(ランプ信号源・valvelinear2への入力)

Figure 27

コンポーネントのクラス: 省略。項 2.4と同じ。

コンポーネントの機能・表現する物理現象

省略。項 2.4と同じ。

Parameters

省略。項 2.4と同じ。

設定値

Figure 28

Page 23: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 23 / 35

① Height: -1 [nond]

バルブ開度を全開(1)から全閉(0)へ変化させる。

② Duration: 10 [nond]

10 [s]かけてバルブを閉じる。

③ Offset: 1 [nond]

バルブ全開。

④ startTime: [nond]

時刻 30[s]でバルブ閉じを開始。

2.13 volume1(ボリューム)

Figure 29

コンポーネントのクラス: 省略。項 2.5と同じ。

コンポーネントの機能・表現する物理現象

省略。項 2.5と同じ。

Parameters

省略。項 2.5と同じ。

Page 24: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 24 / 35

設定値

Figure 30

グレイアウトしているものは設定を触る必要無しなので省略する。

① V: 0.010 [m**3]

=10 [L]。現実的そうな適当な大きさ。

② nPorts: 2 [nond]。Part1で設定済みの筈。

③ use_portsData: false

2.14 volume2(ボリューム)

Figure 31

Page 25: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 25 / 35

コンポーネントのクラス: 省略。項 2.5と同じ。

コンポーネントの機能・表現する物理現象

省略。項 2.5と同じ。

Parameters

省略。項 2.5と同じ。

設定値

Figure 32

グレイアウトしているものは設定を触る必要無しなので省略する。

① V: 0.010 [m**3]

=10 [L]。現実的そうな適当な大きさ。

② nPorts: 2 [nond]。Part1で設定済みの筈。

③ use_portsData: false

2.15 pipe3(配管)

Page 26: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 26 / 35

Figure 33

コンポーネントのクラス: 省略。項 2.6と同じ。

コンポーネントの機能・表現する物理現象

省略。項 2.6と同じ。

Parameters

省略。項 2.6と同じ。

設定値

Figure 34

グレイアウトしているものは設定する必要無しなので省略する。

① isCircular: true (default)

② nParallel: 1 [nond] (default)

③ length: 0.1 [m]

④ diameter: 0.1 [m]

⑤ roughness: 2.5e-5 [m] (default)

Page 27: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 27 / 35

2.16 pipe4(配管)

Figure 35

コンポーネントのクラス: 省略。項 2.6と同じ。

コンポーネントの機能・表現する物理現象

省略。項 2.6と同じ。

Parameters

省略。項 2.6と同じ。

設定値

Figure 36

Page 28: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 28 / 35

グレイアウトしているものは設定する必要無しなので省略する。

① isCircular: true (default)

② nParallel: 1 [nond] (default)

③ length: 0.1 [m]

④ diameter: 0.1 [m]

⑤ roughness: 2.5e-5 [m] (default)

2.17 boundary1(流体ソース)

Figure 37

コンポーネントのクラス: 省略。項 2.1と同じ。

コンポーネントの機能・表現する物理現象

省略。項 2.1と同じ。

Parameters

省略。項 2.1と同じ。

Page 29: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 29 / 35

設定値

Figure 38

グレイアウトしているものは設定する必要無しなので省略する。

① P: 101.3*1000 [Pa]

海面高度、標準大気圧力値

② T: 288.15 [K]

= 15degC。海面高度、標準大気温度値

③ nPorts: 2 [nond]

(part1 で設定済みの筈)

3 計算実行・結果評価

3.1 シミュレーションセットアップ

Figure 39

物理時間で何秒間シミュレーションを実行するか、などのセットアップを行う。デフォルト設定では、時刻 1[s]

Page 30: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 30 / 35

までのシミュレーションしか実行されない。

「S」の記されたボタンを押してセットアップウィンドウを開く。

Figure 40

赤枠で囲った項目をセットする。数値計算手法の設定や出力ファイルを mat から csvに変えたりと様々な項目が

有るが、OpenModelica 上で計算を回して結果を表示させるには赤枠部のセットアップで十分。

① Start time: シミュレーション(&結果記録)の開始時刻

途中まで計算結果を記録したくない特別な理由がなければ、0 [s]設定から変更しない。

② Stop time: 計算終了時刻

時刻 10 – 20 [s]でポンプ回転を加速、30 – 40 [s]で片方のバルブを閉じるので、どこかで時間遅れが起き

るかもしれないことに備えて 50 – 60 [s]は確保しておく。

③ Number of interval か Interval の選択

計算の最大時間刻み幅を、刻みの数で指定するか、刻みの幅で指定するか選ぶ。

純粋にシミュレーションを実行する場合、interval を選択することを推奨。Number of interval 指定だと、

stop time を変更する度に時間刻み幅が変わって計算精度・収束性が変化してしまうため。

計算結果ファイルのサイズを抑えたい場合や、結果を周波数に関わるポスト処理に供する場合には number

of interval が有用。

「OK」を押すとセットアップが反映され、かつコンパイルとシミュレーションが開始される。

3.2 計算実行

シミュレーションを実行すると、以下のウィンドウが右下に現れる。(後ろに OpenModelica ウィンドウに隠れて

いる場合がある)

押すと、セットアップ完了ではな

く、コンパイル&シミュレーショ

ン実行が始まる点に注意。

Page 31: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 31 / 35

Figure 41

スペックの良い PC でも割と時間が掛るが、時間を要しているのは C コードへの変換、コンパイル&exe1 ファイ

ルの生成であって、シミュレーション実行自体に要している訳ではない。パラメーラや作動条件だけ変えて再計算

を実行する場合、同じ時間を待つ必要は無い。

Figure 42

計算が無事に終了すると、OpenModelicaの画面が plottingウィンドウに自動で切り替わり、何も表示のない plot

Variable browser

Page 32: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 32 / 35

と、plot する variable を指定するための variable browser が表示される。

3.3 結果の観察・評価

計算を観て、part1で述べた要求機能・要求スペックが達成できているかを確認する。

[要求機能]

① 供給元ポンプは供給先バルブの操作に関係無く、定回転作動させておく。

② 一方のバルブが全開になっても、他方に、指定の体積流量を供給できる。(供給量の下限)

③ 一方のバルブが全閉になっても、他方の体積流量が、指定値を上回る事が無い。(供給量の上限)

④ 供給元ポンプ出口の流体圧力が制限値を超えることが無い。(圧力の上限)

⑤ 両方のバルブを全閉にできる。

[要求スペック]

① 作動流体: 水

② 需要点(消費点)要求流量: 0~100 [L/s] (0~0.1 [m3/s])

③ システムの最大許容圧力: 1000 [kPa](10 [bar])

④ 噴射口の流速上限: 15 [m/s] (流量 100[L/s], 流速 15[m/s]で反力が約 0.15ton)

訂正:10 [m/s] -> 15 [m/s]。Part1 資料の記載値は誤記。10 [m/s]上限では part3のシステム構成変更

を行っても達成できない。

要求スペック①は Mediaに水を指定した part1の段階で達成済み。

valveLinear1 側供給流量(valveLinear1.V_flow)

Figure 43

両バルブ全開状態で 100[L/s](0.1[m3/s])供給出来ており、要求を満足。供給流量には上限を設けていないの

でバルブ閉じ操作以降の供給量増加は気にしなくて良い。

Page 33: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 33 / 35

valveLinear2 側供給流量(valveLinear2.V_flow)

Figure 44

こちらも、両バルブ全開状態で 100[L/s](0.1[m3/s])供給出来ており、要求を満足。当然、バルブ閉じ操作と

ともに流量が 0 へ向かって減少させれている。

項 3.3.1 と合わせて、要求スペックの②が満足していることを確認した。

ポンプ吐出圧力(pumpConstQflow_ideal1.port_2.p)

システム中でこの点が、圧力最大となる。従って、この点が上限を超えなければシステム全体が要求③を達成

できる。

Figure 45

valve2の閉じ操作操作を終える手前で、上限値の 10[bar]を超過。残念ながら、要求③は未達。

Page 34: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 34 / 35

Pipe3 流速(pipe3.flowModel.vs[1])

Figure 46

Valve2 の閉じ操作を開始して間もなく、上限値 15[m/s]を超過。残念ながら、要求④も未達。

Pipe4 流速(pipe4.flowModel.vs[1])

Figure 47

バルブを閉じて流量を減じている側なので、当然上限値を超過することはない。

ここで、part2 の目標達成。現在のシステム構成・parameter の組み合わせでは要求スペックは達成できないこと

をシミュレーションで確認した。

また要求未達は、2 つ存在する供給流路のうち、片方の流量供給を減らす・断つ操作を行ったときに発生するこ

とも判明した。従って、part3 では、片方の流量供給を断っても最高到達圧力と供給継続側の流速が上限を超えな

いようにシステム構成を変更することがテーマとなる。

Page 35: Modelica ライブラリ勉強会 2019/06/29 zeta plusplusvirtuallabmodelica.blog.jp/OpenModelica全般/handsOn...2019/06/29  · Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Modelica ライブラリ勉強会 2019/06/29 zeta_plusplus

Copyright protected under GPL3 part2 35 / 35

[次回までの宿題]

⚫ 今回動かしたモデルのパラメータ・作動条件を色々変えて“遊ぶ”こと。

⚫ Part3 のテーマである、最高到達圧力と供給継続側の流速を上限を超えさせないようなシステム構成、または

parameter 設定値変更を考案してみること。きっと、筆者が part3 で施そうとしている変更案以外にも解が出

てくる筈。ただし、制約条件として、流量供給機であるポンプと供給流路である pipeのパラメータは変更して

はならないものとする。

以上