- 积分
- 13
- 注册时间
- 2004-9-3
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2006-11-23 22:34:26
|
显示全部楼层
来自 新加坡
c user subroutine usdfld
subroutine usdfld(field,statev,pnewdt,direct,t,celent,time,dtime,
1 cmname,orname,nfield,nstatv,noel,npt,layer,kspt,kstep,kinc,
2 ndi,nshr,coord,jmac,jmtyp,matlayo,laccflg)
c
include 'aba_param.inc'
c
character*80 cmname,orname
character*3 flgray(15)
dimension field(nfield),statev(nstatv),direct(3,3),t(3,3),time(2),
* coord(*),jmac(*),jmtyp(*)
dimension array(15),jarray(15)
c
c real a,b,c,x0,y0,z0,e,s1,s2,s3,s23,x,y,z,f1,g1,f2,g2
c
c Get field variables using the coords of material point
c
a=1000.d0
b=10.d0
c=20.d0
c
x0=-250.d0
y0=-10.d0
z0=0.d0
c
e=210000.d0
s1=100.d0
s2=100.d0
s3=100.d0
s23=100.d0
c
x=(coord(1)-x0)/a
y=(coord(2)-y0)/b
z=(coord(3)-z0)/c
c
f1=(1+cos(3.1415926d0*z))/2.d0
g1=(1-cos(3.1415926d0*y))/2.d0
f2=sqrt(3.d0)*(1-abs(z))*sin(3.1415926d0*z)
g2=sin(3.1415926d0*y/2.d0)/2.d0
c
FIELD(1)=-1.*s1/e*f1*g1
FIELD(2)=-1.*s2/e*f1*g1
FIELD(3)=-1.*s3/e*f1*g1
FIELD(4)=-1.*s23/e*f2*g2
c
STATEV(1)= FIELD(1)
STATEV(2)= FIELD(2)
STATEV(3)= FIELD(3)
STATEV(4)= FIELD(4)
c
c WRITE(6,*) NOEL, NPT, FIELD(1)
return
end
c
c
c user subroutine uexpan
c
subroutine uexpan(expan,dexpandt,temp,time,dtime,predef,dpred,
$ statev,cmname,nstatv,noel)
c
include 'aba_param.inc'
c
character*80 cmname
c
dimension expan(*),dexpandt(*),temp(2),time(2),predef(*),
$ dpred(*),statev(nstatv)
c
c
expan(1) = STATEV(1)
expan(2) = STATEV(2)
expan(3) = STATEV(3)
expan(4) = 0.
expan(5) = 0.
expan(6) = STATEV(4)
c
c
c WRITE(6,*) NOEL, expan(1)
return
end
这是我做的一个简单例子,STATEV就用来在两个子程序之间传递变量 |
评分
-
1
查看全部评分
-
|