在 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;
我目前正在上一门名为 "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;