细数APDL中的流程控制命令

Please Share Us

点击此处查看 ✿水哥原创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就成为了一个标准的判断性流程控制语句。流程图如下:

细数APDL中的流程控制命令

例如:

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分别为循环控制变量的起始值、终点值以及间隔值。

实例:

*dim,XX,array,10,1,1  !定义一个数组

*do,i,1,10,1          !定义循环

xx(i)=I              !定义数组元素

K,i,xx(i)             !定义关键点

*if,i,ge,2            !条件判断

L,i-1,I              !绘制直线

*endif            

*enddo            !结束循环

4、*DOWHILE

*DOWHILE 从字面意思很好理解,主要用于重复执行循环体,直到外部参数发生改变为止,其使用格式如下:

*DOWHILE,Parm

这里Parm是循环判断条件,如果循环体得出的结果使得Parm为真(大于0.0)则执行下一次循环,如果为假(小于等于0.0)则终止循环。

5、*REPEAT

*REPEAT也属于简单的循环命令,但与其他控制命令不同,它是按指定的次数循环上一句命令,并且命令中的参数可以按固定的增量递增,格式如下:

*REPEAT,Ntot,VINC1,VINC2…………………VIINC10

其中Ntot表示命令重复执行的次数,且包含初始的次数,故必须大于等于2,vinc1~vinc10是命令的第1到第11个参数在每次循环时的增量。

例如:

Csys,1

*do,I,1,6,1    !定义6个节点

N,i,10,60*I,0

*enddo

Type,1

Mat,1

Real,1

E,1,2         !建立单元

*Repeat,5,1,1  !通过节点编号每次增加1的方式建立圆环

E,6,1     

 

四、【结语】

要学好APDL,掌握必要的流程控制命令至关重要,这些命令不但能减少我们的工作量,很大程度上还能提高程序的可读性以及可操作性,提高建模效率。


感谢大家一直以来的支持~如果有童鞋手里面有愿意分享的案例,欢迎投稿,可微信公众号后台联系,也可以发水哥邮箱或者微信联系~

祝好

ANSYS结构院

2018.10.30

欢迎扫描如下二维码关注本站微信公众号:ANSYS结构院

有时间麻烦帮忙点击下公众号文末的广告哦, 权当码字的辛苦费,感谢大家!

Please Share Us
© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码

    暂无评论内容

YOU MAY LIKE…