爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6966|回复: 4

wrf-chem-如何把区域数据(包含经纬度和污染物排放量)放进WRF-CHEM里面run?

[复制链接]

新浪微博达人勋

发表于 2017-11-9 06:16:31 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 哈米波波 于 2017-11-19 03:36 编辑


目前看到的都是全球的数据pre+convert_emiss。 有没有把一种污染物的格点数据转成二进制,再转成wrf-chem可用的emission么?convert_emis.F里包含的包含的污染物来源和种类还有格式多样,有没有单一的转化程序?
自问自答吧,自己做的尝试
https://www.acom.ucar.edu/wrf-chem/download.shtml用这里的anthro_emiss貌似可以,不过要把数据转成nc格式,目前尝试的是把数据做成全球的。

之后就参考README文件里的说明进行操作,还是很清楚的,如果./make_anthro不成,可能需要chmod +x make_anthro转化一下,成执行文件,之后添加wrfinput文件,nc格式的排放数据,还有参考mozcart.inp文件,新建自己的anthro_emis.inp文件,如果选择的是diurnal的,之后./anthro_emis < anthro_emis.inp,就会生成wrfchemi_00z_d01...后面还在尝试放到wrf-chem里可不可以run成功。(过程中参考了emission_guide和https://www2.acom.ucar.edu/sites ... WRFchemTutorial.pdf

把txt转成nc,根据网上的进行了修改http://blog.sina.com.cn/s/blog_03f96e310106iin5.html,生成了三维数据。
program simple_xy_wr
  use netcdf
  implicit none

  ! 定义数据文件的名称
  character(len = *), parameter :: FILE_NAME = "simple_xy.nc"
  character(len = *), parameter :: filepm = "gridtest20152.txt"
  character(len = *), parameter :: fileday = "day.txt"
  character(len = *), parameter :: filelat = "lat.txt"
  character(len = *), parameter :: filelon = "lon.txt"
  ! 写一个1*161*261的三维数据
  integer, parameter :: NDIMS = 3
  integer, parameter :: NT =1, NX =161, NY =261
  ! 当创建netCDF文件的时候变量和维数都有一个对应的ID
  integer :: ncid, varid, varid2, varid3,&
             varid4, dimids(NDIMS)
  integer :: t_dimid, x_dimid, y_dimid

  ! 要保存到文件的数据数组
  real, dimension(:), allocatable :: date
  real, dimension(:,:,:), allocatable :: data_out
  real, dimension(:), allocatable :: lat
  real, dimension(:), allocatable :: lon
  real, dimension(:,:,:), allocatable :: datapm
  integer t, x, y
! 为数据数组分配内存
  allocate(data_out(NY,NX,NT))
  allocate(datapm(NY,NX,NT))
  allocate(date(NT))
  allocate(lat(NX))
  allocate(lon(NY))
!读数据
  open(1,file=trim(fileday),status='old',action='read')
  read(1,*) date
  close(1)
!--read emission data
open(2,file=trim(filepm),status='old',action='read')
  read (2,*) datapm
   do t =1,NT
     do x=1,NX
        do y=1, NY
          data_out(y,x,t) = datapm(y,x,t)
        end do
     end do
  end do
close(2)
  open(3,file=trim(filelat),status='old',action='read')
  read(3,*) lat


  close(3)
  open(4,file=trim(filelon),status='old',action='read')
  read(4,*) lon

  close(4)


  ! 创建netCDF文件返回文件对应的ID如果存在则覆盖check子程序存 检验执行是否成功
  call check( nf90_create(FILE_NAME, NF90_CLOBBER, ncid) )
  ! 定义维数返回一个对应的ID
  call check( nf90_def_dim(ncid, "t", NT, t_dimid) )
  call check( nf90_def_dim(ncid, "x", NX, x_dimid) )
  call check( nf90_def_dim(ncid, "y", NY, y_dimid) )
  ! 把上面得到的ID写到一个存放ID的数组里注意在fortran中数组是里 为主存放数据的
  dimids =  (/ y_dimid, x_dimid, t_dimid /)

  ! 定义变量返回一个对应的ID
  call check( nf90_def_var(ncid, "data", NF90_REAL, dimids, varid) )
  call check( nf90_def_var(ncid, "lat", NF90_REAL, x_dimid, varid2) )
  call check( nf90_def_var(ncid, "lon", NF90_REAL, y_dimid, varid3) )
  call check( nf90_def_var(ncid, "date", NF90_REAL, t_dimid, varid4) )
! 定义完成关闭定义模式
  call check( nf90_enddef(ncid) )
! 写入数据

  call check( nf90_put_var(ncid, varid, data_out ) )
  call check( nf90_put_var(ncid, varid2, lat ) )
  call check( nf90_put_var(ncid, varid3, lon ) )
  call check( nf90_put_var(ncid, varid4, date ) )

  ! 关闭文件
  call check( nf90_close(ncid) )
!提示写文件成功
  print *, "*** SUCCESS writing example file simple_xy.nc! "

  contains
  subroutine check(status)
    integer, intent ( in) :: status

    if(status /= nf90_noerr) then
      print *, trim(nf90_strerror(status))
      stop 2
    end if
  end subroutine check
  end program simple_xy_wr


密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-11-9 16:09:35 | 显示全部楼层
感觉是一个好问题,可是不会
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-11-11 15:05:03 | 显示全部楼层
sunzy025 发表于 2017-11-9 16:09
感觉是一个好问题,可是不会

https://www.acom.ucar.edu/wrf-chem/download.shtml
在尝试用这里的anthro_emiss
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-8-10 14:42:19 | 显示全部楼层
楼主,相关程序分享吗
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-9-28 08:53:49 | 显示全部楼层
楼主,这是用的什么程序把txt转成nc的?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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