Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
658 changes: 658 additions & 0 deletions doc/bufr_table_samples/EMC_NC021XXX_NormalFeed_Radiance_BUFRTable.txt

Large diffs are not rendered by default.

447 changes: 447 additions & 0 deletions doc/bufr_table_samples/EMC_NC021XXX_RARS-DB_Radiance_BUFRTable.txt

Large diffs are not rendered by default.

8 changes: 5 additions & 3 deletions src/ncar-bufr2nc-fortran/define_mod.f90
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@ module define_mod
integer(i_kind), parameter :: nvar_met = 6
integer(i_kind), parameter :: nvar_info = 9 ! number of metadata
integer(i_kind), parameter :: nsen_info = 7 ! number of sensor metadata
integer(i_kind), parameter :: ninst = 12
!integer(i_kind), parameter :: ninst = 13 ! including airs
integer(i_kind), parameter :: ninst = 15 ! including airs
integer(i_kind), parameter :: write_nc_conv = 1
integer(i_kind), parameter :: write_nc_radiance = 2

Expand Down Expand Up @@ -81,7 +80,10 @@ module define_mod
'mhs_n19 ', &
'mhs_metop-a ', &
'mhs_metop-b ', &
'mhs_metop-c ' &
'mhs_metop-c ', &
'iasi_metop-a ', &
'iasi_metop-b ', &
'iasi_metop-c ' &
/)

! variables for outputing netcdf files
Expand Down
65 changes: 60 additions & 5 deletions src/ncar-bufr2nc-fortran/main.f90
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ program bufr2nc
use define_mod, only: write_nc_conv, write_nc_radiance
use kinds, only: i_kind
use prepbufr_mod, only: read_prepbufr, sort_obs_conv, filter_obs_conv
use radiance_mod, only: read_amsua_amsub_mhs, read_airs_colocate_amsua, sort_obs_radiance
use radiance_mod, only: read_amsua_amsub_mhs, read_amsua_amsub_mhs_ears, read_airs_colocate_amsua, read_iasi, sort_obs_radiance
use ncio_mod, only: write_obs
use gnssro_bufr2ioda, only: read_write_gnssro

Expand All @@ -12,13 +12,16 @@ program bufr2nc
integer(i_kind), parameter :: StrLen = 512
integer(i_kind), parameter :: NameLen = 64
integer(i_kind), parameter :: DateLen = 10
integer(i_kind), parameter :: nfile_all = 5
integer(i_kind), parameter :: nfile_all = 8
integer(i_kind), parameter :: ftype_unknown = -1
integer(i_kind), parameter :: ftype_prepbufr = 1
integer(i_kind), parameter :: ftype_gnssro = 2
integer(i_kind), parameter :: ftype_amsua = 3
integer(i_kind), parameter :: ftype_mhs = 4
integer(i_kind), parameter :: ftype_airs = 5
integer(i_kind), parameter :: ftype_esamsua = 6
integer(i_kind), parameter :: ftype_esmhs = 7
integer(i_kind), parameter :: ftype_iasi = 8

integer(i_kind) :: ftype(nfile_all)
character(len=NameLen) :: flist_all(nfile_all) = &
Expand All @@ -27,7 +30,10 @@ program bufr2nc
"prepbufr.bufr ", &
"amsua.bufr ", &
"airs.bufr ", &
"mhs.bufr " &
"mhs.bufr ", &
"esmhs.bufr ", &
"esamsua.bufr ", &
"iasi.bufr " &
/)
character (len=NameLen) :: flist(nfile_all) ! file names to be read in from command line arguments
character (len=NameLen) :: filename
Expand All @@ -48,6 +54,9 @@ program bufr2nc
do ifile = 1, nfile

filename = flist(ifile)
write(*,*)'nfile = ', nfile
write(*,*)'filename = ', filename
write(*,*)'ftype = ', ftype(ifile)

if ( ftype(ifile) == ftype_gnssro ) then
inquire(file=trim(inpdir)//trim(filename), exist=fexist)
Expand All @@ -64,6 +73,7 @@ program bufr2nc
if ( .not. fexist ) then
write(*,*) 'Warning: ', trim(inpdir)//trim(filename), ' not found for decoding...'
else
write(*,*) '--- processing prepbufr.bufr ---'
! read prepbufr file and store data in sequential linked list for conv obs
call read_prepbufr(trim(inpdir)//trim(filename), filedate)

Expand All @@ -85,17 +95,31 @@ program bufr2nc
if ( .not. fexist ) then
write(*,*) 'Warning: ', trim(inpdir)//trim(filename), ' not found for decoding...'
else
write(*,*) '--- processing amsua.bufr ---'
do_radiance = .true.
! read bufr file and store data in sequential linked list for radiances
call read_amsua_amsub_mhs(trim(inpdir)//trim(filename), filedate)
end if
end if

if ( ftype(ifile) == ftype_esamsua ) then
inquire(file=trim(inpdir)//trim(filename), exist=fexist)
if ( .not. fexist ) then
write(*,*) 'Warning: ', trim(inpdir)//trim(filename), ' not found for decoding...'
else
write(*,*) '--- processing esamua.bufr ---'
do_radiance = .true.
! read bufr file and store data in sequential linked list for radiances
call read_amsua_amsub_mhs_ears(trim(inpdir)//trim(filename), filedate)
end if
end if

if ( ftype(ifile) == ftype_airs ) then
inquire(file=trim(inpdir)//trim(filename), exist=fexist)
if ( .not. fexist ) then
write(*,*) 'Warning: ', trim(inpdir)//trim(filename), ' not found for decoding...'
else
write(*,*) '--- processing airs.bufr ---'
do_radiance = .true.
! read bufr file and store data in sequential linked list for radiances
call read_airs_colocate_amsua(trim(inpdir)//trim(filename), filedate)
Expand All @@ -107,12 +131,37 @@ program bufr2nc
if ( .not. fexist ) then
write(*,*) 'Warning: ', trim(inpdir)//trim(filename), ' not found for decoding...'
else
write(*,*) '--- processing mhs.bufr ---'
do_radiance = .true.
! read bufr file and store data in sequential linked list for radiances
call read_amsua_amsub_mhs(trim(inpdir)//trim(filename), filedate)
end if
end if

if ( ftype(ifile) == ftype_esmhs ) then
inquire(file=trim(inpdir)//trim(filename), exist=fexist)
if ( .not. fexist ) then
write(*,*) 'Warning: ', trim(inpdir)//trim(filename), ' not found for decoding...'
else
write(*,*) '--- processing esmhs.bufr ---'
do_radiance = .true.
! read bufr file and store data in sequential linked list for radiances
call read_amsua_amsub_mhs_ears(trim(inpdir)//trim(filename), filedate)
end if
end if

if ( ftype(ifile) == ftype_iasi ) then
inquire(file=trim(inpdir)//trim(filename), exist=fexist)
if ( .not. fexist ) then
write(*,*) 'Warning: ', trim(inpdir)//trim(filename), ' not found for decoding...'
else
write(*,*) '--- processing iasi.bufr ---'
do_radiance = .true.
! read bufr file and store data in sequential linked list for radiances
call read_iasi(trim(inpdir)//trim(filename), filedate)
end if
end if

end do ! nfile list

if ( do_radiance ) then
Expand Down Expand Up @@ -166,7 +215,7 @@ subroutine parse_files_to_convert
if ( ifile == 0 ) then
nfile = nfile_all
flist(:) = flist_all(:)
ftype(:) = (/ ftype_gnssro, ftype_prepbufr, ftype_amsua, ftype_airs, ftype_mhs /)
ftype(:) = (/ ftype_gnssro, ftype_prepbufr, ftype_amsua, ftype_airs, ftype_mhs, ftype_esmhs, ftype_esamsua, ftype_iasi /)
else
nfile = ifile
end if
Expand All @@ -175,7 +224,7 @@ subroutine parse_files_to_convert
outdir = '.'
nfile = nfile_all
flist(:) = flist_all(:)
ftype(:) = (/ ftype_gnssro, ftype_prepbufr, ftype_amsua, ftype_airs, ftype_mhs /)
ftype(:) = (/ ftype_gnssro, ftype_prepbufr, ftype_amsua, ftype_airs, ftype_mhs, ftype_esmhs, ftype_esamsua, ftype_iasi /)
end if

itmp = len_trim(inpdir)
Expand All @@ -202,10 +251,16 @@ subroutine parse_files_to_convert
ftype(ifile) = ftype_gnssro
case ( 'NC021023' )
ftype(ifile) = ftype_amsua
case ( 'NC021033' )
ftype(ifile) = ftype_esamsua
case ( 'NC021027' )
ftype(ifile) = ftype_mhs
case ( 'NC021036' )
ftype(ifile) = ftype_esmhs
case ( 'NC021249' )
ftype(ifile) = ftype_airs
case ( 'NC021241' )
ftype(ifile) = ftype_iasi
case default
ftype(ifile) = ftype_unknown
end select
Expand Down
Loading