APP下载

舰船综合水动力分析虚拟试验系统中试验结果的可视化关键技术研究

2013-06-12金建海单威俊

船海工程 2013年2期
关键词:流线矢量可视化

倪 昱,金建海,单威俊

(中国船舶科学研究中心,江苏 无锡214082)

目前,对于虚拟实验结果的可视化,一般通过商业CAE仿真后处理软件来实现,包括MSC.Patran,EnSight,Tecplot,Femap等。这些商业软件数据可视化功能已经比较全面,但是其可视化的具体方法和代码并不开放,不能很好地应用于舰船水动力虚拟试验中个性化的功能要求,同时针对水动力虚拟试验而言,其可视化显示效率还有改进的余地。

因此,在中国船舶科学研究中心“舰船综合水动力虚拟水池试验技术系统”的开发过程中,运用自主设计的相关算法或改进已有算法,实现了水动力虚拟试验中大规模有限元模型及其结果信息的快速显示。其中试验结果可视化的关键技术主要包括虚拟试验模型可视化技术、标量试验结果可视化技术及矢量试验结果可视化技术。本文分别就这三方面,讨论虚拟试验结果的可视化关键技术及其实现算法。

1 虚拟试验模型可视化

CFD的结果数据是在建立网格的基础上得出来的,因此,进行数据可视化就需要己知流场中的网格数据。因此虚拟模型可视化是试验结果可视化的基础。

在计算机图形学中,对于三维几何模型的可视化,一般是通过OpenGL函数绘制点、线和多边形等基本的几何图形来实现的。但在舰船虚拟试验中几何模型一般比较大[1],本文使用“三维模型外表面提取实现算法”和“网格消隐算法”,对于三维模型的内部单元和被遮挡的外部单元进行消隐,以提高模型的显示速度和效果。

1.1 三维模型外表面提取实现算法

三维网格模型是由三维网格单元组成的,由于在三维模型可视化过程中需要显示的只是所选择的计算区域外表面的信息,因此三维网格数值模拟计算结果可视化快速实现问题,就转化为快速的判断在三维网格中哪些单元面是计算域外表面,以及哪些外表面可见的问题。

在三维模型网格中,内部单元面属于并只属于两个单元;外部单元面只属于某一个单元。形成结构外部单元面的一般方法为先形成结构中所有单元的单元面,然后对各个单元面进行比较,节点组成相同的面即为内部单元面,剩余的即为外部单元面。随着网格单元数目的增加,这种方法的运算量将呈几何级数增加。

本文使用了一种最小节点相关面表的方法,可快速得到位于结构表面的单元面的集合(且称之为结构边界面集合)。

步骤1。建立一个节点相关面表H(node)=(H1,H2,…,Hn)。

步骤2。按照后处理模型数据结构的设计要求,形成单元的各个单元面;将各个单元面分别加入节点相关面表;各面的第一个节点的整体编号即为其在节点相关面表中所属的节点。对所有单元进行上述处理后,就形成了结构的最小节点相关面表。

步骤3。剔除内部单元面,形成外部单元面即结构边界面。事实上,由于单元面的第一个节点是该单元面中节点号最小的节点,因此用上述方法形成的节点相关面表中,各表项是相互独立的,即在不同的节点的相关面中没有重合的单元面,重合的单元面只可能出现在相同节点的相关面中。对于某一节点而言,其相关面的数目是比较少的,这样就大大减少了单元面重合判断的计算量。对非空的Hi中的各相关面进行比较,剔除其中包含的节点的整体编号完全相同的单元面,剩余的即为结构的边界面的集合。

1.2 网格消隐算法

目前主要的消隐算法有:Z缓冲区算法、画家算法、扫描线算法和区域采样算法。在这些经典的消隐算法中,Z缓冲区(Z.buffer)算法比较适合于处理结构化网格的消隐问题。

Z缓冲器中每个单元的值是对应像素点所反映对象的z坐标值。Z缓冲器中每个单元的初值取成z的极小值,帧缓冲器每个单元的初值可放对应背景颜色的值。图形消隐的过程就是给帧缓冲器和Z缓冲器中相应单元填值的过程。在把显示对象的每个面上每一点的属性(颜色或灰度)值填入帧缓冲器相应单元前,要把这点的z坐标值和Z缓冲器中相应单元的值进行比较。只有前者大于后者时才改变帧缓冲器的那一单元的值,同时Z缓冲器中相应单元的值也要改成这点的z坐标值。如果这点的z坐标值小于Z缓冲器中的值,则说明对应像素已经显示了对象上一个点的属性,该点要比考虑的点更接近观察点。对显示对象的每个面上的每个点都做上述处理后,可得到消除了隐藏面的图。

虚拟试验模型网格显示及消隐的算法可以描述为

1)将三维模型外表面数据读入动态分配的数组,即上文建立的结构的边界面的集合;

2)建立集合中各个单元面的法向量;

3)利用OpenGL基本库提供的图元绘制函数构造几何图元;

4)利用OpenGL库函数实现实体的各种变化操作,包括几何变换、投影变换、裁剪视区变换等,利用Z缓冲区算法来实现消隐;

5)建立光照模型。OpenGL把光照细分为4个独立组成部分:环境光、发射光、散射光、反射光,在这4部分的共同作用下形成所要求的光照效果。

2 标量结果可视化技术实现

2.1 概述

大部分的流场数据,都是通过数值求解流体模型方程Navier-Strokes方程、Euler方程等得到的,其中绝大部分是标量,如温度、压强等。对于流场标量数据的可视化处理,最重要的是云图的显示方法[2]。

舰船虚拟试验生成的结果文件,一般数据量都比较大,甚至可能是大规模模型,而且可能会在某些区域的数据场变化剧烈。因此对于云图的显示,本文提供了两种方法:①颜色是连续变化的,采用基于三角形的单元网格填充法;②颜色是分段离散的,采用改进的基于三角形的区域填充法。

2.2 云图显示算法

2.2.1 颜色是连续变化的

1)查找表绘制。采用如图1所示的线性的物理量-颜色映射方法。其中F min表示场量最小值,F max表示最大值,F min用蓝色表示,F max用红色表示,其中间值F mid一般用绿色表示。(F min,F max)整个区间内的值使用的颜色都是采用线性插值。

图1 颜色连续线性变化

2)模型云图绘制。在绘制模型网格时,采用基于三角形的单元网格填充法,把每个网格节点上的物理量转化成颜色表中对应的某一种颜色后,单元内部每个空间点上的值,运用OpenGL相关函数,自动使用向内Lagrange线性插值的方式完成,见图2。最终实现的效果图如图3。

2.2.2 颜色是离散分段的

1)查找表绘制。采用如图4所示的线性的物理量-颜色映射方法,其中F min与F max分别表示场量的最小值与最大值,将F min用蓝色color(0,0,255)表示,将F max用红色color(255,0,0)来表示,其中间值F mid一般用绿色表示。(F min,F max)整个区间内的按照划分段数,按照一定的阶梯分成有限个单一颜色。

图4 颜色按梯队逐渐变化

2)模型云图绘制。在绘制模型网格时,采用改进的基于三角形的区域填充法,依次获得三角形网格(四边形可以当做两个三角形处理)。每个节点上的物理量转化成颜色表中对应的某一种颜色后,如果它们在同一个颜色范围内,则直接填充,此时三角形网格就一种单一的颜色;如果它们处于不同的颜色区间,求出交点,并依次用不同颜色填充三角形被分割之后的两个部分,这两种不同颜色的分界线,其实也就是等值线。最后实现的效果图见图5。

3 矢量结果可视化技术研究

在舰船虚拟试验的结果数据中,除了标量数据,还有大量的矢量结果数据。矢量的可视化方法与标量不尽相同,它既要显示物理量的大小,又要显示物理量的方向[3]。

图5 颜色离散变化效果

矢量可视化方法一般可以分为点图标法、矢量线法、特征法和纹理法。按照舰船虚拟试验系统的要求,本文提供点图标法、矢量线法两种最常用方法的矢量可视化技术。

3.1 点图标法

点图标是最直观的显示矢量数据的方法。对于每一个采样点,采样点处矢量的大小和方向可以通过具有大小和方向的图标(一般是箭头)来表示。对矢量场进行映射时,用箭头的长短和方向来表示矢量的大小和方向。

在二维矢量场中,箭头可以很好地反映出矢量的方向和大小,在计算流体力学中箭头表示法应用较多。在三维矢量场中,对于数据量大、采样密集的矢量场,过多的箭头会导致像杂乱无章,显示结果不理想,但如果显示的箭头太少,又会丢失一些数据信息。

有两种方法可以解决这个问题,一种方法是使用低分辨率对矢量场重新采样,减少需要显示的箭头数量;另一种方法是只对关注的局部矢量场数据进行可视化处理。另外,流场的矢量场,通常在某些区域变化很大,导致这些区域的部分箭头重叠,这样的矢量图在细节上不准确,且难以辨识。可以通过将矢量的大小非线性映射到箭头长短上的方法来解决这个问题。

综上所述,矢量场点(箭头)映射算法可描述如下。

1)计算出流场控件网格数据点上的矢量值;

2)搜索所有网格数据点矢量的最大值和最小值;

3)将矢量大小非线性映射为箭头长短;

4)计算箭头坐标的旋转方向,旋转箭头。

其实现的效果见图6。

图6 点图标法效果

3.2 矢量线法

矢量线法源于试验型流场的可视化技术[4]。与试验方法类似,矢量线包括流线、时线、脉线和迹线。舰船虚拟试验数据,一般都需要进行流线的显示,因此本文将给出流线的显示技术[5-6]。

流线指的是某一瞬时的这样一条曲线,曲线上的每一个点的速度矢量,总在该点与曲线相切。数值积分法是生成流线最常用的方法,整个过程可以看成是选定初始位置,然后通过数值积分依次获取所有的质点,连接所有的质点就能够获取随时间变化的曲线。

流线的计算包括3个主要过程。

1)速度插值。在求解流线时,由于速度是定义在离散的网格点上,当需要得到空间中任意一点的速度时,需要对速度插值。常用的插值算法主要有线性基函数插值方法、三次样条法、面积加权法等。由于面积加权法一般用于三角网格单元中,精度可以控制的比较高,同时速度又快,所以本文采用面积加权方法。

面积加权法的原理如图7所示。

图7 面积加权法

设三角形内一点P,要得到该点处的数值。通过将三角形的各顶点与该点相连形成三个三角形,然后利用它所对应的小三角形的面积占总面积比例决定这个三角形的每个节点的权值,即

式中:wA,wB,wC——P点在△ABC中的面积坐标。

要使得面积坐标的3个分量(wA,wB,wC)在0~1之间,只有让P点位于三角形△ABC内。

2)数值积分。常用的流线积分方法有Euler法、二阶Runge-Kutta法和四阶Runge-Kutta法等。可以依据计算精度和计算效率来进行选择流线积分的阶数和步长,为了解决流线跟踪过程中的效率与精度之间的问题,本文采用变步长的自适应积分方法,见图8,可以得到公式

图8 流线积分过程中的自适应步长

积分(步长h)有

假设A、|V0|分别为流线起点所在三角形单元以及流线起始点的速度大小,则可以推导出初始积分步长为

3)三角网格中的点定位。三角网格中的点定位十分重要,其算法效率的高低直接关系到整个流线生成的算法的效率。假设一点P的坐标,该点坐标在物理空间内,为了获取P点所在的三角形单元以便插值计算得到该点的速度值,需要进行一次点定位操作。这样导致在整个流线构造过程中每一个点都要执行一次点定位算法。因此有必要对该过程进行简化。本文充分利用Delaunay网格三角化的优势,Delaunay三角网格共一条边最多只有两个三角形,在设计数据结构时,将三个顶点的指针和该三角形公共边所在的另一个三角形的指针记录在三角形数据结构中。当该三角形的边位于边界上时,则将相对三角形指针设为NULL。本文采用基于公共边点定位快速算法,来判断流场空间中的一点位于哪个三角形单元中。

基于公共边点定位快速算法的描述如下。

步骤1。在三角形单元几何的链表T上任意取一个三角形A,作为搜索出发点。

步骤2。取流线上的任意一点P。

步骤3。计算点P在A中的面积坐标:根据坐标的正负可以判断出点P与三角形对应的位置关系;如果为正,则说明点在三角形内,停止搜索,输出A,结束。如果为负,说明点在此三角形外,并且能够获知公共边信息。根据邻接拓扑关系找到此三角形共此边的邻接三角形,并以邻接三角形为出发点A继续搜索,转到步骤3。

步骤4。算法结束。

假设三角剖分后共由n个三角形单元组成,若利用传统算法判断点位于哪个三角形中的算法复杂度为O(n)。若领用本文所采用基于公共边点定位快速算法,算法效率能够达到通过比较可以得知,若三角形单元的个数越大,则本文所提出的算法的效率就越高,使用该算法可以大大加快流线的追踪速度。

整个流线生成的具体算法如下。

步骤1。给定流线生成的种子点。

步骤2。对于每个种子点P,调用基于公共边点定位快速算法,找出包含P点的三角形网格单元。

步骤3。当P点不是临界点时并且P点在流场边界内,则①P点处的速度矢量值通过插值求得,同时根据P点处的速度以及P点所在的网格大小确定需要积分的步长;②采用自适应步长数值积分方法计算下一步位置点P',同时存储P'点坐标,令P=P';③采用基于公共边点定位快速算法,找出包含P点的三角形网格单元。

步骤4。算法结束。

4 结论

在中国船舶科学研究中心开发的“舰船综合水动力虚拟水池试验技术系统”基础上,研究了舰船虚拟实验结果的可视化关键技术,重点介绍了其中的关键算法,包括三维模型显示、云图显示、矢量显示等。通过这些关键技术的突破和有机整合,不仅成功实现了虚拟水池试验结果可视化的基本功能要求,而且能获得更快的显示速度。

上述可视化研究主要针对虚拟试验结果数据的后处理,今后将在试验结果的交互式方面做更多研究工作,使用户可以通过交互方式修改原始数据、边界条件或其它参数,实现用户对虚拟实验过程的交互控制和引导。

[1]LEE SY,LEE S,NISHIDO S.Development of a new simulation method of mold filling based on a body-fitted coordinate system[J].Cast Metals,2002,15(4):389-393.

[2]李建波,陈健云,林 皋.针对三维有限元数据场的精确后处理算法[J].计算机辅助设计与图形学学报,2004,16(8):1169-1175.

[3]WARD M O.A taxonomy of glyph placement strategies for multidimensional data visualization[J].Information Visualization.2002(1):194-210.

[4]ROBERT SL.Interactive 3D flow visualization based on textures and geometric primitives[D].Vienna,Austria:Vienna University of Technology,2004.

[5]吴晓莉.面向空间遥科学实验的流场可视化技术研究[D].长沙:国防科学技术大学,2007.

[6]崔加胜.流线可视化技术的研究与应用[D].镇江:江苏大学,2008.

猜你喜欢

流线矢量可视化
基于CiteSpace的足三里穴研究可视化分析
基于Power BI的油田注水运行动态分析与可视化展示
矢量三角形法的应用
基于CGAL和OpenGL的海底地形三维可视化
几何映射
“融评”:党媒评论的可视化创新
任意夹角交叉封闭边界内平面流线计算及应用
基于矢量最优估计的稳健测向方法
三角形法则在动态平衡问题中的应用
大型综合交通枢纽流线组织设计