?
epst0=0.00003
epstr=0.00006
epstu=0.00015
coef=1
fc=14300000
fi=30
kesi=epstu/epst0
eta=epstr/epst0
lamda=0.1
alpha=0.197
E0=3e10
N=log10(lamda)/log10(epst0/epstr)+1
epsc0=-fc/E0
epscr=epsc0/lamda**(1/(N-1))
epscu=-0.0033
*afun,deg
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
delta_t=0.04 !时间步长基数
*dim,cum,array,1,5
cum(1,1)=0 !累积时间
cum(1,2)=2 !累积时间步
cum(1,3)=0.04 !旧时间步长
cum(1,4)=0.04 !新时间步长
cum(1,5)=1 !时间步长基数的倍数
*dim,error,array,5000,1
*CFOPEN,'iteration.txt',' ',' '
*VWRITE,cum(1,1),cum(1,2),cum(1,3),cum(1,4),cum(1,5)
(f15.7,f15.1,2f15.10,f15.1)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
esel,s,mat,,1
*get,ne,elem,,count
*dim,Error_E,array,ne,1
*dim,concrete,array,ne,4
*dim,damage_index,array,ne,1000
*do,i,1,ne,1
*get,emin,elem,,num,min
concrete(i,1)=emin
esel,u,elem,,emin
*enddo
allsel,all
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
finish
/config,nres,150000
/config,nproc,2
/config,fsplit,896
/nerr,1,99999999
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
/solu
bcsoption,,incore,2000
antype,trans
rescontrol,define,all,1
timint,off
time,1e-5
kbc,1
nsubst,2
allsel,all
outres,all,last
solve
TRNOPT,FULL
LUMPM,0
KBC,0
!alphad,0.4412
!betad,0.0056
timint,on
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
*do,i,1,1000,1 !迭代
tt=min(cum(1,1)+cum(1,4),cum(1,5)*delta_t)
time,tt
acel,acelx(tt)*coef,-acely(tt)*coef
nsubst,1
outres,all,last
allsel,all
solve
!save
/post1
set,cum(1,2),1
etable,strain,epel,1
etable,p1,s,1
etable,p3,s,3
etable,eps3,epel,3
*do,j,1,ne,1
*get,concrete(j,2),elem,concrete(j,1),etab,strain
*if,concrete(j,2),lt,epst0,then
*get,sig1,elem,concrete(j,1),etab,p1
*get,sig3,elem,concrete(j,1),etab,p3
*if,(1+sin(fi))/(1-sin(fi))*sig1-sig3,ge,fc,then
*get,s3,elem,concrete(j,1),etab,eps3
*if,s3,gt,epsc0,then
damage=0
*elseif,s3,gt,epscr,then
damage=1-(epsc0/s3)**N
*elseif,s3,gt,epscu,then
damage=1-lamda*epscr/s3
*else
damage=1
*endif
*else
damage=0
*endif
*elseif,concrete(j,2),lt,epstr,then
damage=1-(epst0/concrete(j,2))**N
*elseif,concrete(j,2),lt,epstu,then
damage=1-lamda*epstr/concrete(j,2)
*else
damage=1
*endif
concrete(j,3)=max(damage,concrete(j,3))
damage_index(j,i)=concrete(j,3)
*get,matnum,elem,concrete(j,1),attr,mat
*get,elastic_module,ex,matnum
elastic_module_new=(1-concrete(j,3))*E0
*if,elastic_module_new,le,3e7,then
elastic_module_new=3e7
*endif
concrete(j,4)=elastic_module_new
Error_E(j)=abs((elastic_module-elastic_module_new)/elastic_module)
*enddo
allsel,all
*CFOPEN,'parameter.txt',' ',' '
*VWRITE,concrete(1,1),concrete(1,2),concrete(1,3),concrete(1,4)
(f15.1,f18.10,f15.8,f18.5)
*if,tt,eq,5,then
*CFOPEN,'parameter5.txt',' ',' '
*VWRITE,concrete(1,1),concrete(1,2),concrete(1,3),concrete(1,4)
(f15.1,f18.10,f15.8,f18.5)
*elseif,tt,eq,10,then
*CFOPEN,'parameter10.txt',' ',' '
*VWRITE,concrete(1,1),concrete(1,2),concrete(1,3),concrete(1,4)
(f15.1,f18.10,f15.8,f18.5)
*elseif,tt,eq,20,then
*CFOPEN,'parameter20.txt',' ',' '
*VWRITE,concrete(1,1),concrete(1,2),concrete(1,3),concrete(1,4)
(f15.1,f18.10,f15.8,f18.5)
*elseif,tt,eq,30,then
*CFOPEN,'parameter30.txt',' ',' '
*VWRITE,concrete(1,1),concrete(1,2),concrete(1,3),concrete(1,4)
(f15.1,f18.10,f15.8,f18.5)
*endif
*vscfun,Error_E_max,RMS,Error_E
error(i,1)=Error_E_max
*CFOPEN,'error.txt',' ',' '
*VWRITE,error(1,1)
(f15.5)
*if,Error_E_max,lt,1,then
cum(1,1)=min(cum(1,1)+cum(1,4),cum(1,5)*delta_t)
cum(1,2)=cum(1,2)+1
time_size_new=cum(1,4)
*if,cum(1,4),eq,cum(1,3),then
cum(1,4)=min(1.2*cum(1,4),delta_t)
*endif
cum(1,3)=time_size_new
num=cum(1,1)/delta_t
*if,mod(num,1),le,1e-10,or,abs(mod(num,1)-1),le,1e-10,then
cum(1,5)=cum(1,5)+1
*endif
*CFOPEN,'iteration.txt',' ',' '
*VWRITE,cum(1,1),cum(1,2),cum(1,3),cum(1,4),cum(1,5)
(f15.7,f15.1,2f15.10,f15.1)
/solu
antype,trans,rest,cum(1,2)-1 !重启动,修改材料参数
*VREAD,concrete,'parameter','txt',' ',jik,4,ne,1, , ,
(f15.1,f18.10,f15.8,f18.5)
*VREAD,cum,'iteration','txt',' ',jik,5,1,1, , ,
(f15.7,f15.1,2f15.10,f15.1)
*VREAD,error,'error','txt',' ',jik,1,5000,1, , ,
(f15.5)
*do,k,1,ne,1
mp,ex,k+6,concrete(k,4)
mp,prxy,k+6,0.2
mp,dens,k+6,2500
mpchg,k+6,concrete(k,1)
*enddo
TRNOPT,FULL
LUMPM,0
outres,all,last
KBC,0
timint,on
*else
/solu
antype,trans,rest,cum(1,2)-1 !重启动,修改时间步长
*VREAD,cum,'iteration','txt',' ',jik,5,1,1, , ,
(f15.
7,f15.1,2f15.10,f15.1)
*VREAD,error,'error','txt',' ',jik,1,5000,1, , ,
(f15.5)
cum(1,3)=cum(1,4)
cum(1,4)=cum(1,4)/2
*CFOPEN,'iteration.txt',' ',' '
*VWRITE,cum(1,1),cum(1,2),cum(1,3),cum(1,4 ),cum(1,5)
(f15.7,f15.1,2f15.10,f15.1)
*endif
*enddo