带有非参数检验的 if 方程中的所有分支必须具有相同数量的方程 - Modelica

All branches in if equation with non-parameter tests must have the same number of equations - Modelica

我在 Modelica 上收到一条错误消息:

All branches in if equation with non-parameter tests must have the same number of equations

错误的来源是以下代码部分:

equation
  if der(Posit2.s)<=0 then
    pressure=4e5+((500e5-4e5)/0.0111)*(0.0111-Posit2.s);
  end if;

你知道如何处理这个错误吗?

你需要一个 else,所以显而易见的想法是说压力不会改变:

 equation
    if der(Posit2.s)<=0 then
           pressure=4e5+((500e5-4e5)/0.0111)*(0.0111-Posit2.s);
    else
           der(pressure)=0;
    end if;

但是,由于索引问题,这可能无法编译。 一种可能性是进行手动索引缩减并编写如下内容:

 initial equation
    if der(Posit2.s)<=0 then
           pressure=4e5+((500e5-4e5)/0.0111)*(0.0111-Posit2.s);
    else
           pressure=4e5;
    end if;
 equation
    if der(Posit2.s)<=0 then
           der(pressure)=((500e5-4e5)/0.0111)*(-der(Posit2.s));
    else
           der(pressure)=0;
    end if;

请注意,此等式有 der(pressure)=...*der(Posit2.s); - 由于手动索引减少。