- 积分
- 216
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-10-24
- 最后登录
- 1970-1-1
|
发表于 2017-5-14 18:23:40
|
显示全部楼层
我计算ep2的时候,总是出现 Infinity -Infinity的情况,我读取的数据是grads转化来的二进制,具体程序如下:
program epflux2
parameter(nx=810,ny=181,nz=20,nt=1)
real t(nx,ny,nz,nt),v(nx,ny,nz,nt),avev(ny,nz,nt),avet(ny,nz,nt),
&avevt(ny,nz,nt),p0(nz),t0(nz,nt),fnn(nz,nt),aveuv(ny,nz,nt)
data p0/1000.0,975.0,950.0,925.0,900.0,850.0,800.0,750.0,700.0,
* 650.0,600.0,550.0,500.0,450.0,400.0,350.0,300.0,250.0,
* 200.0,150.0/
p0=p0*100
a=6371000 !!!!!地球半径
omega=7.292e-5 !!!地球旋转角速度
g=9.80665
pi=3.1416
R=287. !!!气体常数
TS=240.
ps=1e5 !!!表面气压
open (1,file='e:\t.dat',access='direct',form='unformatted',
&recl=nx*ny)
m=0
do kt=1,nt
do l=1,nz
m=m+1
read(1,rec=m,iostat=ferr) ((t(i,j,l,kt),i=1,nx),j=1,ny)
enddo
enddo
close(1)
open (2,file='e:\v.dat',access='direct',form='unformatted',
&recl=nx*ny)
m=0
do kt=1,nt
do l=1,nz
m=m+1
read(1,rec=m,iostat=ferr) ((v(i,j,l,kt),i=1,nx),j=1,ny)
enddo
enddo
close(2)
open (3,file='e:\avet.dat',access='direct',form='unformatted',
&recl=ny)
m=0
do kt=1,nt
do l=1,nz
m=m+1
read(3,rec=m,iostat=ferr) (avet(j,l,kt),j=1,ny)
enddo
enddo
close(3)
open (4,file='e:\avev.dat',access='direct',form='unformatted',
&recl=ny)
m=0
do kt=1,nt
do l=1,nz
m=m+1
read(4,rec=m,iostat=ferr) (avev(j,l,kt),j=1,ny)
enddo
enddo
close(4)
cccccccccccccccccccccccccccccccccccccc
do n=1,nt
do k=1,nz
t0(k,n)=0.0
do j=1,ny
do i=1,nx
t0(k,n)=t0(k,n)+t(i,j,k,n)*(ps/p0(k))**0.286/(nx*ny)
end do
end do
end do
end do
do n=1,nt
do k=2,nz-1
dx=p0(k+1)-p0(k-1)
fnn(k,n)=(t0(k+1,n)-t0(k-1,n))/dx
enddo
dx=p0(2)-p0(1)
fnn(1,n)=(t0(2,n)-t0(1,n))/dx
dx=p0(nz)-p0(nz-1)
fnn(nz,n)=(t0(nz,n)-t0(nz-1,n))/dx
enddo
c write(*,*) avev
ccccccccccccccccccccccccccccccccccccccccc
do kt=1,nt
do l=1,nz
do j=1,ny
zz=0.0
do i=1,nx
avevt(j,l,kt)=(v(i,j,l,kt)-avev(j,l,kt))*(t(i,j,l,kt)-avet(j,l,kt)
&)*(ps/p0(l))**0.286+zz
zz=avevt(j,l,kt)
enddo
enddo
enddo
enddo
cccccccccccccccccccccccccccccccccccccccc
open (5,file='e:\ep2.txt',recl=8)
do kt=1,nt
do l=1,nz
do j=1,ny
f=(2.0*omega*sin((-90+(j-1)*1.0)/180*3.14))!!!科氏参数f
write(5,*) avevt(j,l,kt)/nx*cos((-90+(j-1)*1.0)/180*3.14)*f*a/
&fnn(l,kt)
enddo
enddo
enddo
end
具体错误出在哪儿了,请楼主指教 |
|