ANSYS UPFs 徐变二次开发,输入CEB-FIP 90模型,计算不收敛,是不是FORTRAN代码有问题
研究生一枚,在用ANSYS UPFs 二次开发做徐变模拟,usercreep子程序输入了CEB-FIP 90模型,一开始计算就停止了,error文件提示不收敛, The creep integration algorithm does not converge for element 4,material 1, creep model 100. 急求解决方法。大神们帮帮小弟啊!下面是usercreep代码。
#include "impcom.inc"
DOUBLE PRECISION ZERO
PARAMETER (ZERO = 0.0d0)
c
c --- argument list
c
INTEGER ldstep, isubst, matId , elemId,
& kDInPt, kLayer, kSecPt, nstatv,
& impflg, nprop
DOUBLE PRECISION dtime , time, temp, dtemp , toffst,
& creqv , seqv, pres
DOUBLE PRECISION prop(*), dcrda(*), Ustatev(nstatv)
c
c --- local variables
c
DOUBLE PRECISION c1 , c2 , c3 , c4 , c5 ,
& c6 , c7 , delcr ,
& a1 , a2 , a3 , a4 , a5
c
c*************************************************************************
c *** skip when stress and creep strain are all zero
if (seqv.LE.ZERO.AND.creqv.LE.ZERO) GO TO 990
c *** Primary creep function
c delcr := a1 * a2 * a3 * a4 * c1 / time ** 0.7 / (time + c1)**2.7 * dtime。。。
c1 = prop(1)
c2 = prop(2)
c3 = prop(3)
c4 = prop(4)
c5 = prop(5)
c6 = prop(6)
c7 = prop(7)
a1 = (160 + 10 * c7 * (9 - 0.1 * c3)) * 10**(-6) * 1.55*(1-c1**3)
a2 = c4-c5
a3 = 0.035*c2**2
a4 = (1+(1-c1)/(0.46*(c2/100)**(1/3)))*5.3/((c3/10)**0.5)*1/(0.1+
& c4 ** 0.2)
a5 = 1.5*(1+(1.2*c1)**18)*c2+250
c *** calculate incremental creep strain
delcr = (0.5*a1*a3*(time+a2)**(-0.5)*(time+a2+a3)**(-1.5)+
& 0.3*a4*a5*seqv/c6*time**(-0.7)*(time+a5)**(-1.3))*dtime
c *** derivitive of incremental creep strain to effective stress
dcrda(1)=0.3*a4*a5/c6*time**(-0.7)*(time+a5)**(-1.3)*dtime
c *** derivitive of incremental creep strain to effective creep strain
dcrda(2)= 1+(-0.5*a1*a3*(0.5*(time+a2)**(-1.5)*(time+a2+a3)**
& (-1.5)+1.5*(time+a2)**(-0.5)*(time+a2+a3)**(-2.5))
& -0.3*a4*a5*seqv/c6*(0.7*time**(-1.7)*(time+a5)**(-1.3)
& +1.3*time**(-0.7)*(time+a5)**(-2.3)))/
& (0.5*a1*a3*(time+a2)**(-0.5)*(time+a2+a3)**(-1.5)+
& 0.3*a4*a5*seqv/c6*time**(-0.7)*(time+a5)**(-1.3))*dtime
c *** write the effective creep strain to last state variable for verification
if (nstatv .gt. 0) then
Ustatev(nstatv) = creqv
end if
990continue
return
end
下面是APDL代码
finish
/clear
/config,nres,2000
/prep7
!1.定义单元与材料性质--------------------
et,1,solid186
mp,ex,1,30000
mp,prxy,1,0.2
tb,creep,1,,7,100
tbdata,1,0.6
tbdata,2,134.739
tbdata,3,32.0
tbdata,4,157.0
tbdata,5,28.0
tbdata,6,30000.0
tbdata,7,5.0
r,1
!2.创建几何模型
blc4,,,150,300,150
!4.划分混凝土网格
vatt,1,1,1
mshape,0,3d
mshkey,1
esize,15
vmesh,all
allsel,all
!5.施加荷载和约束
asel,s,loc,y,300
sfa,all,1,pres,1
asel,s,loc,y,0
da,all,all
allsel,all
!6.求解控制设置
/solu
antype,0
rate,on
solcon,on
kbc,1
nlgeom,on
time,15
nsubst,100
outres,all,all
autots,on
neqit,50
cnvtol,u,,0.015
solve 还有usercreep.f文件,每次进去都会提示行尾不一致,是否将行尾一致化,这个怎么解决,是由于这个问题导致计算不收敛吗。 我运行了下你的程序,是可以运行的 调用子程序的命令流应该至少定义一个状态变量啊,用于存储有效蠕变应变的
页:
[1]