2017-09-19 35 views
1

我實現了fmi 2.0.從有關APIfmi2:什麼是在API「fmi2SetupExperiment」輸入參數公差

fmi2SetupExperiment(fmi2Component c, 
fmi2Boolean toleranceDefined, 
fmi2Real tolerance, 
fmi2Real startTime, 
fmi2Boolean stopTimeDefined, 
fmi2Real stopTime) 

據我所知,在公差參數用於誤差估計的單元模擬。

我想知道tolerance參數的單位/數值形式,例如如果tolerance是5%,那麼tolerance的值是多少? 它會是5或1.05或其他形式?

回答

0

第22頁的FMI 2.0標準提到了「相對公差」。 這裏沒有嚴格定義,但對應於傳遞給數值解算器的相對公差值。 許多FMI導入工具,例如使用Sundial求解器。 相關容差在這裏解釋:https://computation.llnl.gov/projects/sundials/faq#cvode_tols。 所以在你的例子中,我認爲0.05是正確的值。

+0

謝謝你的回答。我瞭解它。 –

0

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

謝謝你的回答。我瞭解它。 –

相關問題