- 积分
- 3375
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-12-31
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
最近想利用Fortran读取ARWpost后处理二进制数据 .dat文件,但是一直无法成功,程序没有报错,只是读出来的数据明显不对。以下是我的程序以及相关的ctl文件,还有试验读出来的xlat数据情况,希望有做过相关研究的前辈给一些思路,已经十多天了依然无法解决。
program main
implicit none
integer i,j,k
integer,parameter::nx=119
integer,parameter::ny=119
integer,parameter::nz=77
real:: zh(nx,ny,nz),p(nx,ny,nz),tc(nx,ny,nz),qv(nx,ny,nz),theta(nx,ny,nz),u(nx,ny,nz),v(nx,ny,nz),w(nx,ny,nz),td(nx,ny,nz),rh(nx,ny,nz)
real:: hgt(nx,ny,1),slvl(nx,ny,1),sst(nx,ny,1),tsk(nx,ny,1),xland(nx,ny,1),xlat(nx,ny,1),xlong(nx,ny,1),q2(nx,ny,1),t2(nx,ny,1),u10(nx,ny,1),v10(nx,ny,1),hfx(nx,ny,1),qfx(nx,ny,1)
real :: undef=1.0e30
integer:: irec
integer:: itime,ivars
integer:: tdef=37
irec=1
open(10,file='0526exam.dat',form='UNFORMATTED',access='DIRECT',status='OLD',recl=nx*ny)
do itime=1,37
write(*,*) itime
do ivars=1,23
write(*,*) ivars
if(ivars==1) then ! XLAT, Latitude
read(10,rec=irec) ((xlat(i,j,1),i=1,nx),j=1,ny)
irec=irec+1
do i=1,nx
do j=1,ny
write(*,*) xlat(i,j,1)
end do
end do
else if(ivars==2) then ! XLONG, Lontitude
read(10,rec=irec) ((xlong(i,j,1),i=1,nx),j=1,ny)
irec=irec+1
else if(ivars==3) then ! x-wind component (m s-1)
do k=1,nz
read(10,rec=irec) ((u(i,j,k),i=1,nx),j=1,ny)
irec=irec+1
end do
else if(ivars==4) then ! y-wind component (m s-1)
do k=1,nz
read(10,rec=irec) ((v(i,j,k),i=1,nx),j=1,ny)
irec=irec+1
end do
else if(ivars==5) then ! z-wind component (m s-1)
do k=1,nz
read(10,rec=irec) ((w(i,j,k),i=1,nx),j=1,ny)
irec=irec+1
end do
else if(ivars==6) then ! QV at 2 M (kg kg-1)
read(10,rec=irec) ((q2(i,j,1),i=1,nx),j=1,ny)
irec=irec+1
else if(ivars==7) then ! TEMP at 2 M (K)
read(10,rec=irec) ((t2(i,j,1),i=1,nx),j=1,ny)
irec=irec+1
else if(ivars==8) then ! U at 10 M (m s-1)
read(10,rec=irec) ((u10(i,j,1),i=1,nx),j=1,ny)
irec=irec+1
else if(ivars==9) then ! V at 10 M (m s-1)
read(10,rec=irec) ((v10(i,j,1),i=1,nx),j=1,ny)
irec=irec+1
else if(ivars==10) then ! Water vapor mixing ratio (kg kg-1)
do k=1,nz
read(10,rec=irec) ((qv(i,j,k),i=1,nx),j=1,ny)
irec=irec+1
end do
else if(ivars==11) then ! Terrain Height (m)
read(10,rec=irec) ((HGT(i,j,1),i=1,nx),j=1,ny)
irec=irec+1
else if(ivars==12) then ! SURFACE SKIN TEMPERATURE (K)
read(10,rec=irec) ((tsk(i,j,1),i=1,nx),j=1,ny)
irec=irec+1
else if(ivars==13) then ! LAND MASK (1 FOR LAND, 2 FOR WATER) (-)
read(10,rec=irec) ((xland(i,j,1),i=1,nx),j=1,ny)
irec=irec+1
else if(ivars==14) then ! UPWARD HEAT FLUX AT THE SURFACE (W m-2)
read(10,rec=irec) ((hfx(i,j,1),i=1,nx),j=1,ny)
irec=irec+1
else if(ivars==15) then ! UPWARD MOISTURE FLUX AT THE SURFACE (kg m-2 s-1)
read(10,rec=irec) ((qfx(i,j,1),i=1,nx),j=1,ny)
irec=irec+1
else if(ivars==16) then ! SEA SURFACE TEMPERATURE (K)
read(10,rec=irec) ((sst(i,j,1),i=1,nx),j=1,ny)
irec=irec+1
else if(ivars==17) then ! Model pressure (hPa)
do k=1,nz
read(10,rec=irec) ((p(i,j,k),i=1,nx),j=1,ny)
irec=irec+1
end do
else if(ivars==18) then ! Model height (km)
do k=1,nz
read(10,rec=irec) ((zh(i,j,k),i=1,nx),j=1,ny)
irec=irec+1
end do
else if(ivars==19) then ! Temperature (C)
do k=1,nz
read(10,rec=irec) ((tc(i,j,k),i=1,nx),j=1,ny)
irec=irec+1
end do
else if(ivars==20) then ! Potential Temperature (K)
do k=1,nz
read(10,rec=irec) ((theta(i,j,k),i=1,nx),j=1,ny)
irec=irec+1
end do
else if(ivars==21) then ! Dewpoint Temperature (C)
do k=1,nz
read(10,rec=irec) ((td(i,j,k),i=1,nx),j=1,ny)
irec=irec+1
end do
else if(ivars==22) then ! Relative Humidity (%)
do k=1,nz
read(10,rec=irec) ((rh(i,j,k),i=1,nx),j=1,ny)
irec=irec+1
end do
else if(ivars==23) then ! Sea Levelp Pressure (hPa)
read(10,rec=irec) ((slvl(i,j,1),i=1,nx),j=1,ny)
irec=irec+1
end if
end do !ivars
end do !itime
end program main
这是ctl文件
dset F:\exam\0526ex\0526exam.dat
options byteswapped
undef 1.e30
title OUTPUT FROM WRF V3.8 MODEL
pdef 119 119 lcc 35.000 160.000 60.000 60.000 50.00000 20.00000 160.00000 10000.000 10000.000
xdef 338 linear 152.36604 0.04504504
ydef 267 linear 28.89213 0.04504504
zdef 77 levels
0.01000
0.03000
0.05000
0.07000
0.09000
0.11000
0.13000
0.15000
0.17000
0.19000
0.21000
0.23000
0.25000
0.27000
0.29000
0.31000
0.33000
0.35000
0.37000
0.39000
0.41000
0.43000
0.45000
0.47000
0.49000
0.51000
0.53000
0.55000
0.57000
0.59000
0.61000
0.63000
0.65000
0.67000
0.69000
0.71000
0.73000
0.75000
0.77000
0.79000
0.81000
0.83000
0.85000
0.87000
0.89000
0.91000
0.93000
0.95000
0.97000
0.99000
1.01000
1.05000
1.10000
1.15000
1.20000
1.25000
1.30000
1.40000
1.50000
1.60000
1.70000
1.80000
1.90000
2.00000
2.20000
2.40000
2.60000
2.80000
3.00000
3.50000
4.00000
5.00000
6.00000
7.00000
8.00000
9.00000
10.00000
tdef 37 linear 06Z26MAY2016 60MN
VARS 23
XLAT 1 0 LATITUDE, SOUTH IS NEGATIVE (degree_north)
XLONG 1 0 LONGITUDE, WEST IS NEGATIVE (degree_east)
U 77 0 x-wind component (m s-1)
V 77 0 y-wind component (m s-1)
W 77 0 z-wind component (m s-1)
Q2 1 0 QV at 2 M (kg kg-1)
T2 1 0 TEMP at 2 M (K)
U10 1 0 U at 10 M (m s-1)
V10 1 0 V at 10 M (m s-1)
QVAPOR 77 0 Water vapor mixing ratio (kg kg-1)
HGT 1 0 Terrain Height (m)
TSK 1 0 SURFACE SKIN TEMPERATURE (K)
XLAND 1 0 LAND MASK (1 FOR LAND, 2 FOR WATER) (-)
HFX 1 0 UPWARD HEAT FLUX AT THE SURFACE (W m-2)
QFX 1 0 UPWARD MOISTURE FLUX AT THE SURFACE (kg m-2 s-1)
SST 1 0 SEA SURFACE TEMPERATURE (K)
pressure 77 0 Model pressure (hPa)
height 77 0 Model height (km)
tc 77 0 Temperature (C)
theta 77 0 Potential Temperature (K)
td 77 0 Dewpoint Temperature (C)
rh 77 0 Relative Humidity (%)
slp 1 0 Sea Levelp Pressure (hPa)
ENDVARS
|
-
|