在我的 Modelica 系统模型中,我有一个可更换包(介质、流体属性)和一个可更换模型(压力损失模型)。我可以以某种方式检查是否选择了某个型号或套餐吗?以下方法不起作用,但也许可以解释我想要实现的目标:
replaceable package Medium = Modelica.Media.Water.WaterIF97_ph;
Boolean isWater = (Medium == Modelica.Media.Water.WaterIF97_ph);
我正在考虑类似Python中的东西,你可以使用type(variable)
或isinstance(object, class)
。这种方法似乎在许多语言中都是可行的,但在 Modelica 中可行吗?
我想到的一个解决方法是在可替换模型/包中添加一些(或使用现有的)常量并在比较中使用它,例如常量字符串mediumName
或常量整数correlationID
,但我认为这是一种解决方法。
该解决方法似乎在使用整数时有效,但在使用字符串时无效。有意见吗?
通过比较常量整数,我可以计算出 bool 值的正确值,但我遇到了另一个问题(至少在 Dymola 中):当我在注释对话框启用中使用 bool 值时,它不起作用。评估 bool 值时是否有规则?
最佳答案
中等包已经具有您可以比较的属性mediumName
,例如使用以下代码:
Boolean isWater = Modelica.Utilities.Strings.isEqual("WaterIF97", Medium.mediumName);
最诚挚的问候, 雷内·贾斯特·尼尔森
关于user-interface - Modelica:检查可替换包或模型的相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62280113/