首页/文章/ 详情

APDL语言简介(二)

5年前浏览5913

本文节选自我参与编写的《工程结构优化设计方法与应用》(中国铁道出版社,2015年)



(6)  程序流程控制,循环、分支


APDL提供了强大的编程功能,主要体现在循环和分支控制功能上。


Ø 
循环


对于大量重复性的操作,在程序执行过程中可以通过循环的方式。APDL语言允许在参数化建模以及分析的批处理文件中采用如下形式的循环体:


*DO,Par,IVAL,FVAL,INC


……(循环操作指令,要引用循环变量)


*ENDDO


Par为循环指针的变量,IVAL、FVAL、INC为决定循环次数的参量,分别表示循环指针变量的初值、终值以及增量,增量INC可正可负也可为小数(分数)。如果IVAL比FVAL的值大,且INC为正,则程序会终止循环语句的执行。


循环体中可以嵌入循环形成多重循环,这在一些空间桁架体系的建模中是很有用处的。


Ø 
分支控制


APDL允许在参数化建模文件中采用如下形式的分支控制块:


*IF,VAL1,Oper,VAL2,THEN


……(需要执行的命令)


*ELSEIF,VAL1,Oper,VAL2,


……(需要执行的命令)


*ELSEIF,VAL1,Oper,VAL2,


……(需要执行的命令)


*ELSE


……(需要执行的命令)


*ENDIF


其中,Oper为操作符,常见的操作符及其含义列于表8-1中。


表8-1  *IF条件语句的操作符



























EQ


等于


NE


不等于


LT


小于


GT


大于


LE


小于等于


GE


大于等于


ABLT


绝对值小于


ABGT


绝对值大于




一般形式的*IF 语句可以由两组操作符判断连接在一起的形式,即:


*IF,VAL1,Oper1,VAL2,Base1,VAL3,Oper2,VAL4,Base2


Base1可以用来连接操作符Oper1Oper2,可以用下面的选项:


AND:表示两个操作符Oper1Oper2同时为真;


OR:表示两个操作符Oper1Oper2中间任何一个为真;


XOR:表示两个操作符Oper1Oper2中间有一个为真。


(7) 宏以及用户程序


宏是一组可以实现特定功能的ANSYS命令组合。把一系列经常使用的命令记录到一个宏中,就成为一个宏(命令),通过执行宏就等于执行了这些ANSYS命令。宏还可以调用GUI函数或把值传递给参数。


另外,宏可以相互嵌套。也就是说,一个宏能调用第二个宏,第二个宏能调用第三个宏,等等。最多可嵌套20层,其中包括由ANSYS命令/INPUT执行任何文件切换操作。每次嵌套的宏执行完毕后,ANSYS程序控制权仍回到置于前一个宏之下。可以在ANSYS中产生宏,也可以通过文本编辑器产生宏。实际应用时可以利用文本编辑器打开一个已经存在的类似的宏或ANSYS日志文件,加以改造创建自己的宏。


8.1.2 基于APDL的结构参数化分析


APDL语言定义的参数可以被ANSYS的操作命令引用,用户可以利用APDL语言编写出参数化的批处理命令流文件,以实现有限元分析全过程的参数化,即:指定分析有关的各种参数、建立参数化的几何模型、进行参数化的网格设置及剖分、参数化的边界及载荷定义、参数化的分析控制和求解以及后处理过程中参数提取。由此可见,编写参数化的命令流文件,最大好处在于,对于任意的参数变化的情况,只需简单修改输入文件的参数即可快速自动地完成新的模型创建及分析过程。


参数化的有限元分析,也是结构优化设计所必须的,输入参数可作为优化问题的优化设计变量,结果参数可作为优化问题的约束条件变量或目标函数。


下面以上一章桁架结构及2-DOF谐响应分析例题为例,说明参数化分析的实现方法。


对于桁架结构分析例题,在前处理阶段,可定义各杆件截面面积为参数A1至A5,进行参数的初始化并指定给相应的实常数。


*set,A1,1e-4   $     *set,A2,1e-4   $     *set,A3,1e-4   $    


*set,A4,1e-4   $     *set,A5,1e-4


/prep7


ET,1,LINK180


R,1,a1,    $     R,2,a2,    $     R,3,a3,
  $     R,4,a4,
  $     R,5,a5,


后续的其他操作命令均不改变,当改变参数A1至A5时,即可实现自动重新计算,并绘制各工况轴力图。此外,在原命令流后增加参数结果提取的命令如下:


ETABLE,evolume,VOLU,        


SSUM


*GET,volume,SSUM,
,ITEM,EVOLUME


上面三行命令的作用是定义单元体积为单元表,对此单元表项目求和得到结构总体积,并存入参数VOLUME中。此参数后续可作为参数优化过程的目标函数。


我们再来看两自由度体系动力分析的参数化方法,首先定义相关的刚度和质量参数并赋给实常数,命令流如下:



























*set,k1,986960               


!指定弹簧参数k1


*set,m1,1000


!指定质量参数m1


*set,k2,98696


!指定弹簧参数k2


*set,m2,100


!指定质量参数m2


/PREP7 



ET,1,COMBIN40,,,2               


!UY 方向布置的弹簧


R,1,k1,,m1          


!Combin40实参数,刚度及质量k1m1


R,2,k2,,m2        


!Combin40实参数,刚度及质量k2m2



后面建模及分析的命令流不变,在原来的命令流最后添加如下的结果参数提取命令:


*GET,Y1,VARI,2,RTIME,5.0


*GET,Y2,VARI,3,RTIME,5.0


新添加的这几条命令,作用是提取荷载作用频率为5Hz所对应的质点m1和m2的位移响应幅值Y1和Y2。通过上述修改得到的命令流,即可计算当m1、k1及m2、k2变化情况下的质点谐响应结果,并自动提取关注频率下的响应幅值参数。


Mechanical APDL
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2018-12-29
最近编辑:5年前
尚晓江
博士 | 博士 技术专家 海内存知己,天涯若比邻
获赞 614粉丝 9521文章 77课程 24
点赞
收藏
未登录
1条评论
ZKP
签名征集中
1年前
尚老师想向您请教个问题,定义刚体part时已经约束了除位移荷载方向的其它自由度,edload命令对刚体part施加位移荷载时,显示是无效的part,请问这是为什么?方便留个联系方式吗?看您的书看了好几个版本了,好想与您交流啊……
回复

课程
培训
服务
行家

VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈