バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
constantForceモデルとmassモデルを組み合わせたシンプルなModelicaモデルをシミュレーションしてみる。
OpenModelica Connection Editorでのシミュレーション開始方法。
と
シミュレーション結果の確認方法
などを説明。
前回、結果を予測してあるので、予測と一致しているかをまずは確認する。
登場人物
博識フクロウのフクさん
![指差しフクロウ](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
![技術者太郎](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
シミュレーションモデルの確認
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
今回こそ実際にシミュレーションしてみるんだよね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
うん。
一応、モデルを再掲しておこう。
![constantForce1、constantForce2、mass、-1N、2N、m=1kg](https://www.simulationroom999.com/blog/wp-content/uploads/2021/06/05_masstestモデル.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
前回、シミュレーション結果の加速度を予測したけど、
\(\displaystyle \vec{a}=\frac{\vec{F}}{m}\)
\(\displaystyle \vec{a}=\frac{1}{1}\)
\(\vec{a}=1\)
で、予測は\(1[m/s^{2}]\)
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
本当にそうなるか確認してみよう。
シミュレーション方法
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
で、どうすればシミュレーションできるんだ?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
OpenModelica Connection Editor上部の矢印みたいなアイコンをクリックすればOKだ。
![モデルチェック、全てモデルチェック、モデルのインスタンス化、シミュレーションのセットアップ、シミュレート、変換デバガでシミュレート、アルゴリズムデバガでシミュレート、Simulate with animation、Run The Debugger](https://www.simulationroom999.com/blog/wp-content/uploads/2021/06/02_シミュレーション開始.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
なんだ。
それだけか。
とりあえず押してみる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
ん?
なんかコンパイルみたいなのが入ってる???
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
その通り。
コンパイルが走ってる。
![C:/Program Files/OpenModelica1.17.0-64bit/share/omc/scripts/Compile.bat masstest gcc mingw64 parallel 4 0 PATH = "C:\PROGRA~1\OPENMO~1.0-6\tools\msys\mingw64\bin;C:\PROGRA~1\OPENMO~1.0-6\tools\msys\mingw64\bin\..\..\usr\bin;" mingw32-make: Entering directory 'C:/Users/Username/AppData/Local/Temp/OPENMO~1/OMEdit/masstest' clang -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -c -o masstest.o masstest.c clang -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -c -o masstest_functions.o masstest_functions.c clang -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -c -o masstest_records.o masstest_records.c clang -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -c -o masstest_01exo.o masstest_01exo.c clang -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -c -o masstest_02nls.o masstest_02nls.c clang -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -c -o masstest_03lsy.o masstest_03lsy.c clang -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -c -o masstest_04set.o masstest_04set.c clang -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -c -o masstest_05evt.o masstest_05evt.c clang -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -c -o masstest_06inz.o masstest_06inz.c clang -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -c -o masstest_07dly.o masstest_07dly.c clang -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -c -o masstest_08bnd.o masstest_08bnd.c clang -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -c -o masstest_09alg.o masstest_09alg.c clang -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -c -o masstest_10asr.o masstest_10asr.c clang -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -c -o masstest_11mix.o masstest_11mix.c clang -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -c -o masstest_12jac.o masstest_12jac.c clang -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -c -o masstest_13opt.o masstest_13opt.c clang -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -c -o masstest_14lnz.o masstest_14lnz.c clang -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -c -o masstest_15syn.o masstest_15syn.c clang -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -c -o masstest_16dae.o masstest_16dae.c clang -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -c -o masstest_17inl.o masstest_17inl.c clang -I. -o masstest.exe masstest.o masstest_functions.o masstest_records.o masstest_01exo.o masstest_02nls.o masstest_03lsy.o masstest_04set.o masstest_05evt.o masstest_06inz.o masstest_07dly.o masstest_08bnd.o masstest_09alg.o masstest_10asr.o masstest_11mix.o masstest_12jac.o masstest_13opt.o masstest_14lnz.o masstest_15syn.o masstest_16dae.o masstest_17inl.o -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -L"C:/Users/Username/OneDrive/Modelica/ElectricLinearValve" -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0 -L"C:/Program Files/OpenModelica1.17.0-64bit/lib//omc" -L"C:/Program Files/OpenModelica1.17.0-64bit/lib" -Wl,--stack,16777216,-rpath,"C:/Program Files/OpenModelica1.17.0-64bit/lib//omc" -Wl,-rpath,"C:/Program Files/OpenModelica1.17.0-64bit/lib" -fopenmp -Wl,-Bstatic -lregex -ltre -lintl -liconv -lexpat -lomcgc -lpthread -loleaut32 -limagehlp -lhdf5 -lz -lszip -Wl,-Bdynamic -Wl,-Bdynamic -lSimulationRuntimeC -Wl,-Bdynamic -Wl,-Bdynamic -lomcgc -lregex -ltre -lintl -liconv -lexpat -static-libgcc -luuid -loleaut32 -lole32 -limagehlp -lws2_32 -llis -lsundials_nvecserial -lsundials_sunmatrixdense -lsundials_sunmatrixsparse -lsundials_sunlinsoldense -lsundials_sunlinsolklu -lsundials_sunlinsollapackdense -lsundials_sunlinsolspbcgs -lsundials_sunlinsolspfgmr -lsundials_sunlinsolspgmr -lsundials_sunlinsolsptfqmr -lsundials_sunnonlinsolnewton -lsundials_cvode -lsundials_cvodes -lsundials_idas -lsundials_kinsol -lumfpack -lklu -lcolamd -lbtf -lamd -lsuitesparseconfig -lipopt -lcoinmumps -lpthread -lm -lgfortran -lquadmath -lmingw32 -lgcc_eh -lmoldname -lmingwex -luser32 -lkernel32 -ladvapi32 -lshell32 -lopenblas -lcminpack -Wl,-Bdynamic -lwsock32 -lstdc++ mingw32-make: Leaving directory 'C:/Users/Username/AppData/Local/Temp/OPENMO~1/OMEdit/masstest' コンパイルプロセスが成功.](https://www.simulationroom999.com/blog/wp-content/uploads/2021/06/03_コンパイル画面.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
そういえば、シミュレーションする場合は、
一旦C言語のソースコードを出力して、それをコンパイル&実行するんだっけか。
シミュレーション結果
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
なんかシミュレーションが終わったと同時に空っぽのグラフが出てきた。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」10アップ.png)
これ、なんか波形が出せるのだと思うのだけど、
どうすれば良いのかな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
右側に変数ブラウザってのがあって、
今回接続した、constantForce1、constantForce2、massが並んでると思う。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
うん。並んでる。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
この中のmassを開いて、「a」ってパラメータが加速度なんで
それの左にあるチェックボックスにチェックを入れると加速度がグラフに表示される。
![Auto Scale、Fit in View、Save、Print、Grid、Detailed Grid、No Grid、Log X、Log Y、Setup、変数ブラウザ、masstest、constantForce1、constantForce2、mass、L、Length of component, from left flange to right flange (= flange_b.s - flange_a.s)、Absolute acceleration of component、der(Absolute position of center of component (s = flange_a.s + L/2 = flange_b.s - L/2))、der(Absolute velocity of component)、Mass of the sliding mass、Absolute position of center of component (s = flange_a.s + L/2 = flange_b.s - L/2)、Priority to use s and v as states、Absolute velocity of component](https://www.simulationroom999.com/blog/wp-content/uploads/2021/06/04_プロット画面-1024x432.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者03アップ.png)
お、ちゃんと出てきた!
加速度は予測どおり\(1[m/s^2]\)だね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
うん。
これ以外にも様々なパラメータがあるから、
次回をそれを見て行こう。
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- シミュレーションするモデルと前回の予測を再掲。
- constantForce、massの組み合わせ。
- \(1[m/s^2]\)の加速度。
- シミュレーション開始方法。
- OpenModelica Connection Editor上部の矢印アイコンをクリックするだけ。
- シミュレーション結果確認。
- 予測通りの結果が得られた。
バックナンバーはこちら。
コメント