- 积分
- 5491
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-7-18
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我要对OLR的原始逐日资料进行10-90天的滤波,向老师要了一份滤波的fortran程序,我琢磨了很久实在不懂。我就直接修改了部分主程序运行了,可是输出的结果全是NaN,我找不出哪里错了。希望会的老师同学帮我看看程序哪里错了,或是能够提供滤波的原理也行(我在书里没有找到相关内容),我定当感激不尽,人在南信大我请你吃饭。
下面是主程序(需要看全部程序的,去往:http://bbs.06climate.com/forum.p ... mp;page=1#pid266148):
program mian
parameter(nx=72,ny=32,nt=5202,freqL=1/90.,freqU=1/10.)
dimension olr(nx,ny,nt)
dimension r2(nx,ny,nt)
dimension mid(nx,ny,nt)
dimension olrf(nx,ny,nt)
! complex r1(nt),work(nt)
real r1(nt),work(nt)
OPEN(11,FILE='olr.79-12.6-10.grd',FORM='BINARY')
PRINT*,'NOW READING ...'
DO IT=1,NT
DO J=1,NY
DO I=1,NX
READ(11) olr(I,J,IT)
ENDDO
ENDDO
enddo
close(11)
do it=1,nt
do j=1,ny
do i=1,nx
mid(i,j,it)=olr(i,j,it)
enddo
enddo
enddo
do 111 i=1,nx
do 111 j=1,ny
do 50 k=1,nt
r1(k)=mid(i,j,k)
50 continue
call bandps(nt,r1,1.,freqL,freqU,0,work)
do 60 k=1,nt
r2(i,j,k)=real(r1(k))
60 continue
111 continue
do k=1,nt
do j=1,ny
do i=1,nx
olrf(i,j,k)=r2(i,j,k)
enddo
enddo
enddo
OPEN(12,FILE='bp-filtered-olr.grd',FORM='BINARY')
PRINT*,'NOW WRITING ...'
do k=1,nt
do j=1,ny
do i=1,nx
if(abs(olrf(i,j,k))>5000.0) then
olrf(i,j,k)=-9999
write(12) olrf(i,j,k)
else
write(12) olrf(i,j,k)
endif
enddo
enddo
enddo
close(12)
print*,'NOW COMPLETED!'
stop
end
|
|