首页 如何成为会员 意见反馈
主办 沈阳鼓风机研究所 /《风机技术》杂志社
   新闻  |   技术纵横  |  论坛  |  沈阳鼓风机研究所  |  风机协会  |  质检中心  |  风机标委会  |  风机技术杂志  |  企业商铺  |  供求  |  产品  |  书籍  |  招聘
当前位置:中国风机技术网 → 技术纵横 → 计算机应用

面链接自动化的实现与应用*

黄章峰 范征锋 / 天津大学力学系    

摘要 :为了减少设计人员做面链接时的大量手工劳动和重复劳动,采用自上而下的软件设计方法和 journal file 技术实现了面链接的自动化。介绍了实现的原理和流程,并以实例作了分析,得出了结论,给出了测试结果。

关键词: 面链接;自动化;应用

中图分类号: TP311.51 文献标识码: B

文章编号: 1006-8155 ( 2008 ) 04-0047-05

Realization and Application of Automated Face-mesh Linking

Abstract: In order to reduce the massive manual and repeated labor for design personnel in creating face-mesh linking, automated face-mesh linking is realized by using Top-Down software design method and journal file technique. In this paper, the principle and process for realizing face-mesh linking are introduced. The conclusion and test result are achieved based on the analysis.

Key words: face-mesh linking; automation; application

0  引言

  GAMBIT 是计算流体力学( CFD )的前处理器,其主要功能包括几何建模和网格生成。它可以导入 PRO/E 、 UG 、 CATIA 、 SOLIDWORKS 、 A NSYS 、 PATRAN 等大多数 CAD/CAE 软件所建立的几何和网格,并且可为 FLUENT 、 POLYFLOW 、 FIDAP 、 ANSYS 等解算器生成和导出所需要的网格和格式 [ 1 ] ,因此在叶轮机械中被广泛应用 [ 2 - 5 ]

  GAMBIT 提供了多种技术来实现高效率几何建模和高质量网格生成,其中包括面链接技术。在 GAMBIT 中有两种情况需要面链接 [ 6 ] : (1) 设定周期性边界条件的需要。在旋转机械中,采用周期性边界条件可以大大减少网格数量和计算时间,但作为周期性边界条件的两个面必须做链接,以确保两个面的网格完全一样; (2) cooper 算法生成网格的需要。采用 cooper 算法可以生成高质量、低数目的体网格。对于单连域的拓扑结构和比较简单的模型, GAMBIT 可以自动将两个 “ 源 ” 面进行链接,但对于多连域的拓扑结构和比较复杂的模型, GAMBIT 常常无法自动将两个 “ 源 ” 面进行链接,导致采用 cooper 算法划分时容易出错。

  在下面的分析中将发现,要将两个面做链接,在用户界面中需要设计人员的大量手工劳动和重复劳动,尤其是对于多连域的拓扑结构,在文本界面中无法自动给出面链接的参数,从而无法自动进行面链接,进而无法自动生成网格。本文通过对面链接过程作自上而下的分析,采用 journal file 技术,设计了一个面链接自动化的模块,进而实现网格的自动化生成,达到减少设计人员的重复劳动和提高设计效率的目的。

1  实现的原理和流程

1.1  Journal file 技术简介

  Journal file 是指用户操作的日志文件,它记录了用户操作的全部内容,包括处理的对象、方法和参数。 GAMBIT 可以自动记录日志文件,用户也可以创建、修改和编辑日志文件,并通过运行这些日志文件来再现和重复所有的操作。不仅如此, GAMBIT 扩展了 journal file 技术,在日志文件中加入了变量、数组、转折语句、循环语句、函数、宏命令等程序语言。利用 GAMBIT 提供的 journal file 技术可以实现编程化、参数化、自动化地进行几何建模和网格生成 [ 7 - 8 ] 。通过这种技术,与其它软件进行接口,还可以进行二次开发 [ 9 - 10 ] 。

1.2  在用户界面中面链接的操作过程

  在用户界面中实现面链接,需要用户通过鼠标将两个面手动进行链接,并且要求正确选择面上全部封闭曲线的参考点。对于多连域而言,比如燃气轮机中燃烧器流固耦合传热问题,旋转机械中前向多翼离心风机模拟问题,需要设计人员大量的重复劳动。具体操作过程 [ 6 ] 为

  (1) 指定要链接的第一个面;

  (2) 在第一个面上指定一个或多个参考点,其中在该面上的每一个封闭曲线必须指定且唯一指定一个参考点;

  (3) 指定要被链接的另一个面;

  (4) 在第二个面上指定与第一个面一一对应的参考点;

  (5) 指定生成网格的方向:反向还是同向;

  (6) 指定链接的周期性;

  (7) 点击应用。

1.3  在文本界面中面链接的命令格式

  如果已知链接的参数,可以在文本界面中实现面链接,具体命令格式为

  Face link $face-A $face-B edges $edges-A-link $edges-B-link vertices $vertices-A-link $vertices-B-link [reverse] [periodic]

  其中 $ 为变量的前缀, $vertices-A-link 是 $face-A 上的所有参考点,这些参考点一一对应于 $face-A 上的全部封闭曲线, $edges-A-link 是 $face-A 上以 $vertices-A-link 为起点的参考边,关键字 reverse 和 periodic 是可选项,决定链接的网格生成方向和周期性。在 GAMBIT 中无法自动确定链接的参数,从而无法进行自动化面链接。

1.4  自上而下的设计过程

  在 GAMBIT 中, 如图 1 所示, 点、边、面和体满足以下法则 [ 6 ]

  (1) 一条封闭曲线由若干条边首尾相连构成,连接处为点;

  (2) 边是有指向的,其指向为从起点指向终点;

  (3) 同一条封闭曲线上的边具有相同的指向,其指向为该封闭曲线的方向;

  (4) 沿着边的指向前进时,封闭曲线所在的面在边的左侧时,该前进方向为封闭曲线的正方向;

  (5) 一个面由一条外封闭曲线和若干条内封闭曲线围合而成;

  (6) 面的正方向为所在体的外法向方向;面的正方向与其外封闭曲线的正方向满足右手法则。

        根据这些法则,将对两个面的链接过程做自上而下的分解,导出 6 个模块来实现自动链接的功能。

1.4.1   模块一:取得链接参数

        要对面 $face-A 和 $face-B 进行链接,首先要得到两个面上的参考点 $vertices-A-link 和 $vertices-B-link ,以及相应的参考边 $edges-A-link 和 $edges-B-link 。与用户界面中操作流程类似,先遍历其中一个面上的所有封闭曲线,并且在每个封闭曲线上取一个参考点和相应的参考边,然后确定在另一个面上与这些参考点相应的参考点和参考边。模块一的具体流程如下:

  (1) 取得面 $face-A 上的所有边 $edges-A 和点 $vertices-A ,取得面 $face-B 上的所有边 $edges-B 和点 $vertices-B ;

  (2) 从 $vertices-A 中取一个点 $vertex-A ,并添加到 $vertices-A-link ;

  (3) 在 $face-A 上找出 $vertex-A 所在的封闭曲线上的所有边 $edges-A-loop 和点 $vertices-A-loop ;

  (4) 在 $edges-A-loop 中找到以 $vertex-A 为起点的参考边 $edge-A-link ,并添加到 $edges-A-link ;

  (5) 在 $face-B 上确定与点 $vertex-A 相对应的点 $vertex-B ,并添加到 $vertices-B-link ;

  (6) 在 $face-B 上找出点 $vertex-B 所在的封闭曲线上的所有边 $edges-B-loop 和点 $vertices-B-loop ;

  (7) 在 $edges-B-loop 中找到以 $vertex-B 为起点的参考边 $edge-B-link ,并添加到 $edges-B-link ;

  (8) 将 $edges-A 和 $vertices-A 分别与 $edges-B-loop 和 $vertices-B-loop 做差集,从而将 $face-A 中已经找到的封闭曲线信息删除,类似的对 $face-B 做同样操作;

  (9) 重复第 (2) 步,直到 $vertices-A 为空。

1.4.2  模块二:查找封闭曲线

  在模块一的第 (3) 步和第 (6) 步中,要在面 $face 的边 $edges 上找出点 $vertex 所在的封闭曲线上的所有边 $edges-loop 和点 $vertices-loop 。依据前面提到的第一条法则,可以通过其中一个点,采用顺藤摸瓜的方法来遍历该封闭曲线上的所有边 $edges-loop 和点 $vertices-loop 。模块二的具体流程如下:

  (1) 将点 $vertex 赋给 $vertex-find ,并添加到 $vertices-loop ;

  (2) 取得点 $vertex-find 所在的所有边 $edges-find ;

  (3) 将 $edges-find 与 $edges 做交集,得到 $vertex-find 在 $face 上的边 $edges-find ;

  (4) 将 $edges-find 与 $edges-loop 做差集,得到 $vertex-find 在 $face 上但又没有在 $edges-loop 上的一条边 $edge (如果得到两条边,取其中一条边即可 ) ,并添加到 $edges-loop ;

  (5) 将边 $edge 上的两个点与 $vertex-find 作比较,得到边 $edge 上另一个点 $vertex ;

  (6) 重复第 (1) 步,直到 $vertex 与 $vertices-loop 上的第一个点相同。

1.4.3  模块三:取得参考边

  在模块一的第 (4) 步和第 (6) 步中,要在面 $face 上从 $edges-loop 中找到以 $vertex 为起点的参考边 $edge-link 。根据前面的法则可以推出,封闭曲线的方向由其所在面确定,而边的指向由其所在的封闭曲线确定。可以先假设点 $vertex 为某一条边 $edge 的起点,并根据该边的指向确定该边所在封闭曲线的方向,然后根据该封闭曲线的方向与面 $face 的方向是否满足右手法则来判断假设是否成立。如果假设成立的话,该边即为以 $vertex 为起点的参考边 $edge-link ,否则点 $vertex 所在的另一条边为参考边 $edge-link 。模块三的具体流程为

  (1) 判断边 $edges-loop 组成的封闭曲线是其所在面 $face 的内封闭曲线还是外封闭曲线 ( 可以通过面积大小来判断 ) ;

  (2) 取得面 $face 的正方向 $normal-face ,如果该封闭曲线是面 $face 的内封闭曲线,将 $normal-face 设为反向;

  (3) 从 $edges-loop 中取得点 $vertex 所在的两条边 $edge-A 和 $edge-B ,并假设点 $vertex 是边 $edge-A 的终点和边 $edge-B 的起点,即假设点 $vertex 所在的封闭曲线的方向为 $edge-A à $vertex à $edge-B ;

  (4) 取得边 $edge-A 在点 $vertex 处的切线导数 $tangent-A ,类似取得边 $edge-B 在点 $vertex 处的切线导数 $tangent-B ,然后将 $tangent-A 和 $tangent-B 做矢量叉乘,依据右手法则得该封闭曲线所围面的的方向矢量 $normal-AB ;

  (5) 取得方向矢量 $normal-face 和 $normal-AB 的夹角 $angle ,如果夹角 $angle 小于等于 90 °,说明第 (3) 步的假设成立,即点 $vertex 是边 $edge-B 的起点,将 $edge-B 赋给 $edge-link ,否则将 $edge-A 赋给 $edge-link 。

1.4.4  模块四:取得对应点

  在模块一的第 (5) 步中,要确定与点 $vertex-A 在 $face-B 上相对应的点 $vertex-B 。一般而言,面 $face-A 和面 $face-B 属于同一个体,点 $vertex-A 会通过一条边与面 $face-B 相连,此时根据这条边,可以采用顺藤摸瓜的方法找到另一个对应的点 $vertex-B 。如果点 $vertex-A 没有通过某一条边与面 $face-B 相连,考虑到两个面一般是平行的,可取面 $face-B 上距离点 $vertex-A 最近的点作为点 $vertex-B 。模块四的具体流程为

  (1) 取得 $vertex-A 所在的边 $edges-A ;

  (2) 将 $edges-A 与 $vertex-A 所在封闭曲线上的边 $edges-A-loop 做差集,得到 $vertex-A 所在的边但又不在面 $face-A 上的边 $edge ;

  (3) 将边 $edge 上的两个点与 $vertex-A 作比较,得到边 $edge 上另一个点 $vertex ;

  (4) 将 $vertex 与 $face-B 上的点 $vertices-B 做交集,得到 $vertex-B ;

  (5) 如果点 $vertex-A 没有通过某一条边与面 $face-B 相连,则可取面 $face-B 上距离点 $vertex-A 最近的点作为点 $vertex-B 。

1.4.5  模块五:取得差集

  在模块一、二、四中用到了两个集合的差集。集合 $A 与集合 $B 的差集定义为 $AB=$A-$B 。在模块五中,遍历集合 $A 中的元素,看是否在集合 $B 中存在,如果不存在的话加入到集合 $AB 中。

1.4.6  模块六:取得交集

  在模块二、四中用到了两个集合的交集。集合 $A 与集合 $B 的交集定义为 $AB=$A ∩ $B 。在模块六中,遍历集合 $A 中的元素,看是否在集合 $B 中存在,如果存在的话加入到集合 $AB 中。

  到此为止,完成了面链接自上而下的分析。采用 journal file 技术,编程实现上面的流程,就能实现面的自动链接。在文本界面中,仅需执行第一个模块就可以得到链接的参数。将该模块编写成插件,每次使用前先导入该插件,就可已在用户界面中使用,其操作界面如图 2 b 所示。

 

2  实例分析

  有一前向多翼离心风机叶轮,叶片数量为 43 个,在 GAMBIT2.3.16 上已采用 journal file 技术实现了自动化、参数化建模,并且其中一个源面已经生成了网格。如图 3 所示,为了采用 cooper 算法对其划分体网格,需要对两个源面做链接。其中每个源面由 1 个外圆、 1 个内圆和 43 个叶片轮廓共 45 个封闭曲线围合而成。

  表 1 给出了采用模块前后在用户界面中和在文本界面中的操作情况。如果不采用该模块,在用户界面中,如图 2 a 所示,每次进行面链接时,不仅需要通过旋转和移动的命令来识别两个源面的参考点,而且还需要通过鼠标的 Shift-left-click 和 Shift-right-click 来选择源面和参考点,整个链接过程鼠标的点击次数高达 187 次,其中选择面 4 次,选择参考点 180 次,选择网格方向 1 次,选择周期性 1 次,应用按钮 1 次。如果加上旋转和移动的操作,鼠标点击次数高达 300 次。如果缺选或选错参考点,需要重复全部操作。这样需要设计人员大量手工劳动和重复劳动,划分网格的效率极低。在文本界面中因为无法自动提供链接的参数,从而无法进行自动化生成网格。如果采用该模块,在用户界面中,如图 2 b 所示,每次进行面链接时,仅需要选择两个源面,整个链接过程鼠标的点击次数减少到 7 次,减少了 180 次,大大的减少了设计人员的手工劳动。在文本界面中,只需添加一行命令行,执行第一个模块就可以得到链接的参数,利用这些参数即可实现自动化面链接,从而实现自动化生成网格。

表 1 采用模块前后的情况对比

项目

用户界面中

( 鼠标点击次数 )

文本界面中

( 自动化 )

采用模块前

187

不行

采用模块后

7

 

3  结论

  (1) 通过对面链接过程做自上而下的分析和 journal file 技术的采用,本文设计了一个自动化面链接的模型。一方面,将该模型做成插件后,在用户界面中仅需要指定两个链接的源面;另一方面,在文本界面中,仅需运行该模型,就可以得到链接的参数,从而实现自动化面链接,进而实现自动化生成网格。

  (2) 在 GAMBIT2.3.16 中利用该模型对 43 个叶片的前向多翼离心风机叶轮的面链接进行测试发现:在用户界面中鼠标点击次数从 187 次减少到 7 次,大大地减少了设计人员的手工劳动和重复劳动,提高了设计效率;而在文本界面中,实现了自动化面链接。测试结果表明该模型可行且有效。

  (3) 在 GAMBIT 中采用 journal file 技术可以实现自动化、参数化的建模和划分网格,类似的在 Fluent 中也可以采用 journal file 技术实现自动化、参数化的设置参数,把两者结合起来就可以实现整个数值模拟流程的自动化,进而实现模型优化的自动化。

参 考 文 献

[ 1 ] 王福军 . 计算流体动力学分析- CFD 软件原理与应用 [M]. 清华大学出版社 , 2004.

[ 2 ] 易林 , 侯树强 , 王灿星 . 离心式叶轮内部流动数值模拟方法的研究综述 [J]. 风机技术 , 2006(2): 45-50.

[ 3 ] 张力 , 席德科 , 孙刚 , 等 . 前向多翼离心通风机性能改进数值模拟 [J]. 风机技术 , 2005(6): 9-11.

[ 4 ] 李建锋 , 吕俊复 . 风机流场的数值模拟 [J]. 流体机械 , 2006, 34(4): 10-13.

[ 5 ] 明廷臻 , 刘伟 , 王苇 . 余热排出热交换器管束间自然对流的 CFD 模拟 [J]. 华中科技大学学报 ( 自然科学版 ) , 2003, 31(9): 9-11.

[ 6 ] GAMBIT Documentation and Help [Z]. http://www.fluent.com.

[ 7 ] Abanto J, Barrero D, Reggio M, et al. Airflow modelling in a computer room[J]. Building and Environment, 2004, 39(12): 1393-1402.

[ 8 ] 马希金 , 郭俊杰 , 吴蓓 . CFD 法设计轴流式油气混输泵初探 [J]. 流体机械 , 2004, 32(7): 15-18.

[ 9 ] 孙中勤 , 王军 . 基于 MATLAB 的轴流通风机的快速成型设计 [J]. 风机技术 , 2006(3): 38-40.

[ 10 ] Jarrod S, Christoph S, Mladenko K, et al. Automated geometric optimization of turbulent airflow in ducts using genetic algorithms[C], Proceedings of the ASME Heat Transfer/Fluids Engineering Summer Conference 2004, HT/FED 2004, v4, 139-149.

新闻评论评论内容只代表网友观点,与本站立场无关!

  评论人:不锈钢网   打分:0 分  发表时间:2015-8-8 9:29:16
· 不错的文章,内容淋漓尽致.禁止此消息:nolinkok@163.com不锈钢网http://www.hbbuxiugan...
  评论人:不锈钢网   打分:0 分  发表时间:2015-7-13 23:30:16
· 不错的文章,内容才思敏捷.禁止此消息:nolinkok@163.com[url=http://www.hbbuxiuga...
  评论人:不锈钢网   打分:0 分  发表时间:2015-7-10 4:04:58
· 不错的文章,内容观念明确.禁止此消息:nolinkok@163.com[url=http://www.hbbuxiuga...
  评论人:不锈钢网   打分:0 分  发表时间:2015-7-9 7:28:29
· 好文章,内容惊心动魄.禁止此消息:nolinkok@163.com[url=http://www.hbbuxiugang...
  评论人:肉牛   打分:0 分  发表时间:2015-5-15 17:30:24
· 好文章,内容义正词严.禁止此消息:nolinkok@163.com[url=http://www.xmten.com/]...