Modelica 示例函数没有';我不在迪莫拉工作

Modelica 示例函数没有';我不在迪莫拉工作,modelica,dymola,Modelica,Dymola,我尝试使用Dymola编译以下代码: class abc import Modelica.SIunits; parameter SIunits.Time delta_t=0.5; constant Real a[:]={4,2,6,-1,3,5,7,4,-3,-6}; Real x; Integer j(start=1); Integer k=size(a, 1); algorithm when {(sample(0, delta_t) and j < k

我尝试使用Dymola编译以下代码:

class abc
  import Modelica.SIunits;
  parameter SIunits.Time delta_t=0.5;

  constant Real a[:]={4,2,6,-1,3,5,7,4,-3,-6};
  Real x;
  Integer j(start=1);
  Integer k=size(a, 1);

algorithm 
  when {(sample(0, delta_t) and j < k),j == 1} then
    x := a[j];
    j := j + 1;
  end when;
end abc;
abc类
导入Modelica.SIunits;
参数SIunits.Time delta_t=0.5;
常数实a[:]={4,2,6,-1,3,5,7,4,-3,-6};
实x;
整数j(开始=1);
整数k=大小(a,1);
算法
当{(样本(0,delta_t)和j
对于
time=0
,变量
j
2
开始。但它应该以
j=1
开头

有人知道这个问题吗?

当然,在时间=0时有一个事件是由表达式
sample(0,delta_t)和j触发的当然,在时间=0时有一个事件是由表达式
sample(0,delta_t)和j记住
sample(x,y)触发的
表示样本在
x+i*y
处为真,其中
i
从零开始。也就是说,
sample(0,…)
time=0时变为真


由于
j
从1开始,而
k
大概大于1,因此
sample(0,delta_t)和j记住
sample(x,y)
意味着sample在
x+i*y
处为真,其中
i
从零开始。也就是说,
sample(0,…)
time=0时变为真


因为
j
从1开始,而
k
大概大于1,所以
sample(0,delta_t)和ju使用向量
{(sample(0,delta_t)和j@matth不,条件j==1在时间=0时不是真的,它是真的,因为“j==1和pre(j==1)=false”。您使用向量
{(sample(0,delta_t)和j@matth不,条件j==1在时间=0时不是真的,它是真的,因为“j==1和pre(j==1)=false”。注意,x在时间=0时将是0.我相信建模师会这么想的。好的,现在j在时间0时从1开始。但是在时间t=0.5时,j的值返回1,并在时间t=1时开始递增。您可以在图中看到这一过程。!.注意,x在时间=[0,delta\u t]时将为0.我相信建模师会这样想的。好的,现在j在时间0时从1开始。但在时间t=0.5时,j的值返回1,并在t=1时开始递增。您可以在图中看到该过程!。
class abc
  import Modelica.SIunits;
  parameter SIunits.Time delta_t=0.5;

  constant Real a[:]={4,2,6,-1,3,5,7,4,-3,-6};
  Real x;
  Integer j(start=1);
  Integer k=size(a, 1);

algorithm 
  when {(sample(delta_t, delta_t) and j < k),j == 1} then
    x := a[pre(j)];
    j := pre(j) + 1;
  end when;
end abc;