ANSYS在执行APDL语言编写的程序时,采取的是逐行解释并执行指令的方式。复杂的程序经常需要控制指令的执行顺序。为此,APDL提供了一种接近于FORTRAN的流程控制命令。
(1)分支结构
APDL允许根据条件执行某些供选择的程序体中的一个。条件的值通过比较两个数的值(或等于某数值的参数)来确定。
*IF命令的语法为:
其中,X和Y可以是数字,参数或参数表达式;Oper是比较运算符。
APDL提供了8个比较运算符,关于它们的详细讨论在*IF命令参考部分。简要地说,它们主要是:
若比较的值为真,则执行then指定的操作。之后的操作可能是:
*EXIT 退出DO循环。
*CYCLE 跳到DO循环末端。
这些操作符只有当条件为真时才起作用。否则,ANSYS将会移至*ELSEIF(若提供),*ELSE(若提供)和*ENDIF。
在最简单的形式中,*IF命令判断比较的值,若为真,则转向Base变量所指定的标识字处。结合一些*IF命令,将能得到和其他编程语言中CASE语句相同的功能。注意,不要转向某个位于if-then-else结构或do循环中的带标识字的行。
通过给THEN变量赋值STOP,可以离开ANSYS。
if-then-else结构仅仅判断条件并执行接下来的程序体或跳到*ENDIF命令的下一条语句处(用Continue注释表示):
(2)循环结构
*REPEAT命令是最简单的循环命令,通过它可以直接按指定的次数执行上一条命令,并按常数增加命令所带参数。例如:(www.xing528.com)
E命令在节点1和2之间生成一个单元,*REPEAT命令指示执行E命令5次(包括最初的一次),每执行一次第二个节点号加1。结果共生成5个单元:1-2,1-3,1-4,1-5和1-6。
注意:大多数以斜线(/)或星号(*)开头的命令,以及扩展名不是.mac的宏,都不可以重复调用。但是,以斜线(/)开头的图形命令可以重复调用。同时,要避免对交互式命令使用*REPEAT命令,诸如那些需要拾取或需要用户响应的命令。
DO循环允许执行一个命令块数次。
实际上在DO循环中对其中包含什么内容没有限制。可以包含任何ANSYS命令(包括前处理,求解和处理),当然是在条件允许的情况下。
*DO开始循环,*ENDDO结束循环。
提示:可以用*EXIT(退出循环)和*CYCLE(跳到DO循环末)控制循环。*EXIT和*CYCLE也可以根据if-then的结果来执行。
在构造do循环时,要遵循以下原则。
●不要通过在*IF或*GO命令中带有Label来从do循环结构中跳出。
●不要在do循环结构中用Label来跳到另外一行语句。可以用if-then-else-endif结构来代替。
●在do循环结构中,第一次循环后,自动禁止命令结果输出。如果想得到所有循环的
结果输出,就在do循环结构中使用/GOPR或/GO(无响应行)命令。
常用的流程控制命令列于表7-3中,以供读者参考,更为详细的介绍请读者参考ANSYS的帮助文件。
表7-3 控制函数表
(续)
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。