找回密码
 注册
Simdroid-非首页
查看: 176|回复: 6

[子程序] 子程序用open和read写入数组出现问题

[复制链接]
发表于 2010-8-23 10:51:18 | 显示全部楼层 |阅读模式 来自 清华大学
大家好~有个小问题调了好几天,百思不得其解,希望大家帮帮忙,不胜感激!!
用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
还请大家帮我看一下,谢谢。。我问了好些人了,都没发现错误,块逼疯了。。
 楼主| 发表于 2010-8-23 10:52:33 | 显示全部楼层 来自 清华大学
Simdroid开发平台
1# rachel2002 下面是附件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2010-8-23 15:19:28 | 显示全部楼层 来自 德国
你的程序在我机器上运行得完全正常, 不知道是不是你的222.txt的路径是错的.


下次请注意将运行所需要的文件, 包括子程序一起上传, 避免浪费其它人的宝贵时间

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2010-8-25 08:53:01 | 显示全部楼层 来自 清华大学
你的程序在我机器上运行得完全正常, 不知道是不是你的222.txt的路径是错的.


下次请注意将运行所需要的文件, 包括子程序一起上传, 避免浪费其它人的宝贵时间
cdstudio 发表于 2010-8-23 15:19

谢谢版主~首先非常不好意思,下次我会注意的。
在你的电脑运行正常?文件路径是写绝对路径对吧?你运行的时候也输出那个数组222了么?非常感谢!!
回复 不支持

使用道具 举报

发表于 2012-5-25 10:17:41 | 显示全部楼层 来自 江苏南京
楼主,我现在读入数据也出现问题,总是跳出内存不能为read,文件路径也不存在问题,不知道是怎么回事。你的问题是怎么解决的啊?
回复 不支持

使用道具 举报

发表于 2012-5-25 10:59:49 | 显示全部楼层 来自 大连理工大学
是不是你把文件名222.TXT弄成了222.TXT.txt了呢?你把文件的后缀名也完全显示出来看一下,windows的文件名还是要注意的
回复 不支持

使用道具 举报

发表于 2012-5-25 12:37:32 | 显示全部楼层 来自 山东青岛
      CALL GETJOBNAME(JOBNAME,LENJOBNAME)
      CALL GETOUTDIR(OUTDIR,LENOUTDIR)
!     OPEN(UNIT=290,FILE=TRIM(OUTDIR)//'\'//'222.txt')
      OPEN(UNIT=290,FILE=TRIM(OUTDIR)//'\'//TRIM(JOBNAME)//'.txt')

找到当前路径或文件。

评分

1

查看全部评分

回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-5-4 16:18 , Processed in 0.042844 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表