- 积分
- 45
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2018-1-26
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 little_five 于 2018-2-8 08:46 编辑
要哭晕了,最近用Fortran在计算台风路径的偏转角度,用atan2(x,y)这个函数
但是每次一读到某行数据时,运行就出错,我自己查bug查了两个星期了,查不出来
百度说atan2(x,y)这个函数中x和y都不能等于0,
但我看了数据,明明就没有等于0
然后每次编译器都出来这句话
资料用的是中国局的台风最佳路径集
希望大神帮我看看我的程序哪里出错了
万分感谢
program main
implicit none
character*5 :: A
character*4 :: wu,C
integer :: i,j,k,line,ty_id
character :: F,G
character*20 :: name,h
integer :: status = 0
integer, allocatable :: ymdt(:),cata(:),pres(:),wind(:)
real, allocatable :: lat(:),lon(:),an(:),x(:),y(:)
real*4,parameter :: pi=3.1415926
open(unit = 10,file='h:/final/original/CH1954BST.txt')
open(unit = 11,file='h:/final/k/CH1954BST.txt',status='replace',position='append')
do while(.true.)
read(10,*,iostat=status)A,wu,line,ty_id,C,F,G,name,h
if(status/=0)exit
allocate(ymdt(line),cata(line),lat(line),lon(line),pres(line),wind(line),an(line),x(line),y(line))
do i=1,line,1
read(10,*,iostat=status)ymdt(i),cata(i),lat(i),lon(i),pres(i),wind(i)
x(1)=0
y(1)=0
if(i>1)then
x(i)=lon(i)-lon(i-1)
y(i)=lat(i)-lat(i-1)
end if
an(1)=0
if(i>1)then
an(i)=atan2(y(i),x(i))*180/pi
end if
end do
write(11,"(A6,1X,I3,1X,I4,1X,A20)")A,line,ty_id,name
do j=1,line,1
write(11,*)ymdt(j),cata(j),lat(j),lon(j),an(j)
end do
deallocate(ymdt,cata,lat,lon,pres,wind,an,x,y)
end do
end do
end
|
|