问题标签 [openmodelica]
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 - 如何避免封闭媒体电路中的循环相等错误?(模型)
我正在尝试使用 thermo.fluid 库组件(在 OpenModelica 中进行编译)在 modelica 中构建泵送水热交换回路的模型。定容泵的入口连接到加热管组件的流口,表面上是由泵驱动的回路中的“最后”级,因此回路完成。
当我的介质从环境源、泵、系统流出到环境接收器时,该系统工作,但现在我已经“完成了电路”,模拟失败并且我收到“循环相等”错误. 这在物理上有点意义,因为压力型变量需要参考基线,但似乎我系统中基于摩擦的元件会通过系统产生压力损失,并且泵将正常运行,因为压力会到达在通向泵的管道中为零。
关于如何清除这些“循环相等”错误或我应该注意的特定陷阱的任何想法?会不会是定容泵运行干扰了压力计算,我应该使用理想的泵库组件?
谢谢你的想法!
modelica - 如何为具有多体组件的移动滑轮建模
我正在努力自学 Modelica。到目前为止,我已经阅读了所有可用的书籍,并且我还从 github 下载了 Michael Tiller 出色的“Modelica By Example”代码。我希望有更多的多体示例可用,这些示例使用 Dymola 和 OpenModelica 中的标准多体库。我试图通过构建一个移动滑轮来学习如何使用多体组件,也就是说一个在非惯性参考系中旋转的滑轮。例如,这是一种用于滑车和滑车的滑轮。这种滑轮将有 3 个连接到任意平移组件的连接器,并且可能会使用具有不同长度的棱柱组件。
谁能指出我如何在 Modelica 中制作滑轮的正确方向,或者我可以在哪里找到类似多体模型的示例?
谢谢,
担
input - dymola 模型的导出需要其输入的导数
我想将 Dymola 模型导出到 Simulink。该模型由衍生块 (der)、RealInput、RealOutput 和连接组成。
当我翻译这个模型时,出现以下错误:
“该模型需要一些输入的导数,如下所列:1 u”
对我来说为什么需要导数是合乎逻辑的,但是为什么导出获取导数很重要,为什么会导致错误?出现此错误,我无法继续导出。我知道simulink中有衍生块,但是实际模型更复杂,并且出现了相同类型的错误。有没有可能避免它?我的 dymola 版本是 2014(64 位)。我使用“Visual Studio 2010/Visual C++ 2010 Express”作为编译器。
xml - OpenModelica:仿真后创建的“_info.xml”文件太大。怎么减呢?
我使用 OpenModelica 在模拟后生成的“.xml”和“.exe”文件(_init.xml、_info.xml 和 .exe)创建了一个工具。这个工具有一个用户友好的 Excel 界面来管理这个已经编译的模型。
我的问题是生成的文件的大小,尤其是“_info.xml”太大(120 Mo)。Modelica 模型当然也很大(由于模型的离散化部分,有 25000 个变量)。
为什么这个文件这么大(很多变量的描述都是重复的,看起来没用)?有什么减小尺寸的小窍门吗?
modelica - OpenModelica 和 Dymola 中的 DASSL 求解器
我对 OpenModelica 和 Dymola 中的事件处理有疑问。以下模型将输入信号限制在某个阈值。这是为了避免 log() 的否定参数。因此,会创建一个事件,并且随着事件变为真,参数“l”的变量会发生变化。
据我了解,DASSL 求解器应识别事件并自动调整其步长以正确解决事件。给定的间隔数仅用于定义保存到输出的点数。
在 Dymola 中使用 DASSL 求解模型“CompleteModel”10 秒,间隔数为 100 可以正常工作,变量“l”限制为 0.05。仅用 10 个区间求解模型失败。奇怪的是,OpenModelica 中的 DASSL 可以正确地求解模型,与给定的间隔数无关。
可以预期这种行为吗?Dymola 和 OpenModelica 的 DASSL 求解器之间是否存在很大差异?在我看来,使用 DASSL 的模型的正确解决方案应该独立于(保存的)间隔的数量(就像在 OpenModelica 中一样)。
modelica - Modelica:创建简单的流体模型
我正在尝试创建流组件的模块化模拟(起初不使用标准 Modelica.Fluid,以方便学习和简化)。我决定从只担心质量流量(而不是温度/焓)开始,并创建了一个Stream
如下所示的连接器:
使用此连接器,我想跟踪整个简单系统的压力和流量:
我为这些组件创建了以下模型:
我可以创建这些模型的实例并将它们连接到一个单独的模型中。但是,我遇到了一个我认为是边界条件的问题。我想指定输入流体源的压力。然后,当流量流向油箱时,阀门将产生压降。这是由罐内标称压力和流体源之间的差异决定的,应该可以正常工作。
问题是当泵遇到流体槽时(或者如果我有一个泵直接进入水箱)。设置流体槽的压力会导致我的泵出现问题,因为它也会设置泵出口的压力(它们已连接)。泵的压力需要是入口压力和流量的函数(它应该给系统增加一些压力),并且水槽的压力应该基于此计算。然而,在计算 dp 时也需要这种压力......所以我最终绕了一圈。
我做错了什么,有没有更好的方法来实现这样的系统?
谢谢!
编辑:我忘了提到设定点(泵尚未实现)是在使用这些模型和方程的主模型中设置的。所以我所有的模型都是平衡的。(请参阅我对下面答案的评论)。
modelica - 在 Modelica 中液位 <= 0 时限制水箱流量
我有一个正在创建的坦克模型,如下所示:
我怎样才能做到这一点,当液位 <= 0 时,水箱将不允许任何负值流动(没有端口可以有流体离开,但流体仍然可以进入)?我觉得我错过了一些微不足道的东西,但如果没有太多方程(超定系统),似乎找不到方法。
谢谢
modelica - 未指定维度的 Modelica 数组
给定一个模型,其中包含未指定大小的连接器数组 x,例如
x 如何以特定大小实例化,例如像这样的东西?
modelica - Modelica 数组方程
在第 99 页的 Modelica 3.3 rev 1 语言规范中,有以下参数声明。
[1]
在这种情况下是什么意思?
modelica - 在 Modelica 中动态切换连接
假设我有一个涉及各种基本类型(Real、Integer、String、Boolean)的大型连接器。如何根据状态事件切换连接?我想做这样的事情:
这不起作用。如何在 Modelica 中正确表达?
根据 Adrian Pop 的评论回答。
更新:上面的模型是错误的,因为如果没有事件发生,ocon 将永远输出 icon[1] 的初始值,这不是您对开关的期望。请注意,这不是由于错误的答案,而是由于我对答案的错误解释。以下模型基于 Michael Tiller 的回答。