爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6149|回复: 18

[求助] Fortran输出grd文件出错

[复制链接]

新浪微博达人勋

发表于 2015-11-1 12:03:26 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
分辨率为1*1的月降水资料,需要将其做成4*4网格的中国降水,每个网格的值是原来1*1网格的和,而且网格之间不要连着。用Fortran写了程序,但是输出的文件里值全是0。大家可以帮我看看吗?多谢!
program cmip5
  integer*4,parameter:: x=360,y=181,t=105,m=17,n=10
  integer*4 :: ix,iy,im,in,it,irec
  real*4,parameter :: undef = -9.99E+8
  real*4 pra(x,y,t),pr(m,n,t)
  
  open(1,file='f:\pr\h\cru\prcsu.grd',form='binary')
  do it=1,t
      do iy=1,y
    do ix=1,x
     read(1) pra(ix,iy,it)
    enddo
   enddo
  enddo
  close(1)
  do it=1,t
     do im=1,m
     do in=1,n
                 ix=4*im+69
                 iy=4*in+15
                 pr(im,in,it)=pra(ix,iy,it)+pra(ix,iy+1,it)+pra(ix,iy+2,it)+pra(ix,iy+3,it)+pra(ix+1,iy,it)+pra(ix+1,iy+1,it)+pra(ix+1,iy+2,it)+pra(ix+1,iy+3,it)+pra(ix+2,iy,it)+pra(ix+2,iy+1,it)+pra(ix+2,iy+2,it)+pra(ix+2,iy+3,it)+pra(ix+3,iy,it)+pra(ix+3,iy+1,it)+pra(ix+3,iy+2,it)+pra(ix+3,iy+3,it)
        enddo            
   enddo
  enddo
  
        open(2,file='f:\prmm.grd',form='unformatted',access='direct',recl=m*n*4)
        irec = 0
        do it = 1,t
           irec = irec + 1
           write(2,rec=irec) ((pr(im,in,it),im=1,m),in=1,n)
        enddo
  close(2)
end

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-11-1 12:42:43 | 显示全部楼层
写数据不要那么复杂,你读的时候那么简单,写的时候为什么搞那么复杂······试一下简单的写法
open(2,file='f:\prmm.grd',form='binary')
               do it = 1,t
                    write(2) ((pr(im,in,it),im=1,m),in=1,n)
        enddo
  close(2)
end
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-11-1 13:41:53 | 显示全部楼层
river 发表于 2015-11-1 12:42
写数据不要那么复杂,你读的时候那么简单,写的时候为什么搞那么复杂······试一下简单的写法
open(2 ...

谢谢,我试了一下,但是输出的值全变成负值了。“-3.995997E+09   -7.991998E+09   -1.198800E+10   -1.598400E+10  -1.098900E+10   -9.989969E+08   -1.598400E+10   -1.598400E+10”这样的值。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-11-1 16:50:36 | 显示全部楼层
什么编译器?用什么方式查看的数据?感觉recl不大对。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-11-1 19:30:58 | 显示全部楼层
绯宜物语 发表于 2015-11-1 13:41
谢谢,我试了一下,但是输出的值全变成负值了。“-3.995997E+09   -7.991998E+09   -1.198800E+10   -1.5 ...

你是说你用grads画图出来以后,显示是这些值?那是你ctl 里面缺测值设置问题
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-11-2 09:10:49 | 显示全部楼层
本帖最后由 绯宜物语 于 2015-11-2 09:26 编辑
lqouc 发表于 2015-11-1 16:50
什么编译器?用什么方式查看的数据?感觉recl不大对。


Fortran PowerStation version 4.0。用Fortran把数据转成txt文件读了一下,也用grads画了一下图。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-11-2 09:11:56 | 显示全部楼层
river 发表于 2015-11-1 19:30
你是说你用grads画图出来以后,显示是这些值?那是你ctl 里面缺测值设置问题

我用Fortran读取了数据,也用grads画了图,数据就是这样。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-11-2 12:20:04 | 显示全部楼层
绯宜物语 发表于 2015-11-2 09:11
我用Fortran读取了数据,也用grads画了图,数据就是这样。

如果数据就是这样,那就不是读写的问题了。检查计算过程吧
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-11-2 20:01:32 | 显示全部楼层
支持支持!!!!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2015-11-17 14:06:20 | 显示全部楼层
river 发表于 2015-11-2 12:20
如果数据就是这样,那就不是读写的问题了。检查计算过程吧

不好意思,现在才回复你。前段时间去找工作了。应该是缺省值的问题,我再试试。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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