将显式导数函数添加到 Modelica.Math.Vectors.interpolate

Add Explicit Derivative Function to Modelica.Math.Vectors.interpolate

我有一个稳态代数模型(没有 der() 表达式)和一个非线性方程。在 Dymola 中进行转换时,方程组会产生数值雅可比行列式。我想删除数值雅可比行列式(如果可能的话)以提高模型的性能。

设置参数Hidden.PrintFailureToDifferentiate=true后(感谢this tip from Claytex),我看到Dymola发出警告:

Cannot find derivative of function:
InitializationParameterLoop.InitFunctions.interpolate(xVector, yVector, x, 1)

请注意,InitializationParameterLoop.InitFunctions.interpolate 函数是 Modelica.Math.Vectors.interpolate 函数的副本,复制后我可以根据需要在自己的包中进行修改。

我试图通过对插值函数进行以下更改来为导数 dy/dx 添加显式定义:

我希望这个简单的方法可以用来显式定义 dydx 并删除数值雅可比计算,但它似乎没有做出任何改变,Dymola 仍然发出有关

的警告

我对派生注释的使用有误解吗?如果是这样,有人可以帮助我了解如何定义插值函数的导数吗?

谢谢!

此问题与 https://github.com/modelica/Modelica/issues/2078 相同,将在 Modelica 标准库的下一个向后兼容维护版本中修复。