OpenModelicaインストール時に付属してくる3rd-partyライブラリ(読込のための設定が必要)にnuclearなるものが有るので使ってみる。あわよくば、フリーダムガ〇ダムみたく原子力のエンジンのモデルを作ってみたい。
 例モデルが2つ付属しているので、シンプル方をデフォルト設定のまま実行してみる。
singleFluidMoltenSoltReactor_00
 コンパイル失敗。以下のエラーメッセージが出る。[1]は、一目見てpipeの中でエラーが起きていることは判るが、それ以上は容易に判りそうではない。
error message:
------------------------------------------------------------

[1] 23:15:52 Symbolic Error
[Modelica.Fluid.Pipes: 1065:13-1065:140]:
Model is structurally singular, error found sorting equations 
 228: reactor.flowModel.Fs_p[12] = 0.5 * (reactor.crossAreas[11] + reactor.crossAreas[12]) * (reactor.statesFM[13].p - reactor.statesFM[12].p) * reactor.flowModel.nParallel;
241: reactor.flowModel.mus[12] = Modelica.Fluid.Pipes.DynamicPipe$reactor.FlowModel$reactor$flowModel.Medium.dynamicViscosity(Modelica.Fluid.Pipes.DynamicPipe$reactor.FlowModel$reactor$flowModel.Medium.ThermodynamicState(reactor.mediums[11].T, reactor.statesFM[12].p));
227: reactor.flowModel.dps_fg[12] = (-2.0) * reactor.flowModel.Fs_p[12] / (reactor.flowModel.nParallel * (reactor.crossAreas[11] + reactor.crossAreas[12]));
226: $cse213 = Modelica.Fluid.Pipes.DynamicPipe$reactor.FlowModel$reactor$flowModel.WallFriction.massFlowRate_dp_staticHead(reactor.flowModel.dps_fg[12], reactor.flowModel.rhos[12], reactor.flowModel.rhos[13], reactor.flowModel.mus[12], reactor.flowModel.mus[13], 0.24375, reactor.flowModel.diameters[12], 0.0, 0.5 * (reactor.crossAreas[11] + reactor.crossAreas[12]), 0.5 * (reactor.roughnesses[11] + reactor.roughnesses[12]), reactor.flowModel.dp_small / 17.0, reactor.flowModel.Re_turbulent);
403: $STATESET1.J[44] = $DER.reactor.mediums[12].d - Modelica.Fluid.Pipes.DynamicPipe$reactor.Medium.Polynomials_Temp.evaluate_der({-1.882393818685763e-007, -0.6697427191094887, 3753.090901991782}, reactor.mediums[12].T_degC, $DER.reactor.mediums[12].T_degC);
225: reactor.m_flows[12] = $cse213 * reactor.flowModel.nParallel;
206: reactor.mb_flows[12] = reactor.fluidVolumes[12] * $DER.reactor.mediums[12].d;
207: reactor.mb_flows[12] = reactor.m_flows[12] - reactor.m_flows[13];
229: reactor.flowModel.mus[13] = Modelica.Fluid.Pipes.DynamicPipe$reactor.FlowModel$reactor$flowModel.Medium.dynamicViscosity(Modelica.Fluid.Pipes.DynamicPipe$reactor.FlowModel$reactor$flowModel.Medium.ThermodynamicState(reactor.mediums[12].T, reactor.statesFM[13].p));
217: reactor.flowModel.mus[14] = Modelica.Fluid.Pipes.DynamicPipe$reactor.FlowModel$reactor$flowModel.Medium.dynamicViscosity(Modelica.Fluid.Pipes.DynamicPipe$reactor.FlowModel$reactor$flowModel.Medium.ThermodynamicState(reactor.mediums[13].T, reactor.statesFM[14].p));
213: reactor.m_flows[13] = $cse212 * reactor.flowModel.nParallel;
214: $cse212 = Modelica.Fluid.Pipes.DynamicPipe$reactor.FlowModel$reactor$flowModel.WallFriction.massFlowRate_dp_staticHead(reactor.flowModel.dps_fg[13], reactor.flowModel.rhos[13], reactor.flowModel.rhos[14], reactor.flowModel.mus[13], reactor.flowModel.mus[14], 0.24375, reactor.flowModel.diameters[13], 0.0, 0.5 * (reactor.crossAreas[12] + reactor.crossAreas[13]), 0.5 * (reactor.roughnesses[12] + reactor.roughnesses[13]), reactor.flowModel.dp_small / 17.0, reactor.flowModel.Re_turbulent);
215: reactor.flowModel.dps_fg[13] = (-2.0) * reactor.flowModel.Fs_p[13] / (reactor.flowModel.nParallel * (reactor.crossAreas[12] + reactor.crossAreas[13]));
216: reactor.flowModel.Fs_p[13] = 0.5 * (reactor.crossAreas[12] + reactor.crossAreas[13]) * (reactor.statesFM[14].p - reactor.statesFM[13].p) * reactor.flowModel.nParallel;
 for variables 
 reactor.flowModel.Fs_p[12](175), reactor.flowModel.mus[12](162), reactor.flowModel.dps_fg[12](176), $cse213(177), reactor.m_flows[12](178), $DER.reactor.mediums[12].d(197), reactor.mb_flows[12](196), reactor.flowModel.mus[13](174), reactor.flowModel.mus[14](186), reactor.m_flows[13](190), $cse212(189), reactor.flowModel.dps_fg[13](188), reactor.flowModel.Fs_p[13](187), reactor.vs[14](216)


[2] 23:15:52 Translation Error
Internal error Transformation Module PFPlusExt index Reduction Method Pantelides failed!


[3] 23:15:52 Translation Error
[C:/OM113/OM64bit/OMCompiler/Compiler/SimCode/SimCodeUtil.mo: 3851:9-3851:59]: Internal error function createStateSetsSets failed.


[4] 23:15:52 Translation Error
[C:/OM113/OM64bit/OMCompiler/Compiler/SimCode/SimCodeUtil.mo: 637:5-637:146]: Internal error function createSimCode failed [Transformation from optimised DAE to simulation code structure failed]

------------------------------------------------------------
 原因が直ぐには判りそうもないと言えど、核分裂反応による発熱のコンポーネントではなさそうなことも判った。それでは、熱源となっている、「PointKineticMoltenSaltReactor」コンポーネント単体ならば動かせるのではないか。試しに、Fluidの単純回路に接続して動かしてみる。
 取敢えず、受熱流体は水。一番シンプルなOnePhaseのパッケージ。Point...Reactorのparametersは原子力分野初心者にはさっぱり判らない。。。デフォルト値のままにして、nominal powerだけkWオーダーの小さな値に変えておく。
 インプットは、変数名が"rho"で概要が"reactivity input"と記されているが何を指しているのか解らない。適当な値で固定値信号(コンポーネントはrampを使っているが)を入力してみる。

pointReactor01_00

シミュレーション実行結果:
pointReactor01_01


pointReactor01_02
 挙動が”らしい”かどうかさえ解らない。しかし、発熱・温度共に右肩上がりに上昇し、角度も増していくというのが、”起きてはならない動き”なのだけは解る。放っておいたら炉が溶融破壊に至る動きだ。(現実の溶融塩炉は炉の一部が熱でfailすると冷却だけでなく燃料供給も止まる、fail-saveな造り)
pointReactor01_03
 発熱vs.温度を観ると完全に右肩上がり。ポジティブ温度フィードバックになっている。温度602[K]あたりを超えたところで傾き急増するが、この温度を超えると手が付けられない暴走状態に入るということ?
 。。。動きはした。しかし、input portに何を入力するか理解せず使っていて、挙動が妥当かどうかも不明という有様。全うに使うにはこのコンポーネントだけでもソースコード解読が必要なようだ。。。今回はここまで。

<文献紹介>

---------------
[ブログ内リンク]
●ブログトップへ:
http://virtuallabmodelica.blog.jp/

[z_plusplusの他のブログへのリンク]
●地球の重力の井戸の底から:
http://zplusplus-anti-gravity.blog.jp/
a481420c
本ブログと異なり,テーマを絞らずに理工系に繋がる趣味記事をちょくちょく書いているブログです。どうぞお立寄り下さい。 
      




ブログ移転の案内

この記事 でお知らせしたとおり、本ブログはブログサービス下での運営を止め、個人サーバー上のwebページに引越しします。livedoorブログが存続している限り本ブログは閉鎖せず残り続けますが、 この記事 以降の記事は総て こちらの新ブログ にて公開してゆきますので、これからもよろしくお願いします。

文献紹介

Modelica, Model-based degign

Modelicaによるシステムシミュレーション入門

入門者に最適の書。Modelicaって何?という導入から、簡単なコードベースやGUIベースの例モデルまで解説。筆者も入門時に手に取った。訳に少し癖が有る印象だが、英語書物がハードルになる方には確かな助けになる筈。


[amazon、紙面・電子]
[楽天、紙面書籍版] [AU payマーケット、紙面書籍版]
[honto、電子版] [楽天、電子書籍版] [AU payマーケット、電子書籍版] [7ネットショッピング、電子書籍版]

Introduction to Modeling and Simulation of Technical and Physical Systems with Modelica

「Modelicaによるシステムシミュレーション入門」の英語版原書。英語に抵抗がなければこちらを入手したら良いと思う。


[amazon、電子版・紙面版]
[Yahoo、紙面書籍版]

Principles of Object-Oriented Modeling and Simulation with Modelica 3.3 A Cyber-Physical Approach (Wiley-IEEE Press)

本格的にModelicaを使い込むなら必携の書。辞書的に適宜調べものをするような形で手元に有ると頼もしい武器。量が多いので電子版もお勧め。筆者もKindle版を所有し、かなりの頻度で参照している。


[amazon、電子版・紙面版]
[楽天、電子書籍版]

はじめてのModelicaプログラミング -1日で読める わかる Modelica入門-


[amazon、紙面版]

Modelicaによるモデルベースシステム開発入門-ModelicaとFMIの活用による実践的モデルベース開発-


[amazon、電子版・紙面版]

Introduction to Physical Modeling With Modelica


[amazon、紙面版] [楽天、紙面書籍版]

Development of Modelica Library for Dynamics Simulation of CHP Plant: Modelica library structure design and modeling for transient simulation of Combined Heat and Power (CHP) plant


[amazon、紙面版]

Python

入門 Python 3


[amazon、紙面版]

かんたん Python


[honto、電子版]

スッキリわかるPython入門 (スッキリシリーズ)


[amazon、電子版・紙面版]

ゲームを作りながら楽しく学べるPythonプログラミング


[amazon, 紙面版・電子版] [honto、電子版]

流体力学(Fluid Mechanics)

Fundamentals of Fluid Mechanics


[amazon、紙面版] [Yahoo、紙面書籍版]

[amazon、紙面版]

[Yahoo、紙面書籍版]


熱力学(Thermodynamics), 熱機関(Engine, power system)

Fundamentals of Engineering Thermodynamics


[amazon, 紙面版]

Fundamentals of Jet Propulsion with Applications


[amazon、電子版・紙面版]
[amazon、紙面版]


航空力学/飛行力学(Aerodynamics/Flight Dynamics)

航空機の飛行力学と制御


[amazon, 紙面版]

Flight Stability and Automatic Control


[amazon, 紙面版]


------------------------------