问题标签 [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.
modelica - Modelica - 在一行中的多个组件上设置传输变量的最小值(最大值)
以下构造会生成一个错误,指出方程太多。
这个想法是在所有“myBlock”组件中为 u 和 y 获得相同的最小值。但是 u (=min...) 的赋值似乎对所有组件都是强制性的,并且不能一个接一个地计算。
知道如何解决这个问题吗?谢谢。
debugging - Modelica 条件打印(用于调试)
在 Modelica 中,是否可以在一行中包含 if 条件和命令?
(当然可以写成三行,但我更喜欢写成一行。)
类似于:
modelica - 算法部分语句的执行顺序
在 OpenModelica 上的两个模拟结果都是 x 总是等于 5。为什么?
看起来模型中的xtry
应该是5。但是为什么try1
当时间等于3时模型中的x不是10呢?
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 - 被算法部分的 when 子句弄糊涂了
when
每当保护条件从 false 更改为 true 时,都应该触发该语句。但在 OpenModelica 中并非如此。try
OpenModelica 中的示例显示when
仅触发一次。我想知道这是OpenModelica的错误还是我的一些误解。
simulation - 控制混合 Modelica 模型中的事件
我对 Modelica 中的混合建模范式感到困惑。一方面,事件是有用的,另一方面,它们是要避免的。让我解释一下我的情况:
我有一个大型模型,由一个社区中的多个建筑物组成,模拟了 1 年多。最初,模型运行非常缓慢。在尽可能多的 if 条件周围添加 noEvent() 极大地提高了速度。
随着开发的继续,模型的控制变得更加复杂,我又遇到了很多事件,有时间隔很短。给出一个想法:
这些事件会破坏输出(为了正确的后处理,我需要事件中的变量)并减慢模拟速度。而且,我感觉某些 noEvent(if...) 会导致意外行为。
我想知道在某些时间步强制我的事件并在这些时间步之间禁止它们是否是一种解决方案?理想情况下,我想根据某些条件触发这些“强制事件”。例如:白天他们应该每 15 分钟一次,每分钟都在高太阳辐射下,晚上我根本不想要事件。
这是个好主意吗?我想这会更快,因为许多状态事件将成为时间事件?如何使用 Modelica 3.2(在 Dymola 中)做到这一点?
预先感谢所有答案。罗尔
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 - 在 modelica 中使用 PDE 的耦合系统
只是几个问题,我希望有人能抽出时间来回答:)。
如果我们有 COUPLED 模型示例:n 个独立变量系统 X 和 n 个非线性偏微分方程 PDEf(X,PDEf(X)) 相对于 TIME 取决于 X,PDEf(X)(偏微分方程取决于变量 X )。你能给点建议吗?这是一个例子:
假设 c 是输出或期望的变量。假设 r 是自变量。偏微分方程如下所示:
∂c/∂t=D*1/r+∂c/∂r+2(D* (∂^2 c)/(∂r^2 )) D=常数 r=0:0.1:Rp- Matlab语法,如何在 Modelica 中表示相同(我使用积分器,但没有用)?
这是一个代码(不起作用):
这里有更多问题:
- 此代码在 OpenModelica 1.8.1 中不起作用,在 Dymola 2013demo 中也不起作用。我们如何才能拥有变量 c 的连续函数,而不是函数数组?
- 我们可以将数组 cp 的值放在 combiTable 中吗?如何?
- 如果相反,“算法”停留在“方程式”代码无法成功检查。为什么?在 OpenModelica 中,错误是:无法展平模型:S。
- 有没有简化的方法来使用一组耦合的方程(PDE)?我知道 Modelica 中的 PDE 库,但我认为它们很复杂。我想写一个求解PDE的函数并在“主模型”中调用这些函数,这样函数的输出就是“c”的连续函数。我不知道对函数数组做什么。
- 如果我们像在 Matlab 中那样“说话”,你能给我建议如何理解 Modelica 语言吗?例如:自变量 r 的值,我们可以在 Matlab 中指定,比如 r=0:TimeStep:Rp…Modelica 中怎么做呢?请解释一下“方程”部分的工作原理,是否与 Matlab 相似,是否有必要的顺序方法?干杯:)
modelica - 如何为在 Modelica/Dymola 中建模的 MIMO 热液系统设计一个/多个控制器
我目前正在使用 Francesco Casella 教授的 ThermoPower 库在 Modelica/Dymola 环境中开发一个大型复杂的热液压系统。目前,我已经完成了我们的系统模型(包含几个闭环液压回路)的构建,并专注于为开发的模型设计控制器。鉴于系统的复杂性,我有大约 25 个 PI 控制器来控制各种阀门开度、泵、冷凝器和锅炉。在这个阶段,我正在使用一些明智的试错法来调整控制器的增益。我试图查阅文献,看看是否有任何正式的设计方法或任何经验法则来为这种多输入多输出 (MIMO) 热液压系统设计控制器。最后,我想问是否有人可以提供一些处理此类系统的控制器设计的指针或文献/论文。因为我在控制器设计(滑动模式、线性控制、根轨迹等)方面的知识对我没有帮助,因为这些方法中的大多数都是基于可用的模型方程。
此外,对于这样一个大型热工水力系统,如何设置系统的初始条件?是否只需要提供一些合理的猜测值并期望 Dymola 负责其余部分?
coding-style - Modelica 风格指南
对于许多编程语言,都有可用的样式指南,例如Python 的PEP8、此Matlab 样式指南或Google 的样式指南。对于 Modelica,我找到了用户指南中描述的约定,但是有更全面的可用吗?并且,理想情况下,一个有助于重新格式化、缩进等的工具?