SIMPLE算法的全称是“Semi-Implicit Method for Pressure-Linked Equations”,意思是求解压力耦合的质量/动量/能量传递方程的半隐式方法。自从S.V.Patankar(帕坦卡)和D.B.Spalding(斯伯丁)于1972年提出SIMPLE算法后,它实际上已经成为许多工程流动、传热以及反应体系的数值模拟的最重要的方法。许多商业CFD软件,如cfx与fluent,其核心也都基于SIMPLE算法。
了解SIMPLE算法是学习差分数值计算以及CFD(计算流体力学)一个非常好的起点。而且,SIMPLE算法对于很多工程问题也足够用了。介绍SIMPLE算法最好的书自然是帕坦卡自己所著的《传热与流体流动的数值计算》[1]。不过,这本优秀、简洁的著作没有附带源代码。
我在学习SIMPLE的过程中,了解到一份可靠、简单、说明文档完整、可方便地编译执行的源代码对于初学者的重要性。于是我用C语言改写了SIMPLE算法(称之为SIMPLE_C),并给出了详细的文档,希望能够缩短算法与代码之间的距离。算法源自水木清华BBS上orange01与moran两位同学所给予的FORTRAN SIMPLE代码。同时清华大学化工系反应工程教研组刘飞同学的笔记也给了我很大的帮助,在此一并谢过。
目前,SIMPLE_C只能解决二维直角坐标、结构网格的问题。取决于表征问题的微分方程,SIMPLE_C在这个几何框架下能够模拟瞬态或者时均的流动、传热以及反应耦合的单相流体系。应该说明,下面的一些问题可能或者根本不在SIMPLE_C的能力范围之内:高精度的流场预测;多相流;三维流动;复杂流场或者几何结构;边界层行为预测;马赫数接近或超过1的高速流动。
关于orange01与moran两位同学的SIMPLE FORTRAN代码的版权问题,我在源代码上看见这么一段,在此原封不动地摘录如下:
Cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
Cccc This computer program was cop