ANSYS-apdl命令流笔记3------生死单元法

生死单元法

前言

通过生成和杀死单元,可以模拟那些单元数随着载荷步的进行不断增加,对按照要求排序后生成和杀死的单元施加载荷和约束,进行循环求解,达到特殊求解要求。如焊接等。

一、单元杀死过程

有限元模型
在这里插入图片描述
单元杀死过程

......			!前面步骤参考前面笔记
*do,I,1,nse		!对中间区域单元进行循环
	ekill,neorder(i)	!杀死排序后的单元
	esel,s,live	!单元选择
	eplot		!单元显示
*enddo

在这里插入图片描述

二、单元生成

.........	!前面步骤参考前面笔记
allsel,all
/seg,multi,ealive,0.2	!将生成单元动画显示,间隔0.2秒
*do,I,1,nse		!对中间区域单元循环
	ealive,neorder(i)	!生成排序后的单元
	esel,s,live	!选择没有杀死的单元
	eplot		!单元显示
	esel,all
	*do,j,1,4
		d,nelem(neorder(i),j),temp,max_tem	!对单元节点约束
	*enddo
*enddo
/seg,off,ealive,0.2	!结束单元动画生成
anim,1,1

在这里插入图片描述

三、完整命令

finish
/clear,start
/filname,lell
/title,fff
/prep7
/unit,si
et,1,13,4
et,2,13,4
!====================
mptemp,1,20,500,800,1200,1500
mpdata,ex,1,1,2.09e11,1.72e11,1.33e11,0.84e11,0.45e11
mpdata,ex,2,1,2.16e11,1.78e11,1.42e11,1.04e11,0.68e11
mpdata,ex,3,1,2.12e11,1.75e11,1.39e11,1.07e11,0.83e11
tb,bkin,1,5
tbtemp,20,1
tbdata,1,315e6,2.09e10
tbtemp,500,2
tbdata,1,212e6,1.72e10
tbtemp,800,3
tbdata,1,153e6,1.33e10
tbtemp,1200,4
tbdata,1,93e6,0.84e10
tbtemp,1500,5
tbdata,1,33e6,0.45e10		!材料1
!=======================
tb,bkin,2,5
tbtemp,20,1
tbdata,1,330e6,2.12e10
tbtemp,500,2
tbdata,1,213e6,1.75e10
tbtemp,800,3
tbdata,1,153e6,1.39e10
tbtemp,1200,4
tbdata,1,73e6,1.07e10
tbtemp,1500,5
tbdata,1,13e6,0.83e10		!材料2
!==========================
tb,bkin,3,5
tbtemp,20,1
tbdata,1,314e6,2.16e10
tbtemp,500,2
tbdata,1,203e6,1.78e10
tbtemp,800,3
tbdata,1,143e6,1.42e10
tbtemp,1200,4
tbdata,1,63e6,1.04e10
tbtemp,1500,5
tbdata,1,13e6,0.68e10!		!材料3
!=============================
mp,dens,1,7850
mp,dens,2,7770
mp,dens,3,7860			!密度
mp,alpx,1,1.23e-5
mp,alpx,2,1.38e-5
mp,alpx,3,1.48e-5		!线膨胀系数
mp,nuxy,1,0.3
mp,nuxy,2,0.29
mp,nuxy,3,0.29			!泊松比
mp,kxx,1,33
mp,kxx,2,32
mp,kxx,3,34				!导热系数
mp,c,1,561
mp,c,2,683
mp,c,3,983				!比热容
mp,murx,1,1
mp,murx.2.1
mp,murx,3,1				!相对磁导率
mp,reft,1,20
mp,reft,2,1500
mp,reft,3,20			!参考温度
!==================================
!==================================
*AFUN,DEG
csys,0
width=1
beight=0.3
ar=0.14*tan(30)
ex=0.01*tan(60)
df=ar+ex
cf=df/cos(60)
!============================
k,1,0,0,0
k,2,width/2-0.01-ar,0,0
k,3,width/2+0.01+ar,0,0
k,4,width,0,0
k,5,width/2-0.01,beight/2-0.01,0 
k,6,width/2+0.01,beight/2-0.01,0
k,7,width/2-0.01,beight/2+0.01,0
k,8,width/2+0.01,beight/2+0.01,0
k,9,0,beight,0
k,10,width/2-0.01-ar,beight,0
k,11,width/2+0.01+ar,beight,0
k,12,width,beight,0
!=============================
n,1,width/2+0.01+ar,beight,0				!模型中的A点
n,2,width,beight,0						!B点
n,3,width/2+0.01+ar,0,0					!C点
larc,10,11,7,cf
larc,2,3,5,cf
a,1,2,5,7,10,9
a,10,7,5,2,3,6,8,11
a,3,4,12,11,8,6
/traid,off			!关掉坐标的三角符号显示
/plots,info,0			!关掉图形屏幕中信息的显示
/devices,vector,1		!采用向量标示
esize,0.03
type,2
mat,2
amesh,2
esize,0.03
type,1
mat,1
amesh,1
mat,3
amesh,3
nummrg,all
numcmp,all
/image,save,vmesh,bmp
/devices,vector,0			!采用光栅显示模式
finish
!===================================
/solu
*get,minx,node,,mnloc,x
nsel,s,loc,x,minx
d,all,ux,0
d,all,temp,20
*get,miny,node,,mnloc,y
nsel,s,loc,y,miny
d,all,uy,0
nsel,all
*get,maxx,node,,mxloc,x
nsel,s,loc,x,maxx
d,all,temp,20
!======================
*set,nna,2
esel,all
*get,emax,elem,,num,max
asel,s,area,,nna
esla
*get,nse,elem,,count
*dim,ne,,nse
*dim,n1,,nse
*dim,n2,,nse
*dim,nex,,nse
*dim,ney,,nse
*dim,neorder,,nse
ii=0
*do,I,1,emax
	*if,esel(i),eq,1,then
		ii=ii+1
		ne(ii)=i
	*endif
*enddo			!将焊缝处单元编号存于数组中
*do,I,1,nse
	*get,ney(i),elem,ne(i),cent,y
	*get,nex(i),elem,ne(i),cent,x
*enddo			!将焊缝区单元质心x,y坐标分别放入nex,ney数组中
d=0
*do,I,1,nse
	*if,ney(i),ge,beight/2,then
		d=d+1
		n2(d)=ne(i)
	*endif
*enddo
c=0
*do,I,1,nse
	*if,ney(i),lt,beight/2,then
		c=c+1
		n1(c)=ne(i)
	*endif
*enddo		!将焊缝上面单元存于n2中,下面存于n1中
esel,none
*do,I,1,d
	esel,a,elem,,n2(i)
*enddo		!选取焊缝上边单元
eplot
*create,shanghanf,mac
mine=0
*dim,ne2,,d
*dim,nex2,,d
*dim,ney2,,d
*do,i1,1,d
	esel,u,elem,,mine
	*get,nse2,elem,,count
	ii=0
	*do,I,1,emax
		*if,esel(i),eq,1,then
			ii=ii+1
			ne2(ii)=i
		*endif
	*enddo
	*do,I,1,nse2
		*get,ney2(i),elem,ne2(i),cent,y
		*get,nex2(i),elem,ne2(i),cent,x
	*enddo
	miny=1e10
	minx=1e10
	*do,I,1,nse2
		*if,ney2(i),lt,miny,then
			miny=ney2(i)
			minx=nex2(i)
			mine=ne2(i)
		*else
		*if,ney2(i),eq,miny,then
		*if,nex2(i),lt,minx,then
			miny=ney2(i)
			minx=nex2(i)
			mine=ne2(i)
		*endif
		*endif
		*endif
	*enddo
	neorder(i1)=mine
*enddo			!对上半部分单元按y轴进行排序
*end
*create,xiahanf,mac
maxe=0
esel,none
*do,I,1,c
	esel,a,elem,,n1(i)
*enddo
*dim,ne1,,c
*dim,nex1,,c
*dim,ney1,,c
*do,i1,1,c
	esel,u,elem,,maxe
	*get,nse3,elem,,count
	ii=0
	*do,I,1,emax
		*if,esel(i),eq,1,then
			ii=ii+1
			ne1(ii)=i
		*endif
	*enddo
	*do,I,1,nse3
		*get,ney1(i),elem,ne1(i),cent,y
		*get,nex1(i),elem,ne1(i),cent,x
	*enddo
	maxy=-1e10
	maxx=-1e10
	*do,I,1,nse3
		*if,ney1(i),gt,maxy,then
			maxy=ney1(i)
			maxx=nex1(i)
			maxe=ne1(i)
		*else
			*if,ney1(i),eq,maxy,then
			*if,nex1(i),lt,maxx,then
				maxy=ney1(i)
				maxx=nex1(i)
				maxe=ne1(i)
			*endif
			*endif
		*endif
	*enddo
	neorder(i1+d)=maxe
*enddo
*end
shanghanf
xiahanf
!===================
max_tem=1500
dt1=1e-3
dt=5
t=0
esel,all
eplot
/auto,1
/replot
*do,I,1,nse
	ekill,neorder(i)
	esel,s,live
	eplot
*enddo
eplot
allsel,all
/seg,multi,ealive,0.2
*do,I,1,nse
	ealive,neorder(i)
	esel,s,live
	eplot
	esel,all
	*do,j,1,4
		d,nelem(neorder(i),j),temp,max_tem
	*enddo
*enddo
/seg,off,ealive,0.2
anim,1,

总结

生死单元法可以对按照某种条件排序后的单元,进行生成和杀死,在这个过程中单元上的载荷及约束也会跟着生成和杀死,这可以很容易的对那些动态单元进行模拟。

  • 20
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值