小编Dar*_*oni的帖子

根据连续变量的开始/初始值设置参数

任务

  • 我有一个变量y1,其导数由某些定律驱动,
    例如y1 = sin(time)
    ,我为其设置起始值,
    例如y1 = 3.0
  • 我有第二个变量y2
    ,其定义为y2 = y1 + offset
  • 现在,我希望这个偏移量为 a Parameter(因此在模拟过程中恒定)并根据 等的起始/初始值y1进行y2
    评估offset = y2.start - y1.start

代码

从概念上讲我想实现:

model SetParametersFromInitialValues

Real y1(start = 3.0, fixed = true);
Real y2(start = 3.0, fixed = true);
parameter Real offset(fixed = false);

initial equation
  offset = y2.start - y1.start;
equation
  der(y1) = sin(time);
  y2 = y1 + offset;

end SetParametersFromInitialValues;
Run Code Online (Sandbox Code Playgroud)

我认为它可以工作,因为start应该是内置类型 …

modelica openmodelica

5
推荐指数
1
解决办法
1993
查看次数

忽略函数的Modelica注释逆

问题:inverse函数的注释将被忽略,并且反函数将通过数值计算。

根据Modelica规范,可以指定给定函数的逆函数。

为了测试此功能,我尝试了一个非常简单的模型,该模型具有两个功能:

如您所见,为了检索变量x的值,应将函数y_from_x 反转;因此,由于inverse注释显式说明了如何反转函数,因此我希望可以调用x_from_y

不,那不会发生。即使在展平步骤中,也将放弃反函数,并使用迭代循环以数值方式计算y_from_x的解。OpenModelica v1.14和Dymola 2018都会发生这种情况。

这是预期的行为吗?如何使用此inverse注释?有没有办法避免这种低效的迭代解决方案?

完整代码

model test_inverse

Real y, x;

function y_from_x
  input Real x;
  output …
Run Code Online (Sandbox Code Playgroud)

annotations inverse modelica openmodelica dymola

4
推荐指数
1
解决办法
94
查看次数

标签 统计

modelica ×2

openmodelica ×2

annotations ×1

dymola ×1

inverse ×1