何时在 Modelica 语言中使用 noEvent 运算符?

2023-12-06

Modelica 中的 noEvent 运算符不使用迭代来查找触发事件的精确时刻。

enter image description here

看来这会导致计算错误,这是我在以下网站上找到的示例https://mbe.modelica.university/behavior/discrete/decay/那么使用noEvent操作符时是否必须保证功能流畅呢? 如果不能保证准确性,使用 noEvent 运算符的目的是什么?

enter image description here


虽然问题已经得到解答,但我想补充一些要点,因为我认为这对很多人来说都是有用的。

有一些常见的原因需要使用noEvent()陈述:

  1. 保护表情:这用于防止函数在其有效范围之外进行评估。一个典型的例子是der(x) = if x>=0 then sqrt(x) else 0;这在大多数常见的编程语言中都能完美运行。这在 Modelica 中并不总是有效,原因如下: 当搜索满足条件的时间时x>=0变为 false,则两个分支可能都用以下值进行评估x在 0 左右变化。 Marvel 发布的屏幕截图中提到了同样的事实。如果负数的平方根,这会导致崩溃x被评估。所以der(x) = if noEvent(x>=0) then -sqrt(x) else 0;用于抑制迭代以搜索交叉时间,将不连续性的处理留给求解器(通常称为“按字面意思取表达式而不是生成交叉函数”)。如果使用可变步长求解器,这会使求解器减小步长以满足其相对误差容限,这可能会导致性能下降。此外,如果所描述的函数不够平滑,导致模拟不精确甚至不稳定,那么这可能是至关重要的。

  2. 连续表达式:当函数连续时,实际上不需要事件。这归结为以下事实:事件用于描述不连续性。因此,如果没有,通常该事件就是多余的,因此可以被抑制。这实际上是由smooth()Modelica 中的运算符,但规范指出,该工具仍然可以自由生成事件。根据我的经验,如果功能的更改相对较大,工具会生成事件。因此,有一个有意义的noEvent()在一个smooth().

  3. 避免喋喋不休: noEvent可以在这里提供帮助,但实际上喋喋不休是一个更普遍的问题。因此,我建议通过重新构建模型来解决与抖动相关的问题。

如果以上都不成立,则使用noEvent应仔细考虑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时在 Modelica 语言中使用 noEvent 运算符? 的相关文章

  • 如何在 Openmodelica 中指定介质?

    我正在 Modelica 中模拟热泵热水系统 我附上了我的模特的照片 但是 当我运行模型时 出现错误 Medium 是部分的 部分类中不允许进行名称查找 您能告诉我吗 我该如何指定水箱 热泵冷凝器和管道中的水 我应该如何指定热泵蒸发器中的空
  • OpenModelica 建模库仑摩擦:翻译错误,优化后模块 findZeroCrossings(模拟)失败

    我正在尝试在 Modelica 中模拟库仑摩擦力 基本概念是检查表面之间的相对速度是否小于常数 并且试图使表面相互滑动的外力是否小于最大静摩擦力 法线力 静摩擦系数 则摩擦力等于负值的外部剪切力 否则 摩擦力等于滑动方向相反方向的动摩擦力
  • modelica 中的功能集成

    我想在 Modelica 中对时间以外的变量函数进行积分 但我不知道该怎么做 例如 如何计算上限为 5 下限为 2 的 x dx 的积分 x dx x 2 2 Modelica 并不是像 Maple Mathematica 或 Matlab
  • Modelica 类图

    我正在寻找一种可以 自动 从 Modelica 代码创建类图的工具 https trac modelica org Modelica attachment ticket 85 classDiagramModelicaMedia png我需要
  • 非线性代数方程的初步猜测

    我有一个非线性代数方程组需要求解 如何使用计算值 具有连续时间变化 作为解变量的初始猜测 而不是使用参数作为起始值 初始方程部分可以用于此目的吗 我创建了一个测试模型来解释这个问题 model Teststartvalue Real val
  • 何时在 Modelica 语言中使用 noEvent 运算符?

    Modelica 中的 noEvent 运算符不使用迭代来查找触发事件的精确时刻 看来这会导致计算错误 这是我在以下网站上找到的示例https mbe modelica university behavior discrete decay
  • 使用 python 进行 Modelica 参数研究

    我想使用 python 在不同的 modelica 建筑库 建筑物 IDEAS 中运行参数研究 例如 更改渗透率 我尝试过 simulateModel和simulateExtendedModel zone n50 value 我的问题 为什
  • 在 OpenModelica 中模拟闭式液压循环

    我想对一个封闭的液压循环进行建模 正如人们可以在 Modelica 标准库 流体 示例 加热系统中找到的那样 对于供暖系统以及我的 简约 示例 我遇到了同样的问题 系统是超定的 在接下来的讲座中 您可以发现加热系统是一个 坏例子 所以我想这
  • 仿真期间的 Modelica 输出文件

    我进行了很长时间的模拟 并且需要在模拟继续时检查输出 另一个原因是我正在进行实时模拟 所以我也想实时查看输出 如果 OpenModelica 在模拟过程中创建一个输出文件 以便我可以使用第 3 方工具 也许是 Python 读取并绘制它 那
  • 是否可以在 Windows 机器上从 Dymola 编译 Linux 可运行的 fmus?

    我正在尝试使用 Dymola 从 Windows 计算机导出 FMU 以便在 Linux 和 Windows 操作系统上使用 我猜这样的 fmu 将有 linux64 和 linux32 二进制文件以及 win32 和 win64 二进制文
  • 在仿真期间暂停 JModelica 并传递增量输入

    您好 Modelica 社区 我想在 JModelica 中并行运行两个模型 但我不确定如何在模型之间传递变量 一个模型是 python 模型 另一个是 EnergyPlusToFMU 模型 JModelica 文档中的示例具有在模型仿真之
  • 不同 Modelica 仿真环境之间有什么区别?

    有不同的 Modelica 仿真环境 包括 Dymola Wolfram SystemModeler OpenModelica 和 Jmodelica 所以 我尝试加载热流体库 ThermoSysProhttps github com Dw
  • 如何将一个向量的参数插入另一个向量?

    我有一个大小为 5 的 重心 向量 parameter Length barycenters 5 1 2 3 4 5 我想将此向量的参数添加到另一个大小为 7 的向量 b prime 中 这意味着打算让 b prime 0 1 2 3 4
  • 如何将自定义包添加到 Dymola/Modelica 的启动路径中?

    我有一个自定义包 我发现自己在 Dymola 模型中重复使用该包 并且我想将此包放在一个公共目录中 每当我启动 Dymola 时都会自动加载该目录 我当前的策略是在加载我正在处理的模型时加载自定义包 然后保存总计 这并不优雅 因为自定义包的
  • 理解 Dymola 错误消息时遇到问题

    谁能告诉我 代数环 的含义 以及我应该如何通过添加 预 运算符来应对这种情况 我真的没看懂 Error Failed to generate code for an algebraic loop involving when equatio
  • Modelica 外部函数:C 与 C99

    在 Modelica 中可以定义外部函数 规范第 12 9 章表示支持 C 和 Fortran77 将来可能会支持 C 和 Fortran90 现在我想知道哪个C 的版本 http en wikipedia org wiki C progr
  • Dymola、空白和版本控制

    我在 Dymola 中打开了一个 Modelica 库 更改了一行 关闭 Dymola 并单击 全部保存 现在 TortoiseSVN 显示了数百个已更改的文件 而不是仅显示一个文件 其中更改了我想要执行的一行 所有这些变化要么是空格 要么
  • 如何在自定义 Fluid.System 中定义通用介质?

    我正在设计一组用于流体系统建模的自定义组件 由于整个模型中只有一种介质 因此我希望能够在一个地方定义该介质 这system大多数 Modelica Fluid 系统所需的组件无论如何看起来都是一个好地方 我已经尝试了以下 MWE 但我遇到了
  • OpenModelica 中的集成方法

    我注意到 OpenModelica 模拟设置中有多种可用的集成方法 我不知道这些是什么 我可以获得有关这些的一些信息吗 如果改变积分方法 结果的质量会发生变化吗 有关 OpenModelica 中可用集成方法的简短文档 https open
  • 如何覆盖默认方程?

    所有派生类都应该从其基类继承一些默认方程 当默认方程对于派生类无效时 应该重新声明它 下面这个简单的例子有点愚蠢 我是否走在实现上述目标的正确轨道上 或者有没有更好的方法用 Modelica 语言来表达这一点 package Pkg par

随机推荐

  • jQuery 和原型事件

    我有一个在 加载 事件上触发的原型代码 Event observe imageEl load this someFunction bind this 当我使用 jQuery 代码创建 真实 事件时 例如 jQuery imageEl sel
  • FOUND_ROWS() 不断返回 0

    result db con gt query SELECT SQL CALC FOUND ROWS FROM users LIMIT 0 10 count result db con gt query SELECT FOUND ROWS a
  • 为什么-use-network=false

    有人知道为什么我必须在 Flex Builder 中使用 use network false 吗 这是在项目属性中设置的 并且是附加编译器参数 仅当我想读取 XML 等外部文件时才会出现这种情况 我团队中的其他人不必有 use networ
  • 在 R 中读取格式错误的 csv - 引号不匹配

    我有数百个大型 CSV 文件 每个文件的大小从 10k 行到 100k 行不等 其中一些文件的描述格式不正确 引号内有引号 因此它们可能看起来像 ID Description x 3434 abc def 988 2344 fred 348
  • 当我将两个脚本添加到 html 页面时..其中一个不起作用 [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我创建了两个 jquery 和 script 标签来日历确认 但是当它们位于单独的 ht
  • 在 WinForms 中将窗口保持在顶部并窃取焦点

    我意识到在正常情况下这将是完全不好的做法 但这仅适用于需要从条形码扫描仪 模拟键盘 获取输入的测试应用程序 问题是我需要在扫描时启动一些脚本 所以我需要在单击脚本运行它后窗口直接重新获得焦点 我尝试过使用Activate BringToFr
  • Arquillian 嵌入式 Glassfish 证书已过期

    8 月 14 日 Glassfish 使用的 gtecybertrust5ca 证书过期 导致我的 Arquillian 测试打印错误 这个问题与这个问题类似 启动 Glassfish 3 1 2 时日志中的证书已过期 除了 我正在使用Em
  • Pandas 数据精度[重复]

    这个问题在这里已经有答案了 默认情况下 数据框中的数值最多仅存储 6 位小数 我如何获得完整的精度 例如34 98774564765 存储为 34 987746 我确实想要完整的价值 0 00000565 存储为 0 除了将格式应用于每个数
  • 循环多个表执行同一个查询

    我有一个数据库 每天都会创建一个表来记录流程实例 这些表标记为 MESSAGE LOG YYYYMMDD 目前我想对所有这些表顺序执行相同的查询 我编写了下面的 PL SQL 但卡在第 10 行 如何针对此处的所有表成功执行 SQL 语句
  • 如何指定无分区密钥来删除文档DB Java SDK中的文档?

    我只有一个集合 当我尝试使用以下代码删除文档时 PartitionKey partitionKey new PartitionKey undefined RequestOptions requestOptions new RequestOp
  • 如何在 vb.net 中使用 OLE DB 更改 Crystal Reports 连接字符串?

    我有一个 Connection vb 其中存储了我的所有连接字符串并由整个程序使用 我是 Crystal Reports 的新手 并且我想根据我创建的连接字符串更改其连接字符串 我使用 MS SQL 2008 SQL Server Nati
  • 为什么局部类接受静态最终变量?

    我用谷歌搜索了这个广泛但无济于事 我似乎无法理解这个概念 为什么本地类接受静态最终字段 比如下面的例子 public void sayGoodbyeInEnglish class EnglishGoodbye public static f
  • 在 Visual Studio Code 和 Delve 调试器中使用标签调试 Go

    Answer 根据putus的回答 我想出了以下配置来一键构建和调试 首先 您需要添加一个任务来构建具有相应标签的二进制文件 See https go microsoft com fwlink LinkId 733558 for the d
  • Razor View Engine:表达式树可能不包含动态操作

    我有一个与此类似的模型 public class SampleModel public Product Product get set 在我的控制器中 我尝试打印时遇到异常 Html TextBoxFor p gt p Product Na
  • 使用hash时如何将id作为选择器?

    假设有以下 html div test1 div div test2 div 现在 以下内容不起作用 为什么 css test 1 color red jQuery test 2 css color blue 要使用任何元字符 例如 和 作
  • Urban Airship - 使用 NSURLConnection 发送推送

    我正在开发一个简单的原型 需要测试从一台设备向另一台设备发送推送通知 我已向 Urban Airship 发送电子邮件 要求为我的应用程序打开 允许从设备推送 他们确实打开了它 我正在尝试使用 NSURLConnection 从设备发送推送
  • Java ActionListener 错误:类型不兼容

    我在 JButton 上设置 ActionListener 时遇到一些问题 这是代码 package pipes import java awt import java awt event import javax swing public
  • 关闭窗口 - 如何确定窗口是如何打开的?

    在一页上 我有一个超链接target blank 在目标页面上 我有一个 关闭 按钮 它使用 JS 关闭新选项卡 窗口 如果用户点击超链接 我可以使用JS关闭打开的窗口 伟大的 如果用户右键单击链接并选择 在新选项卡中打开 我的 JS 事件
  • 从 GtkBin 扩展

    我正在尝试制作一个自定义小部件 类似于 Gtk 在所有类似 TreeView 的小部件上使用的 快速搜索 条目 这是我最初想法的一个简化示例 from gi repository import Gtk class QuickSearch G
  • 何时在 Modelica 语言中使用 noEvent 运算符?

    Modelica 中的 noEvent 运算符不使用迭代来查找触发事件的精确时刻 看来这会导致计算错误 这是我在以下网站上找到的示例https mbe modelica university behavior discrete decay