以下包'RecordTest'(重现更大模型的错误的示例)包含一个记录来定义一些数据的结构。进一步在包“DataDefintion”中定义了两组数据。最后,此数据应在包“UseOfData”中使用。这里读取数据集,并在函数“FunctionWithData”中评估所有数组 A 的总和。
模型“FunctionCall”的模拟在 OpenModelica 中运行良好。在 Dymola 中,我收到错误消息:“对于变量包常量 RecordTest.UseOfData.ReadData[1].A,数组变量的下标 RecordTest.UseOfData.ReadData.Index 不是整数。”
我想念什么吗?常量“Index”被定义为记录“DataStructure”中的一个整数。此外,该模型在 OpenModelica 中运行。我不明白 Dymola 的错误。
提前致谢。
package RecordTest
record DataStructure
constant Integer Index;
Real A[Index];
end DataStructure;
package DataDefinition
constant DataStructure Set1(Index=2, A={1,2});
constant DataStructure Set2(Index=2, A={3,4});
end DataDefinition;
package UseOfData
constant Integer N=2;
constant DataStructure ReadData[N]={DataDefinition.Set1, DataDefinition.Set2};
function FunctionWithData
input Real b;
output Real Result;
protected
Real Array[2];
algorithm
Array := {sum(ReadData[1].A), sum(ReadData[2].A)};
Result := b*sum(Array);
end FunctionWithData;
model FunctionCall
parameter Real b=2;
Real FunctionResult;
equation
FunctionResult = FunctionWithData(b);
end FunctionCall;
end UseOfData;
end RecordTest;