在我的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 mediumName
或 constant Integer correlationID
但我认为这是一个变通的办法。
在使用整数时,这个变通方法似乎有效,但在使用字符串时就不行了。有什么意见吗?
通过比较常量整数,我可以计算出布尔值的正确值,但我遇到了另一个问题(至少在Dymola中)。当我在注解Dialog enable中使用布尔值时,它不能工作。有什么规则规定布尔值何时被评估吗?
介质包已经有一个属性 mediumName
你可以比较,例如使用代码。
Boolean isWater = Modelica.Utilities.Strings.isEqual("WaterIF97", Medium.mediumName);
问候,Rene Just Nielsen