问题标签 [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.

0 投票
1 回答
84 浏览

jmodelica - 使用 Jmodelica 编译 FMU

我在 Jmodelica 中编译 FMU 时遇到问题。对于中型模型,我收到以下错误。

在此处输入图像描述

我已经在控制面板中更改了 JAVA 的运行时参数,并且也厌倦了使用 Xmx 命令将 JVM 分配的内存设置得尽可能高。我在一台 128GB RAM 的电脑上运行它。有谁知道如何在 Jmodelica 中解决这个问题?

0 投票
2 回答
1828 浏览

python - Ubuntu 18.04 中 Python 3 环境中的 PyFMI

我的目标是能够在 Ubuntu 18.04 中运行 OpenModelica 生成的 FMU,然后在 Python 3 环境中使用 PyFMI 运行这些 FMU。

我按照这里的 PyFMI 安装大纲https://jmodelica.org/pyfmi/installation.html

到目前为止,我已经使用 Conda 成功安装了 Python3、Numpy、Scipy、lxml 和其他一些包,并使其与我的一些 Python 示例一起工作。但我会很感激一些详细的建议如何

  1. 安装 FMI 库 - 我不知道如何设置标志 fmil-home
  2. 安装 Assimulo

在那之后,我想我们已经准备好从安装大纲“python setup.py install —fmil-home=/path/to/fmil”

感谢一些基本的建议!

0 投票
1 回答
450 浏览

python-3.x - 如何将 Python 3 与依赖于 Python 2 的标准 JModelica 结合起来?

我想在我的 Windows 计算机上安装带有 PyFMI 的 Python 3,我已经有带有 Python 2 的 JModelica 2.10。因此,我的想法是根据需要在 Python 2 中将 Modelica 模型编译为 FMU,然后在 Python 3 中开发脚本来运行 FMU 和可视化结果。我怎样才能最好地避免两个 Python 环境之间的任何冲突?

0 投票
2 回答
96 浏览

modelica - 如何使用“连接”语句自动推导模型中跨组件集声明的特定“真实”的总和?

我正在考虑一个在 Modelica 语言中很不错的功能(我使用的是 OpenModelica 1.14.1)。

该功能将自动添加一个表示所需值总和的方程。

表示总和的值将在global模型顶层实例化的组件中声明。

较低级别(可能是嵌套的)组件的每个贡献都将由一个connect语句表示。

为此,可以使用connector带有flow变量的类,因为它会生成正确的方程。关键字可以使这成为可能innerouter我尝试通过以下方式编写一个示例:

不幸的是,这不起作用。当我实例化test_model它时,它会给出以下输出(我已经适当地评论过):

最后生成的三行导致系统超定。如果不是这三行,它将完全按照我的需要工作。

问题:

这是预期的行为吗?额外的行是使用开放的 Modelica 编译器造成的吗?

有没有办法改进我的代码,不会生成另外三行?

任何人都可以global_sum_test.test_model在 Dymola 中对此进行测试,以确保此问题不仅仅针对 OpenModelica 吗?

还有其他方法可以自动获取总和吗?

0 投票
1 回答
51 浏览

jmodelica - PyFMI 参数估计和处理不同于默认的固定模型参数

我已经开始在 PyFMI 中使用带有过程 model.estimate() 的参数估计并且效果很好。

从文档 (Andersson et al 2016) 以及实际使用中,我了解到模型参数是从编译的 FMU 模型中获取的,如果没有估计的话。如果可以选择为字典提供一组与模型默认值不同的固定参数值,那将是非常实用的。有什么办法可以提供吗?

当前的工作流程是,对于由库中的零件构建的较大模型,您需要复制这些模型并将参数设置为代码中的正确值,然后编译它。这是一个有点乏味的过程。也许我误解了什么?

Andersson 等人(2016 年):“PyFMI:用于……的 Python 包” https://portal.research.lu.se/portal/files/7201641/pyfmi_tech.pdf

0 投票
3 回答
365 浏览

modelica - 如何在 Modelica 中构建液体平衡连接器?

帖子状态:

200313 得到了代码 DEMO_v42 的答案,我接受了赏金!

200310 我对昨天提出的两篇重要论文发表评论。还是不明白如何更新DEMO_v41。

200309 我想强调一下,关键问题是如何在代码DEMO_v41(如果可能的话)中引入流的概念,从而使连接器平衡。作为浓度的变量 c 应该被声明为流,但是应该如何使用 inStream 或 actualStream 更新方程 - 我很高兴看到!

200226 添加了后示例 DEMO_v41,它是一个简化的,我希望比第一个 DEMO_v40 更具可读性的代码。

200225 我对给出的答案进行了一些评论,并试图让读者将注意力集中在实际问题上,但几乎没有发生。

200224 我收到了一些关于帖子的一般性和详细信息。详细的评论价值较低,部分是误解了问题的结果。Rene 的更一般的回答很好,但过于笼统。在考虑使用 Modelica.Media 等之前,我真的很想通过小示例了解如何使用流的概念。这是一个学习过程。


我想知道如何正确定义液体的连接器,该液体在溶液中具有多种不同浓度的成分,然后该溶液具有流速。液体中的压力可以忽略不计。我长期使用的标准连接器是:

该连接器在 JModelica 和 OpenModelica 中运行良好,但我在 OpenModelica 中收到连接器不平衡的警告。在 Modelica 语言规范第 9.3.1 节中,我看到我的构造实际上是不合法的,请参阅https://www.modelica.org/documents/ModelicaSpec34.pdf。如何制作满足需求的连接器?

我花了一些时间阅读 Fritzons book 2n 版中关于“流”概念的第 5.10 章,但我需要更详细地研究它。

我的简单连接器带来警告的原因是,当您声明流变量时,编译器假定另一个变量是该流变量的潜在变量,即至少连接器中的流和潜在变量的数量必须相同。那么当然在我的情况下,成分浓度不是一个潜在的变量,而是编译器无法检测到的。

在第 5.10 章的介绍部分,“流”概念的范围似乎是“……应用具有相关属性的双向物质流……”。在我的应用领域,我怀疑我是否需要考虑双向流动。这意味着使用流是一种“矫枉过正”。但这似乎也意味着我也不应该使用“流”的概念,这有点可惜。我们真的应该停止使用“流”这个概念吗? ?

无论如何,我试图整理一个比 Fritzson 的书中关于这个主题的更基本的例子,看看如何使用“流”的概念,以及你得到的计算时间等开销。在下面的示例中,我模拟了液体从进料罐到收获罐的流动。流量现在由压力差控制。代码 DEMO_v41 工作并给出连接器不平衡的警告。如果我现在将底物浓度 c 声明为“流”,我现在应该如何使用 inStream 和 actualStream 更新代码以使其以相同的方式工作,但现在使用这个平衡的连接器?

下面的较旧示例 DEMO_v40 更通用且更难阅读,但由于围绕此示例的一个早期答案,因此保留供参考。

我收到的编译(JModelica 2.14)错误消息是:“扁平模型中的错误:系统结构单一。以下变量无法与方程匹配:harvestertank.inlet.c[1]、pipe.outlet.c[1]。OpenModelica (1.16) 给出了大致相同的信息。这里有什么问题?

0 投票
2 回答
95 浏览

modelica - 参数化 Modelica 库和“延迟”结构参数设置的可能性 - 第 3 部分

我正在寻找一种将代码分为两部分的好方法:通用库和应用程序代码,我使用的示例通常包含液体,我想让通用库独立于液体中的组件数量。这个想法是应用程序代码设置使用的液体介质,然后从通用库中导入设备,并使这些设备适应实际介质。

下面的示例是一个非常简洁的示例,它说明了进行这种代码划分的一种方法。在这里,我在部分包 MediumBase 中未定义组件数量的值 nc。稍后,当 EquipmentLib 适应实际的 Medium 时, nc 会得到一个值。这就是我所说的结构参数的“延迟”设置。该代码在 JModelica 和 OpenModelica 中运行良好。

在具有相同代码结构的稍大示例中,我遇到了一些问题:

  • 在 JModelica 中,我收到“常量 nc 没有绑定表达式”的警告
  • 在 OpenModelica 中,我收到一个错误“无法评估结构参数(或常数).. nc,它给出了数组 c[MediumBase.nc] 的维度。数组维度必须在编译时知道'

该消息对我来说没有意义,因为 nc 在编译时已知,在 EquipmentLib 适应的级别。这个问题实际上可以通过在 MediumBase 中为 nc 赋予 Medium Base 中的“虚拟”值 nc=1 来解决,然后在编译期间将 nc 更改为适配 EquipmentLib 时提供的值。

所以我的问题是:

  1. 对我来说,最好保持 nc 未定义,然后确保在编译期间设置值,而在编译期间更改常量看起来有问题,但在 Modelica 中可能(仍然)允许。在 Modelica 语言规范中,我可以在附录 A 中看到,对常量的要求是(仅)它在模拟期间是常量,即在编译期间不是。在附录 E8.2 中,我看到也许应该对 nc 进行初始分配,但不确定。不过,希望对此发表一些评论。
  2. JModelica 和 OpenModelica 的示例编译器怎么会分别给出警告和错误?
  3. Modelica 规范对这里的内容有什么看法?

如果需要,我可以提供更大的示例,但我认为这可能是一个更普遍的答案。

0 投票
0 回答
366 浏览

python - 无法在 pyFMI 中运行 FMU?

我正在尝试使用 pyFMI 模拟从 OpenModelica 导出的 FMU:

但是我不断收到以下错误。我使用 Anaconda 2,据我所知,我拥有所有必需的软件包(根据项目页面的要求:https ://pypi.org/project/PyFMI/ )

在试图弄清楚可能出了什么问题时,我遇到了 FMI 库,但我不知道我应该如何处理它或如何编译它,而且我还没有找到一个全面的指南。

0 投票
1 回答
130 浏览

openmodelica - 无法在 pyfmi 库中运行 fmu.get_fmu_state()

我试图了解 get_fmu_state 方法如何联合仿真模式示例中的简单fmu上工作,例如使用 PyFMI(2.7.3)预先提供的 fmu 的弹跳球。我已经通过 miniconda 在 ubuntu-docker 上安装了它,并在收到错误时尝试执行以下命令。我知道这个 fmu 可能不支持该命令,但还有其他可能支持它的例子吗?

其余命令如 fmu_model.simulate()、fmu_model.initialize()、fmu_model.simualte() 可以正常工作,但 fmu_model.get_fmu_state() 没有。如果我在 ModelExchage 模式下使用 fmu,也会出现同样的错误。

0 投票
1 回答
237 浏览

matrix - Python:如何用雅可比行有效地解决 DAE?

我正在尝试使用 Assimulo 包来求解一组微分代数方程 (DAE)。我正在尝试使用类似于此处显示的算法。但是,似乎没有传递稀疏矩阵的选项。我的雅可比矩阵非常大,大约 3000 x 3000。你知道是否有一种方法可以更有效地解决我的 DAE 问题吗?