2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

OpenModelicaで伝熱流動 IsolatedPipeとSimpleFriction

Last updated at Posted at 2018-11-25

前回までに作ったモデルにThermal→FluidHeatFlow→ComponentsのIsolatedPipeを入れてみました。
isolatedPipe_diam.png
IsolatedPipeの設定項目は下図の通りですが、Simple Frictionの項目がよくわからない・・・
IsolatedPipe_parameter.png

層流の体積流量と圧力損失の組み合わせと、乱流を想定した定格の体積流量と圧力損失を入力して、体積流量から圧力損失を算出するのだろうと考えて、上図の適当な設定でコンパイル、実行すると実行時にエラーが。
assert | error | SimpleFriction: dpNominal has to be > dpLaminar/V_flowLaminar*V_flowNominal!

定格の体積流量を流した時の圧力損失が制約を満足していないらしい。
詳細を確認するため、IsolatedPipeを以下の図のようにView textで見てみると・・・
view_text.png
model IsolatedPipe "Pipe without heat exchange"
extends Interfaces.Partials.TwoPort(final tapT=1);
extends Interfaces.Partials.SimpleFriction;
parameter Modelica.SIunits.Length h_g(start=0)
"Geodetic height (height difference from flowPort_a to flowPort_b)";
equation
// coupling with FrictionModel
volumeFlow = V_flow;
dp = pressureDrop + medium.rhoModelica.Constants.g_nh_g;
// no energy exchange with medium
Q_flow = Q_friction;

と、コメントにcoupling with FrictionModelとあるように、圧力損失計算はSimpleFrictionで行われていることがわかりました。
そこで、SimpleFrictionを探して、View textをしてみると、
friction_view.png
partial model SimpleFriction "Simple friction model"
-前略-
protected
parameter Modelica.SIunits.Pressure dpNomMin=dpLaminar/V_flowLaminarV_flowNominal;
parameter Real k(final unit="Pa.s2/m6", fixed=false);
initial algorithm
assert(V_flowNominal>V_flowLaminar,
"SimpleFriction: V_flowNominal has to be > V_flowLaminar!");
assert(dpNominal>=dpNomMin,
"SimpleFriction: dpNominal has to be > dpLaminar/V_flowLaminar
V_flowNominal!");
k:=(dpNominal - dpNomMin)/(V_flowNominal - V_flowLaminar)^2;
equation
if volumeFlow > +V_flowLaminar then
pressureDrop = +dpLaminar/V_flowLaminarvolumeFlow + k(volumeFlow - V_flowLaminar)^2;
elseif volumeFlow < -V_flowLaminar then
pressureDrop = +dpLaminar/V_flowLaminarvolumeFlow - k(volumeFlow + V_flowLaminar)^2;
else
pressureDrop = dpLaminar/V_flowLaminarvolumeFlow;
end if;
Q_friction = frictionLoss
volumeFlow*pressureDrop;
-後略-
と、元の式が見えます。
15年くらいいろんな流路の圧力損失を計算してきた私ですが、この式は使ったことない・・・
なんだろな?と思っていたところ、SimpleFrictionをダイアグラムビューにすると、ナイスな図が出現。
SimpleFriction_diam.png
圧力損失は層流域では体積流量に比例、乱流域では体積流量の2乗に比例するとして、算出していることが絵的にわかります。

と、わかったのは良いのですが、この算出方法に疑問が残ったところで、今回は終了です。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?