Dymola导出FMI2.0联合仿真FMU初始化异常及定义差异咨询
动态朗肯循环FMU初始化问题及初始值定义疑问
我用Dymola 2022搭配ThermoSysPro库搭建了动态朗肯循环模型。为实现从任意给定状态启动仿真,我会输出所有状态值,再通过参数设置各状态的初始值,以压力为例有两种定义方式:
第一种方式:
parameter Modelica.Units.SI.Pressure P0 = 10e5 "Initial pressure"; Modelica.Units.SI.Pressure P(start=P0, fixed=true) "Pressure";
第二种方式:
parameter Modelica.Units.SI.Pressure P0 = 10e5 "Initial pressure"; Modelica.Units.SI.Pressure P "Pressure"; initial equation P = P0;
疑问:这两种初始值定义方式是否存在差异?
对所有状态完成上述设置后,我可以获取仿真结束时的状态值并修改初始参数,从新状态启动本地仿真完全正常。
后续我将模型导出为FMI 2.0联合仿真FMU(采用Dymola的DASSL求解器),在Dymola中加载FMU后,使用默认初始参数仿真可正常运行,且结果与原模型一致。但当设置与默认值差异较大的初始参数时,初始化算法会在蒸汽属性函数中出现空值(nil),导致初始化失败。
目前我尝试过通过设置最小值避免空值,也提供了更多初始猜测值,但这种方法耗时且不够简洁。我期望FMU的初始化过程能和原模型表现一致,必要时可以尝试编写最小复现示例,但无法保证一定可行。
内容的提问来源于stack exchange,提问作者Clement44
相关产品推荐
相关产品推荐

