ANSYS是一款功能十分强大的通用有限元分析 软件。
ANSYS实现分析通常分为两种:
此外,ANSYS还为用户提供如下三种方式来进行功能扩充的二次开发工具:
一些特殊行业或工程问题,会涉及到二次开发,而APDL语言是二次开发的基础。
本文主要介绍APDL语言的一些常用功能,后续会对UIDL、UPFs和以及联合其他软件(程序)进行联合仿真分析或数据处理等进行讨论。
APDL除了可以完全替代GUI操作以外,还可以进行循环(*do)、判断(*if)、读写文件(*vread和*vwrite)等操作;这些处理方式和一些编程语言非常相像,如有一定编程基础,熟悉起来很容易。
下面我们分别讨论以上的几个命令的具体用法:
*do, Par, IVAL, FVAL, INC——确定的循环次数
*dowhile, Par——不确定的循环次数,结合*if实现条件控制
*if, VAL1, Oper1, VAL2, Base1, VAL3, Oper2, VAL4, Base2 ——条件判断
*vwread, ParR, Fname, Ext, --, Label, n1, n2, n3, NSKIP ——读文件
*cfopen, Fname, Ext, --, Loc ——创建文件文件
*vwrite, Par1, Par2, Par3,…,Par19——写文件
*do循环在前处理(/prep7)中的一个应用:循环建立弹簧单元。
在有限元分析过程中,有时需要在一堆节点上建立弹簧,命令流如下:
allsel
*get, TotalNodeMax,node,0,num,max !获取全局节点编号最大值
nsel, !选出需要建立弹簧的节点集
*get,NodeCount,node,0,count !获取节点总数目
*get,NodeMax,node,0,num,max !获取节点编号最大值
*get,NodeMin,node,0,num,min !获取节点编号最小值
*dim,NodeiNum,array,NodeCount,1,1 !定义弹簧单元的i节点数组
*dim,NodejNum,array,NodeCount,1,1 !定义弹簧单元的j节点数组
j=0 !计数器赋初值
*do,i,NodeMin,NodeMax,1 !循环开始,从节点编号最小值到最大值
*if,nsel(i),eq,1,then !判断节点是否被选中
j=j+1 !计数器+1
NodeiNum(j)=i !将弹簧i节点的编号赋值到数组
NodejNum(j)= TotalNodeMax+j !将弹簧j节点的编号赋值到数组
n, TotalNodeMax+j,nx(i),ny(i),nz(i)+1.0 !参考i节点坐标建立j节点
type, !弹簧单元类型编号
real, !弹簧单元实常数(刚度和阻尼)编号
e,i, TotalNodeMax+j !建立弹簧单元
*endif
*enddo
值得注意的是,上述命令流将无规律的节点编号变得有规律,且存于数组当中,便于后续用循环使用这些节点,比如在弹簧节点上加位移边界,加载荷等。
*do循环在求解(/solu)中的一个应用:循环加载求解。
在做瞬态时域分析时,通常会先写好载荷步文件(lswrite),然后一并求解载荷步文件(lssolve);但是也可以采取其他操作方式,直接加载一步求解一步,命令流如下:
/solu
antype,trans !分析类型
trnopt,full !完全法
nsubst,5 !子步数
outres,all,last !结果输出频率
autots,on !自动时间步长
kbc,0 !加载模式(ramp or step)
*do,i,1,TNum,1 !循环开始
time,T(i) !指定时间
acel,0,AccelY(i),0 !加载
solve !求解
*enddo
finish
*do循环在后处理(/post1)中的一个应用:循环提取节点位移的时域数据。
/post1
*dim,DispY,array,201,1,1 !定义存放节点位移时域数据的数组
*do,i,1,201,1 !循环载荷步开始
set,i,last !指定载荷步编号和子步编号
*get,DispY(i),node,2,u,y !提取节点位移
*enddo
*vread读文件的一个应用:读取地震反应谱文件数据。
有时建模所需的数据和载荷数据等以文件形式给出,比如风力发电机叶片的截面节点坐标数据、复合材料的铺层数据、风载荷数据和地震反应谱数据等。
*dim,RSP,array,20,2,1 !定义反应谱数组
*dim,Freq,array,20,1,1 !定义频率数组
*dim,SpectVal,array,20,1,1 !定义谱值数组
*vread,RSP(1,1),F:\xx,dat,,jik,2,20,1,0 !读反应谱文件
(2F10.4)
*do,i,1,20,1
Freq(i)=RSP(i,1) !频率数组赋值
SpectVal(i)=RSP(i,2) !谱值数组赋值
*enddo
*vwrite写文件的一个应用:写节点位移的时域数据文件。
我们在做有限元分析时,有时需要将ANSYS的计算结果数据存取出来,便于后续的一些数据处理或者和其他程序进行联合仿真分析等工作。
*cfopen,F:\AnsysWork\DispY,dat !创建位移文件
*vwrite,Times(1),DispY2(1) !写位移数据
(F10.4,5X,E10.4)
*cfclose
本文主要介绍了APDL中循环判断和读写文件的具体使用方法以及一些具有一定通用性的程序片段,下文主要介绍ANSYS和MATLAB或VC++实现联合仿真分析方法。
-完-
公众号同步更新:数联科技工作室
公众号内有更多内容!