爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7429|回复: 8

wrf模式出来的结果,dat文件怎么打开

[复制链接]
发表于 2015-4-23 21:48:29 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
老师让用dat文件里的数据作图,但是不知道怎么打开呢?有11G之大。。。用load读取不成功,是乱码。。
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2015-4-23 21:48:54 | 显示全部楼层
谢谢回复的大神了
密码修改失败请联系微信:mofangbao
发表于 2015-4-24 06:59:55 | 显示全部楼层
出来的应该是nc文件啊
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2015-4-24 08:41:51 | 显示全部楼层
又是那隻貓 发表于 2015-4-24 06:59
出来的应该是nc文件啊

可是老师给我的就是dat文件,可能是为了方便处理?唉。。怎么打开dat文件??!?!编程渣已哭晕在厕所。
密码修改失败请联系微信:mofangbao
发表于 2015-4-24 08:54:20 | 显示全部楼层
用Grads呢
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

发表于 2015-4-25 21:36:43 | 显示全部楼层
没给你ctl?
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

 楼主| 发表于 2015-4-26 20:24:29 | 显示全部楼层

原谅我,什么是CTL???
密码修改失败请联系微信:mofangbao
发表于 2015-4-27 16:19:06 | 显示全部楼层
_______Ζero 发表于 2015-4-26 20:24
原谅我,什么是CTL???

就是,用于描述dat文件的文件,以.ctl结尾,可以直接用grads打开的。
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2015-5-1 21:44:26 | 显示全部楼层
这个也有- 发表于 2015-4-27 16:19
就是,用于描述dat文件的文件,以.ctl结尾,可以直接用grads打开的。

没有,但是同时给了我一个FOTRAN文件、可是完全看不懂
program read_arwpost
! compile with ifort -132 -convert big_endian -o read_arwpost.exe read_arwpost.f90

implicit none
integer,parameter:: nx=80,ny=80,nz=29,nt=769
real,parameter   :: satm=101325., o3mw=48., so2mw=64., no2mw=46., nomw=30.
real,parameter   :: vcons=2.996
real,allocatable :: T2(:,:),psfc(:,:),rh2(:,:),RAINC(:,:),RAINNC(:,:),u10m(:,:),v10m(:,:)
real,allocatable :: tc(:,:,:),pressure(:,:,:),rh(:,:,:),umet(:,:,:),vmet(:,:,:)
real,allocatable :: so4(:,:,:),nh4(:,:,:),no3(:,:,:),vocs(:,:,:), &
                    soaa(:,:,:),soab(:,:,:),oc(:,:,:),ec(:,:,:),soila(:,:,:)   
real,allocatable :: so2(:,:,:),no2(:,:,:),no(:,:,:),o3(:,:,:),nh3(:,:,:),co(:,:,:), &
                    pm25(:,:,:),pm10(:,:,:)
real,allocatable :: ppm2ugm(:,:,:),bext(:,:,:),vis(:,:,:)
real,allocatable :: so4ave(:,:),nh4ave(:,:),no3ave(:,:),ecave(:,:),so2ave(:,:), &
                    no2ave(:,:),noave(:,:),pm25ave(:,:),pm10ave(:,:),visave(:,:)
integer :: i,j,k,t,irec,jrec

allocate(T2(nx,ny))
allocate(psfc(nx,ny))
allocate(rh2(nx,ny))
allocate(RAINC(nx,ny))
allocate(RAINNC(nx,ny))
allocate(u10m(nx,ny))
allocate(v10m(nx,ny))
allocate(tc(nx,ny,nz))
allocate(pressure(nx,ny,nz))
allocate(rh(nx,ny,nz))
allocate(umet(nx,ny,nz))
allocate(vmet(nx,ny,nz))
allocate(so4(nx,ny,nz))
allocate(nh4(nx,ny,nz))
allocate(no3(nx,ny,nz))
allocate(vocs(nx,ny,nz))
allocate(soaa(nx,ny,nz))
allocate(soab(nx,ny,nz))
allocate(oc(nx,ny,nz))
allocate(ec(nx,ny,nz))
allocate(soila(nx,ny,nz))
allocate(so2(nx,ny,nz))
allocate(no2(nx,ny,nz))
allocate(no(nx,ny,nz))
allocate(o3(nx,ny,nz))
allocate(nh3(nx,ny,nz))
allocate(co(nx,ny,nz))
allocate(pm25(nx,ny,nz))
allocate(pm10(nx,ny,nz))
allocate(ppm2ugm(nx,ny,nz))
allocate(bext(nx,ny,nz))
allocate(vis(nx,ny,nz))

allocate(so2ave(nx,ny))
allocate(no2ave(nx,ny))
allocate(noave(nx,ny))
allocate(so4ave(nx,ny))
allocate(nh4ave(nx,ny))
allocate(no3ave(nx,ny))
allocate(ecave(nx,ny))
allocate(pm25ave(nx,ny))
allocate(pm10ave(nx,ny))
allocate(visave(nx,ny))

ppm2ugm = 0.

irec = 0
jrec = 0
open(12,file='./result/2016_res.dat',form='unformatted',access='direct',recl=nx*ny)
open(88,file='2016_ncl.dat',form='unformatted',access='direct',recl=nx*ny)

open(21,file='so2.txt')
open(31,file='no2.txt')
open(41,file='o3.txt')
open(51,file='pm25.txt')
open(61,file='pm10.txt')
open(71,file='vis.txt')
open(81,file='no.txt')

do t=1,nt
print*,t

  jrec=jrec+1
  read(12,rec=jrec)((T2(i,j),i=1,nx),j=1,ny)  
  jrec=jrec+1
  read(12,rec=jrec)((psfc(i,j),i=1,nx),j=1,ny)
  jrec=jrec+1
  read(12,rec=jrec)((RAINC(i,j),i=1,nx),j=1,ny)
  jrec=jrec+1
  read(12,rec=jrec)((RAINNC(i,j),i=1,nx),j=1,ny)
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((pm25(i,j,k),i=1,nx),j=1,ny)
  enddo
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((pm10(i,j,k),i=1,nx),j=1,ny)
  enddo
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((so2(i,j,k),i=1,nx),j=1,ny)
  enddo
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((no2(i,j,k),i=1,nx),j=1,ny)
  enddo
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((no(i,j,k),i=1,nx),j=1,ny)
  enddo
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((o3(i,j,k),i=1,nx),j=1,ny)
  enddo
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((nh3(i,j,k),i=1,nx),j=1,ny)
  enddo
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((co(i,j,k),i=1,nx),j=1,ny)
  enddo
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((vocs(i,j,k),i=1,nx),j=1,ny)
  enddo
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((so4(i,j,k),i=1,nx),j=1,ny)
  enddo
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((nh4(i,j,k),i=1,nx),j=1,ny)
  enddo
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((no3(i,j,k),i=1,nx),j=1,ny)
  enddo
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((soaa(i,j,k),i=1,nx),j=1,ny)
  enddo
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((soab(i,j,k),i=1,nx),j=1,ny)
  enddo
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((oc(i,j,k),i=1,nx),j=1,ny)
  enddo
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((ec(i,j,k),i=1,nx),j=1,ny)
  enddo
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((soila(i,j,k),i=1,nx),j=1,ny)
  enddo
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((pressure(i,j,k),i=1,nx),j=1,ny)
  enddo
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((tc(i,j,k),i=1,nx),j=1,ny)
  enddo
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((rh(i,j,k),i=1,nx),j=1,ny)
  enddo
  jrec=jrec+1
  read(12,rec=jrec)((rh2(i,j),i=1,nx),j=1,ny)
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((umet(i,j,k),i=1,nx),j=1,ny)
  enddo
  do k=1,nz
    jrec=jrec+1
    read(12,rec=jrec)((vmet(i,j,k),i=1,nx),j=1,ny)
  enddo
  jrec=jrec+1
  read(12,rec=jrec)((u10m(i,j),i=1,nx),j=1,ny)
  jrec=jrec+1
  read(12,rec=jrec)((v10m(i,j),i=1,nx),j=1,ny)

! change gas unit from ppmv to ug*m-3
  ppm2ugm = pressure*1.e5/(satm*0.0821*(tc+273.15))

!  so2=(so2*pressure*100.*so2mw)*1000./(satm*0.0821*(tc+273.15))
!  no2=(no2*pressure*100.*no2mw)*1000./(satm*0.0821*(tc+273.15))
!  no =(no *pressure*100.*nomw )*1000./(satm*0.0821*(tc+273.15))
!  o3 =(o3 *pressure*100.*o3mw )*1000./(satm*0.0821*(tc+273.15))

   so2=so2*so2mw*ppm2ugm
   no2=no2*no2mw*ppm2ugm
   no =no *nomw *ppm2ugm
   o3 =o3 *o3mw*ppm2ugm

! compute visibility
!  v=2.996/Bext    ! or use 3.912    Chow et al. 2002  
!  Bext=0.003*f(RH)*{[SO4]+[NO3]+[NH4]}+0.004*[OM]+0.01*BC+0.0006*Coarse+0.001*Soil+A
!  sulfate,nitrate,ammonia,organic matter,black carbon,coarse particle,
!  soil-derive aerosols unit is ug/m3
!  A=0.01 is a constant represents the scattering of clean air     

   bext=0.003*rh*(so4+no3+nh4)+0.004*(soaa+soab+oc)+0.01*ec &
       +0.0006*(pm10-pm25)+0.001*soila+0.01
   vis=2.996/bext

! compute monthly average concentration
   if(t>=17 .and. t<=nt-8)then
     so2ave (:,:) = so2ave (:,:) + so2 (:,:,1)
     no2ave (:,:) = no2ave (:,:) + no2 (:,:,1)
     noave  (:,:) = noave  (:,:) + no  (:,:,1)
     so4ave (:,:) = so4ave (:,:) + so4 (:,:,1)
     nh4ave (:,:) = nh4ave (:,:) + nh4 (:,:,1)
     no3ave (:,:) = no3ave (:,:) + no3 (:,:,1)
     ecave  (:,:) = ecave  (:,:) + ec  (:,:,1)
     pm25ave(:,:) = pm25ave(:,:) + pm25(:,:,1)
     pm10ave(:,:) = pm10ave(:,:) + pm10(:,:,1)
     visave (:,:) = visave (:,:) + vis (:,:,1)
   endif

!  print*,T2(:,:)-273.15
!  print*,o3(:,:,1)*1000.
!  print*,v10m(:,:)

   write(21,*)so2 (34,38,1)
   write(31,*)no2 (34,38,1)
   write(41,*)o3  (34,38,1)
   write(51,*)pm25(34,38,1)
   write(61,*)pm10(34,38,1)
   write(71,*)vis (34,38,1)
   write(81,*)no  (34,38,1)

enddo

close(12)

  so2ave  = so2ave /745.  
  no2ave  = no2ave /745.
  noave   = noave  /745.
  so4ave  = so4ave /745.
  nh4ave  = nh4ave /745.
  no3ave  = no3ave /745.
  ecave   = ecave  /745.
  pm25ave = pm25ave /745.
  pm10ave = pm10ave /745.
  visave  = visave  /745.

! write the average results for ncl
  irec=irec+1
  write(88,rec=irec)((so2ave(i,j),i=1,nx),j=1,ny)
  irec=irec+1
  write(88,rec=irec)((no2ave(i,j),i=1,nx),j=1,ny)
  irec=irec+1
  write(88,rec=irec)((noave(i,j),i=1,nx),j=1,ny)
  irec=irec+1
  write(88,rec=irec)((so4ave(i,j),i=1,nx),j=1,ny)
  irec=irec+1
  write(88,rec=irec)((nh4ave(i,j),i=1,nx),j=1,ny)
  irec=irec+1
  write(88,rec=irec)((no3ave(i,j),i=1,nx),j=1,ny)
  irec=irec+1
  write(88,rec=irec)((ecave(i,j),i=1,nx),j=1,ny)
  irec=irec+1
  write(88,rec=irec)((pm25ave(i,j),i=1,nx),j=1,ny)
  irec=irec+1
  write(88,rec=irec)((pm10ave(i,j),i=1,nx),j=1,ny)
  irec=irec+1
  write(88,rec=irec)((visave(i,j),i=1,nx),j=1,ny)

close(88)

end program
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表