本文摘要(由AI生成):
本文主要介绍了APDL语言在结构参数化分析中的应用。APDL语言提供了循环和分支控制功能,可以用于实现参数化建模和批处理文件。通过定义参数并赋给实常数,可以实现参数化的有限元分析全过程,包括参数化的几何模型、网格设置及剖分、边界及载荷定义、分析控制和求解以及后处理过程中参数提取。参数化的有限元分析也是结构优化设计所必须的,输入参数可作为优化问题的优化设计变量,结果参数可作为优化问题的约束条件变量或目标函数。
本文节选自我参与编写的《工程结构优化设计方法与应用》(中国铁道出版社,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可以用来连接操作符Oper1和Oper2,可以用下面的选项:
AND:表示两个操作符Oper1和Oper2同时为真;
OR:表示两个操作符Oper1和Oper2中间任何一个为真;
XOR:表示两个操作符Oper1和Oper2中间有一个为真。
(7) 宏以及用户程序
宏是一组可以实现特定功能的ANSYS命令组合。把一系列经常使用的命令记录到一个宏中,就成为一个宏(命令),通过执行宏就等于执行了这些ANSYS命令。宏还可以调用GUI函数或把值传递给参数。
另外,宏可以相互嵌套。也就是说,一个宏能调用第二个宏,第二个宏能调用第三个宏,等等。最多可嵌套20层,其中包括由ANSYS命令/INPUT执行任何文件切换操作。每次嵌套的宏执行完毕后,ANSYS程序控制权仍回到置于前一个宏之下。可以在ANSYS中产生宏,也可以通过文本编辑器产生宏。实际应用时可以利用文本编辑器打开一个已经存在的类似的宏或ANSYS日志文件,加以改造创建自己的宏。
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实参数,刚度及质量k1及m1 |
R,2,k2,,m2 |
!Combin40实参数,刚度及质量k2及m2 |
后面建模及分析的命令流不变,在原来的命令流最后添加如下的结果参数提取命令:
*GET,Y1,VARI,2,RTIME,5.0
*GET,Y2,VARI,3,RTIME,5.0
新添加的这几条命令,作用是提取荷载作用频率为5Hz所对应的质点m1和m2的位移响应幅值Y1和Y2。通过上述修改得到的命令流,即可计算当m1、k1及m2、k2变化情况下的质点谐响应结果,并自动提取关注频率下的响应幅值参数。