You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenModelica支持函数偏导数吗?模拟遇内部错误求助

OpenModelica函数偏导数模拟时的翻译错误原因分析

OpenModelica曾通过相关变更添加了函数偏导数的支持,以下是用于测试的Modelica代码:

model PartFncTest
 
    function sinwave
        input Real x;
        output Real y;
    algorithm
        y := sin(x);    
    end sinwave;
    function coswave = der(sinwave,x);
    Real cosVal;
    equation
    cosVal  = coswave(10);
 
end PartFncTest;

该代码在模型检查阶段可以正常通过:

[1] 14:24:58 Scripting Notification
Check of PartFncTest completed successfully.
Class PartFncTest has 1 equation(s) and 1 variable(s).
1 of these are trivial equation(s).

但模拟阶段会触发翻译错误:

[2] 14:27:19 Translation Error
[C:/dev/OM64bit/OMCompiler/Compiler/SimCode/SimCodeUtil.mo: 830:5-830:83]: Internal error Creation of Modelica functions failed.

错误原因

这个内部错误的核心原因是OpenModelica编译器的后端代码生成逻辑存在缺陷:

  • 模型检查阶段仅负责验证语法和静态语义的合法性,编译器能识别der(sinwave,x)这种偏导数定义的语法规则,因此检查可以通过;
  • 但到了模拟前的代码生成环节,负责生成可执行代码的SimCode模块无法正确将导数函数的定义转换为可执行的代码实现,导致生成Modelica函数的内部步骤失败。

此外,也有可能是相关变更集仅完成了前端语法检查部分的支持,后端代码生成的完整逻辑尚未实现,属于功能未完全落地的情况。

内容的提问来源于stack exchange,提问作者邱紀戰

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 00:03:17