gpt4 book ai didi

modelica - 为什么在 Modelica 中时间是实数而不是整数

转载 作者:行者123 更新时间:2023-12-02 08:12:36 31 4
gpt4 key购买 nike

Modelica 将时间定义为真实时间 ( sec 3.6.7 )

input Real time (final quantity = "Time",
final unit = "s");

在求解器中,当使用从 Modelica 文本解析的时间进行比较操作时,必须考虑容差,这会使比较速度变慢(理论上有些不精确)。尽管可以在适当的情况下手动将解析的时间值转换为整数,但这需要额外的处理时间。

将时间表示为实数而不是整数的原因是什么(例如,默认情况下使用 unit = "ns")?


给出问题来源的观点:

未指定 ISO C 标准的时间类型。然而,在 Posix 兼容系统的实现中,时间是一个整数:

较旧的 ISO C 标准将 time_t 定义为算术类型 ( sec 7.32.1 ),因此它可以是实数 float 或整数。在 C11 中,time_t 被定义为实型 ( sec 7.27.1 ),而 POSIX 要求 time_t to be an integer type .

例如在 gcc Debian 4.9.2-10 中 time_t 是一个整数:

typedef long int __time_t;
typedef __time_t time_t;

最佳答案

时间是实数的主要原因是因为我们经常需要在模型中区分它,例如如果您有 Real position=0.14*time; 并且想要区分它以计算例如真实速度=der(position);。(显然,时间的功能通常更复杂。)为此,我们需要时间是连续的 - 因此是真实的。

第二个原因是 Modelica 中有完全不同的时间尺度,有时使用纳秒,但例如建筑模拟可能模拟了多年的时间。

然而,拥有一个“整数”时间以便于后处理可能是 future 的扩展(在语言或工具中),并且似乎与时钟子系统可以使用纳秒刻度(或毫秒)的同步部分有关-秒,或几天,或几周)。

(顺便说一句:从技术上讲,整数没有单位属性,但这是一个小问题。)

关于modelica - 为什么在 Modelica 中时间是实数而不是整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45052041/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com