如果我必须在 modelica 中使用偏导数,那该如何使用。我不确定是否可以在modelica中解决偏导数,但我想知道,如果可以使用它,应该如何实现。
问问题
1629 次
2 回答
2
您可能需要两种不同的潜在“偏导数”。一种是相对于空间变量的偏导数(如果您对求解 PDE 感兴趣),或者您可能想要表达式相对于模拟变量的偏导数。
但这没关系,因为您无法在 Modelica 中表达其中任何一个。
如果您的动机是求解 PDE,那么恐怕您只需处理模型中的空间方面(使用某种离散化、弱公式等),以便得到的方程是简单的 ODE。
如果您想计算表达式对时间以外的变量的导数,问题将是……为什么?我很难想出一个真正必要的应用程序。但是,如果您可以解释您的用例,我可以进一步评论如何处理它。
于 2012-08-11T18:06:27.490 回答
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;
这只是我从头顶输入的一个简单示例,请原谅任何错误。
你有具体的例子或应用吗?
于 2012-08-10T20:00:54.303 回答