杀死单元后如何选择表面的单元? 50
浏览:912 回答:17
各位专家老师,我想用ANSYS APDL生死单元模拟激光打孔,将温度超过一个定值的单元杀死,采用热流密度模拟激光输入。仿真采用瞬态仿真,想在每一步求解后,将热流密度重新施加到新的边界上,即施加到下一层“未被杀死”的单元上。想了一些办法,但编程都相当繁锁。
感觉这个应该是个常见问题,是不是有更好的方法?还请大家给点思路,谢谢
各位专家老师,我想用ANSYS APDL生死单元模拟激光打孔,将温度超过一个定值的单元杀死,采用热流密度模拟激光输入。仿真采用瞬态仿真,想在每一步求解后,将热流密度重新施加到新的边界上,即施加到下一层“未被杀死”的单元上。想了一些办法,但编程都相当繁锁。
感觉这个应该是个常见问题,是不是有更好的方法?还请大家给点思路,谢谢
@htbbzzg
您好,我尝试用节点来定义,但遇到一些问题想请教一下,最下面是相关程序,
1是不知道最下程序这种思路可不可行?
2是关于SF这个命令,我开始只对一个节点用SF命令会报错,看了一下help文档还是不太明白SF对所选节点的要求是什么?
3是这段程序在运行时会报错,我不太明白为什么为报这个错?ENEXTN应该是ANSYS自带函数啊
Error:*DOWHILE parameter:ENEXTN is not defined.
4是关于ENEXTN(N,LOC)这个函数,help中说N代表节点号,LOC代表该节点所在单元的列表位置。假设有8个单元共享这个节点,那我ENEXTN(N,8)是不是就是取共享该节点的第8个单元的单元号?ENEXTN(N,9)=0?不知道我这样理解对吗?
*DO,I,1,NMAX,1 XCENTER = CutSpeed*(K-1)*TTinc !光斑X位置 ZCENTER = StartPosition + CutSpace*(CutNuming-1) !光斑Z位置 DISTANCE= SQRT((NX(I)-XCENTER)**2+(NZ(I)-ZCENTER)**2) *IF,DISTANCE,LT,RLaser,THEN *IF,NY(I),EQ,ly,THEN !如果节点在最上表面,直接给HFLUX nsel,a,node,,I *ELSE !如果没在最上表面,需要判断一下是不是在生死边界处 ElemList = 1 FlagBirthElem = 0 FlagDeathElem = 0 *DOWHILE,ENEXTN(I,ElemList) *GET,EState,ELEM,ENEXTN(I,ElemList),ATTR,LIVE !依次得到每个单元的选中及生死状态 *IF,EState,EQ,1,THEN !表示该单元选择中且激活 FlagBirthElem = 1 !表示存在激活单元 *ELSE FlagDeathElem = 1 !表示存在杀死单元 *ENDIF ElemList = ElemList+1 *ENDDO *IF,FlagDeathElem+FlagBirthElem,EQ,2,THEN !即该节点周围既存在活单元,也存在死单元 nsel,a,node,,I *ENDIF *ENDIF *ENDIF *ENDDO SF,all,HFLUX,Pavr !所有节点选择完后,一起赋热流密度
@htbbzzg
您好,谢谢您的回复,节点的方法我会再试一下。
我现在使用上次您说的单元的方法,我选出了所有上表面的单元,用SFE对单元进行加载,循环语句给每个单元分别加载,单元用SOLID70,用下面的语句依次加载热通量:
SFE,EnumCoorArray(I,J,1),6,HFLUX,0,Pavr
加载还是成功的,问题是我用下面的方法把之前的加载删除时,却没有删除掉,不知道是不是我的这个删除方法有问题?应该怎么一次性把热通量全删除掉
esel,s,live sfedele,all,all,HFLUX
@htbbzzg
您好,我又发现了一个新问题,就是在我使用选节点的方法选中我需要加载热流密度的节点后,使用下面的语句进行加载
我将加载的热流密度显示出来发现加载情况如下图所示,可以看到所选节点是没有问题的,但加载时我只需要竖直向下方向的加载,可实际上出现了横向方向的加载,这是我不需要的。SF这个命令好像没有办法决定加载方向,不知道我在选出节点后,应该如何加载才能只有竖直方向载荷