宋艳丽
基于CFD的三维复杂地形建模技术研究
宋艳丽
(武汉交通职业学院,湖北 武汉430065)
运用数值方法和离散格式,分析稳定性、计算速度和精度等因素对各种复杂流动的物理现象的影响,以达到最佳组合,从而准确高效第解决在不同领域中的复杂流动的计算问题。文章运用CFD仿真模拟复杂地形气体扩散,或大气环境。介绍了地形图数据的提取,具体运用Mat1ab对地形数据的处理及如何将地形数据导入CFD中,最后运用此方法建立了实际复杂地形地表的三维模型。证明此方法简单适用,可对复杂地形气体扩散数值模拟提供很大的帮助。
仿真;三维地形图;插值;CFD
CFD软件设计的思想,从用户需求角度出发,针对各种复杂流动的物理现象,采用不同的离散格式和数值方法,以期在特定的领域内使计算速度、稳定性和精度等方面达到最佳组合,从而高效率地解决各个领域的复杂流动计算问题。基于上述思想,CFD开发了适用于各个领域的流动模拟软件,这些软件能够模拟流体流动、传热传质、化学反应和其它复杂的物理现象,软件之间采用了统一的网格生成技术及共同的图形界面,而各软件之间的区别仅在于应用的背景不同,因此大大方便了用户。在运用CFD仿真模拟复杂地形气体扩散,或大气环境时。很难建立非常精确的地形图,往往要经过一定的处理,建立与实际地形非常相似的地形图。文章将对如何在CFD中建立三维复杂地形进行讨论。
将地物和地貌中的空间实体用对应的水平位置和高程来表示。水平位置用在水平面上的正投影表示,高程用特征点和特征线的高程表示。地物或地貌在水平面上投影用X和Y用来表示,高程用Z表示,从而得到三维数值地形图。
地形图数据的获取有以下几种方法:
(1)把纸质地形图划分成四方网格,标出所有网格交点的三维坐标。此方法的弊端:当地形图太大太复杂,人工输入太烦琐,效率不高。
(2)运用CAD2004配合CASS6.1提取地形图的坐标。
MATLAB运用人们比较容易记住的代码编程,解决各种学科中比较复杂的数学问题。并且开发出工各种程软件,大大提高了工作的效率。数字高程模型(DEM)的优势显而易见。CASS6.1提取的坐标值非规则矩阵,在CFD中不能被识别,故需利用Matlab对其进行处理。
2.1数据读入
Matlab有两种数据读入方式:文件输入或屏幕数字化。本研究运用文件输入方式。例如现有某山区复杂三维地形三维离散点坐标的txt文件。
(1)将原始坐标点文件用Load命令输入到Matlab中,得到以点的个数为行,以x、y、z为列的矩阵,但不便于插值运算。
(2)按列提取上述矩阵,格式为:x=xyz(:,1);y=xyz(:,2);z=xyz(:,3),分别得到x、y、z的矩阵。
2.2Matlab三维插值
(1)运用meshgrid函数计算网格坐标矩阵,格式为:
[xx,yy]=meshgrid(xlin,ylin)。
(2)运用插值函数griddata计算网格点坐标,格式为:
zz=griddata(x,y,z,xx,yy,‘cubic’),其中‘cubic’表示三次样条插值算法。
(3)运用Linspace函数计算x坐标数组,格式为:
xlin=linspace(min(x),max(x),256),y坐标数组类似。
(4)绘制三维网格图如图1所示,格式为:
mesh(X,Y,Z)
axis tight;hold on%打开坐标轴。
plot3(x,y,z,'.','MarkerSize',15)%绘制三维曲线图。
图1 插值后的三维地形网格图
(5)生成成xyz的矩阵坐标,矩阵为120行120列,程序为:
for i=0:n
xyz(1+i*120:120+i*120,1)=X(1:120,1+i);
xyz(1+i*120:120+i*120,2)=Y(1:120,1+i);
xyz(1+i*120:120+i*120,3)=Z(1:120,1+i);
end
(6)图幅边界处理。在大于图幅坐标范围内收集离散点的信息,从而保证在边界处的网格点内插值的准确性。函数find查找超出图幅边界的网格点,函数nnz求取其个数,但不绘制图幅外的等高线。
(7)保存生成的xyz,矩阵坐标为.txt格式,NaN输为0,再保存。
在Matlab中生成具有特定的格式的txt文件,如果一个3行3列的三维数据地形为2,2,1;2,4,2;2,6,4;4,2,3;4,4,6;4,6,5;6,2,2,6,4,3;6,6,5。其在记事本中的格式如下:
3 3
2 2 1
2 4 2
2 6 4
4 2 3
4 4 6
4 6 5
6 2 2
6 4 3
6 6 5
图2 划分网格的简单地形图曲面
第一行包括行数和列数,每行是一个三维坐标,数值之间需用空格隔开,将txt文件导入File/Improt/ICEM Input…,生成三维地形,在一个完整面的地形途中进行网格划分,如图2所示。
现有重庆开县井喷地点地形图如图3所示,通过上述方法建立地表三维实体模型,模型大小为10000m×10000m× 1300m,井口在模型正中间。
图3 地形图
是以井口中心为原点,Z坐标以海拔0m为起点。文章通过Matlab插值,把10000m×10000m的地形图生成90×90的三维坐标矩阵,这个三维矩阵存在一个txt中。地形的最低点海拔为0m,最高点海拔1300m。村庄、路、小河、农田、山等的标识可以等到仿真后统一标注。图4是在CFD中生成的复杂地形三维地表模型。
图4 CFD中生成的复杂地形三维表模型
复杂山地地形模型可以说是仿真计算中最复杂的模型之一。文章探讨了在CFD中复杂地形三维建模方法,介绍了地形图数据的提取,具体运用Matlab对地形数据的处理及如何将地形数据导入CFD中,最后运用此方法建立了实际复杂地形地表的三维模型。证明此方法简单适用,有很大的使用价值。
[1]徐青.地形三维可视化技术「M].北京:北京测绘出版社,2000.
[2]陈天伟.应用Mat1ab构造数字高成模型工具箱[J].桂林工学院学报,2003,23(4):453-456.
[3]陈天伟.建立基于MATLAB的测量控制网设计工具箱[J].桂林工学院学报,2002,22(3):244-245.
[4]张宜华.精通MATLAB5[M].北京:清华大学出版社,2000.
[5]王汉清,沈小建,等.复杂山地大气环境三维建模与仿真方法[J].建筑热能通风空调,2006,25(2):13-16.
Study on Complex Three-dimensional Terrain Modeling Technology Based on CFD
SONG Yan-li
(Wuhan Transportation Vocational College,Wuhan,Hubei 430065,China)
Using the numerica1 method and discrete format,inf1uence of stabi1ity,computing speed and accuracy on the physica1 phenomena of various comp1ex f1ow are ana1yzed to achieve the best combination,thus so1ving the comp1ex f1ow computationa1 prob1ems in different fie1ds.In this paper,the CFD simu1ation is used to simu1ate comp1ex terrain gas diffusion or atmospheric environment.Topographic map data extraction is introduced,using Mat1ab to process terrain data and 1oad terrain data into CFD,fina11y using this method to estab1ish the rea1 3D mode1 of the comp1ex terrain surface.It is proved that this method is simp1e and app1icab1e,and can provide numerica1 simu1ation of gas diffusion in comp1ex terrain.
simu1ation;three-dimensiona1 topographic map;interpo1ation;CFD
P221
A
2095-980X(2016)03-0052-02
2016-02-19
宋艳丽(1981-),女,山东济宁人,硕士研究生,讲师。