有限元模型就是有单元和节点组成的,正确分析完之后总能得到单元解和节点解,至于单元解和节点解的关系,可以参考这篇文章
下面我们通过一个悬臂梁的例子来看看单元解和节点解的关系,以及如何将单元解和节点解保存为txt文件。
悬臂梁尺寸为10*10*100mm,右端面固定,左端面受到竖直向下的作用力,如下图所示
选择solid185单元,材料弹性模型E=2e11,泊松比为0.3,六面体网格,划分网格并添加边界条件,结果如下:
计算结果如下:
节点位移和节点等效应力
单元等效应力云图
保存节点解和单元解,这里以节点应力和单元应力为例,其他解可以参考下面这篇博客APDL获取节点和单元的结果
获取节点解使用*GET命令流,获取节点应力结果命令流如下:
序号 | 结果 | APDL语句 | 说明 |
---|---|---|---|
1 | X方向应力 | *GET,SX,NODE,i,S,X | *GET,变量名,类型,编号,应力,X方向 |
2 | Y方向应力 | *GET,SY,NODE,i,S,Y | *GET,变量名,类型,编号,应力,Y方向 |
3 | Z方向应力 | *GET,SZ,NODE,i,S,Z | *GET,变量名,类型,编号,应力,Z方向 |
4 | XY剪应力 | *GET,SXY,NODE,i,S,XY | *GET,变量名,类型,编号,应力,XY方向 |
5 | YZ剪应力 | *GET,SYZ,NODE,i,S,YZ | *GET,变量名,类型,编号,应力,YZ方向 |
6 | XZ剪应力 | *GET,SXZ,NODE,i,S,XZ | *GET,变量名,类型,编号,应力,XZ方向 |
7 | 第一主应力 | *GET,S1,NODE,i,S,1 | *GET,变量名,类型,编号,应力,第一主应力 |
8 | 第二主应力 | *GET,S2,NODE,i,S,2 | *GET,变量名,类型,编号,应力,第二主应力 |
9 | 第三主应力 | *GET,S3,NODE,i,S,3 | *GET,变量名,类型,编号,应力,第三主应力 |
10 | von Mises应力 | *GET,SVON,NODE,i,S,EQV | *GET,变量名,类型,编号,应力,Mises等效应力 |
具体命令流如下:
/POST1 !后处理
SET,1 !从结果文件中读出所指定的数据集
*GET,MaxNodeNum,NODE,,NUM,MAX !获取最大节点号
*GET,MinNodeNum,NODE,,NUM,MIN !获取最小节点号
*GET,NodeNum,NODE,,COUNT !获取节点数
*DIM,Stress,ARRAY,NodeNum,2 !定义2维数组NodeNum*2
*DO,i,MinNodeNum,MaxNodeNum
Stress(i-MinNodeNum+1,1) = i
*GET,Stress(i-MinNodeNum+1,2),NODE,i,S,EQV
*ENDDO
*CFOPEN,myseqv100,TXT !打开一个文件
*VWRITE,Stress(1,1),Stress(1,2)
(F20.0,,F20.5) !格式输出20表示数据总字符宽度,5表示小数部分宽度
*CFCLOS !关闭一个文件
上面代码因为使用了*VWRITE命令,需要将其保存为txt文件,用导入的方式运行代码。运行完之后在ANSYS的工作目录下生成myseqv100.txt文件,文件结果如下:
第一列是节点号,第二列是节点von Mises等效应力,同时我们在ANSYS菜单Parameters->Scalar Parameters中可以看到节点数
获取单元应力,使用单元表获取单元应力,命令流如下:
具体命令流如下:
/POST1 !后处理
SET,1 !从结果文件中读出所指定的数据集
*GET,MaxEleNum,ELEM,,NUM,MAX !获取最大单元号
*GET,MinEleNum,ELEM,,NUM,MIN !获取最小单元号
*GET,EleNum,ELEM,,COUNT !获取单元数
*DIM,Stress,ARRAY,EleNum,7 !定义7维数组EleNum*7
ETABLE,SX,S,X !生成单元表,应力数据填充
ETABLE,SY,S,Y !生成单元表,应力数据填充
ETABLE,SZ,S,Z !生成单元表,应力数据填充
ETABLE,SXY,S,XY !生成单元表,应力数据填充
ETABLE,SYZ,S,YZ !生成单元表,应力数据填充
ETABLE,SXZ,S,XZ !生成单元表,应力数据填充
*DO,i,MinEleNum,MaxEleNum
Stress(i-MinEleNum+1,1) = i
*GET,Stress(i-MinEleNum+1,2),ELEM,i,ETAB,SX
*GET,Stress(i-MinEleNum+1,3),ELEM,i,ETAB,SY
*GET,Stress(i-MinEleNum+1,4),ELEM,i,ETAB,SZ
*GET,Stress(i-MinEleNum+1,5),ELEM,i,ETAB,SXY
*GET,Stress(i-MinEleNum+1,6),ELEM,i,ETAB,SYZ
*GET,Stress(i-MinEleNum+1,7),ELEM,i,ETAB,SXZ
*ENDDO
*CFOPEN,myseqv101,TXT !打开一个文件
*VWRITE,Stress(1,2),Stress(1,3),Stress(1,4),Stress(1,5),Stress(1,6),Stress(1,7)
(F20.5,,F20.5,,F20.5,,F20.5,,F20.5,,F20.5) !格式输出20表示数据总字符宽度,5表示小数部分宽度
*CFCLOS !关闭一个文件
保存的结果是单元的六个应力分量,如下所示
最后我们来看一下单元应力解和节点应力解的关系
在ANSYS中采用列表方法列出单元应力解和节点应力解,如下
具体来看一下,取101号节点(方便查找)的SEQV=0.13934e9,它它是单元67,68,77和78四个单元的共节点,分别把四个单元的SEQV加起来再求平均=0.13934e9,可以看出单元中的相同节点的节点解的平均就是节点解。
我们从上面列表单元解可以看出单元解也是以节点的形式展示的,185单元有8个节点,所以单元解由8个节点解组成,但是我们实际在上面保存的时候每个单元只保存了一个数值,这个数值其实是这8个单元节点解的平均。