- 积分
- 10431
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-8-29
- 最后登录
- 1970-1-1
![未绑定新浪微博用户 新浪微博达人勋](source/plugin/sina_login/img/gray.png)
|
发表于 2012-4-25 18:18:44
|
显示全部楼层
呵呵,清风真棒!我之前也自己转过,遇到一个问题:fortran在内存中是按列存储的,所以从存储效率考虑,是不是应该这样写:
read(1,*)((gdata(i,j),i=1,x),j=1,y)
。。。
if(head(7)<0)then
if(head(8)<0)then
do j=y,1,-1
do i=x,1,-1
write(1)gdata(i,j)
enddo
enddo
else
do j=1,y
do i=x,1,-1
write(1)gdata(i,j)
enddo
enddo
endif
else
if(head(8)<0)then
do j=y,1,-1
do i=1,x
write(1)gdata(i,j)
enddo
enddo
else
do j=1,y
do i=1,x
write(1)gdata(i,j)
enddo
enddo
endif
endif
这样写可能理解上有点绕,gdata(x,y)相当于有x行y列,实际上数据块是y行x列,只是按照列存储的顺序将数据读取和写入(与grads的存储有关)。 |
|