小编Ass*_*ero的帖子

Modelica事件和混合建模

我想从数字的角度理解混合建模(特别是状态事件)背后的一般思路(虽然我不是数学家:)).鉴于以下Modelica模型:

model BouncingBall
    constant Real g=9.81 
    Real h(start=1);
    Real v(start=0);
equation
    der(h)=v;
    der(v)=-g;
algorithm
    when h < 0 then
         reinit(v,-pre(v));
    end when;

end BouncingBall;
Run Code Online (Sandbox Code Playgroud)

我理解的概念whenreinit.

  1. when声明中的等式仅在条件成立时才有效吗?
  2. 让我们假设球会完全击中地板2sec.由于我使用多步求解器,这意味着求解器"超过2秒",识别出h<0(假设在模拟time = 2.5sech = -0.7).这是什么意思"使用交叉函数搜索事件的时间?是否有简单的解释(示例)?
  3. 解算器现在要回去了吗?采取较小的步长?
  4. pre()在这种情况下,操作意味着什么?
  5. noEvent():"表达式是字面意义而不是生成交叉函数.由于没有交叉函数,因此没有要求表达式可以在事件限制之外进行评估":这是什么意思?给出与弹跳球相同的例子:求解器在时间2.5检测到h = 0.7.有没有区别noEvent()

solver numerical-integration ode modelica openmodelica

6
推荐指数
1
解决办法
170
查看次数

JModelica中的Python/Pyomo错误

我已经为JModelica安装了商业解决方案包(OCT)(基于python) - >当我想通过"Ipython"打开JModelica时,我收到以下错误消息:

Traceback (most recent call last):

  File "C:\OCT-1.0b1\Python27\scripts\ipython-script.py", line 5, in <module>

    from pkg_resources import load_entry_point

  File "C:\OCT-1.0b1\Python27\lib\site-packages\pkg_resources.py", line 2825, in

 <module>

    add_activation_listener(lambda dist: dist.activate())

  File "C:\OCT-1.0b1\Python27\lib\site-packages\pkg_resources.py", line 710, in

subscribe

    callback(dist)

  File "C:\OCT-1.0b1\Python27\lib\site-packages\pkg_resources.py", line 2825, in

 <lambda>

    add_activation_listener(lambda dist: dist.activate())

  File "C:\OCT-1.0b1\Python27\lib\site-packages\pkg_resources.py", line 2260, in

 activate

    map(declare_namespace, self._get_metadata('namespace_packages.txt'))

  File "C:\OCT-1.0b1\Python27\lib\site-packages\pkg_resources.py", line 1836, in

 declare_namespace

    path = sys.modules[parent].__path__

KeyError: 'pyomo'
Run Code Online (Sandbox Code Playgroud)

我通过spyder/Anaconda2(64位)与pyomo合作

如果有人可以帮助我,那会很棒!

python jmodelica pyomo

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

一致的术语:建模,DAE,ODE

我是"物理系统建模"主题的新手.我阅读了一些基础文献,并在Modelica和Simulink/Simscape中做了一些教程.如果我理解以下内容,我想问你:

  • 符号操作是将方程的微分代数系统(物理模型:DAE)转换为微分方程(ODE)系统的过程,可以通过标准求解器(Runge,Kutta,BDF,......)求解
  • 还有解算器可以直接解决DAE问题.但Modelica(openModelica,Dymola)和Simscape将系统转换为ODE(为什么这种方法与直接DAE求解器相比更好?)
  • "平面Modelica代码"是转换的结果(= ODE).

非常感谢您的回答.

modeling symbolic-math modelica simscape

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