- 积分
- 2298
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-12-13
- 最后登录
- 1970-1-1
|
Fortran
系统平台: |
Windows |
问题概况: |
同一个程序,我只改了parameter,然后就报错了。检查了数组大小,确实没有问题 |
问题截图: |
- |
我看过提问的智慧: |
看过 |
自己思考时长(天): |
2 |
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 我是彤-Tina 于 2016-1-2 15:09 编辑
如题,我在运行一个插值程序的时候,因为之前的疏忽,少算了两个月的数据,原来的数据是8016天,后来补上了这两个月的数据,并更新了文件。现在总的天数是8077天(增加了11,12月)并且我也打开文件查看了,的确是8077天。
其他地方我确实没有改动过,但是程序运行到一定循环的时候就会报错,说数组溢出。逐步检查了,读入数据的时候并没有问题,没有提示数组溢出了,但是就是nt=8016这里不能改变,不知道应该怎么解决这个问题。我觉得很可能是自己注意不到的小细节出了问题,所以求各位指点
接下来就在这里报了错,不过我的确没有动过下面的程序唯一改动的就只有nt=8077那个位置和上图中7472那里(原来的数是7411)(我打开文件看了,里面的确是7472个)
open(4,file='d:\study\allMissInfo.txt')
do im=1,m
do it=1,nt
if(a(im,it,1)>3000)then
write(4,*)zh(im,it),yr(im,it),mo(im,it),day(im,it)
mark=im
!计算某月某日多年平均值
do km=1,m
gg=0
do kt=1,nt
if((mo(im,it)==mo(km,kt)).and.(day(im,it)==day(km,kt)))then
gg=gg+1
tih(km,gg)=a(km,kt,1)
endif
enddo
enddo
!
do km=1,m
sum=0.0;num=0;av(km)=0
do ig=1,gg
if(tih(km,ig)>30000)then
tih(km,ig)=0
num=num+1
endif
av(km)=tih(km,ig)+av(km)
enddo
av(km)=av(km)/(gg-num)
enddo
do km=1,m
jp(km)=a(im,it,1)-av(km)
if(abs(jp(km))>100)jp(km)=0
enddo
!计算其余115站在该年、该月、该日的多年平均值,再求出此时此刻的距平值
ff=0.0;kk=0;sum1=0.0;sum2=0.0;r=5.0;e=2.718
do k=1,m
dd2(k)=sqrt((lon(mark)-lon(k))**2+(lat(mark)-lat(k))**2)
if(dd2(k)<r)then
kk=kk+1
weight1(k)=exp(-1.0*dd2(k)**2/(4*e))
else
weight1(k)=0.0
endif
sum1=sum1+weight1(k)*jp(k)
sum2=sum2+weight1(k)
enddo
if(kk>0) ff=sum1/sum2
a(im,it,1)=av(im)+ff
endif
enddo !it
enddo
print*,'part deal ok1'
|
|