24小时热门版块排行榜    

Znn3bq.jpeg
汕头大学海洋科学接受调剂
查看: 1968  |  回复: 13

htbbzzg

铁杆木虫 (著名写手)

【答案】应助回帖

昨天试算和修改你的命令流,主要是添加了很多输出中间结果的命令,进行检查分析。最终确定重启动确实会导致生死单元的定义丢失,通过重新定义生死单元可以解决这个问题。
  看你的命令流,只是杀死了材料 1 的所有单元,所以定义生死单元还是很方便的。不过,有一个问题我没有修改,那就是你定义的约束条件好像涉及了少数材料 1 的单元,而你激活了与约束条件有关的单元,因而计算过程中死单元的数量不断在变化。不知道这是否你的本意。
    除了为了检查中间结果的部分外,修改的重点有一以几个:
  1  在循环中,solve 命令之后增加了 save 命令,以保证盘上存放的是最后一个计算成功的子步的模型。
  2  在循环中,后处理之后,回到求解模块时,恢复了 resume 命令,以保证模型与上一次求解后的状态一致。
  3  由于上两步不能保证死单元不变,所以在 Antype Rest 命令之后重新定义了死单元。

修改后的命令流如下。其中,用 *cfopen 命令打开了一个用于存放中间结果的文件,计算结束后可以看一下该文件,可以看到死计算过程单及元数量的变化。


!***   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          !***  读入两个材料属性文件
/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       !***  压缩实体编号,去掉空白的编号
save

/solu

*cfopen, chiko75-rl3,txt    !  定义一个输出文件,记录一些中间结果

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')
!***  写中间结果文件,下同

solve

/solu
!***  这个 /solu 是多余的,可以删除试试,是否影响计算结果

*vwrite,
(/' Second solu  -  undeleted')

esel,s,mat,,1
ekill,all
cm, emat_1,elem      !***  为材料 1 死单元建组  

!***  将当前死单元数写入中间结果文件,下同
*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      !***  可能会包含部分 mat 1 的单元
        ealive,all    !***  导致部分死单元被激活
        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    !** 保存参数
        save        !***  求解后将模型存盘

!***   检查死单元        
cm, e_befor,elem        !*** 保存当前单元
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         !***  恢复原来单元组
        
       /solu
!***  这个 /solu 是多余的,可以删除试试,是否影响计算结果
        
!!!!!
        *vwrite,i,t
        (/' 3-th solu    i = ',f5.0,' time=',f10.8)
        
        parsav,all,parareco-i2,txt     !** 再次保存参数,与上一次比较
        
        
        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        !*** 保存当前单元
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         !***  恢复原来单元组
        

        /solu
        
        resume
!****  恢复为上面存储的模型
        
        parres,new,parareco-i1,txt

!!!!!
        *vwrite
        (/' 4-th solu,   before  rest ')
        parsav,all,parareco-i3,txt     !** 再次保存参数,与第一次比较
        
!***   检查死单元        
cm, e_befor,elem        !*** 保存当前单元
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         !***  恢复原来单元组
        
        
        antype,,rest
        
        
!***   检查死单元        
cm, e_befor,elem        !*** 保存当前单元
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         !***  恢复原来单元组

!***  如果没有死单元,则重新定义材料 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         !***  恢复原来单元组
  *endif

        parres,new,parareco-i3,txt
        
!***   检查死单元        
cm, e_befor,elem        !*** 保存当前单元
esel,s,live
esel,inve
cm, ekilled_6,elem      !***  为死单元建组  
*get,ekilled_6, elem, 0, count
*vwrite, i, ekilled_6
(' After rest&parares,  i =',f5.0,'   killed elem count = ',f6.0)
cmsel, s, e_befor         !***  恢复原来单元组
        
        
        !parres,new,parareco,txt
        !esel,s,,,temper1
        !ekill,all
!        allsel
        !kuse,1
        !solve
        allsel
*ENDDO
*cfclose

! *
11楼2023-08-13 08:54:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

htbbzzg

铁杆木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
chiko75: 金币+20, ★★★很有帮助 2023-10-13 15:27:02
你好!
周末摸索了一下你的问题,发现确实是重启动导致死单元的定义被删除,不过,在重启动命令之后重新定义死单元就可以解决这个问题。
用于摸索你的问题和在重启动后重新添加死单元定义的命令流如下 ,你可以试试看:

!***   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          !***  读入两个材料属性文件
/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       !***  压缩实体编号,去掉空白的编号
save

/solu

*cfopen, chiko75-rl3,txt    !  定义一个输出文件,记录一些中间结果

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')
!***  写中间结果文件,下同

solve

/solu
!***  这个 /solu 是多余的,可以删除试试,是否影响计算结果

*vwrite,
(/' Second solu  -  undeleted')

esel,s,mat,,1
ekill,all
cm, emat_1,elem      !***  为材料 1 死单元建组  

!***  将当前死单元数写入中间结果文件,下同
*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      !***  可能会包含部分 mat 1 的单元
        ealive,all    !***  导致部分死单元被激活
        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    !** 保存参数
        save        !***  求解后将模型存盘

!***   检查死单元        
cm, e_befor,elem        !*** 保存当前单元
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         !***  恢复原来单元组
        
       /solu
!***  这个 /solu 是多余的,可以删除试试,是否影响计算结果
        
!!!!!
        *vwrite,i,t
        (/' 3-th solu    i = ',f5.0,' time=',f10.8)
        
        parsav,all,parareco-i2,txt     !** 再次保存参数,与上一次比较
        
        
        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        !*** 保存当前单元
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         !***  恢复原来单元组
        

        /solu
        
        resume
!****  恢复为上面存储的模型
        
        parres,new,parareco-i1,txt

!!!!!
        *vwrite
        (/' 4-th solu,   before  rest ')
        parsav,all,parareco-i3,txt     !** 再次保存参数,与第一次比较
        
!***   检查死单元        
cm, e_befor,elem        !*** 保存当前单元
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         !***  恢复原来单元组
        
        
        antype,,rest
        
        
!***   检查死单元        
cm, e_befor,elem        !*** 保存当前单元
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         !***  恢复原来单元组

!***  如果没有死单元,则重新定义材料 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         !***  恢复原来单元组
  *endif

        parres,new,parareco-i3,txt
        
!***   检查死单元        
cm, e_befor,elem        !*** 保存当前单元
esel,s,live
esel,inve
cm, ekilled_6,elem      !***  为死单元建组  
*get,ekilled_6, elem, 0, count
*vwrite, i, ekilled_6
(' After rest&parares,  i =',f5.0,'   killed elem count = ',f6.0)
cmsel, s, e_befor         !***  恢复原来单元组
        
        
        !parres,new,parareco,txt
        !esel,s,,,temper1
        !ekill,all
!        allsel
        !kuse,1
        !solve
        allsel
*ENDDO
*cfclose
12楼2023-08-14 09:18:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

htbbzzg

铁杆木虫 (著名写手)

【答案】应助回帖

昨天把我摸索的结果发到小木虫网站了,可是今早进入你的帖子却没有找到我昨天发的内容,于是重新发了一次。发完后却有看到了我昨天发的内容,实在奇怪。
今天发的比较简单,缺少一些注解。你看昨天的内容就可以了。
13楼2023-08-14 09:23:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chiko75

铜虫 (小有名气)

引用回帖:
13楼: Originally posted by htbbzzg at 2023-08-14 09:23:06
昨天把我摸索的结果发到小木虫网站了,可是今早进入你的帖子却没有找到我昨天发的内容,于是重新发了一次。发完后却有看到了我昨天发的内容,实在奇怪。
今天发的比较简单,缺少一些注解。你看昨天的内容就可以了。

不好意思这么久才回复,这两个月有别的事。
我运行了您给的代码,确实在重启动后死单元数量从312变成0了,重启动后要重新设置需要杀死的单元。
谢谢您的耐心解答。
14楼2023-10-13 15:26:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 chiko75 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 272分材料子求调剂 +41 Loy0361 2026-04-10 53/2650 2026-04-13 14:20 by 张zhihao
[考研] 339求调剂 +8 hanwudada 2026-04-11 9/450 2026-04-12 15:36 by laoshidan
[考研] 求调剂 +16 张番茄不炒蛋 2026-04-10 17/850 2026-04-12 13:58 by 熬夜成!
[考研] 291求调剂 +11 关忆北. 2026-04-09 12/600 2026-04-12 10:32 by 逆水乘风
[考研] 291求调剂 +8 关忆北. 2026-04-11 8/400 2026-04-12 09:32 by 逆水乘风
[考研] 一志愿西北工业大学289 085602 +33 yang婷 2026-04-10 34/1700 2026-04-12 08:11 by Art1977
[考研] 化学工程调剂289 +44 yang婷 2026-04-07 50/2500 2026-04-12 02:36 by 秋豆菜芽
[考研] 一志愿郑州大学 22408 305分求调剂 +5 安小满zzz 2026-04-08 5/250 2026-04-12 00:41 by 蓝云思雨
[考研] 280求调剂 +7 兮兮夜夜 2026-04-09 10/500 2026-04-12 00:33 by 蓝云思雨
[考研] 280求调剂 +13 wzzz王 2026-04-09 13/650 2026-04-12 00:31 by 勇攀高峰0126
[考研] 求调剂 +3 胃痉挛累了 2026-04-11 5/250 2026-04-11 14:13 by luhong1990
[考研] 269电子信息求调剂,可转专业 +11 独酌wl 2026-04-06 11/550 2026-04-11 11:12 by 逆水乘风
[考研] 302分求调剂 +9 凡语祈愿 2026-04-08 10/500 2026-04-10 23:26 by 314126402
[考研] 调剂 +19 小张ZA 2026-04-10 20/1000 2026-04-10 22:08 by 猪会飞
[考研] 344求调剂 +7 丶风雪夜归人丶 2026-04-09 7/350 2026-04-10 12:05 by pengliang8036
[考研] 调剂申请086000一志愿西北农林科技大学生物与医药320分-本科齐鲁工业大学 +3 美美女士 2026-04-09 3/150 2026-04-10 10:31 by liuhuiying09
[考研] 材料专硕初试分332一志愿西北工业大学, +12 故人?? 2026-04-09 12/600 2026-04-09 18:34 by Ccclqqq
[考研] 265求调剂 +4 风说她早忘了 2026-04-07 4/200 2026-04-09 13:59 by only周
[考研] 求调剂 +11 wwwwabcde 2026-04-07 11/550 2026-04-07 23:16 by JourneyLucky
[考研] 22408 331分求调剂 +4 y__1 2026-04-06 4/200 2026-04-06 17:26 by 土木硕士招生
信息提示
请填处理意见