理论教育 APDL中的控制命令

APDL中的控制命令

时间:2023-10-23 理论教育 版权反馈
【摘要】:APDL提供了下列8个比较运算符。/CLEAR命令不会清除*IF堆栈,*IF层的号码仍然保留。同时,要记住/CLEAR命令会删除所有的参数,包括在分支命令中使用的任何参数。为避免由此引发的循环值未定义的问题,可以在/CLEAR命令前运行/PARSAV命令,然后执行/CLEAR命令和/PARRES命令。

APDL中的控制命令

1.无条件分支*GO命令

最简单的转向命令*GO指示程序转到某个指定标识字所在行,不执行中间的任何命令。程序继续从该指定标识字所在行开始执行。例如:

*GO命令指定的标识字必须以冒号(:)开头,并不能超过8个字符(包括冒号)。该标识字可位于同一文件中的任何地方。

注意:不鼓励使用*GO命令。最好使用其他的分支命令来控制程序流。

2.条件分支*IF命令

APDL允许根据条件执行某些供选择的程序体中的一个。条件的值通过比较两个数的值或等于某数值的参数来确定。

*IF命令的语法为:

*IF,VAL1,Oper,VAL2,Base

其中,VAL1是比较的第一个数值(或数字参数);Oper是比较运算符;VAL2是比较的第二个数值(或数字参数);若比较的值为真,则执行Base指定的操作。

APDL提供了下列8个比较运算符。

EQ:等于(VAL1=VAL2)。

NE:不等于(VAL1#VAL2)。

LT:小于(VAL1<VAL2)。

GT:大于(VAL1|VAL2)。

LE:小于或等于(VAL1vVAL2)。

GE:大于或等于(forVAL1|=VAL2)。(www.daowen.com)

ABLT:绝对值小于。

ABGT:绝对值大于。

通过给Base变量赋值THEN,*IF命令就变成了IF-THEN-ELSE结构(和FORTRAN中的该结构类似)的开始。该结构包括:一个*IF命令,一个或多个*ELSEIF命令选项,一个*ELSE命令选项,一个必需的*ENDIF命令,标识该结构的结束。

在最简单的形式中,*IF命令判断比较的值,若为真,则转向Base变量所指定的标识字处。结合一些*IF命令,将能得到和其他编程语言中CASE语句相同的功能。注意,不要转向某个位于IF-THEN-ELSE结构或DO循环中的带标识字的行。

通过给Base变量赋值STOP,可以离开ANSYS。

IF-THEN-ELSE结构仅仅判断条件并执行接下来的程序体或跳到*ENDIF命令的下一条语句处(用“Continue”注释表示):

注意:可以在IF-THEN-ELSE结构中执行/CLEAR命令。/CLEAR命令不会清除*IF堆栈*IF层的号码仍然保留。必须用*ENDIF来结束分支。同时,要记住/CLEAR命令会删除所有的参数,包括在分支命令中使用的任何参数。为避免由于删除参数而引发的问题,可以在/CLEAR命令前运行/PARSAV命令,然后在/CLEAR命令后立刻运行/PARRES命令。

3.DO循环

DO循环允许按指定的次数循环执行一系列的命令。*DO命令和*ENDDO命令分别是循环开始和结束点的标识字。

下面的DO循环例子读取5个载荷步文件(1~5)并对5个文件做了同样的更改:

在构造DO循环时,要遵循以下原则。

●不要通过在*IF或*GO命令中带有:Label来从DO循环结构中跳出。

●不要在DO循环结构中用:Label来跳到另外一行语句。可以用IF-THEN-ELSE-ENDIF结构来代替。

●在DO循环结构中,第一次循环后,自动禁止命令结果输出。如果想得到所有循环的结果输出,就在DO循环结构中使用/GOPR或/GO(无响应行)命令。

●在DO循环结构中使用/CLEAR命令要特别小心。/CLEAR命令不会清除DO循环堆栈,但是它会删除所有的参数,包括在本身的*DO语句中的循环参数。为避免由此引发的循环值未定义的问题,可以在/CLEAR命令前运行/PARSAV命令,然后执行/CLEAR命令和/PARRES命令。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈