许可优化
产品
解决方案
服务支持
关于
软件库
当前位置:服务支持 >  软件文章 >  ANSYS APDL与二次开发(1):解锁APDL语言常用功能

ANSYS APDL与二次开发(1):解锁APDL语言常用功能

阅读数 8
点赞 0
article_banner

引言

ANSYS是一款功能十分强大的通用有限元分析 软件。

ANSYS实现分析通常分为两种:

  • GUI操作,优点是操作直观,入门较容易
  • 基于参数化语言APDL(Ansys Parametric Design Languange)的操作,优点是易于修改、便于参数化和流程化分析作业,尤其在产品方案设计阶段有较大的优势。

此外,ANSYS还为用户提供如下三种方式来进行功能扩充的二次开发工具:

  • 用户界面设计语言(UIDL ):主要用于开发特色的GUI用户界面,如一些数据的输出输出窗口等;
  • 用户程序特性(UPFs ):主要用于自定义材料本构、失效准则、单元类型和优化算法等;
  • ANSYS数据接口:主要和CAD软件的关联,实现设计分析无缝连接、和FORTRAN MATLABVC++ 等编程软件实现联合仿真分析。

一些特殊行业或工程问题,会涉及到二次开发,而APDL语言是二次开发的基础。

本文主要介绍APDL语言的一些常用功能,后续会对UIDLUPFs和以及联合其他软件(程序)进行联合仿真分析或数据处理等进行讨论。

APDL常用命令

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中循环判断和读写文件的具体使用方法以及一些具有一定通用性的程序片段,下文主要介绍ANSYSMATLABVC++实现联合仿真分析方法。

-完-

公众号同步更新:数联科技工作室

公众号内有更多内容!


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空