论文部分内容阅读
随着计算机技术和数值方法的飞速发展,计算流体力学方法(CFD)开始活跃于船舶与海洋工程的各个领域当中,已有越来越多研究工作基于CFD方法开展研究。然而CFD在船舶与海洋工程中的发展一直受困于多个瓶颈。其中一个关键问题就是动网格技术。在实际船舶工程问题当中,船舶上会安装螺旋桨、舵等活动附体。这些活动附体会对船体的受力和运动等产生较大的影响。在处理这类船、桨、舵相互作用的问题上,不仅需要处理船舶在自由面上的六个自由度运动,同时还需要考虑螺旋桨和舵相对于船体的旋转运动。传统的动网格方法很难同时处理船、桨、舵三者的耦合运动。重叠网格方法是解决这类问题的有效方法之一,并实现船、桨、舵相互作用的数值模拟。重叠网格技术可以破除物体与网格之间的约束关系,能够使船体在自由面上拥有大幅度六自由度运动的同时,让各类附体相对于船体自由地转动。在重叠网格的帮助下,能够有效解决船、桨、舵相互配合等复杂问题的计算。本博士论文的目标是基于开源代码OpenFOAM,深入研究和开发重叠网格技术,并使用重叠网格技术来实现船、桨、舵相互作用等问题的数值计算。本文在基于OpenFOAM的数值方法、数据存储方式以及非结构网格的特点上,利用SUGGAR程序生成重叠网格的插值信息,开发出了重叠网格模块。在该模块的开发过程中分为静态重叠网格和动态重叠网格方法两部分。在静态重叠网格开发中,完成了并行化等功能的优化,提高计算效率,并统一模块接口,使OpenFOAM中的任意控制方程均可以通过该模块来实现重叠网格方法。在并行化过程中,将用于重叠网格通信的插值信息进行重新编号和有效分块,并利用MPI将每块的插值信息传递给对应进程。在插值信息分块过程中,根据网格区域分块的结果进行有效处理,只传递给每个进程所需的信息,避免多余信息的传递,以提高并行效率。与此同时,为了提高重叠网格模块的通用性,并且使其能够用于其它问题以及数学模型当中,本文利用了C++语言中的面向对象的编程思想,公用接口采用抽象类的方法,使函数接口统一。在动态重叠网格的开发中,本文完成了多级物体运动模块的开发以及通信模式的优化。在多级物体运动模块中,船体作为父物体在自由面上进行六自由度运动的同时,螺旋桨和舵作为子物体还能相对于船体进行转动。利用该模块可以实现船、桨、舵相互配合等问题的CFD计算。同时本文基于MPI完成Open FOAM与SUGGAR之间的通信模式的优化。该优化方法将OpenFOAM与SUGGAR分别置于不同进程中运行,并利用延迟算法,使两者能够同时进行计算,有效解决普通动态重叠方法中CFD计算进程闲置的问题,从而大幅度减少动态问题中的计算时间。为了有效解决计算船舶水动力学中的船、桨、舵配合等问题,本文将重叠网格方法与开源CFD工具箱OpenFOAM相结合,开发出面向船舶与海洋工程水动力学的数值求解器naoeFoam-os-SJTU。该求解器具有动态重叠网格的处理计算能力,以及针对重叠网格方法所开发的多级物体的六自由度运动模块,能够用于实现船、桨、舵的相互作用和运动耦合等复杂问题的计算。为了验证该重叠网格模块以及展示重叠网格方法在处理各类复杂问题时的能力,本文进行了自航推进、自航操纵和带桨耐波性三部分算例的验证。第一部分是KCS的自航推进问题。利用重叠网格,解决螺旋桨在船后的旋转问题,完成KCS带桨的自航推进问题的计算,并得出KCS的自航推进因子。第二部分为船舶带桨、带舵的自航操纵问题。在自航操纵计算中,船舶具有六个自由度的运动,并且由螺旋桨提供船舶前行的推力、由舵提供船舶转向的力矩。计算的算例包括KCS的Z形操纵模拟、全附体DTMB 5415M模型的Z型操纵和回转操纵试验计算。第三部分增加了波浪的因素,计算KCS船模在波浪中的螺旋桨推进和船体运动问题。所有算例中的螺旋桨和舵均通过重叠网格方法进行离散,并且能够相对船体进行旋转,以进行船、桨、舵的整体模拟。三部分算例均有模型试验测量结果进行比较和验证,并得到令人满意的比较结果,充分验证了重叠网格方法在处理这类船、桨、舵相互作用问题上的有效性和准确性。通过这三部分算例的计算和验证,证明了重叠网格方法能够实现传统动网格方法所无法实现的船、桨、舵配合等复杂问题的计算,大幅扩展CFD在船舶水动力学中的应用范围。