使用有限差分法,我想在 python 中迭代热方程来模拟一维棒中的热流。
在热 PDE 上使用 FDM,我得到以下一维公式:
以下方法迭代“nt”步骤的结果公式:
def ftcs(T0, nt, dt, dx, alpha):
T = T0.copy()
sigma = alpha_array * dt / dx**2
for n in range(nt):
T[1:-1] = (T[1:-1] +
sigma[1:-1] * (T[2:] - 2.0 * T[1:-1] + T[:-2]))
T_ges[n] = T
return T, T_ges
这种设置似乎完美无缺。我现在有以下“问题”:
棒是各向异性的并且有两个不同的热系数。我假设使用这些边界条件,我会在 python 中描述问题:
和
为了给棒分配正确的热系数 k(x),我将 k 存储在与棒大小相同的数组中:
alpha_array = np.ones(nx)
alpha_array *= alpha
alpha_array[3:7] = alpha2
我的问题来了。在高步长之后,结果图总是显示一条直线,这是预期的。然而,在实际测量中,产生的温度图显示了棒部分的变化,其中 k2 是热系数。我如何用热方程来描述它?
我是否必须运行三个单独的热方程,每个方程都有新的边界条件。如果是这样,这些边界条件会是什么样子,它们会是简单的 Neumann BC 吗?