爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3801|回复: 4

【已解决】Fortran读取数据遇到问题

[复制链接]
发表于 2014-8-18 18:51:14 | 显示全部楼层 |阅读模式
GrADS
系统平台:
问题截图: -
问题概况: Fortran提取grd文件程序出错
我看过提问的智慧: 看过
自己思考时长(天): 3

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

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

x
本帖最后由 绯宜物语 于 2014-8-19 12:44 编辑

Fortran菜鸟……求助一下大家!!!刚开始入门,很纠结!
现在有一个grd文件,是用grads转的nc资料,nc资料是1900-2009逐月的2米气温。转的GRD数据是1900-2009年1320个月的逐月全球平均2米气温资料。想要做出1900-2009年逐年平均的资料,要怎么写这个程序呀!!!不太会写循环呀,大家帮帮忙吧……非常感谢!!!
这是写的gs:
'sdfopen f:\nc\1.nc'
'set gxout fwrite'
'set fwrite f:\1gc.grd'
'set x 1'
'set y 1'
'set z 1 1'
i=1
while(i<=1320)
    'set t 'i''
'define var=aave(t2m,x=1,x=721,y=1,y=361)'
'set x 1 721'
'set y 1 361'
'd var'
i=i+1
endwhile
'disable fwrite'
;

之后写了Fortran程序,
program main
integer,parameter(i=1320,t=110)
integer ii,it
real var(i),year(t)
open(1,file='f:\f\1gc.grd',status='old',form='binary')
do ii=1,i
do it=1,t
read(1) var(ii)
year(it)=(var(t*12-11)+var(t*12-10)+var(t*12-9)+var(t*12-8)+var(t*12-7)+var(t*12-6)+var(t*12-5)+var(t*12-4)+var(t*12-3)+var(t*12-2)+var(t*12-1)+var(t*12))/12
enddo
enddo
open(2,file='f:\1gc.txt',status='new')
write(*,*) year
close(1)
close(2)
end
有错误,要怎么写才对啊?
要是直接读取:
program main
parameter(t=1320)
real var(t)
open(1,file='f:\f\1gc.grd')
do it=1,t
read(1,*) var(it)
enddo
open(2,file='f:\1gc.txt')
write(*,*) var
close(1)
close(2)
end

也不对……大家帮我看看吧……纠结了好几天了…… 1gc.grd (5.16 KB, 下载次数: 1)
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-8-18 19:16:11 | 显示全部楼层
本帖最后由 绯宜物语 于 2014-8-18 20:13 编辑

啊啊,第二个程序做出来了。
program stjp
integer*4,parameter:: t=1320
integer*4 :: it
real*4:: var(t)
open (10,file='f:\f\1gc.grd',form='binary')
  do it=1,t
  read(10) var(it)
     enddo
   open(20,file='f:\1gc.txt')
write(20,*) var
close(10)
close(20)
  end
这样对吗?输出了文件。想问一下这个文件是怎么排列的?txt打开是4列。
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-8-18 20:24:06 | 显示全部楼层
第一个程序改了一下:
program stjp
integer*4,parameter:: i=1320,t=110
integer*4 :: ii,it
real*4 var(i),year(t)
open(10,file='f:\f\1gc.grd',form='binary')
do it=1,t
do ii=1,i
read(10,*) var(ii)
year(it)=(var(it*12-11)+var(it*12-10)+var(it*12-9)+var(it*12-8)+var(it*12-7)+var(it*12-6)+var(it*12-5)+var(it*12-4)+var(it*12-3)+var(it*12-2)+var(it*12-1)+var(it*12))/12
enddo
enddo
open(20,file='f:\1gave.txt')
write(20,*) year
close(10)
close(20)
end

错误是end of file encountered,var和year那应该怎么改呢?
密码修改失败请联系微信:mofangbao
0
早起挑战累计收入
发表于 2014-8-19 08:46:45 | 显示全部楼层
楼主目前正是借机会学习Fortran的时候  自己先努力学习修改吧~
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-8-19 09:00:47 | 显示全部楼层
mofangbao 发表于 2014-8-19 08:46
楼主目前正是借机会学习Fortran的时候  自己先努力学习修改吧~

嗯嗯,正在努力学习中……谢谢
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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