当前位置:文档之家› 蠕变中文解释

蠕变中文解释

ANSYS提供了两个用户徐变方程:USERCR.F和USERCREEP.F。

其中:显式徐变用USERCR.F;前提是C6 = 100隐式徐变用USERCREEP.F,前提是TBOPT=100(1)用户徐变子程序usercr,用于显式徐变subroutine usercr (elem,intpt,mat,ncomp,kfirst,kfsteq,e,posn,d,x proptb,timval,timinc,tem,dtem,toffst,fluen,dfluen,epel,epcrp,x statev,usvr,delcr)cc *** 基本功能: 允许用户写自己的徐变规律。

该逻辑仅在C6=100时可用。

c *** 次要功能: 演示用户徐变方程的编写c *** 注意-本文件包含ANSYS 机要信息***c *** ansys(r) copyright(c) 2000c *** ansys, inc.cc 输入变量:c | (译者注)c |c | 类型:int-整型c | dp-双精度型c | 长度:sc-标量c | ar( , )-数组c | 目的:in-输入c | out-输出c | inout-输入输出c 变量(类型,长度,目的)-描述c elem (int,sc,in) -单元号(标识)c intpt (int,sc,in) -单元积分点数c mat (int,sc,in) -材料引用号c ncomp (int,sc,in) -应力/应变分量数(1,4 or 6)c 1 -xc 4 -x,y,z,xyc 6 -x,y,z,xy,yz,xzc kfirst (int,sc,in) -若是首次则值为1,否则为0c (对把状态变量初始化为非零值有用)c kfsteq (int,sc,in) -若是子步中首次平衡迭代则为1,否则为0 c e (dp,sc,in) -杨氏弹性模量c posn (dp,sc,in) -泊松比c d (dp,ar(ncomp,ncomp),in) -弹性应力-应变矩阵c proptb (dp,ar(72),in) -使用TB命令输入的材料属性值c (勿使用PROPTB(13), 因为它用在别处) c timval (dp,sc,in) -当前时间c timinc (dp,sc,in) -这一子步中的时间增量c tem (dp,sc,in) -这一子步结束时的温度c dtem (dp,sc,in) -这一子步结束时的温度增量c toffst (dp,sc,in) -相对于绝对零度的温度偏置c fluen (dp,sc,in) -这一子步结束时的流量c dfluen (dp,sc,in) -这一子步的流量增量cc epel (dp,ar(ncomp),inout) -弹性应变c epcrp (dp,ar(ncomp),inout) -前面子步的徐变应变c statev (dp,ar(ncomp*5+2),inout) -前面(已收敛)子步中的状态变量c 该变量仅用于显式徐变,并且是指一c 个内部变量,但不是用TB,stat命令定c 义的用于隐式徐变(用户徐变)以及用c 户材料的内部变量c usvr (dp,ar(nuval,nintp),inout) -附加状态变量,来自前面的迭代(使用c NSVR命令保存)cc 输出变量:c 变量(类型,长度,目的)-描述c epel (dp,ar(ncomp),inout) -考虑徐变增量后的弹性应变调整(elastic strain adjusted for creep increment)c epcrp (dp,ar(ncomp),inout) -更新后的徐变应变c statev (dp,ar(ncomp*5+2),inout) -更新后的各状态变量c usvr (dp,ar(nuval,nintp),inout) -更新后的附加状态变量c delcr (dp,sc,out) -等效徐变应变增量(用于徐变率计算)cc FORTRAN参数(由用户定义):c 变量(类型)-描述c nuval (int) -每个积分点处附加状态变量数目c nintp (int) -本子程序使用的单元最大积分点数目c (最大为14)c 注意: nuval×nintp = nstv (用nsvr 命令),不能超过840!cc 内部变量:c 变量(类型,长度) -描述c con (dp,sc) -临时变量c del (dp,ar(6)) -徐变应变增量c epet (dp,sc) -等效弹性应变(徐变前)c ept (dp,ar(6)) -总应变c eptot (dp,sc) -等效总应变,弹性+ 徐变c sigen (dp,sc) -等效应力(徐变前)c temabs (dp,sc) -绝对温度#Include "impcom.inc"external erhandlercc 用户定义的FORTRAN参数c --- usvr数据的容量integer nuval,nintpparameter (nuval=1,nintp=1)cc 外部子程序和函数external egendouble precision egenexternal vapb,vapb1,vamb1,vmultcc 整型变量integer elem,intpt,mat,ncomp,kfirst,kfsteqcc 双精度变量(&为续行标识符,原文为x,为清晰起见这里该为&。

译者注)double precision& e,posn,d(ncomp,ncomp),proptb(72),timval,timinc,tem,dtem,toffst,& fluen,dfluen,epel(ncomp),epcrp(ncomp),statev(ncomp*5+2),& usvr(nuval,nintp),delcr,& temabs,con,del(6),epet,sigen,eptot,ept(6)cc **** 当前版本的ANSYS程序不累计徐变效应(creep work)的影响,如需要,建议按如下步骤进行:c 1. 在本子程序中计算需要的徐变效应。

C 这可以在单元中累加实现。

可以这样做:c 在子程序的开头if (intpt .eq. 1) usvr(1,1) = 0.0,c 然后在所有积分点累加usvr(1,1) = usvr(1,1) + xxxxxc 注意这仅仅是徐变效应密度,如果需要总徐变效应,需要乘以体积。

这c 将在下面的步骤中阐述。

C 事实上,比这要稍微复杂一些,我们希望这个累加仅对收敛的平衡迭c 代进行,具体实现方法为:c if (kfstps .eq. 1) work = 0.0c if (kfsteq .eq. 1) workold = workc work = workold + delta(work)c 这样,在收敛的平衡迭代中,效应将是正确的c 2. 在userou中,将数据从usvr(1,1) 移到udbdat(1).c userou 仅在所有积分点都出来完毕后才被调用c 3. 在post1, 在nmisc record(各种各样的不可和记录).的末尾,c 获取udbdat(1)c 4. 乘以单元体积并累加.c 这个过程假设徐变效应密度在不规则单元区域内不迅速变化cc 这个子程序演示用基本徐变方程计算徐变应变。

更详细的资料参见ANSYS理论手册3.3。

c 在大应变分析中,所有应变都是hencky 应变. (即对数应变)c 所有量都是旋转中立(rotation-neutralized)并且是基于旋转单元坐标系统(不是全局)cc ***** 初始化*****cc ---初始检查c --- 当作者进行修改时,应删去下面的警告if (intpt.eq.1 .and. kfirst.eq.1)&call erhandler('usercr',5000,2,&'ANSYS,INC.- USERCR 的替代版已使用-'&,0.0d0,' ')cc ---- 作者应删除下面一行,它仅仅是为分析者提供的con = d(1,1)+dfluen+dtem+fluen+statev(1)+usvr(1,1)+& dble(elem+kfsteq+mat)c ---检查作者定义的usvr 容量是否超界cif (nuval*nintp.gt.840)&call erhandler('usercr',5010,4,& ' USVR 超出允许的最大存储量.'& ,0.0d0,' ')cc --- 初始化徐变应变增量以防没有徐变delcr = 0.0d0c --- 没有徐变倘若时间没有变化if (timinc .le. 0.0d0 .and. timval .le. 0.0d0) go to 999c --- 没有徐变倘若温度未定义temabs = tem + toffstif (temabs .le. 0.0d0) thenccall erhandler('usercr',5020,3,& '徐变Temperature= %G 应大于绝对零度.'& ,temabs,' ')cgo to 999endifcc ***** 定义等效应变和应力*****cc --- 利用函数egen定义等效应变epet = egen (ncomp,epel(1),posn)c --- 若应变为0,则无徐变if (epet .eq. 0.0d0) go to 999c --- 定义应力sigen = e*epetccc ***** 定义徐变应变率*****cc ***** 用户修改正式开始c ***** 开始徐变方程的例子- same as c6 = 0cc --- 若c1为0则跳过if (proptb(1) .eq. 0.0d0) go to 999cc ---定义等效总应变call vapb (epel(1),epcrp(1),ept(1),ncomp)eptot = egen (ncomp,ept(1),posn)cc --- 定义徐变应变率if (eptot .gt. 0.0d0) thendelcr = delcr + exp( log(proptb(1)) + proptb(2)*log(sigen) + & proptb(3)*log(eptot) - proptb(4)/temabs)endifcc ***** 徐变方程的例子到此结束c ***** 用户修改正常结束cc ***** 为每一个分量计算徐变应变增量*****cc --- 根据徐变应变率计算徐变应变增量delcr = delcr*timinccc --- 应用prandtl-reuss 关系为每一分量计算增量if (ncomp .eq. 1) thendel(1) = delcr*epel(1)/epetelsecon = delcr/epetcon = con/(2.0d0*(1.0d0+posn))call vmult (epel(4),del(4),ncomp-3,3.0d0*con)del(1) = con*(2.0d0*epel(1) - epel(2) - epel(3))del(2) = con*(2.0d0*epel(2) - epel(3) - epel(1))del(3) = con*(2.0d0*epel(3) - epel(1) - epel(2))endifcc --- 更新应变call vapb1 (epcrp(1),del(1),ncomp)call vamb1 (epel(1),del(1),ncomp)c999 returnend================================(2)用户徐变子程序usercreep,用于隐式徐变SUBROUTINE usercreep (impflg, ldstep, isubst, matId , elemId,& kDInPt, kLayer, kSecPt, nstatv, nprop,& prop , time , dtime , temp , dtemp ,& toffst, statev, creqv , pres , seqv ,& delcr , dcrda)c************************************************************************* c *** 基本功能***c 定义徐变规律,当TB,CREEP选项TBOPT=100时使用.c 演示如何补充用户徐变方程cc 徐变方程为c dotcreq := k0 * seqv ^ n * creqv ^ m * exp (-b/T)c 其中c seqv 等效有效应力(V on-Mises应力)c creqv 等效有效徐变c T 温度c k0, m, n, b 材料常数cc 该模型对应于基本徐变函数TBOPT = 1cc gal 10.01.1998cc************************************************************************* cc | (译者注)c |c | 类型:in-整型c | dp-双精度型c | 长度:sc-标量c | ar( , )-数组c | 目的:i-输入c | o-输出c | i/o-输入输出c | l-局部变量c impflg (in ,sc ,i) 显式/隐式积分标识(目前未使用)c ldstep (in ,sc ,i) 当前荷载步c isubst (in ,sc ,i) 当前子步c matId (in ,sc ,i) 材料号c elemId (in ,sc ,i) 单元号c kDInPt (in ,sc ,i) 材料积分点c kLayer (in ,sc ,i) 层号c kSecPt (in ,sc ,i) 断面点(Section point)c nstatv (in ,sc ,i) 状态变量数c nprop (in ,sc ,i) 材料属性数组长度c prop (dp ,ar(*),i) 材料属性数组c 该数组传递所有与TB,CREEP有关的TBDATA命令定义的在温度temp时的徐变常数(不要使用prop(13),因为它被用在别处)c time 当前时间c dtime 当前时间增量c temp 当前温度c dtemp 当前温度增量c toffst (dp, sc, i) 温度相对于绝对零度的偏置值c seqv (dp ,sc , i) 等效有效应力c creqv (dp ,sc , i) 等效有效徐变应变c pres (dp ,sc , i) 静水压力应力, (Sxx+Syy+Szz)/3ccc 输入输出参数c statev (dp,ar(*), i/o) 用户定义的在时间't' / 't+dt'时的内部状态变量.c 该数组将在时间增量的开始,传递这些变量的值。

相关主题