gpt4 book ai didi

modelica - 基于 bool 参数的开关类型(不继承)?

转载 作者:行者123 更新时间:2023-12-04 16:38:22 27 4
gpt4 key购买 nike

我有一个代表一些化学过程的模型,我希望 react 模型可以基于 bool 参数在吸收和解吸类(定义各自的模型)之间切换。
我试着这样做:

model Sorption
boolean parameter absorbing;
AbsorptionModel if absorbing else Desorptionmodel reaction;
equation
reaction.T = T; //dummy usage
...

像这样使用它:
Sorption TestAbsorption(absorbing=true); // uses the absorption model
Sorption TestDesorption(absorbing=false); // uses the desorption model

当然,这种方式是行不通的。 absorbing在编译时就知道了,所以我觉得以某种方式实现这一点应该是可以的。

我尝试使用 replaceable ,但我不想(不必要地)创建 Sorption 的两个单独的子类只是为了切换 react 模型的类型。似乎可替换/重新声明仅在继承时可用,但我可能错了?有没有办法做我想做的事?
AbsorptionModelDesorptionModel两者都继承自同一个基类,并具有相同的接口(interface)(如果相关)。

最佳答案

不需要 if 并且您不能将 if 与组件声明一起使用,但条件组件除外(但这只会删除组件声明及其连接方程)。

model Sorption
boolean parameter absorbing;
replaceable model RModel = AbsorptionModel;
RModel reaction;
equation
reaction.T = T; //dummy usage
...

像这样使用它:
Sorption TestAbsorption(redeclare model RModel = AbsorptionModel); // uses the absorption model
Sorption TestDesorption(redeclare model RModel = Desorptionmodel); // uses the desorption model

关于modelica - 基于 bool 参数的开关类型(不继承)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38656851/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com