- 积分
- 454
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2015-5-13
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2016-5-8 22:20:05
|
显示全部楼层
本帖最后由 surelee 于 2016-5-8 22:22 编辑
原谅我以这种方式附上代码:
program ex2
implicit none
integer,parameter::nx=480,ny=241,nz=1,nt=1
integer,parameter:: tx=nx-2,ty=ny-2,tz=nz,tt=nt
real ght(nx,ny,nz,nt) !位势高度
real ksei(2:tx,2:ty,tz,tt) !地转风涡度
integer ix,iy
integer i,j
!定义常数
real::r=6371000 !地球半径
real f !地转参数
real ::omiga=7.292*10**(-5)
real ::g=9.8 !重力加速度
real dx,dy !差分格距
real ::dxx=0.75*2*3.1416/360,dyy=0.75*2*3.1416/360 !经纬网格对应的格距即精度
real lat !纬度
!读取位势高度场数据
open(1,file='d:/tex2/Apr2015_ght.grd',form='binary')
do iy=1,ny
do ix=1,nx
read(1)ght(ix,iy,nz,nt)
enddo
enddo
close(1)
print*,'read done'
!计算地转风涡度并写入文件
open(2,file='d:/tex2/Apr2015_ksei.grd',form='binary')
do y=2,ty
lat=(-90.0+dxx*(j-1))*2*3.1416/360 !计算格点地理纬度
do i=2,tx
f=2*omiga*sin(lat) !计算地转参数
ksei(i,j,tz,tt)=g/(f*(r**2))*( (ght(i+1,j,nz,nt)+ght(i-1,j,nz,nt)-2.0*ght(i,j,nz,nt))/(((dxx)**2)*cos(lat)*cos(lat))&
+(ght(i,j+1,nz,nt)+ght(i,j-1,nz,nt)-2.0*ght(i,j,nz,nt))/((dxx)**2)&
-(ght(i,j+1,nz,nt)-ght(i,j-1,nz,nt))*tan(lat)/(2.0*dxx) ) !计算地转涡度
write(2) ksei(i,j,tz,tt)
enddo
enddo
close(2)
print*,'write done'
end |
|