问题标签 [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.
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,因为您可以在那里编写脚本。
问候,贾西尔
python - JModelica:更改循环迭代变量而不重新编译
我在 JModelica 中遇到了以下安静的基本问题。考虑一个相当简单的模型:
我用 python 编译它并运行,当然,变量 Dum 的值总是 5,因为它应该是。现在的问题是,当我想在加载已编译的 fmu ( test.fmu ) 后更改为参数“It”时:
然后运行模拟,它仍然为“Dum”提供 5,而不是应有的 4。虽然“It”实际上变成了 4,但通过在模拟后绘制“It”的时间曲线可以看出。有谁知道是否有办法即时更改它,以便它真正影响循环?
这当然是一个玩具示例,但我需要该功能用于一个更大的项目,我迫切需要在不同的范围内循环,并且重新编译只是非常耗时。
非常感谢
modelica - 具有模式相关参数的重复组件
想象有一个重复的组件模式(例如,动态管道),它具有一个参数(例如,长度),该参数将根据其所在模式的位置而改变。我建议可以通过在感兴趣的参数之前省略“每个”前缀来实现。
例如。让我们通过以下方式获取管道并将它们添加到模型中:
对于一个非常简单的示例,让我们指定我们希望模式中第一个管道的长度具有某个长度(length_1),而所有其他管道的长度都具有 length_n。我的想法是,可以在以下列方式定义参数时放置一个 if 语句,以便将 length_1 分配给 n=1 管道组件,而将所有其他组件分配给 length_n:
上述框架中的一个简单模型如下所示:
就目前而言,该模型不起作用。我不确定 if 语句的构造方式是否错误,或者这是否根本不允许(如果我对“每个”前缀的解释有误,可能就是这种情况)。
有什么想法吗?
modelica - 如何将 heatPorts.T 传递给 DynamicPipe flowModel?
在使用 Modelica 标准库 DynamicPipe(或从 PartialTwoPortFlow 构建的类似模型)运行的流动模型的实现中,有一些流动模型的示例发生在需要壁属性的传热环境中(例如 heatPorts.T 和/或 heatPorts.Q_flow) 以计算压降。
例如,压降模型可能需要根据介质压力和壁温计算新的粘度或普朗特数,以捕捉冷却/加热效应等。
传热模型通过传递“状态”来获得介质的属性,但是 DynamicPipe 或 PartialTwoPortFlow 中没有存在相反的连接。
我尝试了许多不同的想法,但都没有成功,包括创建一个新的 PartialTwoPortFlow,其中包含 DynamicPipe 中存在的所有传热调用。
我对发布这个问题犹豫不决,因为我很惊讶我在这方面遇到了这么多困难,并且找到一个直截了当的解决方案也不会感到惊讶。尽管如此,我还是需要这种能力,并且好奇其他人是否已经解决了这个问题,因为我缺乏想法。
所以我的问题是:
将 heatPorts.T 值传递给 flowModel 的正确/有效方法是什么?
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 个组件的模型:
- 质量流源(M_bound)
- 突然适配器(abruptAdapter)
- 动态管道(pipeSmall)
- 压力源(P_bound)
该部分还包含模型的两个连接案例equation
:
案例#1:M_bound -> abruptAdaptor -> pipeSmall -> P_bound
案例#2:M_bound -> pipeSmall -> abruptAdaptor -> P_bound
摘要:案例#1 模拟得很好,但案例#2 失败了。产生的错误如下图所示:
问题:为什么案例 #2 失败以及如何修复它的建议?任何见解都会很棒。它甚至可能是AbruptAdaptor
组件中的错误。
型号代码
python - JModelica 中的 Python/Pyomo 错误
我已经为 JModelica(基于 python)安装了一个商业求解器包 (OCT) --> 当我想通过“Ipython”打开 JModelica 时,我收到以下错误消息:
我通过 spyder/Anaconda2(64 位)使用 pyomo
如果有人可以帮助我,那就太好了!
modelica - 如何在 Dymola 中将水从气缸转移到水箱?
我创建了一个Dymola 模型。它有一个空罐,通过静态管道连接到 sweptVolume 组件的输出。sweptVolume 的输入是一个恒定的力,我想借助它将水从液压缸输送到水箱。
我假设活塞的横截面积。假设压力为大气压(101.325kPa),我计算了置换气缸中的水所需的力。但是,不知何故,我看到水没有被取代,而且体积保持不变而没有装满水箱。
请建议,应为 sweptVolume 元素(位置、移动等)提供什么类型的输入,以防给定的输入恒力错误。
我要感谢您的时间和兴趣。
python - FMU 变量值与输入不匹配
我在尝试配置的简单联合仿真中遇到了一些奇怪的行为。我在 EnergyPlus 中设置了一个建筑能源模型,以测试从 JModelica 生成的 FMU。然而,建筑能源模型会在联合仿真步骤中被挂起。然后我在 JModelica 中运行 FMU,得到了一些非常奇怪的结果。
Modelica 代码是:
上面的代码引用了“CAdd”,它是 c 代码“CAdd.c”的库文件:
在 CMD 中使用以下两个命令将其编译为库文件:
我可以使用包装器在 OpenModelica 中运行上面的示例,并且效果很好。
然后,我使用 JModelica 将上述内容编译为 FMU 以进行联合仿真。JModelica 编译代码为:
然后我模拟了 FMU 并使用 JModelica Python 代码得到了奇怪的结果:
除了看到这种奇怪的行为之外,FMU 结果中的输入“FirstInput”和“SecondInput”与 python 代码中指定的 u1 和 u2 不匹配。我希望有人可以帮助我更好地了解发生了什么。
最好的,
贾斯汀
modelica - 访问 Dymola/Modelica 中经过验证的函数库(例如,贝塞尔函数)
我需要 Modelica 中的 Bessel 函数,以及将来已经存在于外部 C/Fortran/Python/etc 库中的许多可能的函数。
我知道有某种调用外部函数的能力,因为这就是 LAPACK 在 Modelica 标准库中的使用方式。
我的问题:
在我花时间试图弄清楚外部函数的魔力之前,我想知道是否有人知道已经集成了诸如 GNU ScientificLibrary 或 Python SciPy 之类的东西,并能指出我的方向。
谢谢
modelica - 在 JModelica 中引用外部文件
我有一个 Modelica 文件,它在仿真期间通过外部库 *.a 文件引用 c 代码。
例如:
在 OpenModelica 中打开 Modelica 模型时,所需文件似乎会自动加载,因为它会模拟并给出适当的结果。
但是,当我尝试使用 JModelica-SDK-1.12 编译 Modelica 文件时,我收到一个错误,即找不到库 *.a 文件。
所以我的问题是:在 JModelica 中使用 compile_fmu 时引用其他文件的正确方法是什么?
没有成功,我试过:
奇怪的是,当我使用 JModelica-1.17(非 SDK)时,文件编译得很好,但结果没有意义。建议我尝试使用 SDK 版本,看看它是否修复了我在上一篇文章中的错误。