AVS在工程软件中的应用
郑澎 何铁宁
(中国工程物理研究院计算机应用研究所,四川绵阳市科学城919信箱,621900)
引言
数值模拟技术已经成为武器设计、研制中必不可少的手段之一。随着数值模拟的复杂程度也相应提高。应用单一的工程数值模拟软件有时不能满足分析、模拟的需要。工程软件的集成系统必须实现在良好的集成用户界面下,综合反映和模拟某一工程模型的集成系统。其中的可视化功能就是要将分散的数值模拟(工程软件分析)结果集中显示出来,以便能综合地反映真实的物理过程。体视化技术是科学可视化的一个重要组成部分,有利于从有限空间的离散数据揭示物体内部的复杂结构,在对工程软件的计算结果进行可视化中具有重要作用。AVS是通用的可视化系统,提供了许多功能模块,便于用户在其上构造完成特定可视化任务的系统。所以我们选用它来建立集成显示平台,通过可视化集成显示平台将不同的工程软件集成起来。
工程软件集成系统中的可视化系统的结构
图 1
在该集成系统中,由于我们要进行数值模拟的物理模型复杂程度高,应用单一的工程软件不能满足分析、模拟的需要。根据不同工程软件的特点,工程人员采用几种工程软件来对物理模型进行分析、计算。比如:在结构力学方面,ANSYS软件善于线性的静力和动力分析,MARC善于非线性分的静力和动力分析(材料、边界、几何非线性)。还有些分析计算程序,需要自行开发。这就要求我们搭建一个交互式的可视化显示系统,能够集成显示各种不同数据源的计算结果,并且需要提供匀纹图、等值面、色标等多种交互式的可视化数据分析手段。AVS提供了丰富的可视化函数库,交互式的开发环境使我们开发该可视化显示系统事半功倍。整个集成系统采用混合语言编程,系统的界面框架采用Windows下的高级编程工具c++builder开发,采用数据文件交互的方式进行计算程序与可视化模块的通讯,这样做的好处是可以不考虑计算程序的开发语言,避免了在语言接口上会出现一系列的系统交互问题,同时保证了计算程序和可视化模块的相对独立性,使系统易于扩展。为了实现对计算过程的可视化,集成系统用中间数据文件对计算程序的中间结果进行记录。我们参考windows下软件设计大部分采用事件(Event)驱动方法的方式,在集成系统中也采用事件驱动的方式控制可视化模块,每当计算程序产生中间结果或者结果时,系统就会触发事件,驱动相应的可视化模块。有时,系统还比须提供给可视化模块输入参数。集成系统采用两种方式调用
可视化功能模块:一种是直接用API函数调用可视化功能模块,一种是采用可视化控件和封装好的可视化类进行调用。
技术关键和技术途径
由于数据源多样性,我们的基本思路是,离散计算模型连续空间解为网格点求解,如果其解空间拓扑关系是有结构规则的,可以直接进行体视化;如果其解空间拓扑关系是有结构不规则的,则在保证空间拓扑一致性原则下进行插值增强,使其规则化;如果其解是无明确的连接关系(无结构)的离散点,则必须先用一定的三维重构方法求得这些点的空间拓扑关系,最后转化为规则体数据。选择适当的体素级重建方法对体数据进行三维重构,实现对体数据的等值分析;根据不同需求用相应的显示算法显示图象。AVS提供的强大的功能函数库是我们实现上述功能十分方便。根据AVS所能接收的数据场的格式(静态的体数据场和时间相关的体数据场),不同的数据源必须通过一定的数据转换,才能被集成可视化显示平台接受。由于工程软件的数据格式各不相同,所以我们针对不同的格式开发不同的数据转换程序,再把自己用C++开发的数据转化程序做成可重用的组件添加到AVS中,使今后需要同样的数据转换功能时,能使用该组件。
利用AVS实现对无结构的计算数据的三维重构显示
自行开发的模拟计算程序的计算结果,往往没有提供明确的空间拓扑关系,由于Delaunay triangulation法能自动求出任意的离散数据点的空间拓扑关系,且由这种方法产生的四面体簇不存在循环式的遮挡关系,在显示的时候易于确定可见性优先级别。所以,对于未知空间拓扑关系的离散点,我们采用这种方法进行三维重构。在AVS中专门提供了基于Delaunay
triangulation算法的功能函数sca_to_tri,使我们的开发工作变得十分方便。
例如,在该集成系统中,我们要实现对一个钕玻璃形变计算模型的计算结果的跟踪显示,我们采用时间相关的体数据场表示体数据。由于计算结果中没有给出空间拓扑关系,所以我们尝试用三角化法去求空间拓扑关系,调整Sca_to_tri的相关参数后,求得的拓扑关系没有发生歧义,根据该计算模型形变数据的特点,可视化显示方式为:将实际形变量放大若干倍后,直接显示钕玻璃的几何形变,同时采用映射的方法,将形变映射为颜色表示。为了提高显示质量,选用了AVS提供的基于体素的Ray
Casting算法,,达到了满意的效果。
(1)采用的操作系统:windows。
(2) 采用的开发平台:AVS高级可视化库和VC6.0。
(3)原始的计算结果数据文件格式:

Xi, yi,zi表示离散点的空间坐标,Dx,Dy,Dz表示在x,y,z方向上的位移变形。
(4) 用体数据场表示方法处理后形成的时间相关的体数据场:
读入原始数据的程序片段:
………
/***********************/
/* Get input values */
/***********************/
/* Get filename's value */
if (OMget_name_str_val(Read6Column_id, OMstr_to_name("filename"),
&filename, 0) != 1)
filename = NULL;
/***********************/
/* Function's Body */
/***********************/
if((fp=fopen(filename,"r"))==NULL)
ERRverror("",ERR_NO_HEADER|ERR_INFO,"cann't open
%s file\n",filename);
else
{num=1;
xcoord=(double *)malloc(sizeof(double));
ycoord=(double *)malloc(sizeof(double));
zcoord=(double *)malloc(sizeof(double));
buf=(char *)malloc(sizeof(char)*512);
readline(fp,buf);//The first data line of coordfile.
while(!feof(fp))
{xcoord=realloc(xcoord,sizeof(double)*num);
ycoord=realloc(ycoord,sizeof(double)*num);
zcoord=realloc(zcoord,sizeof(double)*num);
sscanf(buf,"%lf %lf %lf %lf %lf %lf",&a,&b,&c,&d,&e,&f);
xcoord[num-1]=a;ycoord[num-1]=b;zcoord[num-1]=c;
num=num+1;
free(buf);
buf=(char *)malloc(sizeof(char)*512);
readline(fp,buf);
}
}
free(buf);
fclose(fp);
……
/***********************/
/* Set output values */
/***********************/
OMset_name_array(Read6Column_id, OMstr_to_name("xcoord"),
DTYPE_DOUBLE, (void *)xcoord, coordsize, OM_SET_ARRAY_FREE);
OMset_name_array(Read6Column_id, OMstr_to_name("ycoord"),
DTYPE_DOUBLE, (void *)ycoord, coordsize, OM_SET_ARRAY_FREE);
OMset_name_array(Read6Column_id, OMstr_to_name("zcoord"),
DTYPE_DOUBLE, (void *)zcoord, coordsize, OM_SET_ARRAY_FREE);
//获得离散空间点位置
……………….
处理时间相关的体数据场的程序流程:
图2 处理时间相关体数据场的程序流程
形成的时间相关的体数据场文件片段:
#
5
data_geom
step1 no.1 //时间步
/*离散点空间位置*/
935 1056
1 -0.025066 -0.022561 -0.005245
2 -0.018976 -0.023155 -0.005983
3 0.003221 -0.017939 -0.004832
…………
/*离散点空间拓扑关系(tri代表三角连接,后面是顶点编号)*/
1 1 tri 2 1 19
2 1 tri 1 18 19
3 1 tri 1 2 189
………….
/*点的形变位移 */ 
1 0
1 1
disp,mm
1 0.011648
2 0.010998
….
(5) 钕玻璃随时间发生形变的体视化结果

图3 玻璃变形1 图4 玻璃变形2 图5 玻璃变形3
利用AVS对ANSYS、MARC、LS-DYNA的数据格式数据转换
因为工程软件(ANSYS、MARC、LS-DYNA)的计算数据中包含了空间拓扑关系,所以不需要三维重构来获得拓扑信息。数据转换的任务是从计算结果中提取空间拓扑关系数组和数据值,再用提取的拓扑关系和数据值构造体数据场。
在该集成系统中,需要对计算模型在关键时刻、不同载荷条件下的计算结果进行显示,而且对其中任意时刻的值进行插值显示。ANSYS、MARC提供的数据包含大量的说明信息,如ANSYS的结构分析结果包括节点、单元、位移、分量应力、等效应力等数据文件,格式如下:
(1)节点数据文件:主要包含模型中所有节点的坐标值
/*文件中的说明部分
LIST ALL SELECTED NODES. DSYS= 0
SORT TABLE ON NODE NODE NODE
/*节点的序号、X、Y、Z及旋转角坐标值
|
NODE
|
X
|
Y
|
Z
|
THXY
|
THYZ
|
THZX
|
|
1
|
0.00000E+00
|
10.000
|
0.00000E+00
|
0.00
|
0.00
|
0.00
|
|
2
|
0.00000E+00
|
0.00000E+00
|
0.00000E+00
|
0.00
|
0.00
|
0.00
|
|
3
|
0.00000E+00
|
9.0000
|
0.00000E+00
|
0.00
|
0.00
|
0.00
|
(2)单元数据文件:
/*文件中的说明
LIST ALL SELECTED ELEMENTS. (LIST NODES)
/*单元文件的序号、材料、类型、实常数、单元坐标系及单元包含的各节点(节点拓 朴关系)
ELEM MAT TYP REL ESY NODES
1 1 1 1 0 2 32 41 11 251 333 603 449
2 1 1 1 0 32 33 42 41 333 334 684 603
(3)位移、分量应力、等效应力数据文件:格式相近,以位移为例说明:
/*文件中的说明部分
PRINT DOF NODAL SOLUTION PER NODE
***** POST1 NODAL DEGREE OF FREEDOM LISTING *****
LOAD STEP= 1 SUBSTEP= 1
TIME= 1.0000 LOAD CASE= 0
THE FOLLOWING DEGREE OF FREEDOM RESULTS ARE IN GLOBAL COORDINATES
/*每个节点上的X、Y、Z变形分析结果
|
NODE
|
UX
|
UY
|
UZ
|
|
1
|
-0.73442E-04
|
-0.46484E-03
|
-0.73442E-04
|
|
2
|
0.00000E+00
|
0.00000E+00
|
0.00000E+00
|
|
3
|
-0.72784E-04
|
-0.41728E-03
|
-0.72784E-04
|
对关键时刻点,开发相应的数据转换程序(Read_uxyz:读取位移结果、Read_sxyz:读取分量应力结果、Read_seqv:读取等效应力结果)从相应数据文件中提取结构力学分析结果的分量数据和数据点的空间拓扑关系,并形成体数据场。由于该系统还需要显示未测时刻点的结果,所以必须进行插值计算。这部分功能是通过增加相应的数据处理程序来实现。采用线性插值方法,并将其做成相应的组件。
最后将两种结构方案的力学结果在同一主窗口中显示,采用图6所示的流程在AVS上搭建显示平台,达到辅助工程人员选择方案的作用。
图6
由于LS-DYNA擅长机构动力的动态接触分析,所以使用它来分析设计的玻屏模型的受压情况。判定设计正确的依据是模型屏面上的所有点在给定时间段内都能受到合理的压力。
(1) LS-DYNA提供的后处理包LS-POST和TAURUS只能显示分步的结果数据,而工程人员关心的是整个时间段内的受压。所以我们首先进行定积分计算,求得时间段内的积分压力。
LS-DYNA输出的分步计算结果文件:
图7 LS-DYNA输出的数据格式
处理后的结果文件(自定义的数据格式,LS-DYNA无法显示):
THE NEW RESULT OF PRESSURE
NODE xcoordinate ycoordinate zcoordinate sumpressure
1 2.49875E+002 2.15212E+002 2.74459E+001 -2.21018E+003
……..
(2)利用AVS提供的模块生成向导快速封装前面的处理程序,使它成为AVS下的可
重用的读入LS-DYNA的数据的预处理模块。
(3)等值面数据分析方法:将门限值设为零值时,工程人员通过观察图形中的黑块发现屏面上受力为零的点。将门限值设为最大受力值,使工程人员可观察到玻屏面的受力分布情况。下图显示了四种不同的研磨盘设计下,玻屏受积分压力分布情况。

图8 玻屏受积分压力的多视图比较
结论
可视化技术应用于工程软件集成,将工程计算和分析产生的大量的工程数据,通过科学计算可视化的手段显示出来,可以使研究者通过模拟的结果对研究过程有更深层次的认识,从而进一步激发研究者的科学发现能力。借助AVS开发较为通用的应用于工程软件集成的可视化系统,将极大的加快可视化功能的开发速度,提高可重用性和可移植性,起到事半功倍的作用。
返回
|