簡體   English   中英

Dymola中的通話記錄問題

[英]Problems with record call in Dymola

以下軟件包“ RecordTest”(用於再現較大模型的錯誤的示例)包含用於定義某些數據結構的Record。 在包“ DataDefintion”中進一步定義了兩組數據。 最后,此數據應在“ UseOfData”包中使用。 在此讀取數據集,並在函數“ FunctionWithData”中評估所有數組A的總和。

在OpenModelica中,對“ FunctionCall”模型的仿真效果很好。 在Dymola中,我得到一個錯誤: “對於變量包常量RecordTest.UseOfData.ReadData [1] .A,數組變量的下標RecordTest.UseOfData.ReadData.Index不是整數。”

我想念什么嗎? 常量“索引”在記錄“數據結構”中定義為整數。 該模型還可以在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;

一種變通方法是如下重寫程序包:

package RecordTest

record DataStructure
  constant Integer Index;
  Real A[:];
end DataStructure;

package DataDefinition
  constant DataStructure Set1=DataStructure(Index=2, A={1.0,2.0});
  constant DataStructure Set2=DataStructure(Index=2, A={3.0,4.0});
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;

問題是在包常數記錄數組中的A中使用的“索引”,以及包常數記錄Set1和Set2的修飾符而不是綁定方程式。 (它將在將來的Dymola版本中處理,我知道答案有點晚了。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM