爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4280|回复: 5

[求助] fortran编程 数组越界问题 编译的是湿球温度迭代算法 谁 帮帮我!!!

[复制链接]

新浪微博达人勋

发表于 2013-3-9 16:21:52 | 显示全部楼层 |阅读模式

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

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

x
运行没有错误,但是结果是array bounds exceeded
求高手求解!!!!!!
程序如下:
program mian
!声明变量
real::e !水汽压
real::t !干球温度
real::p !本站气压
real,parameter::t1=273.16
real::t0
integer,parameter::n=1500
real::tw(0:n) !湿球温度估算值序列
real::etw !饱和水汽压
real,parameter::a=8.15*10**(-4)
real::ej(0:n) !水汽压的计算值
real::err(0:n) !计算误差
real::ermin !计算误差的最小值


!输入变量
write(*,*)"水汽压为"
read(*,*)e
write(*,*)"干球温度为"
read(*,*)t
write(*,*)"本站气压为"
read(*,*)p


t0=273.15+t
tw(0)=t-15
do i=0,n
  if(tw(i)>0)then
    etw=10**(10.79574*(1-t1/t0)-5.02800*log(t0/t1)+1.50475*10**(-4)*(1-10**((-8.2969*(t0/t1-1))))+0.42873*10**(-3)*(10**(4.76955*(1-t1/t0))-1)+0.78614)
  else
    etw=10**((-9.09685)*(t1/t0-1)-3.56654*log(t1/t0)+0.87682*(1-t0/t1)+0.78614)
  end if
   ej(i)=etw-a*p*(e-etw)
   err(i)=abs(e-ej(i))
   tw(i+1)=tw(i)+0.01
end do


errmin=err(0)
do i=1,n
if(err(i)<err(i-1))then
      errmin=err(i)
   end if
   twmin=tw(i)
end do


write(*,*)"湿球温度为"write(*,*)twmin
stop
end

有问题 希望指出来 本人fortran菜鸟。 或者有人可以编译湿球温度迭代算法可以联系我。QQ281381605 谢谢  注明:气象。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-3-9 17:02:03 | 显示全部楼层
迭代的时候用到了tw(i+1)这样的话你的循环就不能0,n,因为会产生n+1这一超出数组定义的数。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-3-9 21:48:36 | 显示全部楼层

有道理,array bounds exceeded 意思就是超出范围了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-3-10 09:00:11 | 显示全部楼层
这种问题找我们的程序猿----@言深深  同学一下就能解决
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-4-12 20:02:15 | 显示全部楼层
哈哈哈哈哈哈,。。。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-11-5 19:32:42 | 显示全部楼层
楼主你的问题解决了没有?
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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