2007年4月1日星期日

Ansys中划分好的网格导入MATLAB


本文的目的是将ANSYS中划分好的单元网格导入到MATLAB中,并显示。

方法很简单(对三维实体单元不适用):

在ANSYS中建立模型,进行网格划分,用命令"cdwrite,geom,filename,ans"将网格划分结果导出,filename是用户指定的文件名。

该命令产生的filename.ans实际上是一个ASCII文本文件,用记事本打开,可以看到其中的数据记录格式,前四行是字符,跳过,紧接着是一个列表,参照ANSYS中的模型数据,很容易看出这是模型中所有节点的坐标表。从第四列开始分别是节点的X、Y、Z坐标(注意其中有省略的项)。

如果X坐标为负,则可能和前面一列的0接在一起,在MATLAB中被认为是一个数,要做适当的处理。

再跳过节点坐标表下的三行字符,下面是一个单元和节点的关系表。表11列是单元的序号,12列之后是该单元包含的节点列表。如果是杆单元则有两个节点,四边形单元则有四个节点。

在MATLAB中读入上述两个列表(fopen打开文件,fgetl按行读入字符串,str2num将读入的字符串转为数据,fclose关闭文件),用patch命令显示面片:

patch('Vertices',节点坐标表,'Faces',构成单元的节点列表,'FaceColor',[.39,.47,.64])

我只用杆单元和简单的四边形单元试了一下,没有问题。对于实体单元,每个单元中仅有各个顶点的列表,不能直接生成实体的各个面。

没有评论: