- 积分
- 0
- 注册时间
- 2009-9-17
- 仿真币
-
- 最后登录
- 1970-1-1
|
大家好~有个小问题调了好几天,百思不得其解,希望大家帮帮忙,不胜感激!!
用usdfld子程序定义场变量,需要用到一个81*2维数组,用写入的方法,可是只要一用哪个open,read的就不算了,不知道问题出在哪里。如果不用这个写入的方法,直接用手动输入时可以的(orz)。
SUBROUTINE USDFLD(FIELD,STATEV,PNEWDT,DIRECT,T,CELENT,
5 TIME,DTIME,CMNAME,ORNAME,NFIELD,NSTATV,NOEL,NPT,LAYER,
6 KSPT,KSTEP,KINC,NDI,NSHR,COORD,JMAC,JMATYP,MATLAYO,LACCFLA)
INCLUDE 'ABA_PARAM.INC'
CHARACTER*80 CMNAME,ORNAME
CHARACTER*3 FLGRAY(15)
DIMENSION FIELD(NFIELD),STATEV(NSTATV),DIRECT(3,3),
7 T(3,3),TIME(2)
DIMENSION ARRAY(15),JARRAY(15),JMAC(*),JMATYP(*),COORD(*)
以上是固定的title
real base(81,2)
real xdis,dis,ydis,A0,nox,oxtime,deltah,toler, deltah0
integer nsmall
open(unit=290,file='E:\USER\dhx\aba\20100818\222.TXT')
ydis = 1.0d10
toler = 1.0d-4
A0 = 0.4818
nox = 0.4007
这以下5行
do i=1,81
read(290,*) (base(i,j),j=1,2)
write(6,*) (base(i,j),j=1,2)
enddo
close(290)
以下是判断场变量
if (abs(kstep-1.0) < toler) then
oxtime = time(1)/3600.d0
endif
if (abs(kstep-2.0) < toler) then
oxtime = (time(2)-time(1))/3600.d0
endif
deltah = (A0*oxtime**nox)/1000.d0
xdis = abs(coord(1) - 1.8465)
if ((xdis .le. deltah) .and. (coord(1).le.1.8465)) then
field(1) = 1.0
else
field(1) = 0.0
endif
RETURN
END
还请大家帮我看一下,谢谢。。我问了好些人了,都没发现错误,块逼疯了。。 |
|