杀死单元后如何选择表面的单元? 50

浏览:926 回答:17

各位专家老师,我想用ANSYS APDL生死单元模拟激光打孔,将温度超过一个定值的单元杀死,采用热流密度模拟激光输入。仿真采用瞬态仿真,想在每一步求解后,将热流密度重新施加到新的边界上,即施加到下一层“未被杀死”的单元上。想了一些办法,但编程都相当繁锁。

感觉这个应该是个常见问题,是不是有更好的方法?还请大家给点思路,谢谢

单点打孔.gif


3.jpg


邀请回答 我来回答

全部回答

(5)
默认 最新
孙冬

@htbbzzg

您好,我又发现了一个新问题,就是在我使用选节点的方法选中我需要加载热流密度的节点后,使用下面的语句进行加载

SF,all,HFLUX,Pavr

我将加载的热流密度显示出来发现加载情况如下图所示,可以看到所选节点是没有问题的,但加载时我只需要竖直向下方向的加载,可实际上出现了横向方向的加载,这是我不需要的。SF这个命令好像没有办法决定加载方向,不知道我在选出节点后,应该如何加载才能只有竖直方向载荷

节点加载方式.jpg


2017年11月15日
评论 3 点赞
力学哥_ANSYS经典
是很繁琐,你这做得很不错了
2017年11月13日
评论 点赞
孙冬

@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     !所有节点选择完后,一起赋热流密度


2017年11月12日
评论 6 点赞
孙冬

@htbbzzg

您好,谢谢您的回复,节点的方法我会再试一下。

我现在使用上次您说的单元的方法,我选出了所有上表面的单元,用SFE对单元进行加载,循环语句给每个单元分别加载,单元用SOLID70,用下面的语句依次加载热通量:

SFE,EnumCoorArray(I,J,1),6,HFLUX,0,Pavr

image.png

加载还是成功的,问题是我用下面的方法把之前的加载删除时,却没有删除掉,不知道是不是我的这个删除方法有问题?应该怎么一次性把热通量全删除掉

esel,s,live
sfedele,all,all,HFLUX


2017年11月11日
评论 2 点赞
邹正刚
试试看,不是在单元表面上施加热载荷,而是在单元表面的节点上施加热载荷,这也,在杀死单元后,可以取得死单元表面的节点 (可能要去掉原来外表面的节点),施加新的载荷就比较方便了。
2017年11月11日
评论 1 点赞

没解决?试试专家一对一服务

换一批