问题标签 [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 回答
459 浏览

shell - JModelica:Python Shell 和 IPython 导入包时遇到问题

所以我刚刚安装了 JModelica,并且包含了这个 Python 2.7。当我使用 IPython 控制台并尝试导入以下内容时(它有效):

从 pymodelica 导入 compile_fmu

但是,当我在 Python Shell 程序中编写它时,它会说:

Traceback(最近一次调用最后一次):文件“”,第 1 行,in from pymodelica import compile_fmu ImportError: No module named pymodelica****

这里有什么问题?我想使用 Python Shell,因为您可以在那里编写脚本。

问候,贾西尔

0 投票
1 回答
428 浏览

python - JModelica:更改循环迭代变量而不重新编译

我在 JModelica 中遇到了以下安静的基本问题。考虑一个相当简单的模型:

我用 python 编译它并运行,当然,变量 Dum 的值总是 5,因为它应该是。现在的问题是,当我想在加载已编译的 fmu ( test.fmu ) 后更改为参数“It”时:

然后运行模拟,它仍然为“Dum”提供 5,而不是应有的 4。虽然“It”实际上变成了 4,但通过在模拟后绘制“It”的时间曲线可以看出。有谁知道是否有办法即时更改它,以便它真正影响循环?

这当然是一个玩具示例,但我需要该功能用于一个更大的项目,我迫切需要在不同的范围内循环,并且重新编译只是非常耗时。

非常感谢

0 投票
1 回答
103 浏览

modelica - 具有模式相关参数的重复组件

想象有一个重复的组件模式(例如,动态管道),它具有一个参数(例如,长度),该参数将根据其所在模式的位置而改变。我建议可以通过在感兴趣的参数之前省略“每个”前缀来实现。

例如。让我们通过以下方式获取管道并将它们添加到模型中:

对于一个非常简单的示例,让我们指定我们希望模式中第一个管道的长度具有某个长度(length_1),而所有其他管道的长度都具有 length_n。我的想法是,可以在以下列方式定义参数时放置一个 if 语句,以便将 length_1 分配给 n=1 管道组件,而将所有其他组件分配给 length_n:

上述框架中的一个简单模型如下所示:

就目前而言,该模型不起作用。我不确定 if 语句的构造方式是否错误,或者这是否根本不允许(如果我对“每个”前缀的解释有误,可能就是这种情况)。

有什么想法吗?

0 投票
1 回答
83 浏览

modelica - 如何将 heatPorts.T 传递给 DynamicPipe flowModel?

在使用 Modelica 标准库 DynamicPipe(或从 PartialTwoPortFlow 构建的类似模型)运行的流动模型的实现中,有一些流动模型的示例发生在需要壁属性的传热环境中(例如 heatPorts.T 和/或 heatPorts.Q_flow) 以计算压降。

例如,压降模型可能需要根据介质压力和壁温计算新的粘度或普朗特数,以捕捉冷却/加热效应等。

传热模型通过传递“状态”来获得介质的属性,但是 DynamicPipe 或 PartialTwoPortFlow 中没有存在相反的连接。

我尝试了许多不同的想法,但都没有成功,包括创建一个新的 PartialTwoPortFlow,其中包含 DynamicPipe 中存在的所有传热调用。

我对发布这个问题犹豫不决,因为我很惊讶我在这方面遇到了这么多困难,并且找到一个直截了当的解决方案也不会感到惊讶。尽管如此,我还是需要这种能力,并且好奇其他人是否已经解决了这个问题,因为我缺乏想法。

所以我的问题是:

将 heatPorts.T 值传递给 flowModel 的正确/有效方法是什么?

0 投票
1 回答
128 浏览

modelica - Modelica 标准库组件 AbruptAdaptor

经测试:

MSL 版本:

  • 3.2.1, 2013-08-14, build 2 (2013-08-14 08:44:41Z)
  • 3.2.1, 2013-08-14, build 4 (2015-09-30 09:15:00Z)

下面是一个包含 4 个组件的模型:

  1. 质量流源(M_bound)
  2. 突然适配器(abruptAdapter)
  3. 动态管道(pipeSmall)
  4. 压力源(P_bound)

该部分还包含模型的两个连接案例equation

案例#1:M_bound -> abruptAdaptor -> pipeSmall -> P_bound

案例#2:M_bound -> pipeSmall -> abruptAdaptor -> P_bound

摘要:案例#1 模拟得很好,但案例#2 失败了。产生的错误如下图所示:

问题:为什么案例 #2 失败以及如何修复它的建议?任何见解都会很棒。它甚至可能是AbruptAdaptor组件中的错误。

型号代码

0 投票
1 回答
177 浏览

python - JModelica 中的 Python/Pyomo 错误

我已经为 JModelica(基于 python)安装了一个商业求解器包 (OCT) --> 当我想通过“Ipython”打开 JModelica 时,我收到以下错误消息:

我通过 spyder/Anaconda2(64 位)使用 pyomo

如果有人可以帮助我,那就太好了!

0 投票
1 回答
160 浏览

modelica - 如何在 Dymola 中将水从气缸转移到水箱?

我创建了一个Dymola 模型。它有一个空罐,通过静态管道连接到 sweptVolume 组件的输出。sweptVolume 的输入是一个恒定的力,我想借助它将水从液压缸输送到水箱。

我假设活塞的横截面积。假设压力为大气压(101.325kPa),我计算了置换气缸中的水所需的力。但是,不知何故,我看到水没有被取代,而且体积保持不变而没有装满水箱。

请建议,应为 sweptVolume 元素(位置、移动等)提供什么类型的输入,以防给定的输入恒力错误。

我要感谢您的时间和兴趣。

0 投票
1 回答
513 浏览

python - FMU 变量值与输入不匹配

我在尝试配置的简单联合仿真中遇到了一些奇怪的行为。我在 EnergyPlus 中设置了一个建筑能源模型,以测试从 JModelica 生成的 FMU。然而,建筑能源模型会在联合仿真步骤中被挂起。然后我在 JModelica 中运行 FMU,得到了一些非常奇怪的结果。

Modelica 代码是:

上面的代码引用了“CAdd”,它是 c 代码“CAdd.c”的库文件:

在 CMD 中使用以下两个命令将其编译为库文件:

我可以使用包装器在 OpenModelica 中运行上面的示例,并且效果很好。

然后,我使用 JModelica 将上述内容编译为 FMU 以进行联合仿真。JModelica 编译代码为:

然后我模拟了 FMU 并使用 JModelica Python 代码得到了奇怪的结果:

这导致了结果“FMUTime”与python“t”的图: FMU 时间与仿真时间不匹配

除了看到这种奇怪的行为之外,FMU 结果中的输入“FirstInput”和“SecondInput”与 python 代码中指定的 u1 和 u2 不匹配。我希望有人可以帮助我更好地了解发生了什么。

最好的,

贾斯汀

0 投票
1 回答
110 浏览

modelica - 访问 Dymola/Modelica 中经过验证的函数库(例如,贝塞尔函数)

我需要 Modelica 中的 Bessel 函数,以及将来已经存在于外部 C/Fortran/Python/etc 库中的许多可能的函数。

我知道有某种调用外部函数的能力,因为这就是 LAPACK 在 Modelica 标准库中的使用方式。

我的问题:

在我花时间试图弄清楚外部函数的魔力之前,我想知道是否有人知道已经集成了诸如 GNU ScientificLibrary 或 Python SciPy 之类的东西,并能指出我的方向。

谢谢

0 投票
2 回答
304 浏览

modelica - 在 JModelica 中引用外部文件

我有一个 Modelica 文件,它在仿真期间通过外部库 *.a 文件引用 c 代码。

例如:

在 OpenModelica 中打开 Modelica 模型时,所需文件似乎会自动加载,因为它会模拟并给出适当的结果。

但是,当我尝试使用 JModelica-SDK-1.12 编译 Modelica 文件时,我收到一个错误,即找不到库 *.a 文件。

所以我的问题是:在 JModelica 中使用 compile_fmu 时引用其他文件的正确方法是什么?

没有成功,我试过:

奇怪的是,当我使用 JModelica-1.17(非 SDK)时,文件编译得很好,但结果没有意义。建议我尝试使用 SDK 版本,看看它是否修复了我在上一篇文章中的错误