狠狠撸

狠狠撸Share a Scribd company logo
OpenModelica超初級チュートリアル
3.モデルのカスタマイズ
Copyright (C) 2017 Shigenori Ueda
Released under the MIT license
https://opensource.org/licenses/mit-license.php
注意事項
? 本チュートリアルは以下の内容が理解できていることを前提と
しております
「OpenModelica超初級チュートリアル 1.解析モデルの作成と実行」
「OpenModelica超初級チュートリアル 2.コーディング」
? OpenModelica1.11.0 (64bit – windows版)を利用して
本チュートリアルは作成されています
モデルのカスタマイズ
既存のモデルを自分の欲しいモデルになるように改造してみましょう。
カスタマイズができるようになると?
? 既存ライブラリを自分好みに改造できる
? オリジナルのライブラリを作る足掛かりになる
? 惭辞诲别濒颈肠补言语に详しくなる
モデルの種類
モデルは用途に応じて大きく以下に分類されます*
?モデル同士の接続関係を表す接続図(Connection Diagram)
?モデルの構造を表す部品図
まずは接続図を対象に
ある変数を他の変数の関数にカスタマイズ
してみましょう。
*接続図を使ってモデルの構造を表現する場合もあるため
あくまで便宜上の分類です。
ただ業務などで、部品図のことを話しているのか、接続図のことを話しているのか
混乱を生じる場合があるため分類しました。
? = 1
? = ?(?, ?)
カスタマイズ内容
チュートリアル1で作成したバネマスモデルのmassモデルの質量mを密度ρ×体積Vにしてみましょう
現在???質量を直接入力
カスタマイズ???質量を密度ρ×体積Vで表す
今回は接続図にρとVのパラメータ変数を追加し
質量mを入力するコマンドにρ×Vを追加してみます
ファイルを開く
OpenModelica超初級チュートリアル1で作成したバネマスモデルを開きます。
①「ファイル」 - 「モデル/ライブラリを開く」から任意のファイルを選択
③モデルを確認してください
②ライブラリブラウザに
追加されたファイルを
ダブルクリック
クラスのコード表示
ダイヤグラムビュー左上にある
「テキストビュー」アイコンをクリックしてください。 クラスに書かれたコードが表示されます。
クラスとは?
今までなんとなくクラスと使っていましたが、Modelica内で作成するオブジェクト(プログラム)は
すべて”クラス”と呼ばれます。
クラスはデータと振舞いを規定したもので用途に応じて様々な種類があります。
主に使うのは以下の表のクラスで、まずは上位3つを覚えれば十分です。
クラス名 用途
Model 変数、方程式を有しシ
ミュレーションが実行で
きる
Connector クラス同士を接続する。
方程式は記述できない
Package クラスを一つにまとめる
Block 変数、方程式を有しシ
ミュレーションが実行で
きる。
入出力が決まっており因
果的モデルが記述できる
クラスの選択は以下から行うことができます
復習–コードの概要
変数を宣言したり、継承関係を記述します。
この範囲を便宜的に「宣言セクション」と呼びます。
Modelica言語のコードは大きく以下の二つのセクションに分かれます。
model Test
equation
end Test;
“equation”以下に方程式やモデル間の接続関係を
記述します。
ここで記述された方程式は計算実行時に
連立方程式として認識され自動的に解が得られます。
これを非因果的(acausal)モデリングと呼びます。
この範囲を便宜的に「Equation セクション」と呼びま
す。
parameter ???
宣言セクション
equationセクション
der(x)=a*x;
クラスの種類 クラス名 の順に記述します。
Real ???
コードの概要 – インスタンス
宣言セクション内に使用するモデルを記述します。
記述されたモデルをインスタンスと呼びます。
インスタンスはいくら変更しようとも、元のモデルには影響しないので安全に書き換えられます。
インスタンスの元となるクラス名 インスタンス名(修飾) ;ダイアグラムビューの表示設定
インスタンスの文法
例.固定端を表すFixedモデルのインスタンス
インスタンス名
大抵、元のモデルの名前の頭文字を
小文字にして数字を付けます。
クラス名の後ろの()内に”変数名=〇”と
することで値を与えることができます。
これをmodification(修飾)と呼びます。
modificationには数式も使用できます。
ダイアグラムビューの表示設定インスタンスの元となるクラス
コードの概要 – connect
equationセクション内にモデル同士の接続関係をconnectを使って記述します。
接続関係とは、モデルのコネクター内の変数が参照できるかを示します。
接続されたモデル間で変数の値を参照できます。
connect (インスタンス名1.コネクター名, インスタンス名2 .コネクター名) ;ダイアグラムビューの表示設定
connectの文法
例.バネ(spring) と質量(mass) の接続
connect(〇、×)で
〇と×を接続しています。 インスタンス名.コネクター名
ダイアグラムビューの表示設定
コードの概要 – connector
connectorとは、クラス同士の接続を行うためのクラスのことです。
connectorクラス内に宣言された変数が接続できます。
(connectorはPortと呼ばれることもありますが同じものです)
例. connectorクラスFlange_aのコード
以下の接続が可能なことを表しています
位置座標値を表すs
力を表すf
fには接頭辞にflowがついています
これはまた別のチュートリアルで説明します
connector コネクター名
connect コネクター名
型やクラス名 変数名;
connectorの構成
end コネクター名;
?
?
?
質量変数のカスタマイズ
質量変数mを体積Vと密度ρの積で定義したい場合もあります。
そのためにソースコードへ以下の2工程の追加を行います。
1st . パラメータ変数V,ρの追加
2nd . 計算式の追加
質量変数のカスタマイズー 1st . パラメータ変数V,ρの追加
バネマスモデルの接続図(Test.mo)のテキストビューから
宣言セクションへ以下のパラメータ変数を追加してください。
追加
質量変数のカスタマイズー 2nd . 計算式の追加
宣言セクションのmass1インスタントの修飾内のmを以下のように変更してください。
変更
チェックして、変数と方程式が同一であることを確認してください
質量変数のカスタマイズー 解析実行と結果
「シミュレーションのセットアップ」から「解析間隔」の「終了時刻」を10秒にして
解析を実行してください。
解析結果より、チュートリアル1と比較して質量が大きくなっているため
バネの変形がゆっくりになっている事を確認してください
解析結果
Exercise
1.ρ、Vを様々な値に変更し波形の変化を確認してください
2.その他のパラメータ変数を関数にしてみてください
例.初期位置、バネ定数、体積 etc.
3.質量mを密度と体積の関数とする方法は沢山あります。
これまでのチュートリアルの範囲を超えていますが
興味ある人は、massモデルをコピーして改造したり
mを別モデルで定義するなどして遊んでみてください

More Related Content

OpenModelica tutorials_3 Model customization1 (超初級チュートリアル3.モデルのカスタマイズ1)