Modelica:检查可替换包或模型的平等性。

问题描述 投票:0回答:1

在我的Modelica系统模型中,我有一个可替换的包(介质、流体特性)和一个可替换的模型(压力损失模型)。我能否以某种方式检查是否选择了某个模型或包?下面的方法不可行,但也许能解释我想实现的目标。

replaceable package Medium = Modelica.Media.Water.WaterIF97_ph;
Boolean isWater = (Medium == Modelica.Media.Water.WaterIF97_ph);

我在想类似的东西 就像在python中一样 你可以使用... ... type(variable)isinstance(object, class). 这种方法似乎在很多语言中都是可行的,但在Modelica中是否可行?

我想到的一个变通方法是在可替换模型包内添加一些(或使用现有的)常量,并在比较中使用它,如 constant String mediumNameconstant Integer correlationID但我认为这是一个变通的办法。

在使用整数时,这个变通方法似乎有效,但在使用字符串时就不行了。有什么意见吗?

通过比较常量整数,我可以计算出布尔值的正确值,但我遇到了另一个问题(至少在Dymola中)。当我在注解Dialog enable中使用布尔值时,它不能工作。有什么规则规定布尔值何时被评估吗?

user-interface types parameters modelica isinstance
1个回答
3
投票

介质包已经有一个属性 mediumName 你可以比较,例如使用代码。

Boolean isWater = Modelica.Utilities.Strings.isEqual("WaterIF97", Medium.mediumName);

问候,Rene Just Nielsen

© www.soinside.com 2019 - 2024. All rights reserved.