如何正确地将托马斯算法用于热扩散方程?

问题描述

我的文字分为三个部分:

第一部分),我向您提供一些有关我的主要问题所指背景的信息。

第二部分)我将告诉您我对托马斯算法的了解。如果我在任何方面都错了,请纠正我。

第三部分)我将陈述我的问题

第一部分/背景信息:

我想模拟焦耳加热。为此,我有两个PDE系统。

  1. 一个是拉普拉斯方程。作为解决方案,它可以提供电势场。

  2. 第二个PDE是固定/时间相关加热的热扩散方程式。我将电势场用作计算焦耳加热/发热的输入/基数,即焦耳加热可以按照给定的方式进行计算。这也意味着焦耳热是热扩散方程中的源项。该算法基于焦耳加热和边界条件计算温度场。

  3. 我使用托马斯算法求解热扩散方程,或更确切地说,解决了二维几何体上的温度场/分布问题。

  4. 我使用Peaceman-Rachford方案将热扩散方程式分成两个半场。

第二部分/我相信对Thomas算法有什么了解

  1. 它是具有三对角系数矩阵的线性方程组(LES)的直接求解器。直接表示-根据系统的线性方程式的数量,您可以使用固定数量的基本运算来求解LES,或者您不需要对解矢量进行迭代。对于托马斯算法,基本运算的数量为0(N4),其中N代表方程式的数量

  2. 这是一个精确的求解器,如果PC没有任何舍入错误,您可以获取精确的解决方案。

  3. 仅在LES一次运行Thomas-Algorithm之后,您应该能够得到结果,即,您不需要一遍又一遍地迭代解决方案g,因此您不需要收敛准则

关于第三部分/我的问题:

  • 仅在一次将Thomas算法应用于热扩散方程式时,我对温度场才得到了合理的结果。对于某些仿真参数,我会以负温度的形式出现不稳定状态。
  • 当我应用Thomas算法(例如说100次)时,我在温度场上也得到了一个合理的结果,但是在质量上与上述结果有所不同。

问题1)托马斯算法的正确用法是什么?我应该让它在LES上仅运行一次还是多次。

问题2)如果让Thomas-Algorithm在相同的LES上运行多次,那么我在哪个模拟时间上会得到一个温度场?让我们假设以下情况:我有一个时间步,例如delta_t = 10 s,并且让算法运行n = 100次。最终的仿真时间是1000 s(10 s乘以100的运行次数)还是整个仿真时间总共只有10 s(使用迭代解决方案)?

我希望这个话题不是特定的,我希望能与比我更了解的人进行交流。

亲切的问候, 汤姆T。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)