首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fmi2: fmi2SetupExperiment接口中入参容差的单位是多少

fmi2: fmi2SetupExperiment接口中入参容差的单位是多少
EN

Stack Overflow用户
提问于 2017-09-19 14:15:27
回答 2查看 135关注 0票数 1

我正在为API实现fmi 2.0.的从设备。

代码语言:javascript
复制
 fmi2SetupExperiment(fmi2Component c, 
 fmi2Boolean toleranceDefined, 
 fmi2Real tolerance, 
 fmi2Real startTime, 
 fmi2Boolean stopTimeDefined, 
 fmi2Real stopTime)

我知道容差参数用于模拟过程中的误差估计。

我想知道tolerance参数的单位/值形式,例如,如果tolerance是5%,tolerance的值是多少?是5、1.05还是其他形式?

EN

回答 2

Stack Overflow用户

发布于 2017-09-20 02:48:23

FMI 2.0标准在第22页谈到了“相对容差”。这在那里没有严格定义,但与传递给数值求解器的相对公差值相对应。许多FMI导入工具,例如,使用Sundials解算器。这里解释了相对公差:https://computation.llnl.gov/projects/sundials/faq#cvode_tols。因此,在您的示例中,我希望0.05是正确的值。

票数 0
EN

Stack Overflow用户

发布于 2017-09-20 02:51:43

FMI Specification 2.0规定,通常使用一个没有单位的相对公差(%不是一个单位,它仅代表×10^-2)。因此,最有可能的是,要将5%的值作为公差传递,您必须将0.05作为tolerance传递。

以下内容摘自FMI Specification 2.0

参数toleranceDefined和容差取决于FMU类型:

fmuType = fmi2ModelExchange:

如果为toleranceDefined = fmi2True,则使用数值积分方案调用模型,其中通过使用tolerance进行误差估计(通常作为相对容差)来控制步长。在这种情况下,模型内部使用的所有数值算法(例如,用于求解非线性代数方程)也应该以适当较小的相对容差的误差估计进行操作。

fmuType = fmi2CoSimulation:

如果为toleranceDefined = fmi2True,则从机的通信间隔由误差估计控制。如果从机使用具有可变步长和误差估计的数值积分器,建议使用tolerance对内部积分器(通常作为相对容差)进行误差估计。联合仿真的FMU可能会忽略此参数。

如果你想确切地知道这个参数是如何实现的,你必须询问你的FMU的创建者-或者如果可以的话,看看你自己。

如果你不能查看你的FMU内部,创建者不能告诉你它在内部做什么,只需要改变值并比较结果和运行时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46293143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档