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

将显式导数函数添加到Modelica.Math.Vectors.interpolate,modelica,openmodelica,dymola,Modelica,Openmodelica,Dymola,我有一个稳态代数模型(没有der()表达式)和一个非线性方程。在Dymola中进行转换时,方程组将产生数值雅可比矩阵。我想删除数值雅可比矩阵(如果可能的话),以提高模型的性能 在设置参数Hidden.PrintFailureToDifferentiate=true(由于)后,我看到Dymola发出警告: Cannot find derivative of function: InitializationParameterLoop.InitFunctions.interpolate(xVector

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

在设置参数Hidden.PrintFailureToDifferentiate=true(由于)后,我看到Dymola发出警告:

Cannot find derivative of function:
InitializationParameterLoop.InitFunctions.interpolate(xVector, yVector, x, 1)
请注意,InitializationParameterLoop.InitFunctions.interpolate函数是Modelica.Math.Vectors.interpolate函数的副本,已复制,以便在需要时在自己的包中进行修改

我试图通过对插值函数进行以下更改,为导数dy/dx添加一个明确的定义:

  • 将衍生注释添加到函数定义中:

    函数插值“在向量中插值”扩展了Modelica.Icons.function注释(导数=dydx)

  • 添加受保护的实变量dydx:

    实dydx

  • 在算法部分计算dydx:

    如果abs(x2-x1)>0,则
    dydx:=(y2-y1)/(x2-x1);
    其他的
    dydx:=符号(y2-y1)*Modelica.Constants.inf;
    如果结束

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

我是否误解了导数注释的使用?如果是这样,有人能帮我理解如何定义插值函数的导数吗

谢谢大家!

这与Modelica标准库的下一个向后兼容维护版本相同,并将在该版本中修复