Modelica 仿真和方程初始化总时间计算

2023-12-11

我想测量 DAE 系统的总模拟和初始化时间。我对挂钟时间感兴趣(就像 Matlab 中函数 tic-toc 给出的时间)。

我注意到在 Modelica 中,模拟时间有不同的标志,但实际上,与我按下模拟按钮到模拟结束所经过的时间(大约用手机时钟测量)相比,我得到的时间非常短。

我猜这个短时间只是模拟所需的时间,它不包括eqs系统的初始化。

有没有办法计算这个总时间?

预先非常感谢您,

Gabriele


亲爱的马可, 非常感谢您非常详细且有用的回复!

我实际上使用的是 OpenModelica 而不是 Dymola,所以不幸的是我必须构建为我做这件事的函数,而且我对 OpenModelica 语言非常陌生。

到目前为止,我已经有了一个基于 DAE 模拟物理行为的模型。现在,我正在尝试构建您在这里建议的内容:

使用 get time(),您可以构建一个函数: 在 t_start 转换模型并模拟 0 秒时读取系统时间 再次读取系统时间,在 t_stop 计算 t_start 和 t_stop 之间的差值。

请您给我更多详细信息:我可以使用哪个命令在时间 t_start 读取系统并模拟 0 秒?要对 t_start 和 t_stop 执行此操作,我需要不同的函数吗?

完成此操作后,我是否必须调用 OpenModelica 模型中我想知道其时间的函数(或多个函数)?

再次非常感谢您的宝贵帮助!

非常诚挚的问候,加布里埃尔


根据您拥有的工具,这可能意味着大量的工作。

第一个问题是 MSL 允许您检索系统时间,但没有包含任何内容来轻松计算时间增量。因此,Dymola 中的测试库包含操作员记录DateTime and Duration。请注意,计划将它们集成到未来的 MSL 版本中,但目前只能通过 Dymola 用户的测试库使用。

第二个问题是没有标准化的方法来翻译和模拟模型。每个工具都有自己的脚本方式来实现这一点。因此,在不知道您使用的是什么工具的情况下,不可能给出准确的答案。

Modelica 在 MSL 中提供什么

在当前的 Modelica 标准库版本 3.2.3 中,您可以通过以下方式读取实际系统时间Modelica.Utilities.System.getTime().

这个小例子展示了如何使用它:

function printSystemTime
protected 
  Integer ms, s, min, h, d, mon, a;
algorithm 
  (ms, s, min, h, d, mon, a) := Modelica.Utilities.System.getTime();
  Modelica.Utilities.Streams.print("Current time is: "+String(h)+":"+String(min)+":"+String(s));
end printSystemTime;

您会看到它通过 7 个返回值给出了当前系统日期和时间。如果您想计算时间增量,这些变量不太好处理,因为您最终会得到 14 个变量,每个变量都有自己的值范围。

一般如何测量翻译和模拟时间

With gettime()您可以构建一个函数:

  1. 读取系统时间为 t_start
  2. 平移模型并模拟 0 秒
  3. 再次读取系统时间并作为 t_stop
  4. 计算 t_start 和 t_stop 的差值。

步骤 2 取决于工具。在迪莫拉,你会打电话给

DymolaCommands.SimulatorAPI.simulateModel("path-to-model", 0, 0);

它会翻译你的模型并模拟它 0 秒,因此它只运行初始化部分。

对于 Dymola 用户

测试库包含函数Testing.Utilities.Simulation.timing,这几乎完全符合您的要求。

要翻译和模拟您的模型,请按如下方式调用:

Testing.Utilities.Simulation.timing(
  "Modelica.Blocks.Examples.PID_Controller", 
  task=Testing.Utilities.Simulation.timing.Task.fullTranslate_simulate, 
  loops=3);

这将转换您的模型并模拟 3 次 1 秒并计算平均值。

要模拟 0,请复制该函数并更改它

if simulate then
  _ :=simulateModel(c);
end if;

to

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

Modelica 仿真和方程初始化总时间计算 的相关文章

  • 如何在C中将UTC时间转换为本地时间?

    这是一个简单的问题 但解决方案似乎远非简单 我想知道如何从 UTC 转换为本地时间 我正在寻找一种标准的 C 解决方案 并且或多或少保证可以在任何位置的任何计算机上工作 我已仔细阅读以下链接 但在那里找不到解决方案 在C中将包含本地时间的字
  • 如何将输入类型时间的值传递给 Date 对象?

    此函数将时间转换为 12 小时格式 感谢 Stack Overflow 上此函数的贡献者 JS function ampm date var hours date getHours var minutes date getMinutes v
  • Windows 服务器上的 PTP 同步(与 Linux 相比) - 可以保证什么精度

    我想知道大家是否知道准确度如何PTP http en wikipedia org wiki Precision Time Protocol在 Windows Server 2008 上可以保证同步 我知道这个线程 Windows 中进程的最
  • 如何从 gmtime() 的时间+日期输出中获取自纪元以来的秒数?

    你如何做反向gmtime 你把时间 日期放在哪里并获取秒数 我有像这样的字符串 Jul 9 2009 20 02 58 UTC 我想获取该纪元与 2009 年 7 月 9 日之间的秒数 我努力了time strftime但我不知道如何正确使
  • HTML 时间输入类型 - 如何在单击任意位置而不仅仅是单击时钟图标时选择时间菜单视图

    I working on the time input type in HTML my problem is when I click on the small clock icon on the right side of the inp
  • 比较ios中的两个时间值? [复制]

    这个问题在这里已经有答案了 在我的应用程序中 我想检查当前时间是在变量中保存的时间之前还是之后 就像我的时间1一样time1 08 15 12 我的时间2是time2 18 12 8 所以我想比较 time1 和 time2 目前这些变量是
  • 查明某个时间段是否与当前时间匹配

    我有一个这样的约会 just a example date time in the future start date H i time 60 60 24 7 time in the future end date H i time 60
  • 在 JavaScript 中,如何让函数在特定时间运行?

    我有一个托管仪表板的网站 我可以编辑页面上的 JavaScript 目前每五秒刷新一次 我现在正在尝试获得window print 每天早上8点跑步 我怎么能这样做呢 JavaScript 是not用于此目的的工具 如果您希望某些东西在每天
  • 哪些语言可以很好地进行日期、时间和日历操作? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 这可能是一个过分的要求 但是有没有一种语言能够真正出色地表示时间和日期操作呢 我会立即承认这是真的很难编写一个真正伟大的时间库 也就是
  • 找出某个日期时间自unix纪元以来的时间?

    我想找出 2009 年 10 月 1 日 9 00 BST 的 UNIX 时间 即自 Unix 纪元以来的秒数 我如何在 Linux 命令行上执行此操作 我知道你可以使用date UNIXTIME someformat 但是unix时间是我
  • 验证随时间变化的连续条件

    我想开发一个Python程序 从某个时刻开始 等待60秒再执行操作 该程序必须具有的另一个功能是 如果我更新初始时间 它必须开始检查条件 我想过用线程来做 但我不知道如何停止线程并以新的开始时间重新启动它 import thread imp
  • 使用 System.currentTimeMillis() 每秒运行一次代码

    我试图使用 System currentTimeMillis 每秒运行一行代码 代码 while true long var System currentTimeMillis 1000 double var2 var 2 if var2 1
  • PHP date_sun_info 错误时间

    我正在尝试使用 PHPdate sun info函数获取全天太阳某些位置的时间信息 目前我正在使用类似于中的代码文档 http php net manual en function date sun info php sun info da
  • 下拉 24 小时选项值和 12 小时显示

    我需要创建一个时间数组 以便在 HTML 下拉列表中使用 数组键应采用 24 小时格式 值应采用 12 小时制 包含 am 和 pm 在数据库中我想存储 24 小时格式 有没有一种快速的方法来创建数组而不是每小时键入 example 00
  • Php 转换 GMT 格式的时间

    我有这个字符串2012 06 27 16 17 06我想将其转换为 GMT 格式 我怎样才能做到这一点 多谢 Use gmdate http php net manual en function gmdate php 使用以下命令将当前日期
  • Sql Server 的夏令时

    我们正在使用一个以 C Unix 格式存储日期的旧应用程序 C 时间基本上是自 1970 年 1 月 1 日以来的秒数 日期以整数形式存储在 SQL Server 数据库中 我正在为使用这些日期的报告编写视图 到目前为止 我正在使用以下命令
  • 计算轮班工作时间并检测

    我有个问题 我的英语很差 我需要用PHP做一个加班计算 已经有一个代码可以实现这一点 但当工作时间超过2天时 计算就会出错 工作开始 2018 09 09 13 43 工作结束 2018 09 11 07 13 结果 07 18 04 00
  • 将单独的月、日和年值转换为时间戳

    我有月份值 1 12 日期值 1 31 和年份值 2010 2011 2012 我还有一个小时值和一个分钟值 我怎样才能把这个给strtotime 它可以以某种方式将其转换为时间戳吗 当您已经知道年月和日期时 为什么将字符串转换为日期 us
  • 在java中创建Unix时间戳[重复]

    这个问题在这里已经有答案了 可能的重复 从 Date 获取 Unix 时间戳 https stackoverflow com questions 7784421 getting unix timestamp from date 我正在约会
  • 将 time.Time 转换为字符串

    我正在尝试将数据库中的一些值添加到 string在围棋中 其中一些是时间戳 我收到错误 无法在数组元素中使用 U Created date 类型 time Time 作为类型字符串 我可以转换吗time Time to string typ

随机推荐

  • StackOverflowException 未处理

    我的代码中出现此错误 MedCareProviderLibrary dll 中发生 System StackOverflowException 类型的未处理异常 这是我的代码片段以及错误的来源 它在有错误的部分上显示一个黄色箭头 显示错误的
  • 在 Matlab 中查找 pcolor 中的轮廓/边缘

    我正在尝试制作一个遵循 像素 边缘的轮廓pcolor在 Matlab 中绘图 这可能在图片中得到最好的解释 这是我的数据图 黄色数据 data 1 和蓝色数据 data 0 之间有明显的界限 请注意 这是一个pcolor绘图 因此每个 正方
  • 从 for 循环到 Java 8 Stream 示例

    我想要一个 Java 8 的简单示例Streams去理解它 我有这个代码可以返回免费出租车 我想用使用 Java 8 流的等效代码替换这个 for 循环 private List
  • PHP 根据由括号分隔的字符串中的键名称创建多维关联数组

    我有一个字符串 括号中包含可变数量的键名称 例如 str key subkey otherkey 我需要创建一个多维数组 该数组具有字符串中表示的相同键 value只是一个在这里不重要的字符串值 arr key gt subkey gt o
  • 无法导入 anaconda 中安装的包

    I have a simple question I have install resampy using anaconda conda install c conda forge resampy 现在 当我将 resampy 导入到我的
  • 采用整数并返回所有可能的加法格式的算法

    我需要编写一个算法 它接受一个整数并返回所有可能的加法格式 e g 如果我输入 6 它将返回以下字符串 0 6 6 1 1 1 1 1 1 6 1 1 1 1 2 6 1 1 1 3 6 1 1 4 6 1 5 6 2 1 1 1 1 6
  • 如何获取目录的父目录

    如何获取目录的父目录 File parent new File System out println Parent directory parent getParent prints Parent directory null 我有一个 M
  • 绕过 500 行限制

    我编写了一个我很满意的 Google Fusion Tables 脚本 如下 但它只在我的表中加载 500 行点 该表有 20 000 多行 这是我第一次来到这个社区 我真的很惊讶地发现了极限 有什么方法可以加载所有行吗
  • 计算 Pandas 中值的数量[重复]

    这个问题在这里已经有答案了 我有一个 Pandas 数据框 如下构建 Col1 Col2 1 A 1 B 1 B 2 A 2 A 3 A 3 Nan 对于 Col1 的每个值 我想计算 Col2 的每个值 忽略 Nan 值 并将总和放入关联
  • 为什么可浏览属性使属性不可绑定?

    我正在尝试使用System Windows Forms PropertyGrid 要使属性在此网格中不可见 应使用BrowsableAttribute set to false 但添加此属性会使该属性不可绑定 Example 创建一个新的
  • 操作方法:Grails 3.0.2 + Oracle Database 12c?

    我正在使用 Grails 迈出第一步 并尝试使用 Oracle Database 12c 创建一个 hello world 应用程序 不幸的是 www grails org 上有关数据库特定部分的教程文档似乎并不那么全面 例如 与我使用了几
  • 没有可编译的体系结构(ARCHS=、VALID_ARCHS=armv7 armv7s)

    我使用的是 Xcode 4 5 2 并且有一个无法为运行 iOS 6 0 1 的 iPhone 编译的项目 尽管其他项目使用相同的设置可以正常编译 如下图所示 关于如何解决这个问题有什么想法吗 您可能正在使用一些尚不支持armv7s架构的第
  • 如何从 JavaScript 函数调用 PHP 类方法 [重复]

    这个问题在这里已经有答案了 可能的重复 从 javascript 调用 php 函数 我知道php是服务器端 JavaScript是客户端 但我想知道如何在调用 JavaScript 函数时运行 PHP 方法 下面是我的代码 我知道错误是
  • 将事件/命令与 XamlReader 结合使用

    我正在使用 XamlReader Parse string 动态构建我的数据模板 我遇到的问题是我无法在使用 XamlReader 创建的任何控件上放置任何事件 在网上做了一些研究后 我了解到这是 XamlReader 的一个已知限制 我对
  • 仅当页面位于 React Router Dom 的站点内时,如何返回一页?

    我想创建一个 返回 按钮 如果该页面位于网站内 则该按钮仅返回一页 我试过以下这个答案添加返回按钮 import useNavigate from react router dom function YourApp const naviga
  • pcap_lookupnet 返回错误的 IP 地址

    以下 libpcap 文档中的示例代码生成以下代码 该代码应报告给定接口的 IP 地址 本例中为 eth0 为简洁起见 省略错误检查 include
  • 填充 Azure AD B2C Orchestration 中的电子邮件地址文本框

    我正在使用自定义策略来执行一些用户旅程并使用MFA 的社交和本地帐户 在其中一个步骤中 我询问用户他们的电子邮件地址 我正在使用 LocalAccountDiscoveryUsingEmailAddress 在第一个屏幕上获取他们的电子邮件
  • 在 MVC3 中使用 JQuery 渲染部分视图

    我有一些记录 单击每条记录后 信息需要显示在手风琴中 该信息应该从数据库动态获取 到目前为止我所做的是 创建局部视图 那应该显示详细信息 单击记录后 我调用 jquery 方法并在控制器上执行我的方法 控制器以 Json 形式返回对象 或任
  • 向 Selenium2(WebDriver) chrome 驱动程序添加扩展

    我使用下面的代码使用 webdriver selenium 2 启动 chrome Map
  • Modelica 仿真和方程初始化总时间计算

    我想测量 DAE 系统的总模拟和初始化时间 我对挂钟时间感兴趣 就像 Matlab 中函数 tic toc 给出的时间 我注意到在 Modelica 中 模拟时间有不同的标志 但实际上 与我按下模拟按钮到模拟结束所经过的时间 大约用手机时钟