本节书摘来自异步社区《ANSYS 14.0超级学习手册》一书中的第2章,第2.2节,作者 张建伟 , 白海波 , 李昕, 更多章节内容可以访问云栖社区“异步社区”公众号查看
ANSYS 14.0超级学习手册ANSYS在执行APDL所编写的程序时,采取的是逐行解释并执行指令的方式。复杂的程序经常需要控制指令的执行顺序。为此,APDL提供了以下流程控制命令,一种接近于FORTRAN的流程控制命令:
*GO无条件分支。IF……IFELSE……ELSE……ENDIF条件分支。DO……ENDDO循环。*DOWHILE循环。*REPEAT重复命令。
GO命令是无条件分支命令,不能从循环体或者条件分支中利用它跳转出来执行其他命令,因此GO命令不可以与其他分支或循环嵌套使用。*GO命令格式如下:
*GO, : Branch_1 …… :Branch_1 …… *GO, stopAPDL通过比较两个数值大小来确定当前满足的条件,选择性地在多个指令段中执行其中的一个。
*IF语句是条件分支语句,使用格式如下:
*IF, VAL1, Oper1, VAL2, Base1, VAL3, Oper2, VAL4, Base2VAL1,VAL2,VAL3,VAL4,为4个比较数,Oper1与Oper2是两个比较运算符。比较运算符有以下几种。
EQ(等于,Equal):VAL1 = VAL2
NE(不等于,Not equal):VAL1≠VAL2
LT(小于,Less than):VAL1
GT(大于,Greater than):VAL1>VAL2
LE(小于或等于,Less than or equal):VAL1≤VAL2
GE(大于或等于,Greater than or equal):VAL1≥VAL2
ABLT(绝对值小于,Absolute values of VAL1 and VAL2 before
ABGT(绝对值大于,Absolute values of VAL1 and VAL2 before> operation):|VAL1|> |VAL2|
Base1是逻辑表达式Oper1为真时的操作,如果逻辑表达式Oper1为假则继续读取下一行程序;如果后面没有第二个条件Oper2,则Base1为then;如果后面有第二个条件Oper2,则Base1为逻辑连接词(AND、OR、XOR),由两个条件组合成一个条件,条件连接如下。
AND:表示Oper1与Oper2条件同时为真时,结果为真。
OR:表示Oper1与Oper2条件至少一个为真时,结果为真。
XOR:表示Oper1与Oper2条件同时为假时,结果为真。
Base2是两个条件为真时执行操作,Base2 = THEN。
*DO命令是循环操作指令,格式如下:
*DO,Par,IVAL,FVAL,INC …… *ENDDO其中,Par是循环控制变量,只允许使用数值型变量,IVAL是Par初值,FVAL是Par终值,INC为循环变量的步长,默认为1。
DO……ENDDO循环可以与IF分支结合,利用EXIT和*CYCLE指令跳出当前循环过程或整个循环体,格式如下:
*DO …… *IF …… *ELSEIF *CYCLE …… *ELSE *EXIT …… *ENDIF …… *ENDDO其中CYCLE为中断当前循环,直接进入下一步循环,EXIT为直接跳出当前循环体,读者应注意两者区别。
使用*DO循环时,有如下注意事项:
分支语句IF或GO命令不允许跳出*DO循环体。
在DO循环中,第一次循环后自动禁止命令结果输出,要得到所有结果输出需要在DO循环中使用/GOPR或/GO语句。
/CLEAR命令不会清除*DO循环的堆栈,但会清除所有参数,因此要在/CLEAR命令前执行/PARSAVE命令来防止删除。
不允许使用LABEL将程序跳转到另一行,但通常可通过*IF分支来实现。
*DOWHILE也是循环指令, 将重复循环体指令直到外部控制参数改变为止, 指令格式如下:
*DOWHILE,PAR其中Par为判断条件,当Par为真则执行下一次循环,为假则中止。与DO循环相比,DOWHILE循环无需事先知道循环的次数,直接由循环条件控制,*DO循环则需要先确定循环的起点与终点。
*REPEAT指令按照事先指定的次数重复上一条指令,且命令中的参数可以按固定增量递增。
*REPEAT,NTOT,VINC1,VINC2,VINC3,VINC4,VINC5,VINC6,VINC7,VINC8,VINC9,VINC10,VINC11NTOT是命令重复的次数,该次数是包含初始执行的,因此必须大于2,且必须为整数。VINC1~VINC11分别是11个参数在每次循环时的增量。
相关资源:最全的ANSYS命令流使用手册