论文部分内容阅读
在日常生活中,我们身边充斥着流体现象。流体现象的模拟在影视特效、灾害预防等应用中具有极为重要的意义。因此近十年来,流体现象的模拟一直是计算机图形学领域中的热点问题。随着计算机计算能力的提升和研究的深入,模拟更加复杂的流体现象,如多种不可相溶流体的模拟和大规模的流体场景的模拟,逐渐成为计算机图形学中新的热点。
在早期,单一流体介质的模拟是计算机图形学主要的研究方向。在模拟中,流体模型使用自由表面模型,并且利用水平集(LevelSet)或流体积(VolumeOfFluid,orVOF)模型描述流体界面的位置变化。经过多年的研究,模拟的流体效果已经达到以假乱真的境界。但是由于模型本身的限制,模拟算法无法推广到多种不可相溶流体介质的模拟。然而在生活中,最为常见的流体现象通常都涉及多种流体。所以,多种不可相溶流体介质的模拟是我们研究的重点。
气泡的模拟是多种不可相溶流体模拟的典型应用。气泡是生产生活中常见的流体现象,同时也是计算机图形学和计算物理领域的重要研究内容。但是,大量的研究工作只是集中在气泡运动的模拟,而不关心气泡生成和膨胀的过程。在气泡的起始阶段,许多重要的物理现象,如流体状态转换和体积膨胀,起着非常重要的作用。这些都值得我们去研究。
目前,计算机图形学通常模拟物理尺度较小的流体场景,如水杯中的水。这类现象通常使用单一物理模型进行模拟,并使用高分辨率网格捕捉各种尺度的流体现象。但是对于大规模的场景,如山洪模拟,流体现象的尺度可能跨越数个数量级。所以,单纯使用高分辨率网格可能无法捕捉流体现象,或者可能超越现有平台提供的最大资源。所以,一个更好的解决方案是综合使用多个流体模型,并且不同的流体模型捕捉不同尺度下的流体现象。
针对上述的目标,本文着重研究以下三个方面的问题:第一,气泡的研究,着重于气泡在液体中的生成过程;第二,任意多种不可相溶液体的模拟,重点处理液体界面的更新和解析;第三,大规模场景的模拟,重点在于耦合Navier-Stokes三维模拟与Wave二维模拟,用于模拟山洪等自然灾害。
本文算法的主要贡献和创新点在于以下工作:
(1)提出简化的薄膜沸腾(FilmBoiling)模型用于气泡生成。气泡在生成过程中,最明显的现象是由于液体向气体的转化而出现的体积膨胀现象。原始的FilmBoiling模型通过求解热力学方程和调整连续性方程模拟这种现象。在本文中,我们省略了复杂的热力学方程的模拟,转而使用过程式的描述并据此调整连续性方程,从而模拟流体体积膨胀的现象。同时,我们使用VolumeOfFluid函数替换了原始算法中的LevelSet函数,从而可以更好地保持液体的体积不变。实验结果表明,简化后的算法提高了效率并且仍然正确地模拟沸腾过程中流体体积膨胀的现象。
(2)使用物理学中的“洋葱皮”(OnionSkin)模型模拟多种不可相溶的流体。当模拟多种不可相溶流体时,研究者通常对每种流体都设置一个独立的界面表示函数,并对其进行独立更新。由于数值误差的存在,相邻流体的界面之间会出现重叠或空洞的现象。在本文中,我们将流体介质组织为组;在模拟中,组中的流体介质整体进行独立的更新;解析流体界面时,我们针对组进行操作。在整个过程中,流体界面仅仅更新了一次,从而避免了由于数值误差而导致的流体界面之间重叠或空洞的问题。同时,该算法也避免了调整流体界面位置而引入新的误差。当解析流场速度和压强时,我们同样使用流体介质的组解析流体的物理属性。从而,我们将流体的模拟、界面的运动和界面的解析统合到一个完整的框架下,模拟任意多种不可相溶流体介质的运动。
(3)提出和使用区域划分的方式模拟大规模流体场景,如山洪等。在流体现象复杂的区域,如山洪暴发的地点,我们使用三维的Navier-Stokes方程组进行模拟;而在流体现象表现为波浪形式的区域,如堤岸附近,使用二维的Wave方程进行模拟。我们使用基于迭代的算法,将三维的Navier-Stokes方程组模拟和二维的Wave方程模拟耦合到一个模拟框架中。首先,整个计算区域被分为不同的子区域。根据模拟者的先验知识和模拟的流体现象,在不同的子区域中使用不同的物理模型和分辨率网格。在模拟过程中,我们在子区域的边界处布置GhostCell网格,作为子区域模拟的边界条件。按照物理意义,我们将子区域中的物理变量转换为相应的形式,并保存到相邻子区域的GhostCell中。从而,模拟可以顺利地过渡到相邻的子区域。在每个时间步中,迭代算法保证了计算都能够收敛到稳定解。