没有 Modelica CombiTable1D 的实例,无法使用自定义 CombiTable1D 初始化模型

Cannot initialize model with custom CombiTable1D without instance of Modelica CombiTable1D

我的 objective 是创建一个 1D/2D 查找 table,它可以在 JSON 文件中读取可变大小的数组,而无需指定静态大小的 Modelica 数组参数。

我开始尝试扩展 ExternData 以根据 github 问题中的建议实现自定义 table:https://github.com/modelica-3rdparty/ExternData/issues/34#issuecomment-718552210

概述的步骤是:

  • Create your own copy of a CombiTable, modify it to accept a data access object and a stable name, see code snippet below
  • Create a duplicate of the ExternalCombiTable1D, which instead references your own CombiTable data object
  • Create a c-function which reads the data directly from the json and stores it into a table object, which is then passed to the MSL function ModelicaStandardTables_CombiTable1D_init2

我已经实施了所有三个步骤来制作自定义 CombiTable1D 块,该块从 ExternData JSON 函数填充动态大小的 table。包裹代码如下:

https://github.com/vsskanth/ExternData.CustomTable

在此包中,有 3 个与此问题相关的实验。所有实验都能编译,但只有一个实验有效:

我试图找出为什么我的自定义 CombiTable1D 实现仅在实验中至少存在一个 Modelica CombiTable1D 实例时才初始化和运行。我确保在我自己的实现中 link ModelicaStandardTables.hModelicaStandardTables.lib 库,检查 dsbuild.txt 中的警告并且编译似乎没问题。

由于某些原因,自定义 ExternalCombiTable1D 外部对象 (ExternData.Types.ExternalCombiTable1D) 的构造函数没有 return,因此自定义 CombiTable1D 块 (ExternData.Tables.CombiTable1D) 无法初始化当模型中没有 Modelica CombiTable1D tables 实例时。

对于为什么会发生这种情况以及如何克服它的任何想法,我将不胜感激。

@tbeu 慷慨地添加了 JSON 支持 https://github.com/tbeu/ModelicaTableAdditions 这使得这个问题没有实际意义,因为我只能将该包与 ExternData 一起使用。

为什么会发生这种情况仍然很有趣。似乎是 Dymola 翻译错误。