Ansys 中提取节点、单元、约束及载荷等信息
本文介绍了如何在
Ansys中提取节点、单元、约束及载荷信息,以供
Matlab等程序读取,进行有限元分析计算。
操作方法
- 01
在Ansys中建立一简单的有限元模型,本文以平面应力问题为例。 建立两个三角形单元的模型(长度500,高度250) ①单元Plane42 ②材料:E=210e3 MPa;NU=0.3;实常数=25(单元厚度)
- 02
施加约束,加载载荷 ①约束节点1,4的所有位移 ②在节点2,3施加x方向集中力9375N
- 03
建立一文本文件(如文件名为0003getNodeElement.txt),输入如下代码: *GET, ELEMENTNUM,ELEM,0,COUNT*GET, NODENUM,NODE,0,COUNT *CFOPEN,3nodes-TriangleElement,txt !!输出文件*VWRITE,NODENUM%6I*DO, I,1,NODENUM,1 *VWRITE, I, NX(I),NY(I)%7I%12.6F%12.6F*ENDDO *VWRITE, ELEMENTNUM%6I*DO, I,1,ELEMENTNUM,1*GET,m_num,ELEM,I,ATTR,MAT *VWRITE, I,NELEM(I,1),NELEM(I,2),NELEM(I,3),m_num%7I%7I%7I%7I%7I*ENDDO*CFCLOS
- 04
在Ansys中输入该文件,及可在当前目录下得到包含节点及单元信息的文本文件3nodes-TriangleElement.txt。
- 05
在Ansys中用Dlist和Flist命令列出约束和载荷信息,保存为文本文件。
- 06
合并前面两部生成的文本文件,结果如下: 4 1 0.000000 0.000000 2 500.000000 0.000000 3 500.000000 250.000000 4 0.000000 250.0000002 1 1 3 4 1 2 1 2 3 11 1 210000 0.300000 24 1 1 0.00000000 0.00000000 1 2 0.00000000 0.00000000 4 1 0.00000000 0.00000000 4 2 0.00000000 0.00000000 2 2 1 9375.00000 0.00000000 3 1 9375.00000 0.00000000
- 07
在Matlab中读入这些数据,以供有限元分析计算。 建立一.m文件,代码如下: filename='3nodes-TriangleElement.txt'; fid = fopen( filename, 'r' ) ; % 读取节点坐标 node_number = fscanf( fid, '%d', 1 ) ; gNode = zeros( node_number, 2 ) ; for i=1:node_number dummy = fscanf( fid, '%d', 1 ) ; gNode( i, : ) = fscanf( fid, '%f', [1, 2] ) ; end % 读取单元定义 element_number = fscanf( fid, '%d', 1 ) ; gElement = zeros( element_number, 4 ) ; for i=1:element_number dummy = fscanf( fid, '%d', 1 ) ; gElement( i, : ) = fscanf( fid, '%d', [1, 4] ) ; end % 读取材料信息 material_number = fscanf( fid, '%d', 1 ) ; gMaterial = zeros( material_number, 3 ) ; for i=1:material_number dummy = fscanf( fid, '%d', 1 ) ; gMaterial( i, : ) = fscanf( fid, '%f', [1,3] ) ; end % 读取边界条件 bc1_number = fscanf( fid, '%d', 1 ) ; gBC1 = zeros( bc1_number, 3 ) ; for i=1:bc1_number gBC1( i, 1 ) = fscanf( fid, '%d', 1 ) ; gBC1( i, 2 ) = fscanf( fid, '%d', 1 ) ; gBC1( i, 3 ) = fscanf( fid, '%f', 1 ) ; dummy=fscanf( fid, '%f', 1 ) ; end % 读取节点力 nf_number = fscanf( fid, '%d', 1 ) ; gNF = zeros( nf_number, 3 ) ; for i=1:nf_number gNF( i, 1 ) = fscanf( fid, '%d', 1 ) ; gNF( i, 2 ) = fscanf( fid, '%d', 1 ) ; gNF( i, 3 ) = fscanf( fid, '%f', 1 ) ; dummy=fscanf( fid, '%f', 1 ) ; end % 关闭文件 fclose( fid ) ;
- 08
读入完成后在工作空间将生成包含节点、单元、约束和载荷的数组。 以用于有限元计算