SlideShare a Scribd company logo
12
Most read
16
Most read
19
Most read
OpenModelica超初級チュートリアル
5.オリジナルモデルの作成
1
Copyright (C) 2017 Shigenori Ueda
Released under the MIT license
https://opensource.org/licenses/mit-license.php
注意事項
・ 本チュートリアルは以下の内容が理解できていることを前提と
しております
「OpenModelica超初級チュートリアル1.解析モデルの作成と実行」
「OpenModelica超初級チュートリアル2.コーディング」
「OpenModelica超初級チュートリアル3.モデルのカスタマイズ1」
「OpenModelica超初級チュートリアル4.モデルのカスタマイズ2」
・ OpenModelica1.11.0 (64bit – windows版)を利用して
本チュートリアルは作成されています
2
オリジナルモデルの作成
自分で一からモデルを作ってみましょう
オリジナルモデルが作れるようになると?
 任意の数式したモデルを作成できるようになる
 オリジナルのライブラリを作れるようになる
 既存ライブラリが何をしているか分かる
3
実数a,bを入力し、a+b=cを計算するモデルを作成する
必要なクラス
• aを入力するモデル
• bを入力してa+b=cを
計算するモデル
• 実数を引き渡すポート
• aとbの接続図
aを入力
bを入力して
a+b=cを計算
aとbの接続図
ポート ポート
作成するモデル
4
作成するクラスのデータ
モデルの役割 クラスタイプ モデル名 パラメータ名 変数名 コネクター equation
実数を引き渡すポート connector Port 実数 var - - -
aを入力 model Input_a 実数 a - Port a=Port.var
bを入力
a+bを計算
model Cal_c 実数 b
実数 a
実数 c Port a+b=c
a=Port1.var
aとbの接続図 model a_Plus_b - - - -
各クラスを作成する際に必要なデータを以下に整理します
モデル名やパラメータ名などは任意です
表の上から順に作成します
まずは簡単に何が必要か簡単に確認してください
5
connectorはクラス同士がやり取りする変数を定義したものです
以下の書式で表されます
connectorの書式
connector␣コネクター名
やり取りしたい変数の型␣変数名;
annotation(アイコン情報);
end␣コネクター名
connectorの書式
*変数は複数設定することが可能です
6
connector「Port」を作成してみましょう。
connectorの作成1
「Modelicaクラス新規作成」から、名前を「Port」、クラス・タイプを「Connector」にして
モデルを新規作成してください
①
テキストビューから以下のようにconnectorが作成できたことを確認しましょう②
7
connectorの作成2
やり取りする変数を定義します
今回は実数をやり取りするため、Real型で宣言し、変数名をvar(variableの略)にします
③
アイコンの設定を行うため、「アイコンビュー」から「長方形」を使って、
表示範囲(coordinate System)全体に長方形を書いてください
④
8
connectorの作成3
長方形を右クリックして、「特性」をクリックし
「塗りつぶしタイプ」を以下のように設定し、アイコンの色を定義してください。
これで「Port」が完成しました。
⑤
9
「aを入力」の作成1
10
モデルの役割 クラスタイプ モデル名 パラメータ名 変数名 コネクター equation
aを入力 model Input_a 実数 a - Port a=Port.var
以下の表をもとにモデルを作成します
クラスタイプをmodel、モデル名をInput_aにして新しいクラスを作成してください①
パラメータとなる実数「a」を追加してください②
11
tutorial4で行ったように、「アイコンビュー」から「Port」をドラッグ&ドロップして追加してください③
「aを入力」の作成2
テキストビューを確認すると
「Port」のインスタンスが作成されています
12
入出力の関係式
インスタンス化されたconnectorの変数と、
宣言したパラメータや変数は等式で接続する必要があります
connector␣コネクター名
やり取りしたい変数の型␣変数名2;
annotation(アイコン情報);
end␣コネクター名
connectorの書式
変数の型␣変数名1;
equation
connectorの変数と宣言した変数の接続
connector名␣インスタンス名;
インスタンス名.変数名2=変数名1
参考
Modelica言語では、階層を「.(ドット)」で表します
Memo
13
「aを入力」の作成3
パラメータ「a」と、「Port1」の変数「var」を結び付けるため、
以下の式をequationセクションに記述します
④
Input_aの値をPortによって他のブロックへ受け渡せるようになります
a
Input_a
var 他の
モデル
Port
コネクターの役割のイメージ
14
「aを入力」の作成4
アイコンを以下のように設定します。これで「Input_a」の完成です。⑤
15
「bを入力、a+b=cを計算」の作成1
モデルの役割 クラスタイプ モデル名 パラメータ名 変数名 コネクター equation
bを入力
a+bを計算
model Cal_c 実数 b 実数 c
実数 a
Port a+b=c
a=Port1.var
これまでと同様に、表を参考にモデルを作成します
表を参考に新しいクラス「Cal_c」を作成してください①
パラメータとなる実数「b」を追加してください②
変数となる実数「c」、「a」を追加してください
右図のようになっていることを確認してください
③
16
「bを入力、a+b=cを計算」の作成2
「アイコンビュー」から「Port」をドラッグ&ドロップして追加してください④
equationセクションに、ポートからの値を受け取る等式「a = Port1.var」を追加してください⑤
17
「bを入力、a+b=cを計算」するモデルの作成3
「a + b = c」を追加してください⑥
Modelica言語は、非因果的モデリングのため
方程式の左辺、右辺
等式の順番
は計算結果と関係ありません。
入出力の関係式は、equationセクションの一番下に
記述すると計算式と混在せず可読性の高いコードになります
Memo
入出力の関係式
18
「bを入力、a+b=cを計算」するモデルの作成4
以下のようにアイコンを作成し、モデルを完成させてください⑦
19
「a+bの接続図」の作成1
モデルの役割 クラスタイプ モデル名 パラメータ名 変数名 コネクター equation
aとbの接続図 model a_Plus_b - - - -
最後に、これまで作成した「Input_a」と「Calc_c」を接続するためのクラスを作成します
新規クラスを作成し、「Input_a」と「Cal_c」のインスタンスを作成し、接続してください①
「Input_a」の「a」と「Cal_c」の「b」に1を代入してください②
チェックを実行し、問題なければシミュレートを実行し「c」の値が2になっていることを確認してください③
Exercise
・「bを入力」と「a+b=cを計算」のモデルをそれぞれ別に作成してください。
その場合「a+b=cを計算」モデルのポートはいくつになるでしょうか?
20
その他ーModelicaにおける命名規則
以下のように命名規則を定めることで可読性が高く、変数のバッティングを防ぐことができます。
1. functionクラス以外のclass名は大文字で始める
2. 変数名は小文字で始める。しかし、一文字の場合は大文字にする場合もある
例.自然長s_rel0, 温度の変数 T
3. 複数の単語からなる名前は、最初の文字は上記1~3に基づいて決定し
残りの単語を大文字にする
例.変数 onePlus,
4. アンダーバーは名前の最後に使う。
5. 同様のコネクタインスタンスが二つある場合は、正負を表すpとnやaとbなどを使い区別する
例.flange_a, flange_b
21

More Related Content

PPTX
OpenModelica tutorials_3 Model customization1 (超初級チュートリアル3.モデルのカスタマイズ1)
PPTX
OpenModelica tutorials_2 coding (超初級チュートリアル 2.コーディング)
PPTX
OpenModelica tutorials_6 Tips(超初級チュートリアル6.便利技 CSVファイルの出力)
PPTX
OpenModelica tutorials_4 Model customization2 (超初級チュートリアル4.モデルのカスタマイズ2)
PPTX
OpenModelica tutorials_6 Tips(超初級チュートリアル6.便利技 モデルを一つのファイルにまとめる)
PDF
OpenModelica tutorials_7 PlantModel(超初級チュートリアル7.プラントモデル)
PPTX
OpenModelica tutorials_1(超初級チュートリアル1 解析モデルの作成と実行)
PDF
OpenModelica tutorials_7-5 Stream variable(超初級チュートリアル7-5.番外編 Stream変数)
OpenModelica tutorials_3 Model customization1 (超初級チュートリアル3.モデルのカスタマイズ1)
OpenModelica tutorials_2 coding (超初級チュートリアル 2.コーディング)
OpenModelica tutorials_6 Tips(超初級チュートリアル6.便利技 CSVファイルの出力)
OpenModelica tutorials_4 Model customization2 (超初級チュートリアル4.モデルのカスタマイズ2)
OpenModelica tutorials_6 Tips(超初級チュートリアル6.便利技 モデルを一つのファイルにまとめる)
OpenModelica tutorials_7 PlantModel(超初級チュートリアル7.プラントモデル)
OpenModelica tutorials_1(超初級チュートリアル1 解析モデルの作成と実行)
OpenModelica tutorials_7-5 Stream variable(超初級チュートリアル7-5.番外編 Stream変数)

What's hot (20)

PPTX
OpenModelica tutorials_6 Tips(超初級チュートリアル6.便利技 Tableモデルの使い方)
PPTX
24Jun17 MBD-Case - Room and MBD and I Ver3
PDF
オープンソースによるモデルベースデザイン(OpenModelica)
PDF
FMI1.0 FMI for Co-Simulation について
PDF
最適化計算/パラメータスタディーとFreeCADの連携についての調査
PDF
2019年 これからの人向け 超速習!流体解析ツールボックスOpenFOAM
PDF
Migration Guide from Java 8 to Java 11 #jjug
PDF
OpenMDAOの最適化を試す(第23回オープンCAE勉強会@関西)
PDF
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
PDF
Free cad 0.19.2 and cfdof (Japanese Ver.)
PPTX
FMU4FOAM
PDF
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
PDF
Kubernetes 導入から始める DevOps について
PDF
Azure Network 概要
PPTX
Salome-Meca応力解析中級教材:大変形弾塑性解析による引張試験の再現
PDF
Pull Request & TDD 入門
PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
PDF
TripleO Deep Dive 1.1
PDF
MHA for MySQLとDeNAのオープンソースの話
PDF
Advanced Model Inferencing leveraging Kubeflow Serving, KNative and Istio
OpenModelica tutorials_6 Tips(超初級チュートリアル6.便利技 Tableモデルの使い方)
24Jun17 MBD-Case - Room and MBD and I Ver3
オープンソースによるモデルベースデザイン(OpenModelica)
FMI1.0 FMI for Co-Simulation について
最適化計算/パラメータスタディーとFreeCADの連携についての調査
2019年 これからの人向け 超速習!流体解析ツールボックスOpenFOAM
Migration Guide from Java 8 to Java 11 #jjug
OpenMDAOの最適化を試す(第23回オープンCAE勉強会@関西)
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Free cad 0.19.2 and cfdof (Japanese Ver.)
FMU4FOAM
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
Kubernetes 導入から始める DevOps について
Azure Network 概要
Salome-Meca応力解析中級教材:大変形弾塑性解析による引張試験の再現
Pull Request & TDD 入門
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
TripleO Deep Dive 1.1
MHA for MySQLとDeNAのオープンソースの話
Advanced Model Inferencing leveraging Kubeflow Serving, KNative and Istio
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
Ad

OpenModelica tutorials_5 Make Original Models(超初級チュートリアル5.オリジナルモデルの作成)