如何在modelica中使用偏导数?

时间:2012-08-07 07:21:41

标签: modelica

如果我必须在modelica中使用偏导数,那么如何使用它。我不确定偏导数是否可以在modelica中解决,但我想知道,如果可以使用它,应该如何实现。

2 个答案:

答案 0 :(得分:2)

您可能需要两种不同的潜在“偏导数”。一个是关于空间变量的偏导数(如果你有兴趣解决偏微分方程),或者你可能想要一个表达式相对于模拟变量的偏导数。

但这没关系,因为你无法在Modelica中表达其中任何一个。

如果你的动机是解决偏微分方程,那么我担心你只需要处理模型中的空间方面(使用某种离散化,弱公式等),以便得到的方程是简单的ODE。 / p>

如果你想计算除时间以外的变量的表达式的导数,那么问题就是......为什么?我很难想到一个真正需要的应用程序。但是如果你能解释一下你的用例,我可以进一步评论如何处理它。

答案 1 :(得分:1)

我已将离散化的PDE系统用于Modelica中的解决方案:热方程,波动方程,双管热交换器的PDE,水锤中的PDE以及管道中的模型压力冲击等

在简单的层面上,您可以使用中心差异近似替换空间导数,然后使用for循环生成整个ODE集合。例如。这是一个Modelica代码片段,用于热量方程的简单离散化。

parameter Real L = 1 "Length";
parameter Integer n = 50 "Number of sections";
parameter Real alpha = 1;
Real dL = L/n "Section length";
Real[n] u(each start = 0);

equations
u[1] = 273;  //boundary condition
u[n] =0;   //boundary condition

for i in 2:n-1 loop
  der(u[i]) = alpha * (u[i+1] - 2 * u[i] + u[i-1]) / dL^2;
end for;

这只是一个从头脑中输入的简单例子,所以请原谅任何错误。

您是否有特定的示例或应用程序?