- 积分
 - 11775
 
	- 贡献
 -  
 
	- 精华
 
	- 在线时间
 -  小时
 
	- 注册时间
 - 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 |   
 
 
 
 |