昨天試算和修改你的命令流,主要是添加了很多輸出中間結(jié)果的命令,進(jìn)行檢查分析。最終確定重啟動(dòng)確實(shí)會(huì)導(dǎo)致生死單元的定義丟失,通過(guò)重新定義生死單元可以解決這個(gè)問(wèn)題。
看你的命令流,只是殺死了材料 1 的所有單元,所以定義生死單元還是很方便的。不過(guò),有一個(gè)問(wèn)題我沒(méi)有修改,那就是你定義的約束條件好像涉及了少數(shù)材料 1 的單元,而你激活了與約束條件有關(guān)的單元,因而計(jì)算過(guò)程中死單元的數(shù)量不斷在變化。不知道這是否你的本意。
除了為了檢查中間結(jié)果的部分外,修改的重點(diǎn)有一以幾個(gè):
1 在循環(huán)中,solve 命令之后增加了 save 命令,以保證盤(pán)上存放的是最后一個(gè)計(jì)算成功的子步的模型。
2 在循環(huán)中,后處理之后,回到求解模塊時(shí),恢復(fù)了 resume 命令,以保證模型與上一次求解后的狀態(tài)一致。
3 由于上兩步不能保證死單元不變,所以在 Antype Rest 命令之后重新定義了死單元。
修改后的命令流如下。其中,用 *cfopen 命令打開(kāi)了一個(gè)用于存放中間結(jié)果的文件,計(jì)算結(jié)束后可以看一下該文件,可以看到死計(jì)算過(guò)程單及元數(shù)量的變化。
!*** chiko75
finish
/clear
/filn, chiko75-03,1
/title, chiko75 -03
/units,si
/prep7
ET,1,SOLID70!responsive structural element for solid185
ET,2,SOLID90!responsive structural element for solid186
!et,2,suff_h152
!keyopt,2,4,0
!keyopt,2,5,1
!keyopt,2,8,3
!keyopt,2,9,1
mat3_top=1
mat_h13=2
!***
!*** /input,FeCrBSi_top_ther,dat,E:\acdE\ANSYSdb\tesueship\matpara
!*** /input,H13_ther,dat,E:\acdE\ANSYSdb\tesueship\matpara
/input, mat3_top,txt !*** 讀入兩個(gè)材料屬性文件
/input, mat_h13,txt
!***
mpdele,enth,1
mpdele,enth,2
w_matrix=0.05
l_matrix=0.08
h_matrix=0.010
h_clad=0.002
esize_ref=0.001
D=0.002
pi=acos(-1)
dists_inc=esize_ref
v_scan=10e-3
temp_preh=298.15
count=4 !l_matrix/v_scan
/COM,create volume
block,-D/2,D/2,0,l_matrix,0,h_clad
cm,clad,volu
block,-1.5*D,1.5*D,0,l_matrix,0,-h_matrix
block,-(1.5*D+2*esize_ref),-1.5*D,0,l_matrix,0,-h_matrix
block,1.5*D,(1.5*D+2*esize_ref),0,l_matrix,0,-h_matrix
block,-6*D,-(1.5*D+2*esize_ref),0,l_matrix,0,-h_matrix
block,(1.5*D+2*esize_ref),6*D,0,l_matrix,0,-h_matrix
block,-w_matrix/2,-6*D,0,l_matrix,0,-h_matrix
block,6*D,w_matrix/2,0,l_matrix,0,-h_matrix
allsel
vglue,all
vsel,s,loc,x,-w_matrix/2,-6*D
vsel,a,loc,x,6*D,w_matrix/2
cm,matrix_hex,volu
vsel,s,loc,x,-6*D,6*D
vsel,r,loc,z,0,-l_matrix
cm,matrix_tet,volu
allsel
cmgrp,matrix,matrix_hex,matrix_tet
allsel
lsel,s,loc,x,-1.5*D,1.5*D
lesize,all,esize_ref
lsel,s,loc,x,-(1.5*D+esize_ref)
lsel,a,loc,x,(1.5*D+esize_ref)
lsel,u,tan1,z,1
lsel,u,tan1,z,-1
lesize,all,esize_ref
lsel,s,loc,x,-4*D,-w_matrix
lsel,a,loc,x,4*D,w_matrix
lsel,r,loc,z,-h_matrix/2
lesize,all,4*esize_ref
lsel,s,loc,x,-4*D,-w_matrix
lsel,a,loc,x,4*D,w_matrix
lsel,r,tan1,z,0
lesize,all,4*esize_ref
mat,1
type,1
mshkey,1
mshape,0
vmesh,clad
mat,2
type,1
mshkey,1
mshape,0
vmesh,matrix_hex
!vmesh,7
type,2
mshkey,0
mshape,1
!vmesh,5
!vmesh,6
vmesh,matrix_tet
numcmp,area
vimp,matrix_tet,0,3
numcmp,all !*** 壓縮實(shí)體編號(hào),去掉空白的編號(hào)
save
/solu
*cfopen, chiko75-rl3,txt ! 定義一個(gè)輸出文件,記錄一些中間結(jié)果
antype,4
timint,1,therm
solcontrol,on,,
tintp,,,,1,,,,,,
thopt,full,0.05,64
neqit,100
trnopt,full
nropt,full,,on
pred,on,,on
cutcontrol,noiterpredict,0
cutcontrol,cutbackfactor,0.5
cutcontrol,plslimit,10,
cnvtol,temp,,0.01
cnvtol,heat,,0.01,,1e-6
kbc,0
lumpm,0
lnsrch,1
autots,1
ncnv,2
outres,all,all!basic,last
tunif,temp_preh
allsel
nsel,s,loc,z,-h_matrix
sf,all,conv,5,temp_preh
allsel
time,1e-4
deltim,5e-5,5e-5,5e-5
*vwrite,
(/' First solu & solve time=1e-4')
!*** 寫(xiě)中間結(jié)果文件,下同
solve
/solu
!*** 這個(gè) /solu 是多余的,可以刪除試試,是否影響計(jì)算結(jié)果
*vwrite,
(/' Second solu - undeleted')
esel,s,mat,,1
ekill,all
cm, emat_1,elem !*** 為材料 1 死單元建組
!*** 將當(dāng)前死單元數(shù)寫(xiě)入中間結(jié)果文件,下同
*get,ekilled, elem, 0, count
cm, ekilled, elem
*vwrite, ekilled
(' Ekill all elements for mat 1, count =',f6.0 )
esel,s,live
eplot
!rescontrol,define,all,all
i=1
*do,i,0,count ! count = 4
disy=i*dists_inc
t=(disy+dists_inc)/v_scan
!!!!!
*vwrite, i,t
(//' In *do, i=',f5.0, ' time=',f10.8)
esel,s,mat,,1
nsle,s,1
nsel,r,loc,y,disy-dists_inc,disy+dists_inc,0.00001
esln,s,1 !*** 可能會(huì)包含部分 mat 1 的單元
ealive,all !*** 導(dǎo)致部分死單元被激活
bf,all,hgen,4e10
esel,s,live
eplot
csys,0
allsel
esel,s,live
nsle,s,1,
nsel,r,ext
nsel,u,loc,z,-h_matrix !------改
sf,all,conv,50,temp_preh !------改
time,t
nsubst,5,1000,5,1
allsel
!求解
SOLVE
parsav,all,parareco-i1,txt !** 保存參數(shù)
save !*** 求解后將模型存盤(pán)
!*** 檢查死單元
cm, e_befor,elem !*** 保存當(dāng)前單元
esel,s,live
esel,inve
cm, ekilled_2,elem !*** 為死單元建組
*get,ekilled_2, elem, 0, count
!!!!!
*vwrite, i, ekilled_2
(' After solve, i =',f5.0,' killed elem count = ',f7.0)
cmsel, s, e_befor !*** 恢復(fù)原來(lái)單元組
/solu
!*** 這個(gè) /solu 是多余的,可以刪除試試,是否影響計(jì)算結(jié)果
!!!!!
*vwrite,i,t
(/' 3-th solu i = ',f5.0,' time=',f10.8)
parsav,all,parareco-i2,txt !** 再次保存參數(shù),與上一次比較
BFDELE,all,HGEN
allsel
nsel,u,loc,z,-h_matrix
sfdele,all,conv
allsel
save
finish
/post1
!etable,temper,temp
!esel,s,etab,temper,1160
!cm,temper1,elem
finish
!save
!/filename,
!*** 檢查死單元
cm, e_befor,elem !*** 保存當(dāng)前單元
esel,s,live
esel,inve
cm, ekilled_3,elem !*** 為死單元建組
*get,ekilled_3, elem, 0, count
*vwrite, i, ekilled_3
(' After solve, i =',f5.0,' killed elem count = ',f6.0)
cmsel, s, e_befor !*** 恢復(fù)原來(lái)單元組
/solu
resume
!**** 恢復(fù)為上面存儲(chǔ)的模型
parres,new,parareco-i1,txt
!!!!!
*vwrite
(/' 4-th solu, before rest ')
parsav,all,parareco-i3,txt !** 再次保存參數(shù),與第一次比較
!*** 檢查死單元
cm, e_befor,elem !*** 保存當(dāng)前單元
esel,s,live
esel,inve
cm, ekilled_4,elem !*** 為死單元建組
*get,ekilled_4, elem, 0, count
*vwrite, i, ekilled_4
(' Before rest, i =',f5.0,' killed elem count = ',f6.0)
cmsel, s,e_befor !*** 恢復(fù)原來(lái)單元組
antype,,rest
!*** 檢查死單元
cm, e_befor,elem !*** 保存當(dāng)前單元
esel,s,live
esel,inve
cm, ekilled_5,elem !*** 為死單元建組
*get,ekilled_5, elem, 0, count
*vwrite, i, ekilled_5
(' After rest, i =',f5.0,' killed elem count = ',f6.0)
cmsel, s, e_befor !*** 恢復(fù)原來(lái)單元組
!*** 如果沒(méi)有死單元,則重新定義材料 1 的定義為死單元
*if, ekilled_5,eq,0,then
ESEL,S,MAT,,1
ekill,all
*get,ekilled_5, elem, 0, count
*vwrite, i, ekilled_5
(' Modify: After rest, i =',f5.0,' killed elem count = ',f6.0)
cmsel, s, e_befor !*** 恢復(fù)原來(lái)單元組
*endif
parres,new,parareco-i3,txt
!*** 檢查死單元
cm, e_befor,elem !*** 保存當(dāng)前單元
esel,s,live
esel,inve
cm, ekilled_6,elem !*** 為死單元建組
*get,ekilled_6, elem, 0, count
*vwrite, i, ekilled_6
(' After rest¶res, i =',f5.0,' killed elem count = ',f6.0)
cmsel, s, e_befor !*** 恢復(fù)原來(lái)單元組
!parres,new,parareco,txt
!esel,s,,,temper1
!ekill,all
! allsel
!kuse,1
!solve
allsel
*ENDDO
*cfclose
! * |