问题标签 [modelica]
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.
java - 连接 modelica 模型和 Java 模型
我有一个用 Dymola 开发的模型,我必须将它与 Java 中的模型连接起来。更准确地说,在每个时间步,两个模型都为对方提供输入。
到目前为止,我发现: - Dymola 能够生成/导出 C 代码。它们提供了一个难以理解的(到目前为止)界面,但要点是导出仅适用于 Visual C++,我需要跨平台。- OpenModelica (OMC) 可以生成 C 代码,但我没有发现它是否可以用作库。
如果您对如何连接 modelica 和 Java 模型有任何建议,请分享;)
modelica - Modelica.Media:BaseProperties 与 setState_XXX
Modelica 标准库附带Modelica.Media
提供流体热力学特性的库。引用Modelica.Media 文档:
Modelica.Media 中的媒体模型由包提供,继承自部分包
Modelica.Media.Interfaces.PartialMedium
。每个包都定义:
- [...]
- 一个
BaseProperties
模型,用于计算流体的基本热力学性质;setState_XXX
从不同的输入参数(例如密度、温度和组成,将是 setState_dTX)计算热力学状态记录的函数;- [...]
如上所述,有两种不同的使用媒体库的基本方法,将在下一节中更详细地描述。
一种方法是使用模型 BaseProperties。
[...]
第二种方法是使用 setState_XXX 函数来计算热力学状态记录,从中可以计算所有其他热力学状态变量 [...]
我的同事更喜欢BaseProperties
(他花大部分时间建模组件),
我更喜欢setState_XXX
函数(我花大部分时间编写属性库)。
现在我们想一起开发一个简单而小型的组件库,也许我们应该同意使用这两种方法中的一种。
你能推荐一本解释这两种方法的优缺点的出版物吗?提倡使用该setState_XXX
功能的出版物当然是首选... ;-)
是否有一些简单的规则来决定在对组件(例如非常简单的涡轮机)进行建模时使用两种方法中的哪一种?Modelica.Fluid 中的组件似乎同时使用了两者。
connector - Modelica - 仅更改复杂类型连接器的一个参数
有一个复杂的连接器,在传播它时,我只想修改一组变量中的一个变量,而不必为其他变量显式编写所有等式方程。
理想的将是一个连接语句和一个特定变量的覆盖。
我非常感谢您的帮助。
modelica - Modelica:在自定义类/模型中使用 der()
我正在尝试学习 Modelica,并且使用多体库构建了一个非常简单的模型。该模型由一个世界对象和一个连接到梁的主体(质量)组成,然后连接到 2 个扩展的 PartialOneFrame_a 类(见下文),我对其进行了修改以在一个轴上创建一个恒定的力。本质上,这组物体所做的所有事情都是在重力作用下下落并旋转,这是由于两个力作用于与身体中心纵向偏移的位置,从而在 cg 周围产生了一对。
接下来我想看看我是否可以创建一个非常简单的空气动力分量,我将其连接到旋转“臂”的末端。我的想法是遵循上面的 Constant_force 模型示例,并在我的第一个简单切割中根据局部框架速度生成力。这就是我的问题出现的地方 - 我尝试使用 der(frame_a.r_0) 计算速度,然后我将使用 resolve2 函数将其转换为本地帧,但添加 der(...) 行导致模型无法正常工作 -它会“成功”模拟(使用 OpenModelica),但 v11b 向量(见下文)将全为零,出现用于绘图的 der(frame_a.r_0) 也是如此 - 不仅如此,所有其他组件行为现在也只是始终为零 - (身体的 frame_a.r_0、w_a 等)。
我尝试了多种方法来简单地计算速度(您将从注释行中看到),因此我可以绘制检查正确的行为但无济于事。我使用了算法或方程方法——我确实用不同的方法实现了一些不同的(但也有不正确的行为)。
有小费吗?我必须在这里遗漏一些基本的东西,似乎框架组件本身并不携带速度矢量,所以我必须计算它?
modelica - 如何在 Dymola/Modelica 中仅模拟三个子模型之一
我是 Dymola 的新手,我必须在 Dymola 中实现一个化学反应器。我在 3 个不同的模型中对反应器的行为进行了建模,因为反应器的行为取决于变量 x。所以模型a对x<=0.1有效,模型2对0.75>x<0.1有效,模型3对x>0.75有效。有没有办法在每个模拟步骤中只运行三个模型中的一个?我研究了“if”语句,将所有 3 个模型方程放在一个模型中,但这没有用。有没有人可以帮助我?任何提示都会很棒!谢谢!
modelica - 初学者:在我的项目中依赖 modelica 是否安全?
假设我根据 Modelica 语法正确地建模了一个完整的系统,编译器是否“成熟”足以处理它?
我需要建模一个至少有 15 个连通分量的系统,每个分量都比较简单,从数学上讲,只有代数方程。Modelica 对我很有吸引力,但我是一个完整的初学者,这个项目对我很重要,所以我有点害怕承诺 Modelica。
我知道编译器无法完全模拟所有标准库示例和模型,我怎么知道确切的限制是什么?
谢谢。
modelica - 如何推导除时间以外的其他变量?
我刚开始使用modelica。我知道有一个内置的时间导数运算符 [der(expr)]。如果我必须用其他变量推导怎么办?例如:如果我必须派生一个变量'x',这怎么形成?
modelica - 在 Modelica.Media 中处理质量分数:是否使用 reduceX?
我有一个关于如何处理我正在研究的多组分介质的质量分数的问题。更具体地说,我想知道是选择简化状态模型(如 reduceX = true;)还是全状态模型(如 reduceX = false;)。
该模型目前处于简化状态,并且似乎可以正常工作。对我来说,利用 sum(X) = 1 这个事实似乎是个好主意。但是,我在 Modelica.Media-package 的文档中发现了这一点
“(...)虽然这种模型(全状态模型)更重,因为它提供了一个额外的状态变量,它不太容易出现数字和/或符号问题,这可能是由该约束引起的(在简化状态模型中)。”
是否有人碰巧知道这些“数字和/或符号问题”是否值得担心,或者是否有任何其他原因不使用简化状态模型?或者就此而言,使用全状态模型的任何其他好处?
任何有关此事的帮助或想法将不胜感激!
modelica - Modelica.Media:使用跟踪组件
我正在尝试了解跟踪组件以及如何在 Modelica.Media 和 Modelica.Fluid 的上下文中使用它们。我目前正在研究一种多组分介质,其中一些组分以微量存在,即对于流体的整体特性并不重要。另一方面,这些成分会发生(化学)反应,因此必须以合理的方式将它们包含在质量平衡中,以解释这种行为。
我想将它们建模为跟踪组件,但我无法完全弄清楚如何在上述上下文中实现这些组件。更具体地说,我无法弄清楚如何使痕量组分的质量(分数)因模型内部反应或模型内部传质而变化。在我看来,微量成分的质量分数在给定介质中应该是恒定的——对吗?
目前,我的媒体的所有组件(包括微量组件)都作为“正常”组件包含在内,因为我无法使跟踪组件按照我需要的方式运行。无论如何,当我使介质或多或少形成划痕时,我认为在给出计算流体特性的方程时,我可以忽略少量存在的成分。有没有人有任何以这种方式对微量媒体组件建模的经验?
如果有人能详细说明普通组件和跟踪组件之间的区别,和/或就跟踪组件是否是对上述系统进行建模的最佳方式提供一些建议,我将非常感激。任何帮助或意见将不胜感激!
modelica - 如何在modelica中使用偏导数?
如果我必须在 modelica 中使用偏导数,那该如何使用。我不确定是否可以在modelica中解决偏导数,但我想知道,如果可以使用它,应该如何实现。