网格生成技术之无限插值法

网格生成技术之无限插值法
网格生成技术之无限插值法

¤Grid Generation Series¤

网格生成???适体坐标系???代数方法???无限插值法

Copyright ? 2007 https://www.360docs.net/doc/b13518145.html, 版权所有

目录

1. 概述 (1)

1.1前序 (1)

1.2名词解释 (1)

1.3映射关系 (1)

2. 二维无限插值法生成网格 (2)

2.1模型公式 (2)

2.2操作步骤 (3)

2.3编程实例 (3)

3. 三维无限插值法生成网格 (9)

3.1计算公式 (9)

3.2编程实例 (11)

4. 参考文献 (16)

5. 版权声明 (17)

1. 概述

1.1前序

网格生成技术的编程实现与应用曾是笔者感觉深奥而有趣的事情。因对这方面并不熟悉,2006年夏初,笔者决定做网格生成方面的努力。查看了若干资料后,虽对其数学原理未有涉足,但还是有幸获得或推出了生成二维网格和三维网格生成的TFI实现公式,并编写了测试程序进行验证,如封面图片的网格就是当时笔者用TFI方法编程生成的。

后来忙别的事情,就一直落在“纸堆”里。2007年夏初,有网友询问TFI,又想起来,于是四处找了找,看着笔记,发现一年前的清晰思路都模糊了。当时在图书馆借过一本书对我的帮助也很大,但书名已记不起来了,无法在后面的参考文献中列出。现在决定用休息时间把笔记整理一下,以供需要的朋友查阅。

无限插值法(TFI)是结构化网格生成技术中属于适体坐标系的代数方法。其优点是算法简单、生成网格速度很快,对于较规则区域,TFI法得到的网格效果也令人满意。

对于没有把握的复杂区域,笔者认为最好采用TFI方法生成初始网格场,然后采用PDE(偏微分网格生成技术)进行网格场优化。

1.2名词解释

(1)网格生成技术:对给定区域进行离散以生成计算网格的方法。

(2)结构化网格:排列有序、相邻节点位置关系明确的网格。

(3)适体坐标系:坐标轴与计算区域的边界一致的坐标系,又称贴体坐标系、附体坐标系。(4)代数方法:通过代数关系式创建物理平面上的区域与计算平面上的区域的映射方法。(5)无限插值法:把边界上规定的对应关系连续插值到区域内部,插值的点数是无限的,因而称为无限插值(transfinite interpolation,TFI)。

(6)物理空间:真实的求解区域。通常不规则,不易进行网格节点剖分计算。

(7)计算空间:进行网格节点剖分的区域。规则,最常见的为矩形区域或长方体,网格节点定位计算简单。

1.3映射关系

在计算空间内剖分得到的节点需要映射回物理空间,以便于进行物理求解。适体坐标的网格生成方法的核心就在于,给出从计算空间到物理空间,节点位置的数学映射关系。

2. 二维无限插值法生成网格

2.1模型公式

这里以二维TFI方法为例进行说明。参阅的资料中,都习惯以把计算区域“单位化”到[0,1]范围内,本文也遵守该约定,因此(ξ,η)的取值范围也在[0,1]内。

要通过计算空间的各网格节点位置(ξ,η)获得物理空间上对应的各网格节点的位置(x,y),相当于把x、y均看作变量ξ和η的函数,即x (ξ,η),y (ξ,η)。如何求得呢?

根据文献得到数学求解公式:

(Pξ⊕Pη)[x]=Pξ[x]+Pη[x]-PξPη[x]

(Pξ⊕Pη)[y]=Pξ[y]+Pη[y]-PξPη[y]

笔者对上述符号公式进行了推导(推导过程略),可整理得到如下具体的计算公式:

x(ξ,η)=(1-η)x b(ξ)+ηx t(ξ)+(1-ξ)x

(η)+ξx r(η)

-[ξηx t(1)+ξ(1-η)x b(1)+η(1-ξ)x t(0)+(1-ξ)(1-η)x b(0)]

y(ξ,η)=(1-η)y b(ξ)+ηy t(ξ)+(1-ξ)y L(η)+ξy r(η)

-[ξηy t(1)+ξ(1-η)y b(1)+η(1-ξ)y t(0)+(1-ξ)(1-η)y b(0)]

式中,

(1)变量x、y均带有4个下标t、b、L、r,是指该点为二维物理空间的上下左右四条边界上的点。如x b(ξ)表示在二维物理空间,对应于内部节点x(ξ,η) 的下边界点的横坐标值。

(2)x t(0)表示在二维物理空间,上边界最左侧点的横坐标值;y b(1)表示在二维物理空间,下边界最右侧点的纵坐标值,其它类似(略)。

可见,要得到二维物理空间内部节点划分,必须已知两个条件:

(1)计算空间中各个节点的位置(ξ,η)。

(2)物理空间中4条边界上所有节点的位置。

注:⊕符号,在文献中称为布尔和,在图形学中称为环和,不妨以概率中的事件和来理解。

2.2操作步骤

采用TFI方法生成网格的大致步骤如下:

(1)首先,根据需要(如采用等间距还是渐疏/渐密等策略)手工或编程生成二维物理空间求解区域的t、b、L、r(即上下左右)4条边界上的节点(位置,(x,y))。

(2)接着,根据物理空间的网格划分需求,确定节点划分策略(如矩形网格形式),手工或编程生成计算空间的各个节点(位置,(ξ,η))。

(3)采用上节给出的计算公式,注意节点对应关系,求出物理空间上内部区域的各个网格节点位置(x(ξ,η),y(ξ,η))。

(4)把物理空间的网格节点信息存储为需要的格式,进行显示验证或供物理求解调用。

2.3编程实例

程序需要读取物理平面的4条边界上的节点信息和计算平面的全部节点信息。由于篇幅所限,不再贴上输入文件数据。

本例代码在Visual Fortran6.5编译环境下运行测试通过。东岸线 2006-6-21 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

!///////////////////////////////////主程序////////////////////////////////////////////////

program main

integer i,j,imax,jmax

!*******打开物理平面边界坐标文件,先读取网格范围编号。i从1~imax,j从1~jmax**** open(1,file='physicsb.dat',err=555)

read(1,*) imax,jmax

!************调用子程序**************************************

call compute(imax,jmax)

!************返回主程序**************************************

goto 888

555 print *,'ERROR OCCURED 读取文件出错!请检查无误后,重新进行计算。' 888 print *,'Good Luck! ^_^'

print *,'https://www.360docs.net/doc/b13518145.html,----------东部动力网~倾情奉献~' pause

end program

!//////////////////////////////////////////////////////////////////////////////////////////////

!///////////////////////////////////子程序////////////////////////////////////////////////

subroutine compute(imax,jmax)

real x(imax,jmax),y(imax,jmax),xx(imax,jmax),yy(imax,jmax)

!******打开物理平面边界坐标文件,读入各边界坐标*************

!******从“水平的”bottom全边到“水平的”top全边************

!******再到“垂直的”left中边到“垂直的”right中边************

!******水平全边从左向右,垂直中边从下到上*******************

open(1,file='physicsb.dat',err=555)

do 10 i=1,imax

read(1,*) x(i,1),y(i,1)

10 continue

do 20 i=1,imax

read(1,*) x(i,jmax),y(i,jmax)

20 continue

do 30 j=2,jmax-1

read(1,*) x(1,j),y(1,j)

30 continue

do 40 j=2,jmax-1

read(1,*) x(imax,j),y(imax,j)

40 continue

close(1)

!************打开计算平面坐标文件*********************************

!************从下向上逐行扫描读取计算平面各节点坐标值************* open(1,file='computec.dat',err=555)

do 50 j=1,jmax

do 50 i=1,imax

read(1,*) xx(i,j),yy(i,j)

50 continue

!***二维区域,网格内部节点坐标的计算公式**************************

!***注意理解公式中各项具体含义和具体表达式************************

!***如0、1在本例中则为1、imax/jmax*******************************

do 80 i=2,imax-1

do 80 j=2,jmax-1

x(i,j)=(1-yy(i,j))*x(i,1)+yy(i,j)*x(i,jmax)+(1-xx(i,j))*x(1,j)+xx(i,j)*x(imax,j)-(xx(i,j)*yy(i,j)*x(imax ,jmax)+xx(i,j)*(1-yy(i,j))*x(imax,1)+yy(i,j)*(1-xx(i,j))*x(1,jmax)+(1-xx(i,j))*(1-yy(i,j))*x(1,1))

y(i,j)=(1-yy(i,j))*y(i,1)+yy(i,j)*y(i,jmax)+(1-xx(i,j))*y(1,j)+xx(i,j)*y(imax,j)-(xx(i,j)*yy(i,j)*y(imax ,jmax)+xx(i,j)*(1-yy(i,j))*y(imax,1)+yy(i,j)*(1-xx(i,j))*y(1,jmax)+(1-xx(i,j))*(1-yy(i,j))*y(1,1))

80 continue

!**********输出Gridgen的PLOT3D格式的网格文件*.grd*************

!**********可用Domain-Surfaces形式读入*************************

open(1,file='2Dmesh.grd')

write(1,*) 1

write(1,*) imax,jmax,1

do 100 i=1,imax

do 100 j=1,jmax

write(1,*) x(i,j)

100 continue

do 200 i=1,imax

do 200 j=1,jmax

write(1,*) y(i,j)

200 continue

do 300 i=1,imax

do 300 j=1,jmax

write(1,*) 0.0

300 continue

close(1)

goto 888

555 print *,'ERROR OCCURED 读取文件出错!请检查无误后,重新进行计算。'

pause

888 return

end subroutine

!////////////////////////////////////////////////////////////////////////////////////////////// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

注意:程序中,i、j为节点编号;x,y为物理平面节点坐标;xx,yy为计算平面节点坐标。

算例说明

1.本例考虑的二维环形物理空间:

如图示,共有1-1、1-2、2-2、2-1(即①②③④)四条边界。

2.对上图物理空间取如下对应的计算空间:

边界网格节点分布划分,采用均分正方形网格单元节点。每行、每列均为10等份(刚发现示意图中少画了一行^_^!),即有11个节点(0、0.1…、0.9、1),

3.这是程序读入的计算空间所有节点坐标(xx,yy)的文件(也可在程序中生成):

computec.dat

4.把物理空间①②③④四边也均分为10等份,为11个节点。

这是程序读入的物理空间4条边界上所有节点坐标(x,y)的文件:

physicsb.dat

5.这是程序生成的物理空间所有网格节点的坐标(x,y)文件:

2Dmesh.grd

6.这是2Dmesh.grd读入Gridgen的显示效果:(grid pts―import―domain-surfaces)

行文至此,2007-6-24下午17:05。忽闻外界笛声嘈杂,方感身体微凉,略有不安,赶紧遥控关了空调。砰然门窗翕动,接着巨响隆起,霎时楼外瓢泼如注,其势如…约半小时后,风停雨歇,雷声遁去…

3. 三维无限插值法生成网格

3.1计算公式

根据文献,得到数学求解公式:

(P

ξ⊕Pη⊕Pζ)[x]=Pξ[x]+Pη[x]+Pζ[x]-PξPη[x]-PηPζ[x]-PζPξ[x]+PξPηPζ[x]

(Pξ⊕Pη⊕Pζ)[y]=Pξ[y]+Pη[y]+Pζ[y]-PξPη[y]-PηPζ[y]-PζPξ[y]+PξPηPζ[y]

(Pξ⊕Pη⊕Pζ)[z]=Pξ[z]+Pη[z]+Pζ[z]-PξPη[z]-PηPζ[z]-PζPξ[x]+PξPηPζ[z] 笔者对上述符号公式进行了推导(推导过程略),可整理得到如下具体的计算公式:(这里给的计算公式正是下一小节程序的核心部分,这里直接使用了其中的变量)

px1=(1-xx(i,j,k))*x(1,j,k)+xx(i,j,k)*x(imax,j,k)

px2=(1-yy(i,j,k))*x(i,1,k)+yy(i,j,k)*x(i,jmax,k)

px3=(1-zz(i,j,k))*x(i,j,1)+zz(i,j,k)*x(i,j,kmax)

px1px2=(1-xx(i,j,k))*(1-yy(i,j,k))*x(1,1,k)+xx(i,j,k)*(1-yy(i,j,k))*x(imax,1,k)+yy(i,j,k)*(1-xx(i,j,k)) *x(1,jmax,k)+xx(i,j,k)*yy(i,j,k)*x(imax,jmax,k)

px2px3=(1-yy(i,j,k))*(1-zz(i,j,k))*x(i,1,1)+yy(i,j,k)*(1-zz(i,j,k))*x(i,jmax,1)+zz(i,j,k)*(1-yy(i,j,k))* x(i,1,kmax)+yy(i,j,k)*zz(i,j,k)*x(i,jmax,kmax)

px3px1=(1-zz(i,j,k))*(1-xx(i,j,k))*x(1,j,1)+zz(i,j,k)*(1-xx(i,j,k))*x(1,j,kmax)+xx(i,j,k)*(1-zz(i,j,k))* x(imax,j,1)+zz(i,j,k)*xx(i,j,k)*x(imax,j,kmax)

px2px3i1=(1-yy(i,j,k))*(1-zz(i,j,k))*x(1,1,1)+yy(i,j,k)*(1-zz(i,j,k))*x(1,jmax,1)+zz(i,j,k)*(1-yy(i,j,k) )*x(1,1,kmax)+yy(i,j,k)*zz(i,j,k)*x(1,jmax,kmax)

px2px3imax=(1-yy(i,j,k))*(1-zz(i,j,k))*x(imax,1,1)+yy(i,j,k)*(1-zz(i,j,k))*x(imax,jmax,1)+zz(i,j,k)* (1-yy(i,j,k))*x(imax,1,kmax)+yy(i,j,k)*zz(i,j,k)*x(imax,jmax,kmax)

px1px2px3=(1-xx(i,j,k))*px2px3i1+xx(i,j,k)*px2px3imax

py1=(1-xx(i,j,k))*y(1,j,k)+xx(i,j,k)*y(imax,j,k)

py2=(1-yy(i,j,k))*y(i,1,k)+yy(i,j,k)*y(i,jmax,k)

py3=(1-zz(i,j,k))*y(i,j,1)+zz(i,j,k)*y(i,j,kmax)

py1py2=(1-xx(i,j,k))*(1-yy(i,j,k))*y(1,1,k)+xx(i,j,k)*(1-yy(i,j,k))*y(imax,1,k)+yy(i,j,k)*(1-xx(i,j,k)) *y(1,jmax,k)+xx(i,j,k)*yy(i,j,k)*y(imax,jmax,k)

py2py3=(1-yy(i,j,k))*(1-zz(i,j,k))*y(i,1,1)+yy(i,j,k)*(1-zz(i,j,k))*y(i,jmax,1)+zz(i,j,k)*(1-yy(i,j,k))* y(i,1,kmax)+yy(i,j,k)*zz(i,j,k)*y(i,jmax,kmax)

py3py1=(1-zz(i,j,k))*(1-xx(i,j,k))*y(1,j,1)+zz(i,j,k)*(1-xx(i,j,k))*y(1,j,kmax)+xx(i,j,k)*(1-zz(i,j,k))* y(imax,j,1)+zz(i,j,k)*xx(i,j,k)*y(imax,j,kmax)

py2py3i1=(1-yy(i,j,k))*(1-zz(i,j,k))*y(1,1,1)+yy(i,j,k)*(1-zz(i,j,k))*y(1,jmax,1)+zz(i,j,k)*(1-yy(i,j,k) )*y(1,1,kmax)+yy(i,j,k)*zz(i,j,k)*y(1,jmax,kmax)

py2py3imax=(1-yy(i,j,k))*(1-zz(i,j,k))*y(imax,1,1)+yy(i,j,k)*(1-zz(i,j,k))*y(imax,jmax,1)+zz(i,j,k)* (1-yy(i,j,k))*y(imax,1,kmax)+yy(i,j,k)*zz(i,j,k)*y(imax,jmax,kmax)

py1py2py3=(1-xx(i,j,k))*py2py3i1+xx(i,j,k)*py2py3imax

pz1=(1-xx(i,j,k))*z(1,j,k)+xx(i,j,k)*z(imax,j,k)

pz2=(1-yy(i,j,k))*z(i,1,k)+yy(i,j,k)*z(i,jmax,k)

pz3=(1-zz(i,j,k))*z(i,j,1)+zz(i,j,k)*z(i,j,kmax)

pz1pz2=(1-xx(i,j,k))*(1-yy(i,j,k))*z(1,1,k)+xx(i,j,k)*(1-yy(i,j,k))*z(imax,1,k)+yy(i,j,k)*(1-xx(i,j,k)) *z(1,jmax,k)+xx(i,j,k)*yy(i,j,k)*z(imax,jmax,k)

pz2pz3=(1-yy(i,j,k))*(1-zz(i,j,k))*z(i,1,1)+yy(i,j,k)*(1-zz(i,j,k))*z(i,jmax,1)+zz(i,j,k)*(1-yy(i,j,k))*z (i,1,kmax)+yy(i,j,k)*zz(i,j,k)*z(i,jmax,kmax)

pz3pz1=(1-zz(i,j,k))*(1-xx(i,j,k))*z(1,j,1)+zz(i,j,k)*(1-xx(i,j,k))*z(1,j,kmax)+xx(i,j,k)*(1-zz(i,j,k))* z(imax,j,1)+zz(i,j,k)*xx(i,j,k)*z(imax,j,kmax)

pz2pz3i1=(1-yy(i,j,k))*(1-zz(i,j,k))*z(1,1,1)+yy(i,j,k)*(1-zz(i,j,k))*z(1,jmax,1)+zz(i,j,k)*(1-yy(i,j,k) )*z(1,1,kmax)+yy(i,j,k)*zz(i,j,k)*z(1,jmax,kmax)

pz2pz3imax=(1-yy(i,j,k))*(1-zz(i,j,k))*z(imax,1,1)+yy(i,j,k)*(1-zz(i,j,k))*z(imax,jmax,1)+zz(i,j,k)*( 1-yy(i,j,k))*z(imax,1,kmax)+yy(i,j,k)*zz(i,j,k)*z(imax,jmax,kmax)

pz1pz2pz3=(1-xx(i,j,k))*pz2pz3i1+xx(i,j,k)*pz2pz3imax

px=px1+px2+px3-px1px2-px2px3-px3px1+px1px2px3

py=py1+py2+py3-py1py2-py2py3-py3py1+py1py2py3

pz=pz1+pz2+pz3-pz1pz2-pz2pz3-pz3pz1+pz1pz2pz3

式中,

(1)px即(Pξ⊕Pη⊕Pζ)[x];py即(Pξ⊕Pη⊕Pζ)[y];pz即(Pξ⊕Pη⊕Pζ)[z]。

(2)px1即Pξ[x];px2即Pη[x];px3即Pζ[x],其它类同。

(3)px1px2即PξPη[x];px2px3即PηPζ[x] ;px3px1即PζPξ[x];其它类同。

(4)px1px2px3即PξPηPζ[x];py1py2py3即PξPηPζ[y];pz1pz2pz3即PξPηPζ[z]。(5)xx(i,j,k)为计算空间节点横坐标;x(i,j,k)为物理空间节点横坐标;其它类同。

3.2编程实例

程序需要读取物理空间的6个边界面的节点信息和计算空间的全部节点信息。由于篇幅所限,不再贴上输入文件数据。

本例代码在Visual Fortran6.5编译环境下运行测试通过。东岸线 2006-6-26 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

!/////////////////////////////////主程序//////////////////////////////////////////////////

program main

integer i,j,k,imax,jmax,kmax

!***打开物理平面边界坐标文件,先读取网格范围编号。i从1~imax,j从1~jmax****** open(1,file='pbottom.dat',err=555)

read(1,*)

read(1,*) jmax,imax

close(1)

open(1,file='pleft.dat',err=555)

read(1,*)

read(1,*) kmax,jmax

close(1)

!************调用子程序******************************

call compute(imax,jmax,kmax)

!************返回主程序******************************

goto 888

555 print *,'ERROR OCCURED 读取文件出错!请检查无误后,重新进行计算。'

888 print *,'Good Luck! ^_^'

print *,'https://www.360docs.net/doc/b13518145.html,----------东部动力网~倾情奉献~'

pause

end program

!//////////////////////////////////////////////////////////////////////////////////////////////

!/////////////////////////////////子程序//////////////////////////////////////////////////

subroutine compute(imax,jmax,kmax)

real

x(imax,jmax,kmax),y(imax,jmax,kmax),z(imax,jmax,kmax),xx(imax,jmax,kmax),yy(imax,jmax,km ax),zz(imax,jmax,kmax)

real

px1,px2,px3,px1px2,px2px3,px3px1,px1px2px3,px,py1,py2,py3,py1py2,py2py3,py3py1,py1py2py 3,py,pz1,pz2,pz3,pz1pz2,pz2pz3,pz3pz1,pz1pz2pz3,pz

!******打开物理平面文件,读入各边界面上节点坐标**************

!******从“水平的”bottom全边到“水平的”top全边*************

!******再到“垂直的”left中边到“垂直的”right中边*************

!******水平全边从左向右,垂直中边从下到上********************

open(1,file='pbottom.dat',err=555)

!************读入z=1面***********************

do 10 j=1,jmax

do 10 i=1,imax

read(1,*) x(i,j,1),y(i,j,1),z(i,j,1)

10 continue

!************读入z=kmax面********************

do 11 j=1,jmax

do 11 i=1,imax

read(1,*) x(i,j,kmax),y(i,j,kmax),z(i,j,kmax)

11 continue

!************读入y=1面***********************

do 12 k=1,kmax

do 12 i=1,imax

read(1,*) x(i,1,k),y(i,1,k),z(i,1,k)

12 continue

!************读入y=jmax面********************

do 13 k=1,kmax

do 13 i=1,imax

read(1,*) x(i,jmax,k),y(i,jmax,k),z(i,jmax,k)

13 continue

!************读入x=1面***********************

do 14 k=1,kmax

do 14 j=1,jmax

read(1,*) x(1,j,k),y(1,j,k),z(1,j,k)

14 continue

!************读入x=imax面********************

do 15 k=1,kmax

do 15 j=1,jmax

read(1,*) x(imax,j,k),y(imax,j,k),z(imax,j,k)

15 continue

close(1)

!*****从最下面逐行向上扫描读取计算区域的6个曲面各节点坐标值******* !*****从底往顶逐面、从下往上逐行、从左往右逐点扫描***************** open(1,file='computec.dat',err=555)

do 50 k=1,kmax

do 50 j=1,jmax

do 50 i=1,imax

read(1,*) xx(i,j,k),yy(i,j,k),zz(i,j,k)

50 continue

!***根据资料自行猜测、拓展到三维区域,网格内部节点坐标的计算公式***

!***注意理解该公式各项的具体含义和具体表达式***********************

!***如0、1在本例中则为1/1/1、imax/jmax/kmax************************

do 80 i=2,imax-1

do 80 j=2,jmax-1

do 80 k=2,kmax-1

!***********计算x坐标所需的各项具体表达式************************

px1=(1-xx(i,j,k))*x(1,j,k)+xx(i,j,k)*x(imax,j,k)

px2=(1-yy(i,j,k))*x(i,1,k)+yy(i,j,k)*x(i,jmax,k)

px3=(1-zz(i,j,k))*x(i,j,1)+zz(i,j,k)*x(i,j,kmax)

px1px2=(1-xx(i,j,k))*(1-yy(i,j,k))*x(1,1,k)+xx(i,j,k)*(1-yy(i,j,k))*x(imax,1,k)+yy(i,j,k)*(1-xx(i,j,k)) *x(1,jmax,k)+xx(i,j,k)*yy(i,j,k)*x(imax,jmax,k)

px2px3=(1-yy(i,j,k))*(1-zz(i,j,k))*x(i,1,1)+yy(i,j,k)*(1-zz(i,j,k))*x(i,jmax,1)+zz(i,j,k)*(1-yy(i,j,k))* x(i,1,kmax)+yy(i,j,k)*zz(i,j,k)*x(i,jmax,kmax)

px3px1=(1-zz(i,j,k))*(1-xx(i,j,k))*x(1,j,1)+zz(i,j,k)*(1-xx(i,j,k))*x(1,j,kmax)+xx(i,j,k)*(1-zz(i,j,k))* x(imax,j,1)+zz(i,j,k)*xx(i,j,k)*x(imax,j,kmax)

px2px3i1=(1-yy(i,j,k))*(1-zz(i,j,k))*x(1,1,1)+yy(i,j,k)*(1-zz(i,j,k))*x(1,jmax,1)+zz(i,j,k)*(1-yy(i,j,k) )*x(1,1,kmax)+yy(i,j,k)*zz(i,j,k)*x(1,jmax,kmax)

px2px3imax=(1-yy(i,j,k))*(1-zz(i,j,k))*x(imax,1,1)+yy(i,j,k)*(1-zz(i,j,k))*x(imax,jmax,1)+zz(i,j,k)* (1-yy(i,j,k))*x(imax,1,kmax)+yy(i,j,k)*zz(i,j,k)*x(imax,jmax,kmax)

px1px2px3=(1-xx(i,j,k))*px2px3i1+xx(i,j,k)*px2px3imax

!**************计算y坐标所需的各项具体表达式**********************

py1=(1-xx(i,j,k))*y(1,j,k)+xx(i,j,k)*y(imax,j,k)

py2=(1-yy(i,j,k))*y(i,1,k)+yy(i,j,k)*y(i,jmax,k)

py3=(1-zz(i,j,k))*y(i,j,1)+zz(i,j,k)*y(i,j,kmax)

py1py2=(1-xx(i,j,k))*(1-yy(i,j,k))*y(1,1,k)+xx(i,j,k)*(1-yy(i,j,k))*y(imax,1,k)+yy(i,j,k)*(1-xx(i,j,k)) *y(1,jmax,k)+xx(i,j,k)*yy(i,j,k)*y(imax,jmax,k)

py2py3=(1-yy(i,j,k))*(1-zz(i,j,k))*y(i,1,1)+yy(i,j,k)*(1-zz(i,j,k))*y(i,jmax,1)+zz(i,j,k)*(1-yy(i,j,k))* y(i,1,kmax)+yy(i,j,k)*zz(i,j,k)*y(i,jmax,kmax)

py3py1=(1-zz(i,j,k))*(1-xx(i,j,k))*y(1,j,1)+zz(i,j,k)*(1-xx(i,j,k))*y(1,j,kmax)+xx(i,j,k)*(1-zz(i,j,k))* y(imax,j,1)+zz(i,j,k)*xx(i,j,k)*y(imax,j,kmax)

py2py3i1=(1-yy(i,j,k))*(1-zz(i,j,k))*y(1,1,1)+yy(i,j,k)*(1-zz(i,j,k))*y(1,jmax,1)+zz(i,j,k)*(1-yy(i,j,k) )*y(1,1,kmax)+yy(i,j,k)*zz(i,j,k)*y(1,jmax,kmax)

py2py3imax=(1-yy(i,j,k))*(1-zz(i,j,k))*y(imax,1,1)+yy(i,j,k)*(1-zz(i,j,k))*y(imax,jmax,1)+zz(i,j,k)* (1-yy(i,j,k))*y(imax,1,kmax)+yy(i,j,k)*zz(i,j,k)*y(imax,jmax,kmax)

py1py2py3=(1-xx(i,j,k))*py2py3i1+xx(i,j,k)*py2py3imax

!**************计算z坐标所需的各项具体表达式***********************

pz1=(1-xx(i,j,k))*z(1,j,k)+xx(i,j,k)*z(imax,j,k)

pz2=(1-yy(i,j,k))*z(i,1,k)+yy(i,j,k)*z(i,jmax,k)

pz3=(1-zz(i,j,k))*z(i,j,1)+zz(i,j,k)*z(i,j,kmax)

pz1pz2=(1-xx(i,j,k))*(1-yy(i,j,k))*z(1,1,k)+xx(i,j,k)*(1-yy(i,j,k))*z(imax,1,k)+yy(i,j,k)*(1-xx(i,j,k)) *z(1,jmax,k)+xx(i,j,k)*yy(i,j,k)*z(imax,jmax,k)

pz2pz3=(1-yy(i,j,k))*(1-zz(i,j,k))*z(i,1,1)+yy(i,j,k)*(1-zz(i,j,k))*z(i,jmax,1)+zz(i,j,k)*(1-yy(i,j,k))*z (i,1,kmax)+yy(i,j,k)*zz(i,j,k)*z(i,jmax,kmax)

pz3pz1=(1-zz(i,j,k))*(1-xx(i,j,k))*z(1,j,1)+zz(i,j,k)*(1-xx(i,j,k))*z(1,j,kmax)+xx(i,j,k)*(1-zz(i,j,k))* z(imax,j,1)+zz(i,j,k)*xx(i,j,k)*z(imax,j,kmax)

pz2pz3i1=(1-yy(i,j,k))*(1-zz(i,j,k))*z(1,1,1)+yy(i,j,k)*(1-zz(i,j,k))*z(1,jmax,1)+zz(i,j,k)*(1-yy(i,j,k) )*z(1,1,kmax)+yy(i,j,k)*zz(i,j,k)*z(1,jmax,kmax)

pz2pz3imax=(1-yy(i,j,k))*(1-zz(i,j,k))*z(imax,1,1)+yy(i,j,k)*(1-zz(i,j,k))*z(imax,jmax,1)+zz(i,j,k)*( 1-yy(i,j,k))*z(imax,1,kmax)+yy(i,j,k)*zz(i,j,k)*z(imax,jmax,kmax)

pz1pz2pz3=(1-xx(i,j,k))*pz2pz3i1+xx(i,j,k)*pz2pz3imax

!**********获得最终的物理坐标系中各点坐标值**************************

px=px1+px2+px3-px1px2-px2px3-px3px1+px1px2px3

py=py1+py2+py3-py1py2-py2py3-py3py1+py1py2py3

pz=pz1+pz2+pz3-pz1pz2-pz2pz3-pz3pz1+pz1pz2pz3

x(i,j,k)=px

y(i,j,k)=py

z(i,j,k)=pz

80 continue

!**********输出Gridgen的PLOT3D格式的网格文件.grd*******************

open(1,file='3Dmesh.grd')

write(1,*) 1

write(1,*) imax,jmax,kmax

do 100 k=1,kmax

do 100 j=1,jmax

do 100 i=1,imax

write(1,*) x(i,j,k)

100 continue

do 200 k=1,kmax

do 200 j=1,jmax

do 200 i=1,imax

write(1,*) y(i,j,k)

200 continue

do 300 k=1,kmax

do 300 j=1,jmax

do 300 i=1,imax

write(1,*) z(i,j,k)

300 continue

close(1)

goto 888

555 print *,'ERROR OCCURED 读取文件出错!请检查无误后,重新进行计算。'

pause

888 return

end subroutine ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~本例生成的TFI体网格效果参见封面图片。

4. 参考文献

(1)数值传热学(第二版)。

(2)Mesh Generation。(来自网络)

(3)Numerical Grid Generation Foundations and Applications。(来自网络)

5. 版权声明

未经作者许可严禁将本文内容以任何形式用于商业用途!

官方论坛:https://www.360docs.net/doc/b13518145.html,/cnbbs

E-MAIL:ecengine@https://www.360docs.net/doc/b13518145.html,

CFD网格及其生成方法概述

CFD网格及其生成方法概述 作者:王福军 网格是CFD模型的几何表达形式,也是模拟与分析的载体。网格质量对CFD计算精度和计算效率有重要影响。对于复杂的CFD问题,网格生成极为耗时,且极易出错,生成网格所需时间常常大于实际CFD计算的时间。因此,有必要对网格生成方式给以足够的关注。 1 网格类型 网格(grid)分为结构网格和非结构网格两大类。结构网格即网格中节点排列有序、邻点间的关系明确,如图1所示。对一于复杂的儿何区域,结构网格是分块构造的,这就形成了块结构网格(block-structured grids)。图2是块结构网格实例。 图1 结构网格实例 图2 块结构网格实例 与结构网格不同,在非结构网格(unstructured grid)中,节点的位置无法用一个固定的法则予以有序地命名。图3是非结构网格示例。这种网格虽然生成过程比较复杂,但却有着极好的适应性,尤其对具有复杂边界的流场计算问题特别有效。非结构网格一般通过专门的

程序或软件来生成。 图3 非结构网格实例 2 网格单元的分类 单元(cell)是构成网格的基本元素。在结构网格中,常用的ZD网格单元是四边形单元,3D网格单元是六面体单元。而在非结构网格中,常用的2D网格单元还有三角形单元,3D 网格单元还有四面体单元和五面体单元,其中五面体单元还可分为棱锥形(或楔形)和金字塔形单元等。图4和图5分别示出了常用的2D和3D网格单元。 图4 常用的2D网格单元 图5 常用的3D网格单元

3 单连域与多连域网格 网格区域(cell zone)分为单连域和多连域两类。所谓单连域是指求解区域边界线内不包含有非求解区域的情形。单连域内的任何封闭曲线都能连续地收缩至点而不越过其边界。如果在求解区域内包含有非求解区域,则称该求解区域为多连域。所有的绕流流动,都属于典型的多连域问题,如机翼的绕流,水轮机或水泵内单个叶片或一组叶片的绕流等。图2及图3均是多连域的例子。 对于绕流问题的多连域内的网格,有O型和C型两种。O型网格像一个变形的圆,一圈一圈地包围着翼型,最外层网格线上可以取来流的条件,如图6所示。C型网格则像一个变形的C字,围在翼型的外面,如图7所示。这两种网格部属于结构网格。 图6 O型网格 图7 C型网格 4 生成网格的过程

网格划分主要软件

网格划分主要软件 网格划分——连续空间的离散化。 主要软件: ICEM-CFD(Ansys Inc): 最NB的网格划分软件,主要四个模块:Tetra(水平最高)、Hexa(用起来方便)、Global(难得的笛卡尔网格划分软件)、AutoHexa(算是垃圾,有那幺一点点用处)。接口贼多,几乎支持所有流行的CFD软件!!!使用方便,一个月内可以学会,两个月就可以针对课题努力了。这个软件还有后处理模块Visual3,但是目前说来还没有听过哪个兄弟用过,我也没用过。 Gridgen(Poinwise Inc): 你要学习网格理论,用它比较好,你要和它一起来完成网格,不能靠它自动给你个复杂网格。结构网格划分很好。帮助文档有些标新立异了,很多术语就是难为大家这些入门级别的,实体不叫实体,它非得说是Database,何必呢! Gambit(Fluent Inc): 好学、好用。就是要拖着一个Exceed当靠山,功能强大。但是占用内存比较多,常常会跑死机(不是个别的问题)。 CFX-build(Ansys Inc): 基于Patran的非结构网格划分软件,会Patran就会它!功能自不用说,Patran有多猛,搞FEA/CAE的兄弟都知道。 CFD-Geom(CFDRC Inc): 好学,不过有些概念要仔细领会,最好是对拓扑与网格结构、类型比较熟悉。 Patran(Msc Inc)、Hypermesh(Altair Inc): 这两个不说了FEA方面的猛将,CFD也可以借鉴。 以上按功能和在CFD领域的适用范围分类。 TrueGrid六面体网格划分工具 TrueGrid六面体网格划分工具 中文名称:TrueGrid六面体网格划分工具 英文名称:Scientific.Truegrid

网格生成技术

I 目录 1 概述 (1) 2 结构网格 (3) 2.1 贴体坐标法 (3) 2.2 块结构化网格 (11) 3 非结构网格 (16) 3.1 概述 (16) 3.2 阵面推进法 (16) 3.3 Delaunay三角划分 (19) 3.4 四叉树(2D)/八叉树(3D)方法 (21) 3.5 阵面推进法和Delaunay三角划分结合算法 (22) 4 其他网格生成技术 (23) 4.1 自适应网格 (23) 4.2 混合网格 (25) 4.3 动网格 (26) 4.4 曲面网格 (27) 4.5 重叠网格 (28) 5 网格生成软件 (29) 5.3 Gambit (29) 5.2 ICEM CFD (30) 5.1 TrueGrid (32) 5.2 Gridgen (34)

1 概述 计算流体力学作为计算机科学、流体力学、偏微分方程数学理论、计算几何、数值分析等学科的交叉融合,它的发展除依赖于这些学科的发展外,更直接表现于对网格生成技术、数值计算方法发展的依赖。 在计算流体力学中,按照一定规律分布于流场中的离散点的集合叫网格(Grid),分布这些网格节点的过程叫网格生成(Grid Generation)。网格生成是连接几何模型和数值算法的纽带,几何模型只有被划分成一定标准的网格才能对其进行数值求解,所以网格生成对CFD至关重要,直接关系到CFD计算问题的成败。一般而言,网格划分越密,得到的结果就越精确,但耗时也越多。1974年Thompson等提出采用求解椭圆型方程方法生成贴体网格,在网格生成技术的发展中起到了先河作用。随后Steger等又提出采用求解双曲型方程方法生成贴体网格。但直到20世纪80年代中期,相比于计算格式和方法的飞跃发展,网格生成技术未能与之保持同步。从这个时期开始,各国计算流体和工业界都十分重视网格生成技术的研究。上个世纪90年代以来迅速发展的非结构网格和自适应笛卡尔网格等方法,使复杂外形的网格生成技术呈现出了更加繁荣发展的局面。现在网格生成技术已经发展成为CFD的一个重要分支,它也是计算流体动力学近20年来一个取得较大进展的领域。也正是网格生成技术的迅速发展,才实现了流场解的高质量,使工业界能够将CFD的研究成果——求解Euler/NS方程方法应用于型号设计中。 随着CFD在实际工程设计中的深入应用,所面临的几何外形和流场变得越来越复杂,网格生成作为整个计算分析过程中的首要部分,也变得越来越困难,它所需的人力时间已达到一个计算任务全部人力时间的60%左右。在网格生成这一“瓶颈”没有消除之前,快速地对新外形进行流体力学分析,和对新模型的实验结果进行比较分析还无法实现。尽管现在已有一些比较先进的网格生成软件,如ICEM CFD、Gridgen、Gambit等,但是对一个复杂的新外形要生成一套比较合适的网格,需要的时间还是比较长,而对于设计新外形的工程人员来说,一两天是他们可以接受的对新外形进行一次分析的最大周期。要将CFD从专业的研究团体中脱离出来,并且能让工程设计人员应用到实际的设计中去,就必须首先解决网格生成的自动化和即时性问题,R.Consner等人在他们的一篇文章中,详细地讨论了这些方面的问题,并提出:CFD研究人员的关键问题是“你能把整个设计周期缩短多少天?”。而缩短设计周期的主要途径就是缩短网格生成时间和流场计算时间。因此,生成复杂外形网格的

mike21fm网格生成器中文教程

MIKE21 FM网格生成器培训教程

目录 17简介 (1) 17.1概念 (2) 17.2边界定义 (3) 18开始 (3) 18.1介绍 (3) 18.2数据位置 (4) 18.3 步骤1 - 建立一个工作区域 (4) 18.4步骤2 - 导入模型边界线 (5) 18.5步骤3 - 编辑陆地边界线 (7) 18.6 步骤4 - 定义开边界 (9) 18.7步骤5 - 生成网格 (9) 18.8步骤6 - 对陆地边界进行光滑处理 (10) 18.9步骤7 - 网格地形插值 (12) 18.10 步骤8 - 对网格进行光滑处理 (15) 18.11 步骤9 - 使用多边形来控制节点密度 (15)

MzGeneric.pdf手册中Mesh Generator部分 17 简介 网格生成器(mesh generator)为制作三角网格提供了工作平台。 创建合理的网格是模型获得可靠结果的重要条件。基于 MIKE Zero 之上的MIKE 21 Flow Model FM, MIKE 3 Flow Model FM 和 MIKE 21 Spectral Wave Model FM,都是以三角网格为基础的。 图 17.1 全球模型的陆地/海洋边界 网格的生成包括选择适当的模拟范围,确定地形网格的分辨率,考虑流场,风场和波浪场的影响,为开边界和陆地边界确定边界代码。此外,在考虑稳定性的前提下,确定地理空间的分辨率。 生成网格文件可以使用MIKE Zero网格生成器。网格文件是一个ASCII文件(扩展名*.mesh),其中包括地理位置信息和在网格中每一个节点的水深。文件还包括三角形的节点连通性信息。所有关于生成网格文件的配置信息都在网格定义文件(扩展名*.mdf) 中, 文件可以被修改和再利用。 网格生成器的功能包括从不同的外部信息源(例如. XYZ 水深点,XYZ等值线,MIKE 21矩形网格地形,MIKE C-MAP数据) 输入原始数据,或是用内置的制图工具手动创建地形数据。用户可以在网格生成器中导入背景图片,例如地图,在数据编辑时使用它们,或用来提高图形的后处理效果。

并行网格生成技术

并行网格生成技术 分类 基于以下三种网格生成技术:Delaunay 网格前沿法,边细分法。 并行网格生成将原始网格生成问题划分成N个子问题来求解。 子问题的求解可分为以下三种形式: 紧耦合,部分耦合,无耦合。 并行网格生成中的难点在于 1.维持并行算法的稳定性,使得并行算法的结果正确。 2.代码重用:将原始算法移植为并行算法时不需要改动原始算法代码,并且能保证并行算法的正确性。 基于Delaunay的方法 空洞算法: 上述算法并行化后引发如下问题:

图(a)中两个空洞相交,使得产生的三角剖分边相交。 图(b)中两个空洞共享一条边,使得最终产生的剖分可能不满足德劳内空圆准则。 紧耦合算法: Parallel Optimistic Delaunay Meshing Method (PODM) PODM算法对子网格划分没有要求,这个算法通过重新划分子网格边界来保证算法稳定性。如下图(a)所示,空洞扩展到子区域之外时,将通过子区域之间的通信来保证算法的正确性。因此,这个算法是紧耦合的,不具备代码重用性。 图(a)是空洞扩展到子区域之外的情况。 图(b)是并行插入时的同步时间图。 无耦合算法: Parallel Projective Delaunay Meshing (PPDM) PPDM算法的基本思想是预先计算出Delaunay-admissible子区域边界。即,最终生成的Delaunay剖分将包括这个边界。

这样,每个子网格就可以完全独立的计算各自剖分。 因此,这个算法是无耦合并且是可完全代码复用的。 生成Delaunay-admissible子区域边界的基本思想如下: 先生成三维点集的一个凸壳。首先用Inertia Axis分割法将凸壳用平面II分成两个近似相等 的部分。然后搜索所有三角面(如上图),使得存在一个空球,球心在平面II上,球面经过P,Q,R且球内不包含其它任何点。这样,这些三角面就构成了一个Delaunay-admissible边界。 部分耦合算法: Parralel Constrained Delaunay Meshing (PCDM) method

网格划分原则

有限元分析中的网格划分好坏直接关系到模型计算的准确性。本文简述了网格划分应用的基本理论,并以ANSYS限元分析中的网格划分为实例对象,详细讲述了网格划分基本理论及其在工程中的实际应用,具有一定的指导意义。 1 引言 ANSYS有限元网格划分是进行数值模拟分析至关重要的一步,它直接影响着后续数值计算分析结果的精确性。网格划分涉及单元的形状及其拓扑类型、单元类型、网格生成器的选择、网格的密度、单元的编号以及几何体素。从几何表达上讲,梁和杆是相同的,从物理和数值求解上讲则是有区别的。同理,平面应力和平面应变情况设计的单元求解方程也不相同。在有限元数值求解中,单元的等效节点力、刚度矩阵、质量矩阵等均用数值积分生成,连续体单元以及壳、板、梁单元的面内均采用高斯(Gauss)积分,而壳、板、梁单元的厚度方向采用辛普生(Simpson)积分。辛普生积分点的间隔是一定的,沿厚度分成奇数积分点。由于不同单元的刚度矩阵不同,采用数值积分的求解方式不同,因此实际应用中,一定要采用合理的单元来模拟求解。 2 ANSYS网格划分的指导思想 ANSYS网格划分的指导思想是首先进行总体模型规划,包括物理模型的构造、单元类型的选择、网格密度的确定等多方面的内容。在网格划分和初步求解时,做到先简单后复杂,先粗后精,2D单元和3D单元合理搭配使用。为提高求解的效率要充分利用重复与对称等特征,由于工程结构一般具有重复对称或轴对称、镜象对称等特点,采用子结构或对称模型可以提高求解的效率和精度。利用轴对称或子结构时要注意场合,如在进行模态分析、屈曲分析整体求解时,则应采用整体模型,同时选择合理的起点并设置合理的坐标系,可以提高求解的精度和效率,例如,轴对称场合多采用柱坐标系。有限元分析的精度和效率与单元的密度和几何形状有着密切的关系,按照相应的误差准则和网格疏密程度,避免网格的畸形。在网格重划分过程中常采用曲率控制、单元尺寸与数量控制、穿透控制等控制准则。在选用单元时要注意剪力自锁、沙漏和网格扭曲、不可压缩材料的体积自锁等问题 ANSYS软件平台提供了网格映射划分和自由适应划分的策略。映射划分用于曲线、曲面、实体的网格划分方法,可使用三角形、四边形、四面体、五面体和六面体,通过指定单元边长、网格数量等参数对网格进行严格控制,映射划分只用于规则的几何图素,对于裁剪曲面或者空间自由曲面等复杂几何体则难以控制。自由网格划分用于空间自由曲面和复杂实体,采用三角形、四边形、四面体进行划分,采用网格数量、边长及曲率来控制网格的质量。 3 ANSYS网格划分基本原则 3.1 网格数量 网格数量的多少将影响计算结果的精度和计算规模的大小。一般来讲,网格数量增加,计算精度会有所提高,但同时计算规模也会增加,所以在确定网格数量时应权衡两个因数综合考虑。

网格划分

有限元网格划分 摘要:总结近十年有限元网格划分技术发展状况。首先,研究和分析有限元网格划分的基本原则;其次,对当前典型网格划分方法进行科学地分类,结合实例,系统地分析各种网格划分方法的机理、特点及其适用范围,如映射法、基于栅格法、节点连元法、拓扑分解法、几何分解法和扫描法等;再次,阐述当前网格划分的研究热点,综述六面体网格和曲面网格划分技术;最后,展望有限元网格划分的发展趋势。 关键词:有限元网格划分;映射法;节点连元法;拓扑分解法;几何分解法;扫描法;六面体网格 1 引言 有限元网格划分是进行有限元数值模拟分析至关重要的一步,它直接影响着后续数值计算分析结果的精确性。网格划分涉及单元的形状及其拓扑类型、单元类型、网格生成器的选择、网格的密度、单元的编号以及几何体素。在有限元数值求解中,单元的等效节点力、刚度矩阵、质量矩阵等均用数值积分生成,连续体单元以及壳、板、梁单元的面内均采用高斯(Gauss)积分,而壳、板、梁单元的厚度方向采用辛普生(Simpson)积分。 2 有限元网格划分的基本原则 有限元方法的基本思想是将结构离散化,即对连续体进行离散化,利用简化几何单元来近似逼近连续体,然后根据变形协调条件综合求解。所以有限元网格的划分一方面要考虑对各物体几何形状的准确描述,另一方面也要考虑变形梯度的准确描述。为正确、合理地建立有限元模型,这里介绍划分网格时应考虑的一些基本原则。 2.1 网格数量

网格数量直接影响计算精度和计算时耗,网格数量增加会提高计算精度,但同时计算时耗也会增加。当网格数量较少时增加网格,计算精度可明显提高,但计算时耗不会有明显增加;当网格数量增加到一定程度后,再继续增加网格时精度提高就很小,而计算时耗却大幅度增加。所以在确定网格数量时应权衡这两个因素综合考虑。 2.2 网格密度 为了适应应力等计算数据的分布特点,在结构不同部位需要采用大小不同的网格。在孔的附近有集中应力,因此网格需要加密;周边应力梯度相对较小,网格划分较稀。由此反映了疏密不同的网格划分原则:在计算数据变化梯度较大的部位,为了较好地反映数据变化规律,需要采用比较密集的网格;而在计算数据变化梯度较小的部位,为减小模型规模,网格则应相对稀疏。 2.3 单元阶次 单元阶次与有限元的计算精度有着密切的关联,单元一般具有线性、二次和三次等形式,其中二次和三次形式的单元称为高阶单元。高阶单元的曲线或曲面边界能够更好地逼近结构的曲线和曲面边界,且高次插值函数可更高精度地逼近复杂场函数,所以增加单元阶次可提高计算精度。但增加单元阶次的同时网格的节点数也会随之增加,在网格数量相同的情况下由高阶单元组成的模型规模相对较大,因此在使用时应权衡考虑计算精度和时耗。 2.4 单元形状 网格单元形状的好坏对计算精度有着很大的影响,单元形状太差的网格甚至会中止计算。单元形状评价一般有以下几个指标: (1)单元的边长比、面积比或体积比以正三角形、正四面体、正六面体为参考基准。 (2)扭曲度:单元面内的扭转和面外的翘曲程度。 (3)节点编号:节点编号对于求解过程中总刚矩阵的带宽和波前因数有较大的影响,从而影响计算时耗和存储容量的大小

浅谈网格计算相关技术与应用(一)

浅谈网格计算相关技术与应用(一) 论文关键词]数据库浮点运算虚拟化资源共享论文摘要]论述网格计算的发展概况,在科学领域的应用范围,网格服务的特点以及在未来网络下场中的发展潜力。 一、网格计算的由来与发展 网格计算是伴随着互联网技术而迅速发展起来的,是将地理上分布的计算资源(包括数据库、贵重仪器等各种资源)充分运用起来,协同解决复杂的大规模问题,特别是解决仅靠本地资源无法解决的复杂问题,是专门针对复杂科学计算的新型计算模式。这种计算模式是利用互联网把分散在不同地理位置的电脑组织成一个“虚拟的超级计算机”,其中每一台参与计算的计算机就是一个“节点”,而整个计算机是由成千上万个“节点”组成的“一张网格”,所以这种计算方式叫网格计算。这样组织起来的“虚拟的超级计算机”有两个优势,一个是数据处理能力超强,另一个是能充分利用网上的闲置处理能力。简单地讲,网格是把整个网络整合成一台巨大的超级计算机,实现计算资源、存储资源、数据资源、信息资源、知识资源、专家资源的全面共享。 近几年,随着计算机计算能力的迅速增长,互联网络的普及和高速网络成本的大幅降低以及传统计算方式和计算机的使用方式的改变,网格计算已经逐渐成为超级计算发展的一个重要趋势。网格计算是一个崭新而重要的研究领域,它以大粒度资源共享、高性能计算和创新性应用为主要特征,必将成为21世纪经济发展的重要推动力。 二十世纪九十年代以来,世界各个国家,尤其是发达国家,建立了很多超级计算应用中心和工程研究中心,美国还制定了新一轮规划的先进计算框架(ACIP),发展面向21世纪的先进计算技术。我国在科技部的领导和主持下,经过专家组及相关单位的努力,作为我国高性能计算和信息服务战略性基础设施的国家高性能计算环境发展很快。在已经建成的5个国家级高性能计算中心的基础上,又于中南、西北等地建立了新的国家高性能计算中心,科技部加强了网络节点的建设,形成了以科学院为主体的计算网格。教育部也启动了网格计算工程,第一批12个网点正在建设之中,国家基金委也列出专项基金资助网格计算。 网格是借鉴电力网的概念出来的,网格的最终目的是希望用户在使用网格的计算能力时,就如同现在使用电力一样方便简单。 二、网格计算的应用 (一)分布式超级计算 网格计算可以把分布式的超级计算机集中起来,协同解决复杂大规模的问题。是大量的闲置计算机资源得到有效的组织,提高了资源的利用效率,节省了大量的重复投资,使用户的需求能够得到及时满足。 (二)高吞吐率计算机 网络技术能够十分有效地提高计算的吞吐率,它利用CPU周期窃取技术,将大量闲置计算机的计算资源集中起来,提供给对时间不太敏感的问题,作为计算资源的重要来源。 (三)数据密集型计算 数据密集型计算的问题求解通常同时产生很大的通讯和计算需求,需要网格能力才可以解决。网格已经在药物分子设计、计算力学、计算材料、电子学、生物学、核物理反映、航空航天等众多领域得到广泛应用。 (四)给予更广泛信息共享的人与人交互 网格的出现更急突破了人与人之间地理界线的限制,使得科技工作者之间的交流更加的方便,从某种程度上说,可以实现人与人之间的智慧共享。 (五)更广泛的资源贸易 随着大型机性能的提高和微机的更加普及,其资源的闲置问题越来越突出,网络技术可以有效地组织这些闲置资源,使得有大量的计算需求用户能够获得这些资源,而资源提供者的应

网格计算的应用及发展前景

[摘要]文章论述了网格计算的发展概况、在科学领域的应用范围、网格服务的特点以及在未来网络市场中的发展潜力。[关键词]数据库;浮点运算;虚拟化;资源共享现代社会由于大规模的科学和工程计算的需求,迫使计算机必须不断地提高其运算速度和存储容量。计算机的发展历史表明,为了达到更好的处理性能,除了必须提高系统的硬件的速度外,系统的结构也必须不断改进,特别是当元器件的速度达到极限时,后者将变成焦点问题。于是,超级并行机已经成为复杂科学计算领域的主宰。但以超级计算机为中心的计算模式存在明显的不足,而且目前正在经受挑战。超级计算机虽然是一台处理能力强大的“巨无霸”,但它的造价极其昂贵,通常只有一些国家级的部门,如航天、军事、气象等部门才有能力配置这样的设备。而随着人们在日常工作遇到的商业计算越来越复杂,人们迫切需要数据处理能力更强大的计算机,而超级计算机的价格显然阻止了它进入普通人的工作领域。于是,人们开始寻找一种造价低廉而数据处理能力超强的计算模式,最终科学家们经过努力找到了答案——Grid Computing(网格计算)。网格(grid)是一个集成的计算与资源环境,或者说是一个计算资源池。网格也是一种先进的计算基础设施(Advanced Computational Infrastructure,简称ACI),用于研究与工程应用相结合的项目,学科领域涉及超级计算技术、网络技术、数据库技术、中间件技术、并行算法和各种计算科学研究与应用技术,是一个综合性的跨学科高技术研究课题。网格计算(Grid Computing)是伴随着互联网技术而迅速发展起来的,是将地理上分布的计算资源(包括数据库、贵重仪器等各种资源)充分利用起来,协同解决复杂的大规模问题,特别是解决仅靠本地资源无法解决的复杂问题,是专门针对复杂科学计算的新型计算模式。这种计算模式是利用互联网把分散在不同地理位置的电脑组织成一个“虚拟的超级计算机”,其中每一台参与计算的计算机就是一个“节点”,而整个计算是由成千上万个“节点”组成的“一张网格”,所以这种计算方式叫网格计算。这样组织起来的“虚拟的超级计算机”有两个优势,一个是数据处理能力超强;另一个是能充分利用网上的闲置处理能力。简单地讲,网格是把整个网络整合成一台巨大的超级计算机,实现计算资源、存储资源、数据资源、信息资源、知识资源、专家资源的全面共享。近年来,随着计算机计算能力的迅速增长,互联网络的普及和高速网络成本的大幅度降低以及传统计算方式和计算机的使用方式的改变,网格计算已经逐渐成为超级计算发展的一个重要趋势。网格计算是一个崭新而重要的研究领域,它以大粒度资源共享,高性能计算和创新性应用为主要特征,必将成为21世纪经济发展的重要推动力。二十世纪九十年代以来,世界各个国家,尤其是发达国家,建立了很多超级计算应用中心(NCSA)和工程研究中心,美国还制定了新一轮规划的先进计算框架计划(ACIP),发展面向21世纪的先进计算技术. 我国在科技部的领导和主持下,经过306主题专家组及相关单位的努力,作为我国高性能计算和信息服务的战略性基础设施的国家高性能计算环境发展很快。在已建成的5个国家级高性能计算中心基础上,又于中南、西北等地建立了新的国家高性能计算中心,科技部并加强了网格节点的建设,形成以科学院为主体的计算网格。教育部也启动了网格计算工程,第一批12个网点正在建设中,国家基金委也列出专向基金资助网格计算。[!--empirenews.page--]网格是借鉴电力网(electric power grid)的概念出来的,网格的最终目的是希望用户在使用网格的计算能力时,就如同现在使用电力一样方便简单。在科学计算领域,网格计算可以在以下几个方面得到广泛应用:1.分布式超级计算。网格计算可以把分布式的超级计算机集中起来,协同解决复杂的大规模的问题。使大量闲置的计算机资源得到有效的组织,提高了资源的利用效率,节省了大量的重复投资,使用户的需求能够得到及时满足。2.高吞吐率计算。网格技术能够十分有效地提高计算的吞吐率,它利用CPU的周期窃取技术,将大量空闲的计算机的计算资源集中起来,提供给对时间不太敏感的问题,作为计算资源的重要来源。3.数据密集型计算。数据密集型的问题的求解往往同时产生很大的通讯和计算需求,需要网格能力才可以解决。网格可以药物分子设计、计算力学、计算材料、电子学、生物学、核物理反应、航空航天等众多的领域得到

网格生成技术概述

§9网格生成技术概述 所谓网格划分就是把空间上连续的计算区域划分成许多子区域,并确定每个子区域中的节点。网格划分的实质就是用一组有限个离散的点来代替原来连续的空间。 网格生成技术是计算传热学(NHT)和计算流体力学(CFD)的重要组成部分,在目前的CFD&NHT工作周期中,网格生成所需人力时间约占一个计算任务全部人力时间的60%左右,网格质量的好坏直接影响数值结果的精度,甚至影响数值计算的成败。可见网格生成技术是CFD&NHT作为工程应用的有效工具需要解决的关键技术之一。 最初,因为主要从事理论研究,求解的方程通常是比较简单的模型方程。对于二维问题,常在比较规则的区域内研究问题,此时针对具体的问题可用较简单的代数方法生成网格,并做简单的自适应,网格问题并不突出。但是对于有实际应用价值背景的问题,如航空航天飞行中的高超声速流动、跨音速流动以及其它多介质、高温高压系统的计算流体力学问题。这些问题所涉及的流场十分复杂,会出现各种形式的间断,必须采用非常密的网格才能对间断有较高的分辨,从而达到需要的计算精度。事实上,计算流体力学的发展除了依赖于计算机和数值计算方法的发展以外,还在很大程度上依赖于网格技术的发展。因此,近几十年来网格生成技术己受到越来越多的计算数学家、计算流体力学家的重视,并己经成为计算流体力学发展的一个重要分支。 1. 网格单元的分类 单元(cell)是构成网格的基本元素。在结构网格中,常用的2D网格单元是四边形单元,3D网格单元是六面体单元。而在非结构网格中,常用的2D网格单元还有三角形单元,3D网格单元还有四面体单元和五面体单元,其中五面体单元还可分为棱锥形(或楔形)和金字塔形单元等。图1和图2分别示出了常用的2D和3D网格单元。

浅析网格计算技术的应用与发展

浅析网格计算技术的应用与发展 郑琦1卢德利2 (1:吉林建筑工程学院,长春130021;2:吉林医药设计院有限公司,长春130021) 摘要:网格计算是伴随着互联网而迅速发展起来的、专门针对复杂科学计算的新型计算模式。我们可以将服务器、存储系统和网络联合在一起,数据文件、应用程序和系统看起来就像是一个巨大的虚拟计算系统,为用户提供功能强大的多系统资源来处理特定的任务。本文简述了网格计算的概念、关键组件,介绍了网格计算在若干领域的应用,概述了网格计算现状和发展前景。 关键字:网格计算;分布式系统;资源共享 中图分类号:文献标识符:文章编号: Analyze Briefly The Application and Development of Grid Computing ZhengQi1 Lu De-li2 (1:JiLin Institute of Architecture and Civil Engineering ,Changchun 130021; 2:JiLin Pharmaceutical Design Institute Co.Ltd,Changchun 130021) Abstract:Grid computing is a new computation pattern that aims at the complex science computation specifically, accompanied by the rapid development of the Internet. We can be able to servers, memory systems and networks together. It can provide users with a powerful multi-system resources to handle specific tasks, like a huge virtual computing systems. This paper has summarized the concept and the key components of grid computing.Introduced a number of grid computing in the field of application. Grid computing provides an overview of the current situation and development prospects. Key Words: Grid Computing; Distributional System; Resource Sharing 0 引言 随着超级计算机的不断发展,它已经成为复杂科学计算领域的主宰。但以超级计算机为中心的计算模式存在明显的不足,而且目前正在经受挑战。超级计算机虽然具有非常强大处理能力,但它造价极高,通常只有一些国家级的如航天、国防等部门才有能力配置这样的设备。而随着人们日常工作遇到的商业计算、科学计算越来越复杂,人们越来越需要数据处理能力更强大的计算机,而超级计算机的价格使得它进入普通人的工作领域成为一种奢望。于是人们在寻找造价低廉而数据处理作者简介:郑琦(1978~),女,吉林省长春市人,助教,硕士

有限元网格剖分方法概述

有限元网格剖分方法概述 在采用有限元法进行结构分析时,首先必须对结构进行离散,形成有限元网格,并给出与此网格相应的各种信息,如单元信息、节点坐标、材料信息、约束信息和荷载信息等等,是一项十分复杂、艰巨的工作。如果采用人工方法离散对象和处理计算结果,势必费力、费时且极易出错,尤其当分析模型复杂时,采用人工方法甚至很难进行,这将严重影响高级有限元分析程序的推广和使用。因此,开展自动离散对象及结果的计算机可视化显示的研究是一项重要而紧迫的任务。 有限元网格生成技术发展到现在, 已经出现了大量的不同实现方法,列举如下: 映射法 映射法是一种半自动网格生成方法,根据映射函数的不同,主要可分为超限映射和等参映射。因前一种映射在几何逼近精度上比后一种高,故被广泛采用。映射法的基本思想是:在简单区域内采用某种映射函数构造简单区域的边界点和内点,并按某种规则连接结点构成网格单元。也就是根据形体边界的参数方程,利用映射函数,把参数空间内单元正方形或单元三角形(对于三维问题是单元立方体或单元四面体)的网格映射到欧氏空间,从而生成实际的网格。这种方法的主要步骤是,首先人为地把分析域分成一个个简单可映射的子域,每个子域为三角形或四边形,然后根据网格密度的需要,定义每个子域边界上的节点数,再根据这些信息,利用映射函数划分网格。 这种网格控制机理有以下几个缺点: (1)它不是完全面向几何特征的,很难完成自动化,尤其是对于3D区域。 (2)它是通过低维点来生成高维单元。例如,在2D问题中,先定义映射边界上的点数,然后形成平面单元。这对于单元的定位,尤其是对于远离映射边界的单元的定位,是十分困难的,使得对局部的控制能力下降。 (3)各映射块之间的网格密度相互影响程度很大。也就是说,改变某一映射块的网格密度,其它各映射块的网格都要做相应的调整。 其优点是:由于概念明确,方法简单,单元性能较好,对规则均一的区域,适用性很强,因此得到了较大的发展,并在一些商用软件如ANSYS等得到应用。 2 。拓扑分解法 拓扑分解法较其它方法发展较晚, 它首先是由Wordenwaber提出来的。该方法假设最后网格顶点全部由目标边界顶点组成, 那么可以用一种三角化算法将目标用尽量少的三角形完全分割覆盖。这些三角形主要是由目标的拓扑结构决定, 这样目标的复杂拓扑结构被分解成简单的三角形拓扑结构。该方法生成的网格一般相当粗糙, 必须与其它方法相结合, 通过网格加密等过程, 才能生成合适的网格。该方法后来被发展为普遍使用的目标初始三角化算法, 用来实现从实体表述到初始三角化表述的自动化转换。 单一的拓扑分解法因只依赖于几何体的拓扑结构使网格剖分不理想,有时甚至很差。 3.连接节点法 这类方法一般包括二步:区域内布点及其三角化。早期的方法通常是先在区域内布点, 然后再将它们联成三角形或四面体, 在三角化过程中, 对所生成的单元形状难于控制。随着Delaunay三角化(简称为DT ) 方法的出现, 该类方法已成为目前三大最流行的全自动网格生成方法之一。 DT法的基本原理:任意给定N个平面点Pi(i=1,2,…,N)构成的点集为S,称满足下列条件的点集Vi为Voronoi多边形。其中,Vi满足下列条件: Vi ={ X:|X- Pi|(|X- Pj|,X(R2,i(j,j=1,2,…,N }Vi为凸多边形,称{ Vi}mi=1为Dirichlet Tesselation

网格生成技术

1. 网格生成技术 数值模拟流体运动时,首先将流动区域离散成一定形状的网格,然后在网格节点上求解离散化的控制方程。数值模拟的计算精度既与控制方程的离散格式的精度密切相关,也与网格结构和分布有关,为了尽量减少计算误差,保证解的稳定性,生成的网格至少满足下面的一些原则: ①网格的贴体性。计算网格应准确反映流动区域的边界形状,并且要能较容易的引入边界条件。 ②网格的疏密变化。在物理梯度大的地方,网格要密些,以提高对流动结构的捕捉能力,搞高数值模拟的精度。另外,由于在数值模拟之前,人们对流动结构的主要特征不甚了然,如哪此地方会出现旋涡,水跃、激波会产生在什么地方等,因此,计算网格最好能根据计算结果的变化而进行调整,即网格具有自适应性。 由于流动边界和流体运动结构的复杂性,自动生成复杂流场的理想分布网格相当困难,网格生成所费人力也很高,即使在计算流体力学高度发展的国家,网格生成仍占一个计算任务全部人力时间的60%~80%,因此,网格生成技术成为了CFD(计算流体力学)中一个独立的分支,网格生成技术也是CFD中最活跃的研究领域之一。目前,网格生成方法很多,根据网格拓扑结构可分为两大类:即结构网格和非结构网格。

1.1结构网格的生成 结构网格中网格节点与邻点相连,连方式与节点的位置无关,如二维空间中的矩形网格、三维空间中的六面体网格。对于简单的计算区域,很容易进行结构网格的剖分,对于复杂的流动区域,尽管可以采用阶梯形网格对边界进行近似处理,但是这种处理通用性差,且会影响计算精度,为解决这个问题,人们一般采用坐标变换技术生成计算网格。 坐标变换生成计算网格又称贴体坐标技术,其基本思想是通过数学变换将复杂的物理区域变换到规则的计算空间中,物理空间和计算空间一一对应。目前生成贴体拟合坐标的方法可以分成代数变换和偏微分方程变换两大类。代数变换网格生成是用代数公式,一般为显示,给出物理区域和计算区域之间的对应关系,常用的方法有保角变换(conformal mapping)、剪切变换(shearing transformation)和Hermit变换等。代数变换网格生成方法应用范围有限,其原因是对于复杂的计算区域,代数变换较难实现,边界附近的节点控制也十分困难。偏微分方程方法用微分方程将不规则区域变换成规则区域,其通用性较好,又有生成的网格均匀、网格疏密易于控制等优点,由此得到了普遍的应用。 Winslow于1967年提出用偏微分方程生成计算网格的思想,后来,Thompson,Thomas和Mastin对这一方法进行了全面而系统的研究,提出了著名的TTM方法。在TTM方法中,计算网格控制方程中源项的各控制参数的选取没有一定之规,具体参数的选取与研究者

网格生成技术之无限插值法

¤Grid Generation Series¤ 网格生成???适体坐标系???代数方法???无限插值法 Copyright ? 2007 https://www.360docs.net/doc/b13518145.html, 版权所有

目录 1. 概述 (1) 1.1前序 (1) 1.2名词解释 (1) 1.3映射关系 (1) 2. 二维无限插值法生成网格 (2) 2.1模型公式 (2) 2.2操作步骤 (3) 2.3编程实例 (3) 3. 三维无限插值法生成网格 (9) 3.1计算公式 (9) 3.2编程实例 (11) 4. 参考文献 (16) 5. 版权声明 (17)

1. 概述 1.1前序 网格生成技术的编程实现与应用曾是笔者感觉深奥而有趣的事情。因对这方面并不熟悉,2006年夏初,笔者决定做网格生成方面的努力。查看了若干资料后,虽对其数学原理未有涉足,但还是有幸获得或推出了生成二维网格和三维网格生成的TFI实现公式,并编写了测试程序进行验证,如封面图片的网格就是当时笔者用TFI方法编程生成的。 后来忙别的事情,就一直落在“纸堆”里。2007年夏初,有网友询问TFI,又想起来,于是四处找了找,看着笔记,发现一年前的清晰思路都模糊了。当时在图书馆借过一本书对我的帮助也很大,但书名已记不起来了,无法在后面的参考文献中列出。现在决定用休息时间把笔记整理一下,以供需要的朋友查阅。 无限插值法(TFI)是结构化网格生成技术中属于适体坐标系的代数方法。其优点是算法简单、生成网格速度很快,对于较规则区域,TFI法得到的网格效果也令人满意。 对于没有把握的复杂区域,笔者认为最好采用TFI方法生成初始网格场,然后采用PDE(偏微分网格生成技术)进行网格场优化。 1.2名词解释 (1)网格生成技术:对给定区域进行离散以生成计算网格的方法。 (2)结构化网格:排列有序、相邻节点位置关系明确的网格。 (3)适体坐标系:坐标轴与计算区域的边界一致的坐标系,又称贴体坐标系、附体坐标系。(4)代数方法:通过代数关系式创建物理平面上的区域与计算平面上的区域的映射方法。(5)无限插值法:把边界上规定的对应关系连续插值到区域内部,插值的点数是无限的,因而称为无限插值(transfinite interpolation,TFI)。 (6)物理空间:真实的求解区域。通常不规则,不易进行网格节点剖分计算。 (7)计算空间:进行网格节点剖分的区域。规则,最常见的为矩形区域或长方体,网格节点定位计算简单。 1.3映射关系 在计算空间内剖分得到的节点需要映射回物理空间,以便于进行物理求解。适体坐标的网格生成方法的核心就在于,给出从计算空间到物理空间,节点位置的数学映射关系。

网格划分技术简介

网格划分技术简介 复杂几何模型的系列网格划分技术 众所周知,对于有限元分析来说,网格划分是其中最关键的一个步骤,网格划分的好坏直接影响到解算的精度和速度。在ANSYS中,大家知道,网格划分有三个步骤:定义单元属性(包括实常数)、在几何模型上定义网格属性、划分网格。在这里,我们仅对网格划分这个步骤所涉及到的一些问题,尤其是与复杂模型相关的一些问题作简要阐述。 一、自由网格划分 自由网格划分是自动化程度最高的网格划分技术之一,它在面上(平面、曲面)可以自动生成三角形或四边形网格,在体上自动生成四面体网格。通常情况下,可利用ANSYS的智能尺寸控制技术(SMARTSIZE命令)来自动控制网格的大小和疏密分布,也可进行人工设置网格的大小(AESIZE、LESIZE、KESIZE、ESIZE等系列命令)并控制疏密分布以及选择分网算法等(MOPT命令)。对于复杂几何模型而言,这种分网方法省时省力,但缺点是单元数量通常会很大,计算效率降低。同时,由于这种方法对于三维复杂模型只能生成四面体单元,为了获得较好的计算精度,建议采用二次四面体单元(92号单元)。如果选用的是六面体单元,则此方法自动将六面体单元退化为阶次一致的四面体单元,因此,最好不要选用线性的六面体单元(没有中间节点,比如45号单元),因为该单元退化后为线性的四面体单元,具有过刚的刚度,计算精度较差;如果选用二次的六面体单元(比如95号单元),由于其是退化形式,节点数与其六面体原型单元一致,只是有多个节点在同一位置而已,因此,可以利用TCHG命令将模型中的退化形式的四面体单元变化为非退化的四面体单元,减少每个单元的节点数量,提高求解效率。在有些情况下,必须要用六面体单元的退化形式来进行自由网格划分,比如,在进行混合网格划分(后面详述)时,只有用六面体单元才能形成金字塔过渡单元。对于计算流体力学和考虑集肤效应的电磁场分析而言,自由网格划分中的层网格功能(由LESIZE命令的LAYER1和LAYER2域控制)是非常有用的。 二、映射网格划分 映射网格划分是对规整模型的一种规整网格划分方法,其原始概念是:对于面,只能是四边形面,网格划分数需在对边上保持一致,形成的单元全部为四边形;对于体,只能是六面体,对应线和面的网格划分数保持一致;形成的单元全部为六面体。在ANSYS中,这些条件有了很大的放宽,包括: 1 面可以是三角形、四边形、或其它任意多边形。对于四边以上的多边形,必须用LCCAT命令将某些边联成一条边,以使得对于网格划分而言,仍然是三角形或四边形;或者用AMAP命令定义3到4个顶点(程序自动将两个顶点之间的所有线段联成一条)来进行映射划分。 2 面上对边的网格划分数可以不同,但有一些限制条件。 3 面上可以形成全三角形的映射网格。 4 体可以是四面体、五面体、六面体或其它任意多面体。对于六面以上的多面体,必须用ACCAT命令将某些面联成一个面,以使得对于网格划分而言,仍然是四、五或六面体。 5 体上对应线和面的网格划分数可以不同,但有一些限制条件。 对于三维复杂几何模型而言,通常的做法是利用ANSYS布尔运算功能,将其切割成一系列四、五或六面体,然后对这些切割好的体进行映射网格划分。当然,这

CFD分析的结构化网格自动生成方法

CFD分析的结构化网格自动生成方法 在CFD分析的全自动优化过程中,一个关键任务就是如何实现模型、网格 的自动生成以及CFD流场分析的自动运行。最近,我们在的一个名为“GAMMA”研究项目中,遇到这样一个难题——要求自动的生成一个结构化网格。 为什么要结构化网格 与非结构化网格相比,结构化网格可以极大地加快流场分析,并且能得到一 个精度较好的结果。在大型设计研究中进行高质量的分析时,两者都可以很好的 应用。然而,在优化研究中,非结构化网格的自动化生成会更加容易实现——只 需几何模型就可以实现。结构画网格却不是这么简单。 结构网格的挑战 关键问题在于结构化网格如何去填充一个任意几何的全部特征?举个我们 研究的例子,例如涡轮增压器的蜗壳,它就存在一个虽然很小,但却很难处理的 几何特征——蜗舌。如下图所示: 整体结构图——造成结构网格困难的区域 蜗舌区域是蜗管体和出口段之间的过渡区域。这对于结构网格来说有点复杂。对于蜗管主体,可以很好划分结构化网格,一般这部分的结构化网格方式比较明确。但是在蜗壳存在蜗舌结构,如何对蜗舌处划分结构化网格?在这里就有一些 用户迷茫了。

几何框架 考虑在这样的蜗壳几何生成结构化网格,那么就需要要为网格系统提取一些有用的信息。对于各类复杂几何,是不可能只以一种方式来自动生成结构化网格。我们所做的不仅是生成出新设计的网格,还基于CAESES软件建立一套基于模型参数化的几何框架(能引导生成结构化网格),它在某种逻辑上展示了网格是如何划分的,然后用该几何框架生成结构画网格。下图展示了几何框架是如何布置的。 CAESES中自动结构化网格的参数化几何案例 通过这些几何信息,实现了对这个复杂几何结构的结构化网格划分。由于这些内部曲线是模型本身的一部分,所以当修改蜗壳的设计变量时,它们也会自动调整。对于无界面使用者,也可以在优化过程中通过脚本形式创建几何,实现相同的效果,例如通过外部优化工具控制。这也使得该方法能直接适用于HPC环境。 延伸方案 创建几何框架是一个额外的工作(加上创建自动化脚本以及相关工作)。然而,以一种灵活的方式来创建该几何模型,对于日后遇到类似项目时,就可以重复使用这套模型。例如,增压器涡轮叶片的周期性流道提取工作,就是一个创建

相关文档
最新文档