Fortran Coder

查看: 10898|回复: 4
打印 上一主题 下一主题

[求助] 一个比较low的问题讨论,小白初学,真心求教。

[复制链接]

9

帖子

2

主题

0

精华

入门

F 币
65 元
贡献
36 点
跳转到指定楼层
楼主
发表于 2015-4-28 18:10:37 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
在Fortran读取数据过程中,open一个文件。假设文件中变量为三维。



open(11,file='1.dat', action='read', access='direct', form='unformatted', recl=xx*yy*4)

do t=1, tt
read(11, rec=t)((a(i, j), i=1, xx), j=1, yy)

end do

这个是一个数据读取方法,在我的理解中,如果要对数据进行计算,在end 都之外的话,只对最后一个时次的数据进行了计算。但是最近看其他人做的计算,有的在end 都外面做的,
请问这样不是会导致只计算了一维么。
例如,下面这段。这里面读完以后就end 了。想问这些数据都读出来了么?
DO IZ=1,NZ        ! level
      DO IT=1,NT        ! time
      OPEN(15,file='f:/lj/2010/data/'//timefile(it)//'.'//p(iz)//'q',status='old',form='formatted')
      read(15,*)
      do  j=1,NY
        read(15,100)(q(i,j,iz,it),i=1,NX)           
        enddo
          CLOSE(15)
      ENDDO
      ENDDO


分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

736

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
700 元
贡献
359 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

5#
发表于 2015-4-28 22:38:53 | 只看该作者
你的文件里是三维的“内容”,但是变量是二维的,虽然读了很多次,但前面的都被刷新掉了,实际只存有最后一次的内容。

那么你的“计算”部分,也只能让最后一次“二维”的部分参与计算。

46

帖子

8

主题

0

精华

熟手

F 币
211 元
贡献
131 点
地板
发表于 2015-4-28 18:30:22 | 只看该作者
如果不确定,可以随时用print*, (你要查看的数据) 或者write (6,*) (你要查看的数据) 运行一下来看。

9

帖子

2

主题

0

精华

入门

F 币
65 元
贡献
36 点
板凳
 楼主| 发表于 2015-4-28 18:22:20 | 只看该作者
楚香饭 发表于 2015-4-28 18:18
这是一个四维数组,每个文件里是二维数组(NX*NY个数据)。一共打开了 NZ*NT 个文件。

所以一共是 NX*NY*N ...

那我上面的例子中,在end do外面 是不是也没问题?

736

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
700 元
贡献
359 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2015-4-28 18:18:53 | 只看该作者
这是一个四维数组,每个文件里是二维数组(NX*NY个数据)。一共打开了 NZ*NT 个文件。

所以一共是 NX*NY*NZ*NT,四维数组。完全没问题
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-24 09:45

Powered by Tencent X3.4

© 2013-2024 Tencent

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