在ANSYS中,经常用到条件分支流程控制,也就是所谓的IF块。ANSYS中的IF块与其他高级语言的类似,但表达形式有些差异。APDL的IF块命令格式如下:
*IF,VAL1,Oper1,VAL2,Base1{,VAL3,Oper2,VAL4,Base2}
*ELSEIF,VAL1,Oper1,VAL2{,Conj,VAL3,Oper2,VAL4}
*ELSE
*ENDIF
其中:{}内的可不输入,即可使用,也可不使用,根据情况而定。
VAL1~VAL4为比较用数值或数字或字符等。
Oper1(Oper2)为比较运算符,可取:
EQ--等于
NE--不等于
LT--小于
GT--大于
LE--小于等于
GE--大于等于
ABLT--绝对值小于
ABGT--绝对值大于
Base1是第一个条件(Oper1)为真时执行的操作,如果后面无{}内部分,则取THEN;否则可取:
STOP--退出ANSYS,但交互模式不会退出
EXIT--退出DO循环
CYCLE--跳过*CYCLE的循环
THEN--如上
AND--Oper1和Oper2同时为真
OR--Oper1和Oper2至少一个为真
XOR--Oper1和Oper2都为假时为真
Base2是两个条件成立时执行的操作,实际是Base2=THEN
Conj是两个条件的连接符,可取AND、OR、XOR之一。
最简单的IF块如:
*IF,A,EQ,B,THEN
Block1
*ENDIF!0
较简单的IF块如
*IF,A,EQ,B,THEN!
Block1!1
*ELSE!
Block2
*ENDIF!
较复杂的IF块如
*IF,A,EQ,1,THEN
Block1!!!
*ELSEIF,A,EQ,2
Block2!!
*ELSEIF,A,EQ,3
Block3
*ELSEIF,A,EQ,4
Block4
*ELSE!!
*IF,MOD(A,2),EQ,0,THEN
Blocka
*ELSE
Blockb
*ENDIF
*ENDIF!!
上述语句中的Blockx可包含另外的完整IF块。
例如下面命令流
FINISH$/CLEAR$/PREP7
*CREAT,IFTHEN,MAC
*IF,ARG1,EQ,1,THEN
BLC4,,,1,2!ARG1=1创建矩形
*ELSEIF,ARG1,EQ,2
CYL4,,,2!ARG1=2创建全圆
*ELSEIF,ARG1,EQ,3
CYL4,,,3,,,90!ARG1=3创建1/4圆
*ELSEIF,ARG1,EQ,4
CYL4,,,4,,,180!ARG1=4创建半圆
*ELSE!!!
*IF,MOD(ARG1,2),EQ,0,THEN
BLC4,,,1,2,3!ARG1整除2时创建六面体
*ELSE!!!!
CYL4,,,1,,,,1!ARG1不整除2时创建圆柱
*ENDIF!!!!!
*ENDIF!!!
*END
/VIEW,1,1,1,1
IFTHEN,7
IFTHEN,10
IFTHEN,2
IFTHEN,3
通常,在ANSYS中所使用的IF块较简单,较复杂的逻辑流程控制不多,除非是编制特殊而专门的小应用程序。因此,掌握本文的几种IF块结构,基本就可在ANSYS中应用流程控制。而包含STOP或/CLEAR,或者与DO 循环嵌套并跳出等较复杂的流程控制,可自行试错完成。(图片来自中铁电气化局集团第三工程有限公司通信分公司网页)
---------------------------------------------------------------------------------------------
版权声明:
原创文章,来源铁大王新敏,本文已经授权,欢迎分享,如需转载请联系作者。