问题标签 [jmodelica]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
modelica - 扩展包和访问内容
我继续致力于了解如何最好地在库和应用程序中划分代码。在之前的几篇文章中,我使用了一个带有应用程序 dxx_app7 的玩具示例 DEMO_xx 库。下面是一个稍微更新的版本来涵盖这里的问题。我已经包括在收获罐中添加传感器的可能性。
现在我想了解如何在应用程序代码中引入从库 Medium2 扩展的应用程序 Medium7 的信息,并在应用程序的新组件模型中完全使用它。
我的理解是,如果您导入从另一个包扩展的包,您只会得到“最新”包,而不是通过扩展构建的包和汇总的 Medium7 总信息。
示例中通过将常量 SensorX.component 从有效的 C 更改为无效的 A 或 B 来说明这一事实。
但是,如果我创建了 Medium7 的本地实例,那么我将获得 Medium7 的完整信息。我可以在 SensorX 中做到这一点,标记为问题 1 - alt 2。我也可以选择这种基板来测量系统配置并标记为 Question 1 alt 3。我认为这是更具可读性的代码。
但是如何使 Medium7 的所有内容在本地可用?我必须为我需要的每个常量在本地定义一个新常量,正如我在这里使用 sensorX.component 展示的那样吗?一般来说,您可能希望在模型中访问介质的各种属性,并且方便放入包中
另外我希望我可以导入适用于 Medium7 的连接器 LiquidCon,而不是在 Sensor7 包中再次编写该代码。按建议导入不起作用。还有其他方法吗?我只测试了 JModelica 2.4 中的代码,它可能是一个错误?
希望对这两个问题提供一些意见。/ 简·彼得
在问题感兴趣的应用程序代码 d12_app7 下方,然后是相关的库 DEMO_v12。我已经标记了这两个问题的代码更改注释,就代码而言,它是针对问题 1 alt 1 的。
最后是库代码 DEMO_v12
python - 在仿真期间访问 FMU 系统变量
我有一个试图在 JModelica 中模拟的 FMU。input
参数需要参考JModelica FMU仿真中部分变量的当前状态。但是,我无法访问这些。
阅读文档,我会相信这些功能.get_variable_nominal()
或.get()
会提供对这些功能的访问,但事实并非如此。
代码的基本结构如下:
如果在 的地方.some_function("object.variable_name")
,我使用.get_variable_nominal("object.variable_name")
,该函数返回一个浮点值1.0
(如果我指定不同的 FMU 变量,我似乎得到不同的任意值)。而使用.get("object.variable_name")
,FMUException: Failed to get the Real values.
则返回错误。我在模拟开始时期望的float
值是大约303
.
请注意,如果使用固定输入值运行 FMU 模拟,则其行为正确,因此正确的值确实存储在模型中。
感谢任何可以帮助我了解这里发生了什么的人。
python - 使用 pyfmi 库在 python 中加载 fmu 时出错
我已经安装了 PyFMI 库并尝试在 python 中加载由 GT-Suite 创建的 fmu。
我正在关注 jmodelica 的本教程:
https://jmodelica.org/pyfmi/tutorial.html
这组发出警告
当我尝试加载 fmu 模型时
我收到一个错误
有人可以帮我弄这个吗。该怎么办?
'pyfmi.check_packages()' 的输出
python - 如何解决 - FMUException: 从站初始化失败
我是 FMU 世界的新手,并从它开始。我正在尝试在 Python 中加载和模拟在 GT-Suite 中创建的 FMU。我在加载 FMU 时很难解决错误,但最终可以做到。我正在关注jmodelica 教程
现在,当我尝试模拟模型时出现错误。错误是:
可能是什么原因?我的 .fmu 文件是否有问题,因为当我尝试加载和模拟从fmi-standard下载的 fmu 时,一切正常。
'RoomHeating_OM_RH.fmu'
来自fmi 标准
python - JModelica transfer_optimization_problem 方法的变化?
我相信 JModelicatransfer_optimization_problem
方法发生了未记录的更改。如果有这样做的新方法,我想知道,因为我是 JModelica 的新手。我正在关注 JModelica 2.2 的手册,我注意到
不存在,但这确实:
但是这一行返回一个错误:
错误:
python - 使用 pyfmi 创建 2 元组作为 fmu 模型的 model.simulate() 的输入时出错
我在 gt-suite 中创建了一个 fmu。我正在尝试使用 python PyFMI 包在 python 中使用它。我的代码
文档说,model.simulate 将输入作为其参数之一
'InputVarI','InputVarP' 是输入变量,u_traj,v_traj 是数据矩阵。
我的代码给出了一个错误给出了一个错误 -
input_object 创建错了吗?有人可以帮助如何根据文档正确创建输入元组吗?
python - FMUException: 未能设置实验
我有一个在 GT-Suite 中创建的 fmu,并试图在 python 中使用它。
我遵循了 jmodelica 教程
我的 fmu 已加载,但是当我尝试运行 model.simulate 步骤时会引发错误
我曾尝试在我的电脑的多个环境中运行它,但遇到了同样的错误。谷歌搜索了很多,但找不到任何东西。有人可以帮我解决这个问题吗?
modelica - matrix singular under determined linear system not solvable
Following this question, I modified my code to:
However, I get the preprocessing warning of
[1] .... Translation Warning
Iteration variables with default zero start attribute in torn nonlinear equation system:
which doesn't make sense but I assume I can safely ignore, and the compiling error of:
Matrix singular!
under-determined linear system not solvable
which had also been previously reported here. if I remove the lines
and
and changing
works perfectly fine. However, setting Muk
to zero, which theoretically the same thing leads to the same error as above! I would appreciate if you could help me know what is the problem and how I can resolve it.
P.S.1. On the demo version of Dymola the simulation test finishes with no errors, only the warning:
P.S.2. Using JModelica, removing the noEvent
and using the python code:
it solves the model blazingly fast for small values (e.g. 0.1
) of Muk
. But again it gets stuck for bigger values. The only warnings are:
emscripten - 问题:使用 emscripten 从 jmodelica 编译 FMU c 代码
问题
如果我尝试使用 emcc 编译 c 代码(来自 JModelica 导出的 FMU),我会收到一个错误,即找不到头文件“gnu/stubs-32.h”。
错误
我已经尝试通过安装 libc6-dev:i386 为编译器提供所需的头文件。但它不起作用,因为在 64 位机器上编译 32 位软件。来自 emscripten的人已经告诉我,没有可用的 32 位版本的 emcc 编译器。所以我认为唯一的方法是继续使用64位......
我在 gnu/stubs.h 中找到了负责选择错误头文件的文件:
因此我得出结论,__LP64__
没有定义但应该定义为能够使用 64 位头文件。
有谁知道我如何能够用 emcc 编译 c 代码?
添加(添加 16.08.2019)
我又开始了一次尝试:
不使用系统头文件进行编译emcc -I /home/osboxes/Programme/JModelica/include/RuntimeLibrary/ -I /home/osboxes/Programme/JModelica/ThirdParty/FMI/2.0/ BouncingBall.c
会导致此错误'linux/limits.h' file not found
。
所以我访问了包含“linux/limits.h”的文件。它是 JModelica 的头文件,名称为/../JModelica/include/RuntimeLibrary/jmi_utils.h
:
所以我通过传递emcc -I /home/osboxes/Programme/JModelica/include/RuntimeLibrary/ -I /home/osboxes/Programme/JModelica/ThirdParty/FMI/2.0/ BouncingBall.c -DRT
给 emcc 编译器来定义“RT”,一切正常工作。
但是变量 RT 和 NRT 是什么?这样做我是否需要担心一些事情?
我的环境:
- Ubuntu 18.10(64 位)
- JModelica(版本 r12614)
- Emscripten(emcc:1.3820 / clang:6.0.1 / 目标:x86_64-unknown-linux-gnu / 选定的 gcc:/usr/lib/gcc/x86_64-linux-gnu/8)
openmodelica - 无法在 PyFMI 中模拟 OpenModelica ThermoSysPro FMU
运行 64 位 Windows 10。Anaconda 安装 PyFMI 和 pip OMPython。
我想使用 OMPython 自动在 Python 中运行 Rankine Cycle 模型(使用 ThermoSysPro 组件)来创建 FMU,然后使用 PyFMI 来模拟它。
我已经设法使用这种方法在 ThermoPower 库中模拟了布雷顿循环,它也在模拟循环的一部分。
但是,一旦我添加了 Exchanger 组件(dynamicExchangerWaterSteamFlueGases),它就会停止工作。
如果不设置 log_level,错误消息是:
更新
RankineCycle_log.txt 给了我一个 FMU 状态错误,但我不确定如何解决这个问题。