下面是我写的代码,一直出现问题,主要是在公式那里,而且一直提示warning,说sin cos tan的变量形式和worg不一样 ,第一次学习编程,想了很久,之前用的real,上课问过老师,老师让用动态数组试一下,可以还是不行,请大家帮帮忙,谢谢大家
错误类型
REAL,PARAMETER:: Omega=7.292e-5,R=6371e+3,PI=3.1415926,Delta=1.00
INTEGER,PARAMETER :: nx=53,ny=29,nz=3,nt=22
integer i,j,k,l,ii
REAl lat(ny),lon(nx) ,F
CHARACTER timefile(22)*12 ,levelfile(3)*4
real,allocatable :: h(:,:,:,:),worg(:,:,:,:)
allocate (h(NX,NY,NZ,NT),worg(NX,NY,NZ,NT))
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
data timefile/'13052108.000','13052120.000','13052208.000','13052220.000','13052308.000','13052320.000','13052408.000','13052420.000','13052508.000','13052520.000','13052608.000','13052620.000','13052708.000','13052720.000','13052808.000','13052820.000','13052908.000','13052920.000','13053008.000','13053020.000','13053108.000','13053120.000'/
DATA levelfile/'0850','0500','0300'/
do i=1,nx
lon(i)=30.0+(i-1)*Delta*2.5
lon(i)=lon(i)*pi/180.
enddo
do i=1,ny
lat(i)=10.0+(i-1)*Delta*2.5
lat(i)=lat(i)*pi/180.
enddo
!--------------read height----------------
DO k=1,NZ ! level
DO l=1,NT ! time
open(1,file='d:\micaps/height/'//trim(levelfile(k))//'/'//timefile(l))
do ii=1,4
read(1,*)
enddo
do j=ny,1,-1
read(1,*)(h(i,j,k,l),i=1,NX)
enddo
CLOSE(1)
ENDDO
ENDDO
h=h*10.
end
!!!!wodu!!!!!!!!!!!!!!!!!!!!!!!!!1
worg=2.e+36
DO l=1,NT
DO k=1,NZ
do i=1+1,NX-1
do j=1+1,NY-1
F=Omega*2*sin(lat(j))
worg(i,j,k,l)=9.8/(F*R**2)*( (h(i+1,j,k,l)+h(i-1,j,k,l)-2*h(i,j,k,l))/(Delta*pi/180*cos(lat(j)))**2+(h(i,j+1,k,l)+h(i,j-1,k,l)-2*h(i,j,k,l))/(Delta*pi/180)**2-(h(i,j+1,k,l)-h(i,j-1,k,l))/(Delta*pi/180*2)*tan(lat(j)) )