Modelica:检查可替换包或模型的相等性
Modelica: check equality of replaceable package or model
在我的Modelica系统模型中,我有一个可替换包(介质、流体属性)和一个可替换模型(压力损失模型)。我能以某种方式检查是否选择了某个模型或包吗?以下方法不起作用,但也许可以解释我想要实现的目标:
replaceable package Medium = Modelica.Media.Water.WaterIF97_ph;
Boolean isWater = (Medium == Modelica.Media.Water.WaterIF97_ph);
我在想类似 python 的东西,你可以使用 type(variable)
还是 isinstance(object, class)
。这种方法似乎在很多语言中都可行,但在 Modelica 中是否可行?
我想到的一个解决方法是在可替换 model/package 中添加一些(或使用现有的)常量并在比较中使用它,例如constant String mediumName
或 constant Integer correlationID
,但我认为这是一种解决方法。
解决方法似乎在使用整数时有效,但在使用字符串时无效。有什么意见吗?
通过比较常量整数,我可以计算出布尔值的正确值,但我遇到了另一个问题(至少在 Dymola 中):当我在注释对话框启用中使用布尔值时,它不起作用。计算布尔值时是否有规则?
中型包已经有一个 属性 mediumName
你可以比较,例如使用代码:
Boolean isWater = Modelica.Utilities.Strings.isEqual("WaterIF97", Medium.mediumName);
此致,
雷内·贾斯特·尼尔森
在我的Modelica系统模型中,我有一个可替换包(介质、流体属性)和一个可替换模型(压力损失模型)。我能以某种方式检查是否选择了某个模型或包吗?以下方法不起作用,但也许可以解释我想要实现的目标:
replaceable package Medium = Modelica.Media.Water.WaterIF97_ph;
Boolean isWater = (Medium == Modelica.Media.Water.WaterIF97_ph);
我在想类似 python 的东西,你可以使用 type(variable)
还是 isinstance(object, class)
。这种方法似乎在很多语言中都可行,但在 Modelica 中是否可行?
我想到的一个解决方法是在可替换 model/package 中添加一些(或使用现有的)常量并在比较中使用它,例如constant String mediumName
或 constant Integer correlationID
,但我认为这是一种解决方法。
解决方法似乎在使用整数时有效,但在使用字符串时无效。有什么意见吗?
通过比较常量整数,我可以计算出布尔值的正确值,但我遇到了另一个问题(至少在 Dymola 中):当我在注释对话框启用中使用布尔值时,它不起作用。计算布尔值时是否有规则?
中型包已经有一个 属性 mediumName
你可以比较,例如使用代码:
Boolean isWater = Modelica.Utilities.Strings.isEqual("WaterIF97", Medium.mediumName);
此致, 雷内·贾斯特·尼尔森