- 积分
- 53
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2016-3-28
- 最后登录
- 1970-1-1
|
Fortran
系统平台: |
vs2010 |
问题概况: |
在对台风的24小时变化分类时,fortran程序出现了下面的错误,具体主程序如下 |
问题截图: |
|
我看过提问的智慧: |
看过 |
自己思考时长(天): |
1 |
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
program main
implicit none
integer,parameter :: t=60,ni=201,nj=201
integer i,j,i2,j2,m,n,a,b
integer nn_ri,nn_si,nn_n,nn_w !这些是四类ri,si,n,w,的数量
real wind_24h(t),tc_Lat(t),tc_Lon(t),tbb_lat(301,t),tbb_lon(301,t),dis(301,301),d
! 风速24h变化,台风中心纬度,台风中心经度,301*301个格点的经纬度,与台风中心的距离
integer IR(301,301,t),IR_ri(ni,nj),IR_si(ni,nj),IR_n(ni,nj),IR_w(ni,nj)
integer num_ri(ni,nj),num_si(ni,nj),num_n(ni,nj),num_w(ni,nj)
integer tclon_grid(t),tclat_grid(t),mingrid(2) !台风中心所在格点
real mean_ri(ni,nj),mean_si(ni,nj),mean_n(ni,nj),mean_w(ni,nj)
real :: fimiss=-20100.
open(7, file='D:\HURSAT\BANYAN\2005\wind_24h0.txt')
open(8, file='D:\HURSAT\BANYAN\2005\centlat.txt')
open(9, file='D:\HURSAT\BANYAN\2005\centlon.txt')
open(10, file='D:\HURSAT\BANYAN\2005\irwin.grd',form='binary')
open(12, file='D:\HURSAT\BANYAN\2005\tbb_lat.grd',form='binary')
open(13, file='D:\HURSAT\BANYAN\2005\tbb_lon.grd',form='binary')
open(14, file='D:\HURSAT\BANYAN\2005\meanri.txt')
open(15, file='D:\HURSAT\BANYAN\2005\meansi.txt')
open(16, file='D:\HURSAT\BANYAN\2005\meann.txt')
open(17, file='D:\HURSAT\BANYAN\2005\meanw.txt')
do m=1,t ! t=60,wind_24中的个数
read(7,*) wind_24h(m)
read(8,*) tc_lat(m) !台风中心坐标均与wind_24h初始时刻相对应
read(9,*) tc_lon(m)
do b=1,301
read(12) tbb_lat(b,m)
do a=1,301
read(10) IR(a,b,m) ! 这里的IR与wind_24h初始时刻相对应
end do
end do
do a=1,301
read(13) tbb_lon(a,m)
end do
end do
nn_ri=0
nn_si=0
nn_n=0
nn_w=0
IR_ri(i,j)=0
IR_si(i,j)=0
IR_n(i,j)=0
IR_w(i,j)=0
num_ri(i,j)=0
num_si(i,j)=0
num_n(i,j)=0
num_w(i,j)=0
do n=1,t
do a=1,301
do b=1,301
call distance(tc_lon(n), tc_lat(n), tbb_lon(a,n), tbb_lat(b,n), d)
dis(a,b)=d
enddo
enddo
mingrid=minloc(dis)
tclon_grid(n)=mingrid(1) !台风中心经度格点
tclat_grid(n)=mingrid(2) !台风中心纬度格点
! 各类的某范围内的tbb求和
! Calculate the mean and construct a time series for Rapidly intensifying TC samples
if ( wind_24h(n)>=30 ) then
nn_ri=nn_ri+1
do i=1,201
do j=1,201
i2=tclon_grid(n)+i-101
j2=tclat_grid(n)+j-101
if ( (i2>=1 .and.i2<=301) .and. (j2>=1 .and.j2<=301) .and. IR(i2,j2,n)/=fimiss ) then
IR_ri(i,j)=IR_ri(i,j)+IR(i2,j2,n)
num_ri(i,j)=num_ri(i,j)+1
endif
enddo
enddo
print*,'RI',nn_ri,num_ri(100,100),IR_ri(100,100)
else if ( wind_24h(n)<30 .and. wind_24h(n)>=10 ) then
nn_si=nn_si+1
do i=1,201
do j=1,201
i2=tclon_grid(n)+i-101
j2=tclat_grid(n)+j-101
if ( (i2>=1 .and.i2<=301) .and. (j2>=1 .and.j2<=301) .and. IR(i2,j2,n)/=fimiss ) then
IR_si(i,j)=IR_si(i,j)+IR(i2,j2,n)
num_si(i,j)=num_si(i,j)+1
endif
enddo
enddo
print*,'SI',nn_si,num_si(100,100),IR_si(100,100)
else if ( wind_24h(n)<10 .and. wind_24h(n)>-10 ) then
nn_n=nn_n+1
do i=1,201
do j=1,201
i2=tclon_grid(n)+i-101
j2=tclat_grid(n)+j-101
if ( (i2>=1 .and.i2<=301) .and. (j2>=1 .and.j2<=301) .and. IR(i2,j2,n)/=fimiss ) then
IR_n(i,j)=IR_n(i,j)+IR(i2,j2,n)
num_n(i,j)=num_n(i,j)+1
endif
enddo
enddo
print*,'N',nn_n,num_n(100,100),IR_n(100,100)
else if ( wind_24h(n)<=-10 ) then
nn_w=nn_w+1
do i=1,201
do j=1,201
i2=tclon_grid(n)+i-101
j2=tclat_grid(n)+j-101
if ( (i2>=1 .and.i2<=301) .and. (j2>=1 .and.j2<=301) .and. IR(i2,j2,n)/=fimiss ) then
IR_w(i,j)=IR_w(i,j)+IR(i2,j2,n)
num_w(i,j)=num_w(i,j)+1
endif
enddo
enddo
print*,'W',nn_w,num_w(100,100),IR_w(100,100)
end if
end do
! 求某范围各类的tbb平均值
do i=1,201
do j=1,201
if (num_ri(i,j)>0) then
mean_ri(i,j)=IR_ri(i,j)/num_ri(i,j)
else
mean_ri(i,j)=-999.
endif
write(14,*) mean_ri(i,j)
if (num_si(i,j)>0) then
mean_si(i,j)=IR_si(i,j)/num_si(i,j)
else
mean_si(i,j)=-999.
endif
write(15,*) mean_si(i,j)
if (num_n(i,j)>0) then
mean_n(i,j)=IR_n(i,j)/num_n(i,j)
else
mean_n(i,j)=-999.
endif
write(16,*) mean_n(i,j)
if (num_w(i,j)>0) then
mean_w(i,j)=IR_w(i,j)/num_w(i,j)
else
mean_w(i,j)=-999.
endif
write(17,*) mean_w(i,j)
end do
end do
close(7)
close(8)
close(9)
close(11)
close(12)
close(13)
close(14)
close(15)
close(16)
close(17)
end
|
|