爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3944|回复: 6

[求助] 程序查不出错!求大神指导!用Fortran计算台风路径偏转角度

[复制链接]

新浪微博达人勋

发表于 2018-2-7 17:28:29 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 little_five 于 2018-2-8 08:46 编辑

要哭晕了,最近用Fortran在计算台风路径的偏转角度,用atan2(x,y)这个函数
但是每次一读到某行数据时,运行就出错,我自己查bug查了两个星期了,查不出来
百度说atan2(x,y)这个函数中x和y都不能等于0,
但我看了数据,明明就没有等于0
然后每次编译器都出来这句话 错误提示.png
资料用的是中国局的台风最佳路径集

希望大神帮我看看我的程序哪里出错了
万分感谢
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





密码修改失败请联系微信:mofangbao
shark20002 该用户已被删除
发表于 2018-2-9 15:52:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-2-12 10:21:55 | 显示全部楼层
不同的Fortran编译器有小的差别,intel 有atan2d gfortran 就有不同,建议先自己编个程序测试一下。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-2-22 13:55:01 | 显示全部楼层
但我看了数据,位置相减以后的相对位移,确实有静止不动的情况啊。

http://tcdata.typhoon.org.cn/CMABSTdata/CH1954BST.txt
1954090418 0 222 1070  999      10
1954090500 0 222 1070 1005       0
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-2-22 15:50:03 | 显示全部楼层
在atan前面加个判定试试?如果x和y都不为零,再计算actan(x,y),如果x或y任有一个为零,结果设为缺省数值
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-17 18:38:27 | 显示全部楼层
packard 发表于 2018-2-22 13:55
但我看了数据,位置相减以后的相对位移,确实有静止不动的情况啊。

http://tcdata.typhoon.org.cn/CMABS ...

啊~谢谢大神~后面查出来了,确实有静止不动的时候。当时生成数据的时候,数据断的位置不是出错的位置,当时又不懂,所以就......哈哈~不过已经解决了~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-17 18:39:53 | 显示全部楼层
hulihutu 发表于 2018-2-22 15:50
在atan前面加个判定试试?如果x和y都不为零,再计算actan(x,y),如果x或y任有一个为零,结果设为缺省数值

嗯呢~谢谢大神~确实是有静止不动的情况呢~后面加了判断语句,就搞定了·
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表