一种适用于二维流场的并行流线放置方法

文档序号:6444279阅读:332来源:国知局
专利名称:一种适用于二维流场的并行流线放置方法
技术领域
本发明涉及一种基于流线的流场并行可视化方法,特别涉及一种适用于二维流场的并行流线放置方法,属于科学计算可视化技术领域。
背景技术
在流体力学和空气动力学等领域,为了分析流体的运动情况,需要对流场进行可视化处理,将不可见的流场模拟数据或者是流场测试数据,转化为可见的流场图像。目前, 针对流场可视化,已经发展了多种技术和方法,如流线技术、流面技术、几何图标法、纹理合成法等等。就二维流场而言,流线是常用的可视化方法之一,因为流线能比较直观地展现流场模式。为此,需要在流场中适当的位置放置适当数量的流线。如果所放置流线太少,将难以形成有效的流场模式;如果流线太多且放置不当,则容易产生视觉混乱的效果。国内外学者针对二维流场的流线放置问题,提出了很多方法,其中比较典型的有Turk和Banks提出的由图像引导的流线放置方法(参见G. Turk and D. Banks. Image-guided streamline placement. Proc. ACM SIGGRAPH' 96,1996 :453-460.)> Jobard和Lefer提出的临近点流线放置策略(参见B. Jobard and W. Lefer. Creating evenly-spaced streamlines of arbitrary density. Proc. 8th EG Workshop on Visualization in Scientific Computing. 1997(7) :43-56.)、Mebarki 等人提出的最远点流线放置策略(参见 A. Mebarki,P. AlIiez,and 0. Devillers. Farthest point seeding for efficient placement of streamlines.Proc. IEEE Visualization' 05,2005 479-486.)、Verma等人提出的基于种子点模板的流线放置策略(参见V. Verma, D. Kao, and A.Pang. A flow-guided streamline seeding strategy. Proc. IEEE Visualization' 00, 2000:163-170.)、张文耀等人提出的一种由拓扑驱动的流线放置方法(张文耀,宁建国.一种拓扑驱动的平面流场流线放置方法,中国专利,CN200910235656. 0.), Wu等人提出的基于流场拓扑的均勻流线放置方法(参见K. ffu, Z. Liu, S. Zhang, and R. J. Moorhead, II, "Topology-aware evenly spaced streamline placement," IEEE Transactions on Visualization and Computer Graphics, vol. 16, no. 5, pp. 791-801, 2010.),等等。上述这些方法,在技术上各有特色,都能产生比较好的流场可视化效果。但是,这些方法都不适合在并行模式下运行,其原因在于为了控制流线之间的间隔,在这些方法中,流线都是逐一放置的,任何新放置的流线都必须考虑流场中已有流线的分布情况。若要并行地放置流线,就只能将整个流场区域划分成不同的子区域,然后在不同的子区域内同时放置流线。在未知流场结构的情况下,一般采取静态划分策略,事先将流场划分为多个规则的子区域(例如矩形区域),然后为每个子区域指派一个处理器元素 (Processor Flement, ΡΕ),由其负责该区域内的流线放置工作,并且不允许流线跨越子区域的边界。在这种情况下,各个处理器元素可以在不同的子区域内并行地放置流线,彼此之间互不干扰,各个子区域内的流线放置结果都是正常的。但是,由于不允许流线跨越子区域边界,在子区域的边界上会出现流线不连续的现象,形成所谓的“伪边界”。图1给出了一个伪边界示例。该示例按照2X2的方式将整个流场划分为4个大小相等子区域,然后在各个子区域内单独放置流线。图1显示了最终的流线放置结果,从中可以看到各个子区域内的流线分布基本均勻,但是在子区域边界上流线是不连续的,因此可以清晰地察觉到流场区域的划分边界。这些边界并不是流场本身所包含的结构信息,因此将其称为伪边界。伪边界的存在不仅严重影响了流场的可视化效果,还很容易误导分析人员对流场结构的理解。一种消除伪边界的方法是,允许流线从一个子区域延伸到另一个子区域。在这种情况下,各个子区域之间的流线放置工作是耦合在一起的,必须在各个子区域之间进行流线通信;同时为了有效控制流线之间的间隔,还需要在各个子区域之间进行复杂的同步控制。流线通信和同步控制不仅增加了系统开销,还会使系统的并行性能严重下降。如果不采取同步控制机制,让流线在各个子区域之间任意延伸,则会因为流线分布不均而产生视觉混乱的效果。图2给出了一个出现视觉混乱效果的示例。该图所采用的测试流场以及流场区域的划分方式都与图1相同,不同之处在于图2允许流线从一个子区域延伸到别的子区域。其结果是图2没有出现图1所示的伪边界;但是图2的流线间隔差异很大,有的区域很多流线聚集在一起,有的区域则没有填充足够的流线,从而产生视觉混乱效果。这对于流线放置问题是难以接受的。由于上述原因,目前还未见明确提出的、切实可行的并行流线放置方法。在并行计算平台日益普及的情况下,发展并行流线放置方法,不仅可以利用并行计算资源来加速流场可视化过程,提高流场可视化效率,还可以使大规模流场的可视化处理更为容易。

发明内容
本发明的目的是提供一种适用于二维流场的并行流线放置方法,在满足流线放置基本均勻的前提下,通过并行处理加速流线放置过程,提高基于流线的流场可视化效率。本发明的目的是通过以下技术方案实现的一种适用于二维流场的并行流线放置方法,包括以下步骤步骤1、对于给定的二维平面流场,构造一个刚好覆盖该流场定义域的正交控制网格,网格单元的大小根据实际应用需求设定;为每个网格单元设置一个计数器,记录每个网格单元所包含的流线数目,同时设定计数器的计数上限值,该上限值为一个大于或等于1 的正整数;初始时刻每个网格单元都是空白的,相应计数器的计数值为0,如果某个网格单元的计数器值不为0,则表示该网格单元是非空的;步骤2、将流场中由流线、速度为零的临界点或流场边界所包围的、任意形状和大小的封闭区域定义为虚拟拓扑区域VTA(Virtual Topological Area),将整个流场定义域看作一个初始VTA,用该VTA所包含的空白网格单元来描述表示这一 VTA,具体方法是用正交控制网格在初始时刻的所有网格单元来描述该VTA ;在理论上,VTA的形状和大小可以是任意的,但是按照这种描述方法,一个有效的 VTA应该至少包含一个空白网格单元。如果某个VTA不包含任何空白网格单元,则认为该 VTA是无效的,不在其中放置任何流线。另外,按照任意两条流线在临界点之外都不相交的性质,可知在一个VTA内放置的流线不会延伸到另外一个VTA内,因此VTA之间的流线放置工作可以互不影响。
5
步骤3、启动一个处理器元素,将步骤2中的初始VTA指派给该处理器元素,由该处理器元素执行步骤4-12,完成该VTA内的流线放置以及相关处理工作;这里的处理器元素是指逻辑上能够独立运行的计算装置,可以是计算机、CPU、CPU 内核、进程或者是线程,包括但不限于这些内容。步骤4、令所指派的处理器元素当前处理的VTA为CurVTA,在CurVTA内,选取一个流线种子点,理论上,流线种子点可以为CurVTA内的任意点。但是,流线种子点选取的不好会影响流线放置的结果。在实际应用中,有很多种选取方法,例如可以在CurVTA内随机选取一点,或尽量靠近CurVTA的中心点等。优选的,本发明采取的流线种子点选取方法为在CurVTA内查找一个面积最大的空白四联通区域,如果存在多个满足条件的空白四联通区域,则任意选取一个,空白四联通区域的面积可用该区域所包含的空白网格单元数来衡量;针对所选取的空白四联通区域, 计算该区域内所有网格单元的中心坐标的平均值,将其作为一个新的坐标点,如果该点位于该区域内,则选择该点为流线种子点;否则分别计算过新坐标点的水平直线和垂直直线与该区域相交的线段,选取其中最长线段的中点作为流线种子点。采用该流线种子点选取方法,可以使虚拟拓扑区域内的流线分布基本均勻。步骤5、根据步骤4中得到的流线种子点,计算并得到经过该点的流线;在计算流线的过程中,如果流线延伸到流场边界、速度为零的临界点、或者是计数器值已达计数上限的网格单元时,该流线的计算过程就终止;流线的计算方法包括但不限于中点算法、欧拉算法、龙格-库塔算法等。步骤6、将步骤5中得到的流线作为新流线放置到流场中,并更新该流线所涉及的控制网格单元的计数值,即将该流线所涉及的每个控制网格单元的计数值加1 ;步骤7、在CurVTA内,查找空白四联通区域,如果没有找到这样的区域,则表示 CurVTA内的流线放置工作已经结束,转向步骤12 ;步骤8、对步骤7中得到的空白四联通区域进行分类,方法是以步骤5中得到的流线的正向流动方向为参照,如果某个空白四联通区域,在该流线的左侧,则将其标记为L, 否则将其标记为R ;步骤9、如果步骤8中存在标记为L的空白四联通区域,则将步骤8中所有标记为 L的空白四联通区域组合成一个新的VTA ;如果步骤8中存在标记为R的空白四联通区域, 则将步骤8中所有标记为R的空白四联通区域组合成另一个新的VTA ;步骤10、根据步骤9中得到的VTA的数目,启动相应数量的处理器元素,并将步骤 9中得到的VTA,分别指派给不同的处理器元素,由这些处理器元素并行执行步骤4-12,完成各自所负责的VTA内的流线放置以及相关处理工作;这一步骤至少启动一个处理器元素,最多启动两个处理器元素,因为步骤9中得到的VTA至少一个,最多为两个。步骤11、释放当前处理的CurVTA,结束CurVTA内的流线放置以及相关处理工作;步骤12、处理器元素进入等待状态,直到被指派新的VTA而转向步骤4,或者是因其他处理器元素的处理工作都结束了而转向步骤13。步骤13、最后,结束整个并行流线放置过程,完成所有流线放置工作。有益效果
本发明与一般的流线放置方法相比,具有以下几个方面的优点(1)本发明通过并行处理,有效地加速了流线放置过程,有利于大规模流场的可视化。(2)本发明提出了虚拟拓扑区域以及基于正交控制网格的虚拟拓扑区域表示方法。(3)本发明实现了基于虚拟拓扑区域的流场自适应分解,即将整个流场当作一个虚拟拓扑区域,在其中放置流线,然后利用所放置的流线将该虚拟拓扑区域逐层分解为一系列新的虚拟拓扑区域。这种分解一般是不规则的。虚拟拓扑区域之间通过流线分隔。在任何一个虚拟拓扑区域内放置的流线都不会跨越该虚拟拓扑区域的边界而延伸到别的虚拟拓扑区域内。这种将流线限定在虚拟拓扑区域内的特性,非常有利于流线的并行放置。一般的流场区域分解,比如规则的均勻划分,并不具备这样的特性。(4)本发明涉及的并行处理是基于虚拟拓扑区域的,不同的虚拟拓扑区域之间是彼此独立的,不需要在虚拟拓扑区域之间增加额外的通信与同步控制开销。(5)本发明的并行流线放置方法不存在伪边界和视觉混乱问题,在不牺牲流线放置质量的前提下,实现了并行流线放置。(6)本发明提供了一种在虚拟拓扑区域内选择流线种子点的方法,该方法可以使虚拟拓扑区域内的流线分布基本均勻。(7)本发明提供了一个基于虚拟拓扑区域的并行化方法以及相应的并行处理框
^K O(8)对于任何二维流场,本发明的方法都可顺利实施,不需要任何有关流场的结构 fn息ο


图1并行处理导致的伪边界示例;图2并行处理导致的视觉混乱示例;图3 二维示例流场TF ;图4示例流场TF的控制网格;图5示例流场TF的第一个种子点、第一条流线以及第一条流线的绘制结果;图6在示例流场TF中并行放置2条流线的中间结果;图7在示例流场TF中并行放置4条流线的中间结果;图8在示例流场TF中并行放置流线的最终结果;图9按照本发明的并行流线放置方法建立的、不存在伪边界和视觉混乱效果的流线图示例。
具体实施例方式下面结合附图,具体说明本发明的优选实施方式。对于定义在区域D = [xmin, XmaJ X [ymin,ymax]中的二维流场 F (x, y) a (u,ν),其定义域通常被离散成矩形网格单元CiijG = 1,L M,j = 1,L,N),在每个网格单元的中心(Xi, 」,Yi,P,有一个表示该点流速的矢量(uM,Vi,P。这种离散化的二维流场就是本发明在具体实施过程中所要处理的客体对象。作为示例,图3通过矢量箭头展示了一个离散化的二维流场。该流场的定义域为 [-2,2] X [2,2],任意一个采样点(x,y)处的矢量(u,ν)定义为
权利要求
1.一种适用于二维流场的并行流线放置方法,包括以下步骤步骤1、对于给定的二维平面流场,构造一个刚好覆盖该流场定义域的正交控制网格, 网格单元的大小根据实际应用需求设定;为每个网格单元设置一个计数器,记录每个网格单元所包含的流线数目,同时设定计数器的计数上限值,该上限值为一个大于或等于1的正整数;初始时刻每个网格单元都是空白的,相应计数器的计数值为0,如果某个网格单元的计数器值不为0,则表示该网格单元是非空的;步骤2、将流场中由流线、速度为零的临界点或流场边界所包围的、任意形状和大小的封闭区域定义为虚拟拓扑区域VTA,将整个流场定义域看作一个初始VTA,用该VTA所包含的空白网格单元来描述表示这一 VTA,具体方法是用正交控制网格在初始时刻的所有网格单元来描述该VTA ;如果某个VTA不包含任何空白网格单元,则认为该VTA是无效的,不在其中放置任何流线;步骤3、启动一个处理器元素,将步骤2中的初始VTA指派给该处理器元素,由该处理器元素执行步骤4-12,完成该VTA内的流线放置以及相关处理工作;步骤4、令所指派的处理器元素当前处理的VTA为CurVTA,在CurVTA内,选取一个流线种子点,该流线种子点为CurVTA内的任意点。步骤5、根据步骤4中得到的流线种子点,计算并得到经过该点的流线;在计算流线的过程中,如果流线延伸到流场边界、速度为零的临界点、或者是计数器值已达计数上限的网格单元时,该流线的计算过程就终止;步骤6、将步骤5中得到的流线作为新流线放置到流场中,并更新该流线所涉及的控制网格单元的计数值,即将该流线所涉及的每个控制网格单元的计数值加1 ;步骤7、在CurVTA内,查找空白四联通区域,如果没有找到这样的区域,则表示CurVTA 内的流线放置工作已经结束,转向步骤12 ;步骤8、对步骤7中得到的空白四联通区域进行分类,方法是以步骤5中得到的流线的正向流动方向为参照,如果某个空白四联通区域,在该流线的左侧,则将其标记为L,否则将其标记为R ;步骤9、如果步骤8中存在标记为L的空白四联通区域,则将步骤8中所有标记为L的空白四联通区域组合成一个新的VTA ;如果步骤8中存在标记为R的空白四联通区域,则将步骤8中所有标记为R的空白四联通区域组合成另一个新的VTA ;步骤10、根据步骤9中得到的VTA的数目,启动相应数量的处理器元素,并将步骤9中得到的VTA,分别指派给不同的处理器元素,由这些处理器元素并行执行步骤4-12,完成各自所负责的VTA内的流线放置以及相关处理工作;步骤11、释放当前处理的CurVTA,结束CurVTA内的流线放置以及相关处理工作; 步骤12、处理器元素进入等待状态,直到被指派新的VTA而转向步骤4,或者是因其他处理器元素的处理工作都结束了而转向步骤13。步骤13、最后,结束整个并行流线放置过程,完成所有流线放置工作。
2.根据权利要求1所述的一种适用于二维流场的并行流线放置方法,其特征在于,所述流线种子点选取方法为在CurVTA内查找一个面积最大的空白四联通区域,如果存在多个满足条件的空白四联通区域,则任意选取一个,空白四联通区域的面积可用该区域所包含的空白网格单元数来衡量;针对所选取的空白四联通区域,计算该区域内所有网格单元的中心坐标的平均值,将其作为一个新的坐标点,如果该点位于该区域内,则选择该点为流线种子点;否则分别计算过新坐标点的水平直线和垂直直线与该区域相交的线段,选取其中最长线段的中点作为流线种子点。
3.根据权利要求1或2所述的一种适用于二维流场的并行流线放置方法,其特征在于, 所述处理器元素是指逻辑上能够独立运行的计算装置,可以是计算机、CPU、CPU内核、进程或者是线程。
全文摘要
本发明涉及一种适用于二维流场的并行流线放置方法,对于给定的二维流场,将流场中由流线、速度为零的临界点或流场边界所包围的封闭区域定义为流场的虚拟拓扑区域VTA,另外设置一个覆盖整个流场的正交控制网格,为每个网格单元设置一个记录流线数目的计数器。将整个流场的定义域当作一个初始VTA,在该VTA内选取一个种子点,计算得到一条流线,将该流线放置到该VTA内,并更新相关网格单元的流线计数值;在一个VTA内放置的流线将把该VTA分割成一个或者是两个新的VTA,按照同样的处理策略在新的VTA内并行地放置流线。本发明有效地加速了流线放置过程,不存在伪边界和视觉混乱问题,保证了流线放置质量,适于大规模流场的可视化。
文档编号G06T11/00GK102521854SQ20111045288
公开日2012年6月27日 申请日期2011年12月29日 优先权日2011年12月29日
发明者宁建国, 张文耀, 王 义 申请人:北京理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1