爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5767|回复: 11

fortran数据读入问题 求指点

[复制链接]

新浪微博达人勋

发表于 2014-4-20 09:58:42 | 显示全部楼层 |阅读模式
GrADS
系统平台:
问题截图: -
问题概况: 用grads的fwrite生成的.grd文件,用fortran读不进,求指点
我看过提问的智慧: 看过
自己思考时长(天): 1

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

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

x
这是楼主的.gs文件
'reinit'
'sdfopen e:/lw/netcdf2.nc'
'set fwrite e:/lw/quv.grd'
'set gxout fwrite'
'set t 1'
'd u'
‘d v'

'disable fwrite'
;

下图是netcdf2.nc的资料 K7)RI(Y~}4569RQ0)INB`K1.jpg

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

新浪微博达人勋

0
早起挑战累计收入
发表于 2014-4-20 10:13:15 | 显示全部楼层

回帖奖励 +2 金钱

把fortran代码贴一下
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-4-20 10:13:21 | 显示全部楼层
你想输出什么?这个gs写的很有问题。
fortran的代码在哪里?报错是什么?
建议楼主再看看‘提问的智慧’。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-4-20 10:17:00 | 显示全部楼层
mofangbao 发表于 2014-4-20 10:13
把fortran代码贴一下

program main
implicit none
integer:: m,n,z
parameter (m=240,n=121,z=27)
integer i,j,k
real u(m,n,z),v(m,n,z),q(m,n,z)
open (1,file='e:/lw/quv.grd',form='binary')
do k=1,z
read(1,*)((u(i,j,k),i=1,m),j=1,n)
enddo
do k=1,z
read(1,*)((v(i,j,k),i=1,m),j=1,n)
enddo
end
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-4-20 10:20:09 | 显示全部楼层

                               
登录/注册后可看大图
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-4-20 10:23:15 | 显示全部楼层
lqouc 发表于 2014-4-20 10:13
你想输出什么?这个gs写的很有问题。
fortran的代码在哪里?报错是什么?
建议楼主再看看‘提问的智慧’ ...

楼主小白,fortran代码在上一楼哈,报错:formatted I/O to unit open for unformatted transfers,unit 1,file e:/...,
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-4-20 10:31:24 | 显示全部楼层
心语 发表于 2014-4-20 10:23
楼主小白,fortran代码在上一楼哈,报错:formatted I/O to unit open for unformatted transfe ...

read里面的缺省格式设置(那个*)去掉(binary不需要format),gs里面维度最好set完整,zdef需要用循环输出。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-4-20 10:53:40 | 显示全部楼层
lqouc 发表于 2014-4-20 10:31
read里面的缺省格式设置(那个*)去掉(binary不需要format),gs里面维度最好set完整,zdef需要用循环输 ...

gs文件改了一下,请问这样可以吗?
'sdfopen e:/lw/netcdf2.nc'
'set fwrite e:/lw/quv.grd'
'set gxout fwrite'
'set t 1'
m=1
while(m<=27)
'set z 'm''
'd u'
'd v'
m=m+1
endwhile
'disable fwrite'
;

fortran代码
open (1,file='e:/lw/quv.grd')
read(1)(((u(i,j,k),i=1,m),j=1,n),k=1,z)
read(1)(((v(i,j,k),i=1,m),j=1,n),k=1,z)  运行了还是不能读入
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-4-20 11:20:30 | 显示全部楼层
心语 发表于 2014-4-20 10:53
gs文件改了一下,请问这样可以吗?
'sdfopen e:/lw/netcdf2.nc'
'set fwrite e:/lw/quv.grd'

不能把binary的选项去掉,默认的格式是formatted,楼主要仔细看i/o部分的书啊。
且不说这个,你的输出存放顺序和读取的存放顺序不一致,读出来肯定也不对。fwrite之前想清楚你输出的数据是什么样子的。
open (1,file='e:/lw/quv.grd')
do k=1,z
read(1)((u(i,j,k),i=1,m),j=1,n)
read(1)((v(i,j,k),i=1,m),j=1,n)
end do
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-4-20 11:47:45 | 显示全部楼层
搞不清楚的话就分别输出U,V吧,这样不容易混
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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