- 积分
- 678
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-5-13
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
这是我的fnl资料数据提取的gs文件:
'reinit'
*td=01
*while(td<=10)
*h=00
*while(h<=18)
'open f:\fnl\fnl_20110608_00_00_c.ctl'
'open f:\fnl\fnl_20110608_06_00_c.ctl'
'open f:\fnl\fnl_20110608_12_00_c.ctl'
'open f:\fnl\fnl_20110608_18_00_c.ctl'
'open f:\fnl\fnl_20110609_00_00_c.ctl'
'open f:\fnl\fnl_20110609_06_00_c.ctl'
'open f:\fnl\fnl_20110609_12_00_c.ctl'
'open f:\fnl\fnl_20110609_18_00_c.ctl'
'open f:\fnl\fnl_20110610_00_00_c.ctl'
'open f:\fnl\fnl_20110610_06_00_c.ctl'
'open f:\fnl\fnl_20110610_12_00_c.ctl'
'open f:\fnl\fnl_20110610_18_00_c.ctl'
'open f:\fnl\fnl_20110611_00_00_c.ctl'
'open f:\fnl\fnl_20110611_06_00_c.ctl'
'open f:\fnl\fnl_20110611_12_00_c.ctl'
'open f:\fnl\fnl_20110611_18_00_c.ctl'
'set fwrite f:\u.dat'
'set gxout fwrite'
i=1
while(i<=16)
'set dfile 'i''
z1=1
while(z1<=21)
'set z 'z1''
'set lon 0 180'
'set lat 0 90'
*'define t=TMPprs'
*'d t'
'd TMPprs'
z1=z1+1
endwhile
i=i+1
endwhile
'disable fwrite'
*'reinit'
* h=h+6
*endwhile
*td=td+1
*endwhile
;
*pull dummy
生成了u.dat(纬向风速)这个文件
同理还生成了v.dat(经向风速)和t.dat(温度分布)
然后用以下这个Fortran程序处理这些数据,想要得到温度平流结果出错:forrtl:severe(257):formatted i/o to unit open for unformatted transfers ,unit 1,file:\t.dat
程序如下:
program main
implicit none
integer nx,ny,nz,nt
parameter (nx=181,ny=91,nz=26,nt=16)
integer i,j,k,t,irec
real Temp(nx,ny,nz,nt)
real ATemp(nx,ny,nz,nt)
real U(nx,ny,nz,nt)
real V(nx,ny,nz,nt)
real lat(ny)
real dx,dy
open(1,file="f:\t.dat",form='unformatted')
do t=1,nt
do k=1,nz
do j=1,ny
read(1,*)(temp(i,j,k,t),i=1,nx)
enddo
end do
end do
close(1)
print *,temp(5,6,5,3) ,temp(5,6,7,3) ,temp(5,6,8,3),temp(5,6,9,3)
! /* 读入水平风速数据U */
open(2,file="f:\u.dat",form='unformatted')
do t=1,nt
do k=1,nz
do j=1,ny
read(2,*)(U(i,j,k,t),i=1,nx)
enddo
enddo
enddo
close(2)
! /* 读入水平风速数据V */
open(3,file="v.dat",form='unformatted')
do t=1,nt
do k=1,nz
do j=1,ny
read(3,*)(V(i,j,k,t),i=1,nx)
enddo
enddo
enddo
close(3)
do j=1,ny
lat(j)=float(j-1)*1.0
enddo
do t=1,nt
do k=1,nz
do j=2,ny-1
dx=6371000*cos(lat(j)*3.14/180)*3.14/180
dy=6371000*3.14/180
do i=2,nx-1
ATemp(i,j,k,t)=U(i,j,k,t)*(Temp(i-1,j,k,t)-Temp(i+1,j,k,t))/(2*dx)+V(i,j,k,t)*(Temp(i,j-1,k,t)-Temp(i,j+1,k,t))/(2*dy)
enddo
enddo
do i=1,nx-1
j=1
dx=6371000*cos(lat(j)*3.14/180)*3.14/180
dy=6371000*3.14/180
atemp(i,j,k,t)=-u(i,j,k,t)*(temp(i+1,j,k,t)-temp(i,j,k,t))/dx-v(i,j,k,t)*(temp(i,j+1,k,t)-temp(i,j,k,t))/dy
enddo
do j=1,ny-1
i=111
dx=6371000*cos(lat(j)*3.14/180)*3.14/180
dy=6371000*3.14/180
atemp(i,j,k,t)=-u(i,j,k,t)*(temp(i,j,k,t)-temp(i-1,j,k,t))/dx-v(i,j,k,t)*(temp(i,j+1,k,t)-temp(i,j,k,t))/dy
enddo
do i=2,nx
j=61
dx=6371000*cos(lat(j)*3.14/180)*3.14/180
dy=6371000*3.14/180
atemp(i,j,k,t)=-u(i,j,k,t)*(temp(i,j,k,t)-temp(i-1,j,k,t))/dx-v(i,j,k,t)*(temp(i,j,k,t)-temp(i,j-1,k,t))/dy
enddo
do j=2,ny
i=1
dx=6371000*cos(lat(j)*3.14/180)*3.14/180
dy=6371000*3.14/180
atemp(i,j,k,t)=-u(i,j,k,t)*(temp(i+1,j,k,t)-temp(i,j,k,t))/dx-v(i,j,k,t)*(temp(i,j,k,t)-temp(i,j-1,k,t))/dy
enddo
enddo
enddo
open(4,file="f:\atemplow.grd",form='binary')
do t=1,nt
do j=1,ny
do i=1,nx
write(4) (ATemp(i,j,1,t)+ATemp(i,j,6,t)+ATemp(i,j,8,t))*100000/3
enddo
enddo
enddo
close(4)
open(5,file="f:\atemphigh.grd",form='binary')
do t=1,nt
do j=1,ny
do i=1,nx
write(5) (ATemp(i,j,13,t)+ATemp(i,j,15,t)+ATemp(i,j,17,t))*100000/3
enddo
enddo
enddo
close(5)
end
到底哪里错了呢?求指教。
|
|