我正在尝试为多孔介质中的质量和热量传输构建一个复杂的模拟器。我目前粗略地遵循旧软件中制定的算法并让模拟器工作,但我使用的迭代求解器在大时间步长上遇到问题,并阻止系统收敛到稳定状态。我想知道是否有人可以帮助我改进我的方法。
模拟器使用双精度数通过数值微分构建雅可比矩阵。所需的最终矩阵大小约为 500,000x500,000,每行大约有 15-20 个条目。雅可比的结构如下:
- 对角线条目源于系统中元素的热力学性质。
- 非对角线元素描述了元素之间的质量/热量传输。它们随时间步长缩放。由于目前使用的配方,它们是非对称的,但仅在元素之间的体积比上有所不同;如果需要,它们可以制成对称的。
系统 J * (-dx) = r 使用迭代求解器求解;特别是带有 ILU0 的 BICGSTAB 工作正常,但我也尝试过其他的。
当时间步长变大时,问题就出现了。对角线元素保持不变,但非对角线元素会随着时间步长缩放,并且一旦时间步长达到 ~1e+8 秒,使用的求解器似乎就会遇到问题。
最好的方法是什么?我正在考虑以下一项或多项:
- 使用精度更高的求解器。但是,考虑到我的导数仅以约 8 位有效数字进行,这会起作用吗?
- 分解矩阵是一种选择吗?如果是这样,什么分解会起作用?
- 其他求解器是否可以选择?
非常感谢任何帮助。
干杯
彼得