基于Silo的科学计算结果数据的管理与可视化
王延红;田传艳;杨平利;黄少华
【摘 要】The unified management and visualization of result data with different formats are needed during the development of some visualization software of numerical simulation. Silo data file is adopted to manage the numerical results and imported into VisIt, a popular visualization tool. The numerical simulation results such as curve, mesh and associated scalar and vector variables received by programs of MCNP, FDTD, Fluent, as examples, are extracted and written into Silo data files,and their visualization effect in VisIt are given. The results show that the different types of result data can be managed comprehensively with Silo data file and get effective visualization in VisIt.%在某数值模拟可视化软件研制中,为了对不同类型的数值模拟结果进行统一管理和可视化,采用Silo格式文件管理数值结果,并将其应用于可视化工具VisIt中.对MCNP,FDTD,Fluent等数值模拟程序计算结果中的曲线、网格及相关联的标量、矢量等数据进行提取,写为Silo格式文件,并给出了其在VisIt中的可视化效果.结果表明:不同类型的数值模拟结果数据可通过Silo格式文件进行综合管理,并可在VisIt中得到高效的可视化.
【期刊名称】《现代电子技术》
【年(卷),期】2011(034)008
【总页数】4页(P39-42)
【关键词】Silo;数据管理;可视化软件;并行处理
【作 者】王延红;田传艳;杨平利;黄少华
【作者单位】西北核技术研究所,陕西西安,710024;西北核技术研究所,陕西西安,710024;西北核技术研究所,陕西西安,710024;西北核技术研究所,陕西西安,710024
【正文语种】中 文
【中图分类】TN911-34;TP316.4
可视化仿真(Visual Simulation)是计算机可视化技术和系统建模技术相结合后形成的一种新型仿真技术,一般可视化仿真包含三个重要的环节,即仿真计算过程可视化、仿真结果可视化
、仿真建模过程的可视化[1]。将解析数字计算的结果转换为能够显示图形和图像的形式是可视化仿真的重要内容。科学计算可视化即指运用计算机图形学技术和图像处理技术,将通过科学计算或者数据采集获得的数据(如有限元分析数据、医学数据等)转换为图像的过程[2]。为了开发通用的数值模拟程序可视化软件,需要对各种不同类型、不同格式的数值模拟结果数据进行管理并进行二维及三维图形可视化[3]。为了提高可视化效率,良好的数据组织、结构和管理十分必要,而采用什么样的数据场格式来描述这些复杂类型的数据场,是数据场预处理的重要研究内容之一[4]。
Silo是一个用于读/写各种科学数据至二进制磁盘文件的API函数库,Silo产生的文件及其中的数据可以在完全独立开发的应用中进行共享和交换,且这些应用可运行在不同的计算平台上。Silo格式文件对于处理种类繁多的海量数据有着独特的优势。同时,Silo格式文件促进了科学数据可视化工具的发展。其中,VisIt就是对Silo格式文件支持较好的科学数据可视化工具之一。本文在开发数值模拟可视化软件中,将蒙特卡罗粒子模拟(MCNP)、时域有限差分方法(FDTD)、流体力学(Fluent)[5]等应用程序的结果数据通过Silo格式文件进行存储和管理,并在VisIt中实现了可视化。
1 Silo及VisIt简介
VisIt是美国劳伦斯利佛莫尔国家实验室(LLNL)开发的一个开放源码的、独立于平台的、分布、并行的科学数据可视化工具,可用于二维及三维结构或非结构数据的可视化,对标量、矢量及张量场具有丰富的可视化功能。VisIt具有强大而丰富的图形用户界面(GUI),可读取多种流行的数据文件格式,如Hdf5,Silo,Curve,txt,Bov等,并可通过插件的编制实现更多格式文件的读取。通过VisIt可进行曲线、网格、等值线(面)、彩云图及矢量场等多种形式的绘制。通过鼠标可对可视化对象进行实时的移动、缩放和旋转,加之其算子操作(如切割、镜像等)和动画显示功能,可对可视化结果进行全方位的观察和分析。
VisIt支持的格式中,Silo格式文件以其易读、易写且有并行化功能等优势得以普遍应用。Silo是VisIt支持较好的一种基于PDB的文件格式,通过Silo库进行读/写和管理。Silo库支持点网格、结构网格、非结构网格、块结构AMR网格、CSG网格及定义在这些网格上的标量、矢量数据场和材料数据,Silo库可分为两个主要的部分:一个是上层的应用程序接口,一个是下层的I/O驱动器。Silo支持多重驱动器,最常用的是HDF5和PDB驱动器,且这两种驱动器具有读/写功能,而驱动器netcdf和Taurus仅有只读功能。Silo结构模型如图1所示。
图1 Silo结构模型
使用VisIt命令可查看Silo文件的结构及数据,在命令窗口中输入:
VisIt -silex sample.silo
即可通过树形结构查看文件sample.silo的内部结构及数据情况。数据可视化是什么
2 Silo常用函数及文件的读/写
本文所开发的数值模拟可视化软件所处理的结果数据包括网格变量数据、曲线数据以及附加在网格上的标量、矢量数据等。Silo库提供了特定的函数,可以在Silo文件中添加这些数据。Silo文件可通过C语言及Fortran语言编写。本文在Visual C++ 2005下对Silo库函数进行了应用,首先下载了silo-4.6.1 安装文件并进行了正确配置。在文件目录silo-4.6.1/SiloWindows/MSVC8中打开SiloWindows.sln工程文件,编译生成库文件silo.dll和silo.lib,之后将该两文件加入到新建工程中,即可使用Silo库函数创建Silo文件并进行数据的添加。之后,即可通过VisIt对Silo文件进行读取和可视化。
2.1 网格、曲线及变量数据的添加
添加矩形网格及点网格使用如下函数:
DBPutQuadmesh(file,"mesh1",coordnames,coordinates,dimensions,2,DB_FLOAT,DB_COLLINEAR,NULL); /*文件指针,网格变量名,坐标轴名,坐标变量组名,每维上的节点数,维数,数据类型,坐标数组类型,可选项*/
DBPutPointmesh (file,pointname,ndims,coordinates,4,DB_FLOAT,NULL);/*文件指针,点网格变量名,维数,点的坐标,点数,数据类型,可选项*/
曲线数据的添加使用如下函数:
DBPutCurve (file,curvename,xval,yval,DB_FLOAT,4,NULL);/*文件指针,曲线名,x坐标数组,y坐标数组,数据类型,组成曲线的点数,可选项*/
网格标量变量的添加使用如下函数:
DBPutPointvar1 (file,pointvalname,pointname,var,4,DB_FLOAT,NULL);/*文件指针,点变量名,点网格名,变量数组,点数,数据类型,可选项*/
云图的可视化方法是用明暗相间的彩图表示流场的分布情况[6]。二维及三维网格变量的彩云图在VisIt中的可视化效果如图3、图4所示。
图2 二维网格标量变量的添加
图3 三维网格标量变量的添加
点网格及其上的矢量变量的添加使用如下函数:
DBPutPointmesh (file,pointname,ndims,coordinates,10,DB_FLOAT,NULL);/*文件指针,点网格名,维数,点的坐标,点的个数,数据类型,可选项*/
DBPutPointvar(file,"defvars",pointname,3,defs,10,DB_FLOAT,NULL); /*文件指针,矢量变量名,点网格名,一个矢量变量由三个方向的值合成,变量数组,点的个数,数据类型,可选项*/

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。