首页 > 范文大全 > 正文

对ANSYS创建面命令A的改进

开篇:润墨网以专业的文秘视角,为您筛选了一篇对ANSYS创建面命令A的改进范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:为简化ansys中不规则多边形平面图元的创建工作,利用APDL(ANSYS Parametric Design Language)编写新的宏命令. 该宏仅需选择关键点集,利用极坐标极径与极角对关键点进行排序,就可自动搜索连接顺序创建平面,不需要指定具体的关键点号和连接顺序,从而简化建模过程.

关键词:ANSYS;命令A;创建面;APDL语言;硬点

中图分类号:TU338;TB115 文献标志码:A

Improvement on area creation command A in ANSYS

TIAN Xiaoqing

(School of Civil Eng.,Tongji Univ.,Shanghai 200092,China)

Abstract:By using APDL(ANSYS Parametric Design Language),a new macro command is written to simplify creation of irregular polygon area in ANSYS. The macro can automatically select connecting order of key points to create areas by sorting key points using polar coordinate system and polar angle if only necessary key points are selected,regardless of specifying key point number and connecting order. The modeling process can be simplified.

Key words:ANSYS;command A;area creation;ANSYS parametric design language;hard point

0 引 言

壳体和实体单元在机械、建筑及桥梁局部应力分析方面应用相当广泛.利用ANSYS等通用有限元软件建立复杂板壳及实体有限元模型时,常常需要创建许多不规则平面图元.然而ANSYS中给出的由下而上的创建平面命令,在需要创建大量不规则平面时,使用起来相当繁琐.如A,p1,p2,…,p18命令不仅要知道关键点号,还需要知道关键点的顺序和个数.

本文利用ANSYS[1]程序的APDL(ANSYS Parametric Design Language)[2]语言,以AL命令为基础,仅需选择关键点,自动搜索连接顺序创建平面.不需要指定具体的关键点号及连接顺序,简化建模过程.

1 思路及实现步骤

改进的命令格式为

A_KPS,IsHP,AngTol

用A_num表示返回新建面的面号,其中:A_KPS指在关键点选择集中创建1个凸多边形面或微凹多边形面;IsHP指控制面内关键点是否创建为硬点;将在后文进行说明;AngTol指角度容差(度),将在后文进行说明.

1.1 确定柱面局部坐标系

通过ksel和ksll等关键点选择命令确定创建面所需的关键点选择集后,必须建立柱面局部坐标系以利于创建面的操作.

局部坐标系的原点必须在面的角点上,xy平面与关键点选择集所确定的平面重合.例如,在原坐标系下可以用

*GET,origx_,kp,0,mnloc,x

*GET,origy_,kp,0,mnloc,y

*GET,origz_,kp,0,mnloc,z

N_ogk0_=kp(origx_,origy_,origz_)

图 1 关键点选择集示意图

获取左下角点的关键点号作为局部坐标系的原点(如图 1中的点1),然后找出与原点任意不共线的另外两点即可确定局部坐标系.

1.2 搜索连接顺序

利用极坐标系的极角和极径很容易搜索到下一点的点号.将工作平面对齐到局部坐标系,这时工作平面亦变为极坐标系统.搜索极角最小的关键点,将工作平面x轴指向它,此时该点处在工作平面的极轴上.

*GET,wptheta_,kp,0,mnloc,y

WPROTA,wptheta_

根据角度容差AngTol扩大搜索范围,见图 2.

图 2 角度容差AngTol的范围

此时,角度容差AngTol范围内的关键点均有可能成为下一个关键点.用极径最小的条件确定在AngTol角度范围内离极点最近的关键点作为下一个角点.当仍有多个关键点待选时,再用极角最小的条件,即确定极角为0的点为下一个角点.连接两个角点,并将线号存储在预定义的线集L_area里.

可能出现的连接情况见图 3~5,仅当关键点出现在阴影扇形范围内时,才有可能创建出凹多边形面.

图 3 关键点分布在封闭扇形区域内(包含半径边界)

图 4 关键点分布在封闭扇形区域外

图 5 关键点分布在封闭扇形弧线上

找到下一角点后,平移工作平面至该角点,重复上述过程,利用命令[2]

AL,L_area

A_num=_return

即可完成多边形面的创建工作,并返回新建面的面号.如果有关键点落在图示阴影内,程序将创建微凹多边形面.

微凹多边形面指的是所有凹角处内凹边的长度均小于对应凸多边形的边.如图 6所示,凹边L12<L13,L23<L13;L54<L46,L56<L46.

图 6 拟创凹多边形示意图

1.3 对角度容差AngTol的讨论

角度容差AngTol为用户输入的参数,单位是度.当AngTol=0°时,程序创建凸多边形面.实际建模过程中,不总是能遇到凸多边形面,更多的情况是遇到凹多边形面,然而在给定的关键点选择集中,凹多边形面的解不唯一.此时用户需要选择AngTol的值(见图 3),程序以此创建微凹多边形面.

如图 3所示,创建微凹多边形时,角度容差必须大于等于kp3,kp1与kp2所确定的夹角.

如果此时仍然无法创建凹多边形,可以缩小关键点选择集,将凹多边形划分为若干个凸多边形或微凹多边形面分别创建.

1.4 角度容差AngTol的取值

如图 6所示,如需创建实线所围的凹多边形,角度容差必须取∠213,∠231,∠546,∠564中的最大值.

1.5 是否创建硬点

硬点是面元内的特殊关键点,网格划分后硬点处对应有一个节点.创建完毕后,如有需要将关键点选择集中剩余的点创建为该面的硬点,可以将IsHP赋值为1,利用hptcreate命令[3]创建硬点.

2 实例

以图 1关键点选择集为例,分如下3种情况讨论命令的应用问题.

2.1 创建凸多边形

可以敲入命令:

A_KPS,0,0

此时多边形内部有2个关键点,可以根据需要更改IsHP的值将k5和k8创建为该面的硬点(见图7).

图 7 利用命令A_KPS创建的凸多边形

2.2 以图8连接顺序创建新面

按照第1.4节的方法确定AngTol的取值,为max{∠817,∠871,∠546,∠564} =30°,敲入命令

A_KPS,0,30

得到的面见图 9.

图 8 新建面连接顺序

图 9 利用命令A_KPS创建的凹多边形

2.3 以图 10为连接顺序创建新面

图 10 新建面连接顺序

由于凹边L28>L12,L35>L34,不满足第1.3节关于微凹多边形面的定义,本命令无法直接完成图 10所示多边形的创建.解决方法为细化关键点选择集,将1个面分化成多个面的组合,然后利用布林(add,subtract等)操作合成1个面.

本例可以分化成3个凸多边形面:A123467-A182-A354.利用KSEL,A_KPS和ASBA的命令组合可以完成上述工作,具体操作过程不再赘述.

3 结束语

自下而上通过点、线、面、体建立复杂模型是1项相当繁琐的工作.利用ANSYS提供的APDL二次开发语言,将重复的工作用命令(macro file)包装起来,不仅能提高效率,而且使整个建模过程一目了然.

通过调整角度容差AngTol的取值,可以创建出符合条件的微凹多边形面.

4 附 录

A_KPS.mac宏命令的内容:

*IF,ARG2,eq,0,then $ARG2=1e-6 $*ENDIF

NUMMRG,kp

CM,k_tmp,kp

CM,l_tmp,line

!--------------------------------

!----create local cylindrical coordinate system

! --------------------------------

*GET,csmax_,cdsy,0,num,max

*GET,Numkp_,kp,0,count

lcs_=csmax_+10

*GET,cscur_,active,0,csys

*GET,origx_,kp,0,mnloc,x

*GET,origy_,kp,0,mnloc,y

*GET,origz_,kp,0,mnloc,z

N_ogk0_=kp(origx_,origy_,origz_)

N_ogkp_=N_ogk0_

N_xkp_=knear(N_ogkp_)

N_ykp_=0

*DO,i_,1,Numkp_,1

N_ykp_=kpnext(N_ykp_)

AR11=distkp(N_ogkp_,N_xkp_)

$AR12=distkp(N_ogkp_,N_ykp_)

$AR13=distkp(N_ykp_,N_xkp_)

*IF,AR11+AR12-AR13,gt,1e-6,and,AR11+AR13-AR12,gt,1e-6,exit

*IF,i_,eq,Numkp_,then

*msg,error,

All keypoints are on a single line

*ENDIF

*ENDDO

CSKP,lcs_,1,N_ogkp_,N_xkp_,N_ykp_

wptheta_=0 $wpoffsx_=0

WPCSYS,-1,lcs_

LSEL,none

CM,L_AREA,line

N_forward_=N_ogkp_

!--------------------------------

!---search kp order

!--------------------------------

*DO,i_,1,Numkp_,1

CMSEL,s,k_tmp

KWPAVE,N_ogkp_

KSLL,u,L_AREA

KSEL,a,kp,,N_ogk0_

KSEL,u,kp,,N_forward_

KSEL,u,kp,,N_ogkp_

CSYS,wp

*IF,i_,eq,1,then

KSEL,r,loc,y,-180,180

*ELSE

KSEL,r,loc,y,-90-ARG2/2,180

*ENDIF

*GET,wptheta_,kp,0,mnloc,y

WPROTA,wptheta_

*GET,rmax_,kp,0,mxloc,x

KSEL,u,kp,,N_ogkp_

KSEL,r,loc,y,-ARG2,ARG2

KSEL,r,loc,x,0,rmax_

*GET,R_next_,kp,0,mnloc,x

KSEL,r,loc,x,0,R_next_

N_next_=kp(R_next_,0,0)

KSEL,none

KSEL,a,kp,,N_ogkp_

KSEL,a,kp,,N_next_

!--------------------------------

lslk,s,1 ! Select lines attached to keypoints

*get,Lnum,line,,num,min ! Get the line number

CMSEL,a,L_AREA

!--------------------------------

*IF,Lnum,le,0,then

L,N_ogkp_,N_next_

CM,L_AREA,line

*ELSE

LSEL,a,line,,Lnum

CM,L_AREA,line

*ENDIF

*IF,N_next_,eq,N_ogk0_,exit

N_forward_=N_ogkp_

N_ogkp_=N_next_

*ENDDO

AL,L_AREA

A_NUM=_return

CMSEL,s,k_tmp

CMSEL,s,L_AREA

KSLL,u,L_AREA

!--------------------------------

!----create hardpoints

!--------------------------------

*IF,ARG1,gt,0,then

kp_=0

*do,i_,1,kpinqr(0,13)

! get the next kp id

kp_=kpnext(kp_)

! create the hardpoint

hptcreate,area,A_NUM,,coord,kx(kp_),ky(kp_),kz(kp_)

*enddo

*ENDIF

!--------------------------------

CMSEL,s,k_tmp

CMSEL,s,L_AREA

CSDELE,lcs_

CMSEL,s,k_tmp

CMSEL,s,l_tmp

CMDEL,k_tmp

CMDEL,l_tmp

CMDEL,L_AREA

CSYS,cscur_

*del,,prm_

*del,LNUM

参考文献:

[1] ANSYS INC. Release 11.0 documentation for ANSYS,commands reference[EB/OL]. [2007]. http://.

[2] 周鹏,王昊. ANSYS 9.0 经典产品高级分析技术与实例详解[M]. 北京: 中国水利水电出版社,2005: 51-53,90-111.

[3] CRAWFORD J. Create a hardpoint on an area using existing keypoints[Z/OL]. [1999]. http://.