问题标签 [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 - 关于在 OpenModelica 中使用 MassWithStopAndFriction 和硬停
我对 Modelica.Mechanics.Translational.Components.MassWithStopAndFriction 中的硬停有疑问。据我所知,质量不应超出区间 (smin, smax) 但实际上在我的示例中包含以下内容:
难道我做错了什么?
modelica - 在 OpenModelica 中对封闭式液压循环进行建模
我想模拟一个封闭的液压循环,可以在 Modelica 标准库/流体/示例/加热系统中找到。对于加热系统以及我的(简约)示例,我遇到了同样的问题:系统过度确定。您可以在接下来的讲座中发现 HeatingSystem 是一个“坏例子”,所以我想这是一个众所周知的问题,但我并不真正明白这一点。 http://www.modprod.liu.se/MODPROD2011/1.252944/modprod2011-day2-talk3-Keynote-Francesco-Casella-Control-and-Modelica.pdf(第 20 页)
我的例子是:
一个泵
抵抗
它们与一个
整个系统是:
任何人都可以给我一个提示问题的全部内容吗?
modelica - 在 OpenModelica 中为周期性时变实变量建模
我要建模的是一个周期性的时变实变量,下面的代码无法模拟。有人有建议吗?
所有错误信息如下:
Translation 18:32:29 0:0-0:0 Internal error Transformation Module failed!
翻译 18:32:29 0:0-0:0 内部错误 BackendDAETransform.reduceIndexDummyDer 失败!
翻译 18:32:29 0:0-0:0 内部错误 BackendDAETransform.selectDummyState: no state to select
Symbolic 18:32:29 10:3-10:13 模型结构奇异,错误发现排序方程 0.0 = 1.0; 对于变量
modelica - Modelica - 在 OpenModelica 中为滑块元素建模
流变模型通常使用三个(或四个)基本元素构建,它们是:
弹簧(例如存在)
Modelica.Mechanics.Translational.Components
。它的方程是f = c * (s_rel - s_rel0);
阻尼器(阻尼器)(也存在于 中
Modelica.Mechanics.Translational.Components
)。它的方程f = d * v_rel;
适用于线性阻尼器,可以很容易地修改以模拟非线性阻尼器:f = d * v_rel^(1/n);
滑块,在这个库中不存在(据我所知)......它的方程是 abs(f)<= flim. 不幸的是,我真的不明白如何编写相应的 Modelica 模型......
我认为这个模型应该扩展Modelica.Mechanics.Translational.Interfaces.PartialCompliant
,但问题是(在和f
之间测量的力)只有在大于...时才应该修改......如果滑块扩展,则意味着它已经遵循方程 并且
添加方程给了我一个错误“模型的一个独立子集的方程和变量数量不平衡”,我无法真正解释,即使我明白如果,方程是无用的......flange_b
flange_a
flim
PartialCompliant
flange_b.f = f;
flange_a.f = -f;
f = if abs(f)>flim then sign(f)*flim else f;
abs(f)<=flim
f = f
实际上,滑块元件不会产生新的力(就像弹簧一样,取决于它的应变,或者就像阻尼器一样,取决于它的应变率)。力是滑块元素的输入,有时会修改(当该力大于元素允许的限制时)。这就是为什么我真的不明白我应该将这种力定义为输入还是输出......
如果您有任何建议,我将不胜感激!谢谢
在前两条评论之后,我决定添加一张图片,希望能帮助您理解我试图建模的行为。 在左侧,您可以看到用于开发流变模型的四个要素:
- 一:春天
- b : 线性阻尼器(阻尼器)
- c : 非线性阻尼器
- d : 滑块
在右侧,您可以看到我试图重现的行为:a 和 b 是与弹簧的两个关联,c 和 d 分别是预期的应力/应变曲线。我正在尝试对相同的行为进行建模,只是我考虑的是力量而不是压力。正如我在对 Marco 回答的评论中所说,曲线 a 让我想起了二极管的行为:
- 如果施加在构件上的力小于滑动极限,则两个法兰之间没有相对位移
- 如果力大于滑动极限,则系统传递的力等于极限,法兰之间存在相对位移
modelica - 如何从算法部分提取值?
我正在使用与代数方程混合的抛物线 PDE,并且所有这些方程都是耦合的。我在 OM(1.9.1)("residualFcn[some number]") 中使用了欧拉方法(Dassl 太慢)和大容差(用于快速模拟)和接收错误(两种类型)。问题是求解器不能t 求解非线性系统(数学上,系统是正确的)。第一个问题是什么类型的方法在 OM 中使用欧拉积分法(显式或隐式或 Crank-Nicholson ......或......)?所以我试图用数字解决它(显式欧拉方法(在“new [N]”下面的代码中)(也许问题可能是CFL条件。),但我有问题(特定采样时间的样本重建)。所以,第二个问题是指重现特定采样时间的值?!在下面的代码中有数组“a [3]”。想法是针对每个“
还有一件事,如果 delta(t)/(delta(x))^2 >= 0.5 (delta(t) 定义用户,并指代方程部分,则 delta(x) 如下面的代码所示,并使用空间离散化在方程部分(经典前馈方法)),是否满足数值稳定性?同样的例子,但算法部分?问候
这是代码:
modelica - 如何一对一模拟执行 2 个模型?
我试图通过状态图在模拟中一个一个地执行 2 个模型。伪代码如下。在模型测试中,有两个块,stateA 和 stateB。在模拟开始时,执行 stateA。10 秒后,stateA 停止,而 stateB 执行。停止点 v 的值需要从 stateA 转移到 stateB。有人可以给我一些建议吗?非常感谢!
另一件事是为什么我无法在 openModelica 中模拟以下简单示例?
错误:在范围 StateMachine1 中找不到类 initialState
ubuntu - 绘制未显示在 OpenModelica 中的变量
今天,在 Ubuntu 12.10 中安装了 OpenModelica,并在模拟中运行了其中一个示例。它第一次工作得很好。然后我关闭了 OpenModelica 编辑器中的 Plotting Variables 窗口,当我再次运行相同的模拟时,该窗口没有列出绘图变量,而是仅显示应存储变量的 .mat 文件的路径。如何恢复默认行为?是否有我可以在某处删除的设置文件?
modelica - 如何使用前一个区间中的变量值作为方程的输入......?
是否可以使用时变变量的先前值
例如:假设我的管道入口温度为 298K,具有指定的均匀质量流量(m_flow),现在假设我正在使用 100 瓦的加热器加热管道。出口温度将达到假设 302K 的更高温度,现在如果我必须使用这个出口温度作为我的入口温度(从某种意义上说我正在循环水),我会怎么做?
是否可以根据前一个时间步的出口温度更新入口温度的值?因此,对于下一次迭代,入口温度将与前一次迭代中的出口温度相同(换句话说,流体将再循环)。
谢谢
modelica - modelica 中的功能集成
我想在Modelica中执行除时间以外的变量函数的集成,但我不知道该怎么做。例如,如何评估 x dx 与上限 5 和下限 2 的积分?
modelica - 如何在 Modelica 仿真期间确定上一个时间步的值?
如何在 Modelica 仿真期间确定上一个时间步的值?我有等式Q=m*c*(Ts2-Ts1-Tr)
,我需要从中提取Ts2
价值Ts1
。
Ts2
- 是时间步 2 的值Ts1
- 是上一个时间步的值Ts
是输入信号,它在时间上有变化。每一步都有不同的价值。在我的情况下,时间步长是 1s。其他值是固定的。
我可以在方程变量中设置time
吗?例如:
还是应该在这个模型中输入?
关于 Tymofii