基于MATLAB和CFD数据库的流场可视化的实现

2019-09-10 07:22晏畅
河南科技 2019年2期
关键词:流场可视化数据库

晏畅

摘 要:CFD(计算流体动力学)中的数值运算结果可视化后处理是数值模拟的重要组成之一。MATLAB是一种用途较为广泛的开发工具,其图形功能十分强大,做到运算结果可视化十分方便。本文阐述了用MATLAB访问数据库的方式及流场绘制方式,利用MATLAB开发出了基于CFD数据库的流场可视化程序,并且使用开发的流场可视化程序依据后台阶流动的数值运算结果绘制了后台阶流动的流场,绘图实例能较为准确地反映流场局部的细节。

关键词:数据库;流场;可视化;计算流体力学;MATLAB

中图分类号:TP391;TK32 文献标识码:A 文章编号:1003-5168(2019)02-0017-03

Realization of Flow Visualization Based on MATLAB and CFD Database

Abstract: Visualization post-processing of numerical operation results in CFD (Computational Fluid Dynamics) is one of the important components of numerical simulation. MATLAB is a widely used development tool. Its graphics function is very powerful and visualization of operation results is very convenient. In this paper, the way of accessing database by MATLAB and drawing flow field were described. A flow visualization program based on CFD database was developed by using MATLAB. The flow field of back-step flow was plotted by using the developed flow visualization program according to the numerical calculation results of back-step flow. The drawing example can reflect the local details of the flow field more accurately.

Keywords: database;flow field;visualization;computational fluid dynamics;MATLAB

随着计算流体力学的高速发展,现在已可以使用高档微机来对大型动力设备采取数值运算。依据数值运算的结果实行大型动力设备中的流场可视化是作为改良动力设备构造和提升动力设备性能的关键方法。流场可视化对理解复杂的流体机制具有重要作用。流场可视化涉及计算机图形处理、计算机图像处理学、计算机程序设计及计算机辅助设计等知识,实现起来比较困难。市场上能购买到的实现流场可视化的相关产品,不但针对CFD(计算流体动力学)开发得很少,并且价格比较贵,所以,自主开发是当前情况下值得考虑的方法。其最大的困难就是短期内不易掌握相关领域和学科的技术与知识,所以,为了实现自主开发这个目标,选用合适的开发工具将起到关键作用[1]。

1 流场相关数据库

为了模拟突扩通道的轮廓,要为流场限定边界。系统在进行流线图绘制时,要用一系列坐标点限定流线的边界,这些坐标点的坐标即为边界数据,保存在名为“boundary.mdb”的Access数据库中。数据库中的字段“x”对应主界面坐标系的横坐标,字段“y”对应主界面坐标系的纵坐标,通过函数绘制的流線从起始点到中间部分再到结束点都应位于边界范围内,数据表如表1。

要使用本系统绘制流线,需要提供所绘制的流线所处流场中各点的位置坐标及每个点对应的横向速度矢量和纵向速度矢量,这些数据保存在名为“flow field.mdb”的Access数据库中。数据库中的字段“x”对应主界面坐标系的横坐标,字段“y”对应主界面坐标系的纵坐标,字段“u”对应相应坐标点的横向速度矢量,字段“v”对应相应坐标点的纵向速度矢量[2],其数据表如表2。

2 基于MATLAB的数据库连接与访问

本文使用ODBC机制访问数据库。ODBC(开放式数据库的连接)是一种底层访问技术,应用程序通过ODBC的API(应用程序的接口)从底层连接和访问数据库。

2.1 数据源的配置

在使用ODBC机制访问数据库之前,应首先配置ODBC源。数据源配置的基本步骤如下。

①通过Windows中的控制面板进入“管理工具”,选择管理工具中的“数据源(ODBC)”双击,进入“ODBC数据源管理器”,或者在运行中键入odbc32.exe命令直接启动ODBC数据源管理器。ODBC数据源存储了与指定的数据提供程序连接的信息。

②在“用户DNS”面板中列出系统中MS Access Database、Excel、 Files、DBASE Files等用户数据源。

③点击“添加”按钮,创建新的数据源,并为数据源选择相应的驱动程序,本例中选择Driver Do Microsoft Acess(*.Mdb),点击“完成”进入相应数据库的安装对话框,并将相应的数据库作为数据源。本文选择的是FlowField.mdb,数据源名为FlowField。

2.2 数据库的连接

MATLAB对数据库的操作,需要先获得数据库的句柄,然后通过MATLAB函数来操作[3]。

conn=database('datasourcename', 'username', 'password');

通过database语句来获得数据库的句柄,返回一个连接对象给conn。

其中,datasourcename是数据源名,username是数据库的用户名,password是数据库的密码。

2.3 数据库的查询

访问数据库之前,需要先获取游标。

cursor = exec(conn,'sqlquery');

其中,sqlquery是有效的SQL语句,其通过数据库连接对象conn执行SQL语句,并返回一个游标给变量cursor。

cursor = fetch(cursor,RowLimit);

fetch从打开的SQL游标中获得数据;RowLimit是一个可选项,表示取数据库的最大行数,缺省为取得所有数据。

Data= cursor.Data;%把读取到的数据用变量Data保存。

3 MATLAB的流场可视化

MATLAB提供了科学计算的可视化函数,利用这些函数,可以绘制流场图。MATLAB绘制二维流场图的函数为:quiver(X,Y,U,V)。该函数可以绘制二维矢量的流场图。其中,(U,V)是二维速度矢量,(X,Y)是(U,V)的坐标。输出参数是一个向量,向量里存储着流场的句柄。

4 编程实例

后台阶流动是CFD中的一个典型算例,流动的基本特征明确,回流长度可用于定量检验流场算法精度。故本文选择后台阶流动作为计算实例来检验CIMPLE算法 [4]的有效性。计算条件为:Re=133,计算长度取8m,计算高度取2m,划分G网格400×100=40 000个,计算步长[Δx=0.02m,Δy=0.02m]。

计算区域流场可视化程序如下:

clear all;

function Untitled_6_Callback(hObject, eventdata, handles)

[~,~,raw]=xlsread('Database name.xls');

for i=1:numel(raw)

if isnan(raw{i})

raw{i}='';

end

end

Str_Table=raw{2,2};

connA=database(Str_Table,'','');

Sql='Select x,y,u,v from flow field order by x,y';

ping(connA);

cursorA=exec(connA,Sql);

cursorA=fetch(cursorA);

AA=cursorA.Data;

close(cursorA);

close(connA);

m=size(AA,1);

for i=1:m

x(i)=AA{i,1};

y(i)=AA{i,2};

u(i)=AA{i,3};

v(i)=AA{i,4};

end

Str_Table=raw{2,3};

connA=database(Str_Table,'','');

Sql='Select ID,x,y from boundary order by ID';

ping(connA);

cursorA=exec(connA,Sql);

cursorA=fetch(cursorA);

AA=cursorA.Data;

close(cursorA);

close(connA);

m=size(AA,1);

for i=1:m

a(i)=AA{i,2};

b(i)=AA{i,3};

end

plot(a,b,'k');

hold on;

axis( [0 10 0 2]);

set(gca, 'YDir','reverse');

dx=0.02;

dy=0.02;

l=5;

h=30;

c=max(x)+1;

d=max(y)+1;

e=(d+1)/2;

A=reshape(x,d,c);

B=reshape(y,d,c);

C=reshape(u,d,c);

D=reshape(v,d,c);

X=2+dx*A(1:l:d,1:h:c);

Y=dy*B(1:l:d,1:h:c);

U=C(1:l:d,1:h:c);

V=D(1:l:d,1:h:c);

h=quiver(X,Y,U,V,1.5);

set(h,'color','black')

計算区域流场图如图1所示。从图1可知,绘图实例能比较清楚地反映流场的局部细节,直观效果能满足工程上的要求。从图1可以看出,在靠近进口的台阶处存在一个漩涡,回流长度约为4m,这说明本文的计算结果能反映后台阶流动的基本特征。这也证明CIMPLE算法具有较高的精度。

5 结论

①充分利用数据库强大的数据访问能力和MATLAB强大的数据可视化能力,根据数据库中CFD计算数据绘制计算区域的流场图,提高了数值计算结果的分析效率,对建立高性能的CFD算法和理解复杂的流体机制具有十分重要的作用。

②通过数据库中建立好的查询,可以实现显示程序与显示数据的分离,开发软件的适用性较好。

参考文献:

[1]张小军,田遐,刘祖源.MATLAB在CFD计算结果可视化方面的应用[J].武汉理工大学学报(交通科学与工程版),2004(1):126-128.

[2]蔡群,周美莲,段杰峰,等.基于MATLAB分布式工具箱的流场计算及其可视化[J].计算机技术与发展,2007(9):51-54.

[3]鲁大营,朱登明,王兆其.流场可视化的最优视点选择方法[J].计算机辅助设计与图形学学报,2017(12):2281-2287.

[4]杨官平,胡满银,高香林,等.求解压力耦合方程的全隐算法:CIMPLE算法[J].中国电机工程学报,1999(4):41-45.

猜你喜欢
流场可视化数据库
数据可视化设计在美妆类APP中的应用
基于机器学习的双椭圆柱绕流场预测
思维可视化
复变函数级数展开的可视化实验教学
复变函数级数展开的可视化实验教学
复变函数共形映射的可视化实验教学
复变函数共形映射的可视化实验教学
真实流场中换热管流体诱导振动特性研究
数据库
基于内外流场仿真分析对整车性能研究和优化