0

使用有限差分法,我想在 python 中迭代热方程来模拟一维棒中的热流。

在热 PDE 上使用 FDM,我得到以下一维公式:

推导 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(x),我将 k 存储在与棒大小相同的数组中:

alpha_array = np.ones(nx)
alpha_array *= alpha
alpha_array[3:7] = alpha2

我的问题来了。在高步长之后,结果图总是显示一条直线,这是预期的。然而,在实际测量中,产生的温度图显示了棒部分的变化,其中 k2 是热系数。我如何用热方程来描述它?

我是否必须运行三个单独的热方程,每个方程都有新的边界条件。如果是这样,这些边界条件会是什么样子,它们会是简单的 Neumann BC 吗?

4

0 回答 0