- 积分
- 10796
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-3-8
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2016-1-10 20:40:32
|
显示全部楼层
谢谢啦 我加上这二句后 发现不报错了 但是只生成了包含一个时次的文件就结束了。。。应该运行1460个时次的呀。。。这是怎么回事呢 是加的位置不对吗
附上加了以后的程序:
parameter(nt=1460)
integer::n,num
real,allocatable::lon(:),lat(:),vi(:)
!动态数组分别用来储存站点的经纬度和能见度值
real:: temp(14)
character*8,allocatable::sta(:),yr(:,:),mon(:,:)
!动态数组,储存站号,站号必须是8个字符,5个的话会stnmap出不出
character*12 filename(nt) !用于储存1460个时次的文件名
open(11,file='d:/wu/data1/1994/1994.txt')
do i=1,nt
read(11,*) filename(i)
!print*,filename(i)
enddo
close(11)
open(12,file='d:/wu/vis1994ym.grd',form='unformatted')
open(13,file='d:/wu/vis1994ym.txt') !储存1460个时次的能见度场
do k=1,nt
print*,'文件数',k
open(11,file='d:/wu/data1/1994/'//filename(k))
read(11,*)
read(11,*) n,n,n,n,n !将该时次的站点数赋值于n
allocate(lat(n))
allocate(lon(n))
allocate(vi(n))
allocate(sta(n))
allocate(yr(nt,n))
allocate(mon(nt,n))
!print*,n
close(11)
open(11,file='d:/wu/data1/1994/'//filename(k)) !获知n后,重新读取。
read(11,*)
read(11,*)
do i=1,n
!只读能见度,风速暂略 此循环为该时次的站点循环
read(11,*) sta(i),lon(i),lat(i),(temp(j),j=1,14),vi(i)
yr(k,i)=filename(k)(1:2)
mon(k,i)=filename(k)(3:4)
if(vi(i)==9999) then !若为缺测站点,直接pass
continue
else !不是缺测站点
num=1
endif
!print*,vi(i)
if(num==1) then
tim=0.0;nlev=1;nflag=1
!write(12) sta(i),lat(i),lon(i),tim,nlev,nflag,vi(i)
!write(13,*) sta(i),lat(i),lon(i),tim,nlev,nflag,vi(i)
write(12) sta(i),lat(i),lon(i),yr(k,i),mon(k,i),vi(i)
write(13,*) sta(i),lat(i),lon(i),yr(k,i),mon(k,i),vi(i)
endif
enddo
nlev=0
write(12) sta(n),lat(n),lon(n),tim,nlev,nflag
close(12)
close(13) !一个时次的能见度场输入完毕
deallocate(lat)
deallocate(lon)
deallocate(vi)
deallocate(sta)
deallocate(yr)
deallocate(mon)
close(11)
enddo
end |
|