3

有谁知道如何访问 Dymola 内置函数 getExperiment(); 的特定输出?不幸的是,它只返回实数标量 StartTime。该函数似乎定义如下:

function getExperiment "Get current experiment setting"
  output  Real StartTime  := 0.0 "Start of simulation";
  output  Real StopTime  := 1.0 "End of simulation";
  output  Integer NumberOfIntervals  := 0 "Number of output points";
  output  Real OutputInterval  := 0.0 "Distance between output points";
  output  String Algorithm  := "" "Integration method";
  output  Real Tolerance  := 0.0001 "Tolerance of integration";
  output  Real FixedStepSize  := 0.0 "Fixed step size for Euler";
end getExperiment;

我的测试模型是:

model GetExpTest
  Real staTime;
  Real outInterval;
equation 
  (staTime,outInterval)=receiveInfo();
end GetExpTest;code here

具有以下功能:

function receiveInfo
  output Real startT;
  output Real outputInterv;
algorithm 
  (startT,,,outputInterv,,,):=getExperiment();
end receiveInfo;

我得到的错误信息是:

编译和链接模型 (Visual C++)。

dsmodel.c dsmodel.c(32):错误 C2079:“dummy_mult_”使用未定义的结构“getExperiment_struct” dsmodel.c(32):警告 C4013:“getExperiment”未定义;假设 extern 返回 int dsmodel.c(33):错误 C2224:“.StartTime0_0_0member”左侧必须具有结构/联合类型 dsmodel.c(34):错误 C2224:“.OutputInterval0_0_0member”左侧必须具有结构/联合类型

生成 Dymosim 时出错。

预先感谢您的帮助!

4

1 回答 1

4

如果我这样做:getExperiment(),将返回以下内容:

= 0.0, 1.0, 500, 0.0, "dassl", 0.0001, 0.0

因此,您可以使用具有多个输出的常规赋值来访问这些值。例如:

(StartTime,,NumberOfIntervals) := getExperiment()

返回:

Declaring variable: Real StartTime ;
Declaring variable: Integer NumberOfIntervals ;
StartTime
 = 0.0
NumberOfIntervals
 = 500
于 2015-11-17T05:40:27.837 回答