作者:水哥ANSYS,获授权转载
一、概述
有过其他编程语言经验的同学都知道,流程控制类语言命令在编程中是必须掌握的一门技巧,这类命令能大幅提高我们的编程效率,增加程序可读性。类似地,在APDL中也有很多的流程控制性命令,今天水哥就给大家捋一捋。
二、什么是流程类控制命令
ANSYS总是逐条执行命令语句的,但很多时候我们建模或者计算分析需要不断的重复执行一些模块化命令,例如在地震时程分析、荷载步加载等,因而就诞生了流程类控制命令,ANSYS常见的命令如下:
1)*Go 无条件分支
2)*IF --*IF ELSE--*ELSE--*ENDIF 有条件分支
3)*DO --*ENDDO 循环
4)*DO WHILE 循环
5)*REPEAT 重复一个命令,增加一个或多个命令
这上面五个命令中,*IF条件判断、*DO循环是使用频率最高的,任何稍微复杂点的建模或者后处理均需要用到。下面分别简单介绍下每个命令的使用方式。
三、详解
1、*Go 无条件分支
*Go是最简单的分支命令,是用来将程序流程转移到指定标识字所在行并执行后面的流程,也即跳过中间的所有命令,但值得注意的是该命令不能与条件分支和循环混合使用,其优先级低于循环和条件分支,个人不推荐使用这个命令。
案例:
*go,:BYST1 !流程跳转到后面的第一个写有:BYST1命令行
…….
:BYST1 !跳转目标行
*GO,STOP !退出程序
2、*IF --*IF ELSE--*ELSE--*ENDIF 有条件分支
这个命令是我们在建模或者后处理中使用最为频繁的流程控制命令之一,应重点掌握,该命令通过比较两个数值的大小来确定是否满足当前的判断条件,从而决定是否执行后续的命令,格式如下:
*IF,VAL1,Oper1,VAL2,Base1
Oper1 是比较运算的,ANSYS提供如下比较运算符:
1)EQ: 等于 ; 2)NE:不等于;3)LT:小于;4)GT 大于;5)LE不大于;6)GE 不小于;7)ABLT 绝对值小于;8)ABGT 绝对值大于。
VAL1为比较数,VLA2为被比较数,Base1为当判定条件为真时所执行的操作。将Base1换为*Else就成为了一个标准的判断性流程控制语句。流程图如下:
例如:
Finish$/clear
/prep7
XX1=1 !给XX1赋值为1
*if,xx1,gt,2,then !判断XX1是否大于2,如果大于2,则绘制一个矩形,否则画一个圆
Blc4,0,0,4,2
*else
Cyl4,0,0,5
*endif
3、*DO—*ENDDO 循环
*do循环和*if一样,也是我们平时所使用命令中最为频繁的控制性语句之一,*do循环其实本身是一个程序块,合理的利用*do循环,有时候能大幅度提高我们的建模效率,尤其是和数组的结合使用,例如在网壳模型建模过程中,*do循环的使用就能事半功倍。
*do循环格式如下:
*DO,par,ival,fval,inc
其中par为循环控制变量,ival,fval,inc分别为循环控制变量的起始值、终点值以及间隔值。
实例:
点击完整阅读全文
细数APDL中的流程控制命令
相关阅读推荐:
如何看待新手入门学习APDL过程中的是是非非
APDL语言简介(一)
ANSYS APDL中*Vwrite 使用命令方法介绍