首先,请原谅我没有提供一个最小的工作示例,这是我真的想不到一个。我只是提供一些代码并“原则上”问我的问题。
我正在使用真实的气体模型(Peng-Robinson)进行热物理性质计算,在这里我在翻译模型时遇到问题,我使用压力 p 和特定的焓 h 作为计算所有其他属性的输入。当计算温度 T 时,它通过称为离开函数的等式链接到焓 h ,它本身就是一个函数Ť。在Modelica中它看起来像这样:
Dh_real = R_m*T*(Z - 1) + (T*dadT - a)/(sqrt(8)*b)*log((Z + (1 + sqrt(2))*B)/(Z + (1 - sqrt(2))*B));
此处a
,dadT
和Z
也是与温度相关的标量,部分使用矩阵运算(dadT
)或多项式根计算({{1在函数中,Z
和b
是参数。
从输入温度(在另一个模型中)计算焓非常简单且工作正常,解算器可以解析地解决离开函数。另一个方向必须以数字方式解决,我认为,这就是为什么Dymola在翻译时会给我这个错误。
B
现在Cannot find differentiation function:
DadT_Unique2([some parameters and T])
with respect to time
Failed to differentiate the equation
dadT = DadT_Unique2([some parameters and T]);
in order to reduce the DAE index.
Failed to reduce the DAE index.
是模型中的一个函数,我使用一些简单的矩阵运算从某些参数和温度 T 计算DadT
。显然,Dymola需要一些内部dadT
- 函数的导数。
我在规范和网络上找不到任何关于此的内容。我能以某种方式提供功能的衍生物吗?我尝试了_Unique2
- 注释,但没有效果。我怎么处理这个?
答案 0 :(得分:2)
这不是一个完整的答案,而是一个你应该阅读的有趣链接列表:
annotation(derivative=dxyz)
和其他注释:Hidden.PrintFailureToDifferentiate
: