我在Modelica中编写了如下代码:
model TestIniitial
extends Modelica.Icons.Example;
parameter Integer nWri= 2;
Real u[nWri](each start= 10, fixed=false);
Real uPre[nWri];
parameter Real _uStart[nWri] = fill(10, nWri);
parameter Modelica.SIunits.Time startTime = 0;
parameter Modelica.SIunits.Time samplePeriod = 1;
Boolean sampleTrigger "True, if sample time instant";
initial equation
u[1] = 1;
u[2] = 2;
equation
sampleTrigger = sample(startTime, samplePeriod);
when sampleTrigger then
for i in 1: nWri loop
uPre[i] = pre(u[i]);
end for;
end when;
for i in 1:nWri loop
u[i] = (i+1)*time;
end for;
end TestIniitial;
基本上我想在模拟之前初始化你。但是,我从翻译中得到了以下投诉(u的初始化过度指定):
The Modelica Language Specification 3.2.1 specifies that if a real variable, v,
is appearing in an expression as pre(v), but not assigned by a when equation,
then the equation v = pre(v) should be added to the initialization problem.
For this problem the following equations were added:
u[1] = pre(u[1]);
u[2] = pre(u[2]);
我无法理解这些投诉,因为pre(v)已在方程式中分配。如果我想在上面的代码中初始化你,我该怎么办?
感谢。
答案 0 :(得分:0)
看着这个,我的猜测是错误消息试图为您提供一些诊断信息,但是关于源代码是不正确的。我怀疑(再次,我不确定)它看到pre(u)
出现在模型中并且存在初始化问题并假定特定问题。
我的猜测是,问题源于您fixed=true
设置u
的事实。我认为没有理由这样做,我的猜测是它会导致对初始化问题的太多限制。摆脱fixed=true
,看看会发生什么。如果没有解决问题,请回报。