现在商软自称有多相流功能的,首先就是针对这种有边界面的问题。比如说fluent/starccm/openfoam,用的是流行的VOF法。经典的VOF概念简单,也相对容易实现,尤其是在FVM范畴下。想法就是把单元划分成两部分,各自由对应的流体占据。现代VOF的变种已经近乎邪教化,为了把原本在四边形和六面体单元基础上建立的方法用在其它单元上,费劲心思,丧心病狂。另一方面,VOF因为容易理解,研究上手容易,加上在水力学计算领域有大量的群众基础,所以还是很有市场。
VOF代表的是流体的欧拉表示党。对应的拉格朗日表示党,经典的方法是ALE。做大变形固体力学的都生活在拉格朗日描述的世界,而ALE也就是通过网格的运动来表现两种描述的过渡。在多相流界面处理问题上,ALE的解决办法是把自由面视为拉格朗日的,离自由面远的依然是经典的欧拉描述。同时在整个流场通过更新网格速度来保证网格完整性。ALE的处理不像VOF那么琐碎,对于各种单元的适应也很强。但它最大的问题是处理流体分离和融合的情况。因为网格运动对处理界面拓扑结构的改变无能为力。基于这种特点,ALE最流行的数值应用其实不在多相流,而在流固耦合以及锻造等领域。对于多相流问题,ALE多被用于处理界面变化不大的问题,比如说水波与大气的两相液面。
拉格朗日党还有一个极端的群体SPH,直接用粒子表示流体。这个在自由面流体CFD的应用领域开始慢慢流行。但是SPH还有很多问题,主要是计算速度和湍流模型的加入。
最后一个技术是Level Set。这个其实是个很优雅的想法,就是基于空间曲面的隐函数表达。Level se个人觉得是经典方法里面最有前途的,因为适应性好,实施起来对已有CFD求解器的改动要求不大(加入一个level set未知量和其对应的对流方程就可以)。最早Level set在计算图形领域被提出来的时候,有和ALE类似的鲁棒性的问题,就是在界面拓扑性改变的时候会损失体积/质量。后来被Osher & Fedkiw团队拿去改进,和拉格朗日粒子法结合起来,就是把level set决定的界面附近“撒”上拉格朗日描述的粒子,通过跟踪粒子的运动来补充描述自由面的变化。结果一下就把Level set提升了。