从我没有提供的条件选择算法返回的值?

时间:2015-05-29 14:20:34

标签: conditional-statements modelica openmodelica

在Modelica中,我构造了一个简单的映射(一对案例结构),将MxN值表缩减为5x5值的表。但是当我使用位于边界处的输入(行= M或列= N)进行模拟时,映射返回" 0"何时它应该返回" 5"。我包含了一个越界案例,但返回的值应为" 3,"不是" 0;"我从来没有说明" 0"作为输出。

这可能是因为函数是时不变的,可能缺乏初始条件吗?

以下是代码:

model chooseTypeArrayPosition 
          Modelica.Blocks.Interfaces.IntegerInput ModuleRow "Module Row";
      Modelica.Blocks.Interfaces.IntegerInput ModuleCol "Module Column";
      Modelica.Blocks.Interfaces.IntegerInput ArrayRows "Rows in Array";
      Modelica.Blocks.Interfaces.IntegerInput ArrayCols "Columns in Array"; 

  output Modelica.Blocks.Interfaces.IntegerOutput FractExposedTypeRow;
  output Modelica.Blocks.Interfaces.IntegerOutput FractExposedTypeCol "Enumeration of FractExposed Column";
algorithm
  if ModuleCol > ArrayCols then
    FractExposedTypeCol := 3;
  elseif ModuleCol < 2 then
    FractExposedTypeCol := 1;
  elseif ModuleCol < 3 then
    FractExposedTypeCol := 2;
  elseif ModuleCol > ArrayCols - 1 then
    FractExposedTypeRow := 5;
  elseif ModuleCol > ArrayCols - 2 then
    FractExposedTypeCol := 4;
  else
    FractExposedTypeCol := 3;
  end if;

  if ModuleRow > ArrayRows then
    FractExposedTypeRow := 3;
  elseif ModuleRow < 2 then
    FractExposedTypeRow := 1;
  elseif ModuleRow < 3 then
    FractExposedTypeRow := 2;
  elseif ModuleRow > ArrayRows - 1 then
    FractExposedTypeRow := 5;
  elseif ModuleRow > ArrayRows - 2 then
    FractExposedTypeRow := 4;
  else
    FractExposedTypeRow := 3;
  end if;
end chooseTypeArrayPosition;

感谢您的任何想法!

1 个答案:

答案 0 :(得分:1)

你在第一部分写了一个拼写错误:

elseif ModuleCol > ArrayCols - 1 then
    FractExposedTypeRow := 5;

应为FractExposedTypeRow := ...