在 space 中离散化 PDE 以用于 modelica

Discretizing PDE in space for use with modelica

我目前正在上一门名为 "Modeling of dynamic systems" 的课程,并接到了使用分布式温度描述在 Modelica 中为热水箱建模的任务。

大部分任务进展顺利,我的小组剩下的任务是将浮力效应引起的热通量引入模型。这就是我们卡住的地方。

给出的等式是这样的: Given PDE

但是我们如何将其离散化为我们可以在 modelica 中使用的东西?

我们最终得到的离散化版本是这样的:

(Qd_pp_b[k+1] - Qd_pp_b[k]) / h_dz = -K_b *(T[k+1] - 2 * T[k] + T[k-1]) / h_dz^2

其中 Qd_pp_b 是左侧变量,即热通量,k 是水箱的当前切片,T 是切片中的温度。

我们走在正确的道路上吗?还是完全错误?

这似乎不是一个微分方程(按原样),所以如果没有周围的问题,这就没有意义。对于二阶导数,您应该始终创建辅助变量,并为每个偏导数创建一个单独的方程。我为 T[k] 添加了参数的虚拟值和虚拟方程。这个可以模拟一下,是不是和你想的一样?

model test
  constant Integer n = 10;
  Real[n] Qd_pp_b;
  Real[n] dT;
  Real[n] T;
  parameter Real K_b = 1;
equation
    for k in 1:n loop
      der(Qd_pp_b[k]) = -K_b *der(dT[k]);
      der(T[k]) = dT[k];
      T[k] = sin(time+k);
    end for;
end test;