killera27 发表于 2012-2-23 21:45:57

激光快速成型的问题

/CLEAR,START
/FILNAME,PATH-TEMPERATURE-STRESS,0
/CONFIG, NRES, 5000
/PREP7
/VIEW,1,1,2,3   
/ANG,1
!=====================================
!材料热分析单元(表面效应单元待考虑)
ET,1,SOLID70
!=====================================
!材料属性(两种材料GH4169 FGH95)
!材料的热分析参数:比热容 热导率 密度 热焓
!材料的结构分析参数:热膨胀系数 弹性模量 泊松比 屈服强度等
!某些材料属性需定义随温度变化的表格以反映材料在不同的温度下的状态
MPTEMP,,,,,,,,
MPTEMP,1,0
MPDATA,DENS,1,,7850
MPTEMP,,,,,,,,
MPTEMP,1,20
MPTEMP,2,300
MPTEMP,3,900
MPTEMP,4,1400   
MPTEMP,5,2000   
MPDATA,KXX,1,,18.6
MPDATA,KXX,1,,21.4
MPDATA,KXX,1,,28.4
MPDATA,KXX,1,,33.9
MPDATA,KXX,1,,48
MPTEMP,,,,,,,,
MPTEMP,1,20
MPTEMP,2,600
MPTEMP,3,800
MPTEMP,4,1400   
MPTEMP,5,2000   
MPDATA,C,1,,502
MPDATA,C,1,,612
MPDATA,C,1,,635
MPDATA,C,1,,659
MPDATA,C,1,,670
MPTEMP,,,,,,,,
MPTEMP,1,20
MPTEMP,2,1300   
MPTEMP,3,1410   
MPTEMP,4,1440   
MPTEMP,5,1550   
MPTEMP,6,2000   
MPDATA,ENTH,1,,7.88e7   
MPDATA,ENTH,1,,6.131e9
MPDATA,ENTH,1,,7.347e9
MPDATA,ENTH,1,,9.145e9
MPDATA,ENTH,1,,1.03e10
MPDATA,ENTH,1,,1.272e10
!定义随温度变化的对流换热系数
*DEL,_FNCNAME   
*DEL,_FNCMTID   
*DEL,_FNCCSYS   
*SET,_FNCNAME,'CoffConv'
*SET,_FNCCSYS,0
! /INPUT,.\Desktop\Conv.func,,,1
*DIM,%_FNCNAME%,TABLE,6,20,1,,,,%_FNCCSYS%
!   
! Begin of equation: 0.8*(5.67/10^8)*({TEMP}^2+293^2)*({TEMP}+293)+30   
*SET,%_FNCNAME%(0,0,1), 0.0, -999   
*SET,%_FNCNAME%(2,0,1), 0.0
*SET,%_FNCNAME%(3,0,1), 0.0
*SET,%_FNCNAME%(4,0,1), 0.0
*SET,%_FNCNAME%(5,0,1), 0.0
*SET,%_FNCNAME%(6,0,1), 0.0
*SET,%_FNCNAME%(0,1,1), 1.0, -1, 0, 10, 0, 0, 0
*SET,%_FNCNAME%(0,2,1), 0.0, -2, 0, 8, 0, 0, -1
*SET,%_FNCNAME%(0,3,1),   0, -3, 0, 1, -1, 17, -2   
*SET,%_FNCNAME%(0,4,1), 0.0, -1, 0, 5.67, 0, 0, -3
*SET,%_FNCNAME%(0,5,1), 0.0, -2, 0, 1, -1, 4, -3
*SET,%_FNCNAME%(0,6,1), 0.0, -1, 0, 0.8, 0, 0, -2   
*SET,%_FNCNAME%(0,7,1), 0.0, -3, 0, 1, -1, 3, -2
*SET,%_FNCNAME%(0,8,1), 0.0, -1, 0, 2, 0, 0, 5
*SET,%_FNCNAME%(0,9,1), 0.0, -2, 0, 1, 5, 17, -1
*SET,%_FNCNAME%(0,10,1), 0.0, -1, 0, 293, 0, 0, 0   
*SET,%_FNCNAME%(0,11,1), 0.0, -4, 0, 2, 0, 0, -1
*SET,%_FNCNAME%(0,12,1), 0.0, -5, 0, 1, -1, 17, -4
*SET,%_FNCNAME%(0,13,1), 0.0, -1, 0, 1, -2, 1, -5   
*SET,%_FNCNAME%(0,14,1), 0.0, -2, 0, 1, -3, 3, -1   
*SET,%_FNCNAME%(0,15,1), 0.0, -1, 0, 293, 0, 0, 5   
*SET,%_FNCNAME%(0,16,1), 0.0, -3, 0, 1, 5, 1, -1
*SET,%_FNCNAME%(0,17,1), 0.0, -1, 0, 1, -2, 3, -3   
*SET,%_FNCNAME%(0,18,1), 0.0, -2, 0, 30, 0, 0, -1   
*SET,%_FNCNAME%(0,19,1), 0.0, -3, 0, 1, -1, 1, -2   
*SET,%_FNCNAME%(0,20,1), 0.0, 99, 0, 1, -3, 0, 0
! End of equation: 0.8*(5.67/10^8)*({TEMP}^2+293^2)*({TEMP}+293)+30
!-->
!=====================================
!一些几何建模和控制加载所需要的参数
!基材的大小为0.08m*0.05m*0.01m
!BaseLength=0.08
!BaseWidth=0.05
!BaseHeight=0.01
BaseLength=0.02
BaseWidth=0.02
BaseHeight=0.004
!工件大小为0.06m*0.03m*0.003m
!PartLength=0.06
!PartWidth=0.03
!PartHeight=0.003
PartLength=0.008
PartWidth=0.008
PartHeight=0.0012
!厚度每层0.0006m(0.6mm)
Thickness=0.0006
Layer=PartHeight/Thickness
!环境温度
Temp=20
!初始温度
InitTemp=300
!对流换热系数
!CoffConv=30
!激光功率 光斑大小(面积) 扫描间距 吸收因子
LaserPower=1050
SpotDia=0.001
PI=3.141592653
Area=PI*((SpotDia/2)**2)
ScanDis=0.001
Factor=0.3
!每个载荷步的位移
StepDis=SpotDia/2
!扫描速度
Velocity=0.01
!每个载荷步的时间 扫描一条线的时间 扫描一层的时间
StepTime=StepDis/Velocity
!LineTime=(PartLength+SpotDia)/Velocity
!LineStepNum=(PartLength+SpotDia)/StepDis
LineTime=PartLength/Velocity
LineStepNum=PartLength/StepDis
LayerTime=LineTime*PartWidth/ScanDis
LayerStepNum=lineStepNum*PartWidth/ScanDis
!=====================================
!建模并划分网格
block,-BaseLength/2,-PartLength/2,-BaseHeight,0,-BaseWidth/2,-PartWidth/2
block,-BaseLength/2,-PartLength/2,-BaseHeight,0,-PartWidth/2,PartWidth/2
block,-BaseLength/2,-PartLength/2,-BaseHeight,0,PartWidth/2,BaseWidth/2
block,-PartLength/2,PartLength/2,-BaseHeight,0,-BaseWidth/2,-PartWidth/2
block,-PartLength/2,PartLength/2,-BaseHeight,0,-PartWidth/2,PartWidth/2
block,-PartLength/2,PartLength/2,-BaseHeight,0,PartWidth/2,BaseWidth/2
block,PartLength/2,BaseLength/2,-BaseHeight,0,-BaseWidth/2,-PartWidth/2
block,PartLength/2,BaseLength/2,-BaseHeight,0,-PartWidth/2,PartWidth/2
block,PartLength/2,BaseLength/2,-BaseHeight,0,PartWidth/2,BaseWidth/2
block,-PartLength/2,PartLength/2,0,PartHeight,-PartWidth/2,PartWidth/2
vglue,all
nummrg,all
!对工件划分网格
lsel,s,loc,y,PartHeight,PartHeight
lesize,all,0.0005,!水平方向上单元尺寸为0.5mm
lsel,s,loc,x,-PartLength/2,-PartLength/2
lsel,r,loc,z,-PartWidth/2,-PartWidth/2
lsel,r,loc,y,0,PartHeight
lesize,all,0.0006,!高度方向上的单元尺寸等于层厚 可设为层厚的1/n以提高精确度
vsel,s,loc,y,0,PartHeight
type,1
mat,1
mshape,0,3D
mshkey,1
vmesh,all
lsel,s,loc,x,-PartLength/2,-PartLength/2
lsel,r,loc,y,-BaseHeight,0
lsel,r,loc,z,-PartWidth/2,-PartWidth/2
lesize,all,0.002,!基材高度方向上单元尺寸为2mm
lsel,s,loc,x,-PartLength/2,-PartLength/2
lsel,r,loc,y,0,0
lsel,r,loc,z,-BaseWidth/2,-PartWidth/2
lesize,all,0.002,!基材宽度方向上单元尺寸为2mm
lsel,s,loc,x,-BaseLength/2,-PartLength/2
lsel,r,loc,y,0,0
lsel,r,loc,z,-PartWidth/2,-PartWidth/2
lesize,all,0.002,!基材长度方向上单元尺寸为2mm
vsel,s,loc,y,-BaseHeight,0
type,1
mat,1
mshape,0,3D
mshkey,1
vmesh,all
!=====================================
!加载初始条件和边界条件
nsel,s,loc,y,-BaseHeight,0
ic,all,temp,InitTemp
allsel,all
!基体左侧
nsel,s,loc,y,-BaseHeight,0
nsel,r,loc,x,-BaseLength/2,-BaseLength/2
sf,all,conv,%CoffConv%,Temp
allsel,all
!基体右侧
nsel,s,loc,y,-BaseHeight,0
nsel,r,loc,x,BaseLength/2,BaseLength/2
sf,all,conv,%CoffConv%,Temp
allsel,all
!基体前侧
nsel,s,loc,y,-BaseHeight,0
nsel,r,loc,z,-BaseWidth/2,-BaseWidth/2
sf,all,conv,%CoffConv%,Temp
allsel,all
!基体后侧
nsel,s,loc,y,-BaseHeight,0
nsel,r,loc,z,BaseWidth/2,BaseWidth/2
sf,all,conv,%CoffConv%,Temp
allsel,all
finish
!=====================================
!分析参数设置 瞬态分析 完全N-R方法 打开线性搜索 收敛准则 控制热流
/solu
antype,4
trnopt,full
lnsrch,on
!deltim,0.01,0.001,0.05 此句和下面一句二者选一即可
nsubst,4
cnvtol,heat,,0.01,2,0.000001,
outres,nsol,last
toffst,273 !设置温度偏移

!=====================================
!杀死工件单元
nsel,s,loc,y,0,PartHeight
esln,s,1,all
ekill,all
allsel,all
!约束不活动节点的自由度
esel,s,live
nsle,s
nsel,inve
d,all,all,0
eplot
allsel,all
!基体上表面
nsel,s,loc,y,0
nsel,r,loc,z,-BaseWidth/2,BaseWidth/2
sf,all,conv,%CoffConv%,Temp
allsel,all
!=====================================
!预热
*do,i,1,2
m=mod(i,2)
*if,m,eq,1,then!奇数次向右边扫描
   *do,line_num,1,PartWidth/ScanDis,1 !要扫描多少道
      *do,step_num,1,LineStepNum,1 !每道要扫描多少步
      !已经预热了几次 正在预热的一次已经扫描的多少道 正在扫描的那一道当前是多少步
      time,LayerTime*(i-1)+(line_num-1)*LineTime+step_num*StepTime
      kbc,1
      !计算当前载荷步中激光束中心的位置(激光从上到下 -z->z 从左到右 -x->x)
      !spot_x=-PartLength/2-SpotDia/2+(step_num-1+0.5)*StepDis
      !spot_y=-PartWidth/2+(line_num-1+0.5)*ScanDis
spot_x=-PartLength/2+(step_num-1+0.5)*StepDis
      spot_y=-PartWidth/2+(line_num-1+0.5)*ScanDis
!此步骤有待商榷 因为选择了表层单元的所有节点 施加热流密度载荷
      nsel,s,loc,y,0
esel,s,live
esln,r,0 !选择了上面一层的单元
nsle,s,1 !上面一层单眼所包含的所有节点
nsel,r,loc,x,spot_x-SpotDia/2,spot_x+SpotDia/2
nsel,r,loc,z,spot_y-SpotDia/2,spot_y+SpotDia/2
esln,s,1
sfe,all,4,hflux,,LaserPower*Factor/Area,,,
allsel,all
solve
save
sfedele,all,4,hflux
allsel,all
!重新加载对流换热边界条件
esel,s,live
nsle,s,1
nsel,r,loc,y,0
nsel,r,loc,x,spot_x-SpotDia/2,spot_x+SpotDia/2
nsel,r,loc,z,spot_y-SpotDia/2,spot_y+SpotDia/2
sf,all,conv,%CoffConv%,Temp
      allsel,all
      esel,s,live
      eplot
      *enddo
   *enddo
*else
   *do,line_num,1,PartWidth/ScanDis,1 !要扫描多少道
      *do,step_num,1,LineStepNum,1 !每道要扫描多少步
      !已经预热了几次 正在预热的一次已经扫描的多少道 正在扫描的那一道当前是多少步
      time,LayerTime*(i-1)+(line_num-1)*LineTime+step_num*StepTime
      kbc,1
      !计算当前载荷步中激光束中心的位置(激光从上到下 -z->z 从右到左 x->-x)
      !spot_x=PartLength/2+SpotDia/2-(step_num-1+0.5)*StepDis
      !spot_y=-PartWidth/2+(line_num-1+0.5)*ScanDis
      spot_x=PartLength/2-(step_num-1+0.5)*StepDis
      spot_y=-PartWidth/2+(line_num-1+0.5)*ScanDis
!此步骤有待商榷 因为选择了表层单元的所有节点 施加热流密度载荷
      nsel,s,loc,y,0
esel,s,live
esln,r,0
nsle,s,1
nsel,r,loc,x,spot_x-SpotDia/2,spot_x+SpotDia/2
nsel,r,loc,z,spot_y-SpotDia/2,spot_y+SpotDia/2
esln,s,1
sfe,all,4,hflux,,LaserPower*Factor/Area,,,
allsel,all
solve
save
sfedele,all,4,hflux
allsel,all
!重新加载对流换热边界条件
esel,s,live
nsle,s,1
nsel,r,loc,y,0
nsel,r,loc,x,spot_x-SpotDia/2,spot_x+SpotDia/2
nsel,r,loc,z,spot_y-SpotDia/2,spot_y+SpotDia/2
sf,all,conv,%CoffConv%,Temp
      allsel,all
      esel,s,live
      eplot
      *enddo
   *enddo
*endif
*enddo
!=====================================
!熔覆
*do,layer_num,1,Layer,1!要扫描多少层
m=mod(layer_num,2)
*if,m,eq,1,then!奇数次向右边扫描
*do,line_num,1,PartWidth/ScanDis,1 !要扫描多少道
*do,step_num,1,LineStepNum,1 !每道要扫描多少步
!预热两次的时间要算进去
time,LayerTime*(2+layer_num-1)+(line_num-1)*LineTime+step_num*StepTime
         kbc,1
          !计算当前载荷步中激光束中心的位置(激光从上到下 -z->z 从左到右 -x->x)
         !spot_x=-PartLength/2-SpotDia/2+(step_num-1+0.5)*StepDis
!spot_y=-PartWidth/2+(line_num-1+0.5)*ScanDis
spot_x=-PartLength/2+(step_num-1+0.5)*StepDis
spot_y=-PartWidth/2+(line_num-1+0.5)*ScanDis
!计算要激活的单元的位置并激活单元
nsel,s,loc,y,Thickness*(layer_num-1),Thickness*layer_num
nsel,r,loc,x,spot_x-SpotDia/2,spot_x+SpotDia/2
nsel,r,loc,z,spot_y-SpotDia/2,spot_y+SpotDia/2
cm,cur_nodes,node !当前激活单元的所有节点
esln,s,1
ealive,all
allsel,all
!激活单元上表面并施加热流密度
nsel,s,loc,y,Thickness*(layer_num-1),Thickness*layer_num
nsel,r,loc,x,spot_x-SpotDia/2,spot_x+SpotDia/2
nsel,r,loc,z,spot_y-SpotDia/2,spot_y+SpotDia/2
esln,s,1
sfe,all,4,hflux,,LaserPower*Factor/Area,,,
!删除激活的单元节点上原来施加的自由度约束
ddele,cur_nodes,all

allsel,all
!如果单元在工件的四周 那么其对应面施加对流换热条件
!左侧
cmsel,s,cur_nodes,node
nsel,r,loc,x,-PartLength/2
sf,all,conv,%CoffConv%,Temp
allsel,all
!右侧
cmsel,s,cur_nodes,node
nsel,r,loc,x,PartLength/2
sf,all,conv,%CoffConv%,Temp
allsel,all
!前侧
cmsel,s,cur_nodes,node
nsel,r,loc,z,-PartWidth/2
sf,all,conv,%CoffConv%,Temp
allsel,all
!后侧
cmsel,s,cur_nodes,node
nsel,r,loc,z,PartWidth/2
sf,all,conv,%CoffConv%,Temp
allsel,all
!求解
solve
save
sfedele,all,4,hflux
allsel,all
!单元上表面施加换热条件
cmsel,s,cur_nodes,node
nsel,r,loc,y,Thickness*layer_num
sf,all,conv,%CoffConv%,Temp
allsel,all
!删除被激活单元的下表面(即原来的表面)的对流换热条件
cmsel,s,cur_nodes,node
nsel,r,loc,y,Thickness*(layer_num-1)
sfdele,all,conv
allsel,all
esel,s,live
eplot
*enddo
*enddo
*else
*do,line_num,1,PartWidth/ScanDis,1 !要扫描多少道
*do,step_num,1,LineStepNum,1 !每道要扫描多少步
!预热两次的时间要算进去
time,LayerTime*(2+layer_num-1)+(line_num-1)*LineTime+step_num*StepTime
         kbc,1
          !计算当前载荷步中激光束中心的位置(激光从上到下 -z->z 从右到左 -x->x)
         !spot_x=PartLength/2+SpotDia/2-(step_num-1+0.5)*StepDis
!spot_y=-PartWidth/2+(line_num-1+0.5)*ScanDis
spot_x=PartLength/2-(step_num-1+0.5)*StepDis
spot_y=-PartWidth/2+(line_num-1+0.5)*ScanDis
!计算要激活的单元的位置并激活单元
nsel,s,loc,y,Thickness*(layer_num-1),Thickness*layer_num
nsel,r,loc,x,spot_x-SpotDia/2,spot_x+SpotDia/2
nsel,r,loc,z,spot_y-SpotDia/2,spot_y+SpotDia/2
cm,cur_nodes,node !当前激活单元的所有节点
esln,s,1
ealive,all
allsel,all
!激活单元上表面并施加热流密度
nsel,s,loc,y,Thickness*(layer_num-1),Thickness*layer_num
nsel,r,loc,x,spot_x-SpotDia/2,spot_x+SpotDia/2
nsel,r,loc,z,spot_y-SpotDia/2,spot_y+SpotDia/2
esln,s,1
sfe,all,4,hflux,,LaserPower*Factor/Area,,,
!删除激活的单元节点上原来施加的自由度约束
ddele,cur_nodes,all

allsel,all
!如果单元在工件的四周 那么其对应面施加对流换热条件
!左侧
cmsel,s,cur_nodes,node
nsel,r,loc,x,-PartLength/2
sf,all,conv,%CoffConv%,Temp
allsel,all
!右侧
cmsel,s,cur_nodes,node
nsel,r,loc,x,PartLength/2
sf,all,conv,%CoffConv%,Temp
allsel,all
!前侧
cmsel,s,cur_nodes,node
nsel,r,loc,z,-PartWidth/2
sf,all,conv,%CoffConv%,Temp
allsel,all
!后侧
cmsel,s,cur_nodes,node
nsel,r,loc,z,PartWidth/2
sf,all,conv,%CoffConv%,Temp
allsel,all
!求解
solve
save
sfedele,all,4,hflux
allsel,all
!单元上表面施加换热条件
cmsel,s,cur_nodes,node
nsel,r,loc,y,Thickness*layer_num
sf,all,conv,%CoffConv%,Temp
allsel,all
!删除被激活单元的下表面(即原来的表面)的对流换热条件
cmsel,s,cur_nodes,node
nsel,r,loc,y,Thickness*(layer_num-1)
sfdele,all,conv
allsel,all
esel,s,live
eplot
*enddo
*enddo
*endif
*enddo
!=====================================
这是我做的一个数值模拟的例子 有一些问题想要请教大家
1.我把辐射(工件表面向空气中的辐射)折算到表面换热系数中 但是我的单位用的是摄氏度 在用函数表示的时候 温度是一个主变量 (我已经设置了温度的偏移)这里的温度变量是会自动进行偏移的吧 而温度常数(空气的温度)是要自己用绝对温度表示?
比如说我定义的函数是0.8*(5.67/10^8)*({TEMP}^2+293^2)*({TEMP}+293)+30   
其中30是原来的对流换热系数 前面的是辐射折算的 空气假设为20度 0.8是黑度 5.67*10^-8是常数 这样写对吗?
2.我施加的是热流密度 而热流密度会覆盖对流 这样的话只有在加载之后才能在被激活的单元的上表面重新施加对流条件 就是说求解完了 才可以在上表面施加条件 本次求解的过程中 上表面的换热是考虑不到的 这个会不会对求解有太大的影响? 应为加载的瞬间单元表面的温度很高啊 虽然时间很短 但是可能引起这个瞬时的表面温度不准确
如果要用表面单元的话 如何考虑? 对流条件和热流密度的加载是都加载在表面单元上 还是 前者在表面单元上 后者直接选择相应的单元进行施加? 表面单元也要进行杀死和激活的操作吧(我的分析是多层的熔覆)?
3.一开始杀死单元 活的单元中的节点以外的节点的自由度是要全部约束起来对吧 然而在激活某一个单元的时候这个约束要删除 但是删除了这个约束之后 要不要加一个初始的条件确定求解的时候的初始值 就是说命令中要不要在删除被激活单元的自由度约束之后再对这些节点加一个初始温度?








killera27 发表于 2012-2-24 13:38:50

自己顶一下吧 哎 难道就没有人指导下嘛 难得我把apdl全部贴出来了

victorlxl 发表于 2012-3-2 07:35:45

牛人啊!!!师兄~能留个qq吗?

cpw501 发表于 2013-6-6 19:07:48

请问楼主,你这个是同步送粉的吗????!!!

lzq537 发表于 2014-4-1 15:43:28

先运行一下看看,学习学习

littletree0801 发表于 2014-4-2 20:42:42

我也在学习中多交流啊,激光同步送粉立体成型

zzzbbw 发表于 2014-6-25 12:26:09

顶一下,希望能多多交流!

fhy19911123 发表于 2016-1-1 19:31:26

楼主您好,我的课题在做激光重熔过程的温度场数值模拟,由于不是同步送粉,所以不需要生死单元法,我在做的时候卡在载荷施加这一步了。我需要在模型表面加载三个道次的移动高斯热源,两个道次间隔时间1秒,希望可以得到您的帮助,感激不尽。
页: [1]
查看完整版本: 激光快速成型的问题