バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
FMILibraryの変数オブジェクトの取得までのAPI仕様が確認できた。
これで、変数に紐づいた情報にアクセスができる状態になったと言える。
引き続き以下。
- fmi2_import_get_variable_vrによるvalueReferenceの取得
- fmi2_import_get_variable_nameによる変数名の取得
- fmi2_import_get_variable_description、fmi2_import_get_variability、fmi2_import_get_causality、fmi2_import_get_initialによる各種詳細情報の取得
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
fmi2_import_get_variable_vrによるvalueReferenceの取得
太郎くん
ついに元々の目的のvalueReferenceの取得だね。
フクさん
まぁ変数オブジェクトが取得出来てるので、
この先はほとんど難しい話はないな。
早速、API仕様と出そう。
fmi2_value_reference_t fmi2_import_get_variable_vr(fmi2_import_variable_t* v)
v:変数オブジェクト
戻り値:valueReference
太郎くん
これは悩むところないね・・・。
fmi2_import_get_variable_nameによる変数名の取得
フクさん
次は変数名の取得だ。
これも悩むところはない。
const char* fmi2_import_get_variable_name(fmi2_import_variable_t* v)
v:変数オブジェクト
戻り値:変数名
太郎くん
確かに悩まない。
fmi2_import_get_variable_description、fmi2_import_get_variability、fmi2_import_get_causality、fmi2_import_get_initialによる各種詳細情報の取得
フクさん
そして一気に4API説明!!
const char* fmi2_import_get_variable_description(fmi2_import_variable_t* v);
fmi2_variability_enu_t fmi2_import_get_variability(fmi2_import_variable_t* v);
fmi2_causality_enu_t fmi2_import_get_causality(fmi2_import_variable_t* v);
fmi2_initial_enu_t fmi2_import_get_initial(fmi2_import_variable_t* v);
太郎くん
どれも変数オブジェクトを渡して、戻り値で欲しい情報を貰うって意味では一緒なのか。
フクさん
一応、各種enumも書き出しておこう。
typedef enum fmi2_variability_enu_t {
fmi2_variability_enu_constant = 0,
fmi2_variability_enu_fixed = 1,
fmi2_variability_enu_tunable = 2,
fmi2_variability_enu_discrete = 3,
fmi2_variability_enu_continuous = 4,
fmi2_variability_enu_unknown = 5
} fmi2_variability_enu_t;
typedef enum fmi2_causality_enu_t {
fmi2_causality_enu_parameter = 0,
fmi2_causality_enu_calculated_parameter = 1,
fmi2_causality_enu_input = 2,
fmi2_causality_enu_output = 3,
fmi2_causality_enu_local = 4,
fmi2_causality_enu_independent = 5,
fmi2_causality_enu_unknown = 6
} fmi2_causality_enu_t;
typedef enum fmi2_initial_enu_t {
fmi2_initial_enu_exact,
fmi2_initial_enu_approx,
fmi2_initial_enu_calculated,
fmi2_initial_enu_unknown /* must be last*/
} fmi2_initial_enu_t;
太郎くん
以前見た、modelDescription.xmlの仕様に準じた名称になってるね。
まとめ
フクさん
まとめだよ。
- valueReferenceの取得方法確認。
- 変数オブジェクトを渡すと取得できる。
- 変数名の取得。
- これも変数オブジェクトを渡すと取得できる。
- その他のdescription、variability、causality、initial。
- これも一緒で変数オブジェクトを渡して取得。
バックナンバーはこちら。
コメント