122 type(gribfield) :: gfld
124 integer :: iret, j, k, lugb, lugi
125 integer :: jdisc, jgdtn, jpdtn
126 integer :: jids(200), jgdt(200), jpdt(200)
133 print*,
"- WILL NOT USE AUTOSNOW DATA." 144 print*,
'- FATAL ERROR: BAD OPEN OF FILE, IRET IS ', iret
145 call w3tage(
'SNOW2MDL')
163 call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
164 unpack, k, gfld, iret)
167 print*,
'- FATAL ERROR: BAD DEGRIB OF FILE, IRET IS ', iret
168 call w3tage(
'SNOW2MDL')
172 print*,
"- DATA VALID AT (YYYYMMDDHH): ", gfld%idsect(6),gfld%idsect(7), &
173 gfld%idsect(8),gfld%idsect(9)
175 call baclose (lugb, iret)
227 integer,
parameter :: iunit = 13
228 integer,
parameter :: iunit2 = 43
230 integer*4,
allocatable :: dummy4(:,:)
236 integer,
parameter :: lugi = 0
237 integer :: jdisc, jgdtn, jpdtn, k
238 integer :: jids(200), jgdt(200), jpdt(200)
241 integer :: message_num
248 real,
allocatable :: dummy(:,:)
251 type(gribfield) :: gfld
256 print*,
"- WILL NOT USE NESDIS/IMS DATA." 266 print*,
'- FATAL ERROR: IMS FILE MUST BE GRIB 1 OR GRIB2 FORMAT' 267 call w3tage(
'SNOW2MDL')
274 print*,
'- FATAL ERROR: BAD OPEN OF FILE, IRET IS ', iret
275 call w3tage(
'SNOW2MDL')
292 print*,
"- GET GRIB HEADER" 294 call getgbh(iunit, lugi, lskip, jpds, jgds, numbytes, &
295 numpts, message_num, kpds, kgds, iret)
298 print*,
"- FATAL ERROR: BAD DEGRIB OF HEADER. IRET IS ", iret
299 call w3tage(
'SNOW2MDL')
310 print*,
"- DATA VALID AT (YYMMDDHH): ", kpds(8:11)
316 print*,
"- DEGRIB SEA ICE." 322 print*,
"- FATAL ERROR: BAD DEGRIB OF DATA. IRET IS ", iret
323 call w3tage(
'SNOW2MDL')
339 print*,
"- DEGRIB SNOW COVER." 345 print*,
"- FATAL ERROR: BAD DEGRIB OF DATA. IRET IS ", iret
346 call w3tage(
'SNOW2MDL')
350 elseif (isgrib==2)
then 352 print*,
"- DEGRIB SNOW COVER." 367 call getgb2(iunit, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
368 unpack, k, gfld, iret)
371 print*,
'- FATAL ERROR: BAD DEGRIB OF FILE, IRET IS ', iret
372 call w3tage(
'SNOW2MDL')
376 print*,
"- DATA VALID AT (YYYYMMDDHH): ", gfld%idsect(6),gfld%idsect(7), &
377 gfld%idsect(8),gfld%idsect(9)
404 print*,
"- DEGRIB SEA ICE." 417 call getgb2(iunit, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
418 unpack, k, gfld, iret)
421 print*,
'- FATAL ERROR: BAD DEGRIB OF FILE, IRET IS ', iret
422 call w3tage(
'SNOW2MDL')
432 call baclose(iunit,iret)
448 print*,
"- FATAL ERROR OPENING NESDIS/IMS LAND MASK FILE. ISTAT IS: ", iret
452 print*,
"- READ NESDIS/IMS 16TH MESH LAND MASK." 457 read(iunit2, 123, iostat=iret) (dummy4(i,j),i=1,1024)
459 print*,
"- FATAL ERROR READING NESDIS/IMS LAND MASK FILE. ISTAT IS: ", iret
498 print*,
'- FATAL ERROR: NESDIS/IMS DATA BAD, DO NOT USE.' 499 print*,
'- DONT RUN PROGRAM.' 501 call w3tage(
'SNOW2MDL')
536 integer,
parameter :: iunit=17
537 integer :: jgds(200), jpds(200), kgds(200), kpds(200)
538 integer :: istat, isgrib
539 integer :: lugi, lskip, numbytes, numpts, message_num
540 integer :: j, k, jdisc, jpdtn, jgdtn
541 integer :: jpdt(200), jgdt(200), jids(200)
545 type(gribfield) :: gfld
558 print*,
"- WILL NOT USE AFWA DATA." 574 print*,
'- FATAL ERROR: BAD OPEN OF FILE, ISTAT IS ', istat
575 call w3tage(
'SNOW2MDL')
594 call getgb2(iunit, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
595 unpack, k, gfld, istat)
598 print*,
"- FATAL ERROR: BAD DEGRIB OF GLOBAL DATA. ISTAT IS ", istat
599 call w3tage(
'SNOW2MDL')
603 print*,
"- DATA VALID AT (YYMMDDHH): ", gfld%idsect(6:9)
604 print*,
"- DEGRIB SNOW DEPTH." 615 call baclose(iunit, istat)
620 print*,
'- WARNING: AFWA DATA BAD, DO NOT USE.' 659 print*,
'- FATAL ERROR: BAD OPEN OF FILE, ISTAT IS ', istat
660 call w3tage(
'SNOW2MDL')
676 print*,
"- GET GRIB HEADER" 677 call getgbh(iunit, lugi, lskip, jpds, jgds, numbytes, &
678 numpts, message_num, kpds, kgds, istat)
681 print*,
"- FATAL ERROR: BAD DEGRIB OF HEADER. ISTAT IS ", istat
682 call w3tage(
'SNOW2MDL')
690 print*,
"- DATA VALID AT (YYMMDDHH): ", kpds(8:11)
692 print*,
"- DEGRIB SNOW DEPTH." 697 call getgb(iunit, lugi, (
iafwa*
jafwa), lskip, jpds, jgds, &
701 print*,
"- FATAL ERROR: BAD DEGRIB OF DATA. ISTAT IS ", istat
702 call w3tage(
'SNOW2MDL')
711 call baclose(iunit, istat)
751 print*,
'- FATAL ERROR: BAD OPEN OF FILE, ISTAT IS ', istat
752 call w3tage(
'SNOW2MDL')
768 print*,
"- GET GRIB HEADER" 769 call getgbh(iunit, lugi, lskip, jpds, jgds, numbytes, &
770 numpts, message_num, kpds, kgds, istat)
773 print*,
"- FATAL ERROR: BAD DEGRIB OF HEADER. ISTAT IS ", istat
774 call w3tage(
'SNOW2MDL')
782 print*,
"- DATA VALID AT (YYMMDDHH): ", kpds(8:11)
784 print*,
"- DEGRIB SNOW DEPTH." 789 call getgb(iunit, lugi, (
iafwa*
jafwa), lskip, jpds, jgds, &
793 print*,
"- FATAL ERROR: BAD DEGRIB OF DATA. ISTAT IS ", istat
794 call w3tage(
'SNOW2MDL')
803 call baclose(iunit, istat)
820 print*,
'- WARNING: AFWA DATA BAD, DO NOT USE.' 854 subroutine nh_climo_check(kgds_data,snow_data,bitmap_data,idata,jdata,isrc,bad)
866 integer,
parameter :: iclim = 1080
867 integer,
parameter :: jclim = 270
868 real,
parameter :: lat11_clim = 90.0
869 real,
parameter :: lon11_clim = -180.0
870 real,
parameter :: dx_clim = 1./3.
871 real,
parameter :: dy_clim = 1./3.
873 integer,
intent(in) :: idata, jdata, kgds_data(200), isrc
874 logical*1,
intent(in) :: bitmap_data(idata,jdata)
875 logical,
intent(out) :: bad
876 real,
intent(in) :: snow_data(idata,jdata)
879 integer :: idat(8), jdow, jdoy, jday
880 integer :: century, year, week, iret, lugb, i, j, ii, jj
881 integer :: lugi, jdisc, jpdtn, jgdtn, k, nret
882 integer :: jids(200), jgdt(200), jpdt(200)
883 integer :: count_nosnow_climo, count_nosnow_data
884 integer :: count_snow_climo, count_snow_data, count_grosschk_data
886 logical*1,
allocatable :: bitmap_clim(:,:)
889 real,
allocatable :: climo(:,:)
890 real :: fill, percent, x, y
891 real,
allocatable :: xpts(:,:),ypts(:,:),rlon_data(:,:),rlat_data(:,:)
892 real :: thresh_gross, thresh
894 type(gribfield) :: gfld
899 print*,
"- QC SNOW DATA IN NH." 903 elseif (isrc==2)
then 908 allocate(xpts(idata,jdata))
909 allocate(ypts(idata,jdata))
910 allocate(rlon_data(idata,jdata))
911 allocate(rlat_data(idata,jdata))
919 print*,
"- CALC LAT/LONS OF SOURCE POINTS." 920 call gdswzd(kgds_data,1,(idata*jdata),fill,xpts,ypts,rlon_data,rlat_data,nret)
922 deallocate(xpts,ypts)
924 if (nret /= (idata*jdata))
then 925 print*,
"- WARNING: CALC FAILED. WILL NOT PERFORM QC." 926 deallocate (rlon_data,rlat_data)
930 count_grosschk_data=0
933 if (rlat_data(i,j)>0.0 .and. bitmap_data(i,j))
then 934 if (snow_data(i,j) < 0.0 .or. snow_data(i,j) > thresh_gross)
then 935 count_grosschk_data=count_grosschk_data+1
941 if (count_grosschk_data > 1)
then 942 print*,
'- NUMBER OF DATA POINTS THAT FAIL GROSS CHECK ',count_grosschk_data
943 deallocate (rlon_data,rlat_data)
948 print*,
"- QC DATA SOURCE AGAINST CLIMO." 954 print*,
"- WARNING: BAD OPEN, WILL NOT PERFORM QC ", iret
955 deallocate (rlon_data,rlat_data)
977 call w3doxdat(idat,jdow,jdoy,jday)
981 week = nint((jdoy+3.)/7.)
985 print*,
"- READ CLIMO FOR WEEK ",week
1000 jgdt(12) = nint(lat11_clim * 1e6)
1001 jgdt(13) = nint(abs(lon11_clim) * 1e6)
1008 call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
1009 unpack, k, gfld, iret)
1012 print*,
"- WARNING: PROBLEM READING GRIB FILE ", iret
1013 print*,
"- WILL NOT PERFORM QC." 1014 deallocate(rlon_data,rlat_data)
1015 call baclose(lugb,iret)
1019 call baclose(lugb,iret)
1021 allocate(climo(iclim,jclim))
1022 climo = reshape(gfld%fld , (/iclim,jclim/) )
1023 allocate(bitmap_clim(iclim,jclim))
1024 bitmap_clim = reshape(gfld%bmap , (/iclim,jclim/) )
1041 count_nosnow_climo=0
1048 elseif (isrc==2)
then 1054 if (rlat_data(i,j)>0.0 .and. bitmap_data(i,j))
then 1055 y = (lat11_clim-rlat_data(i,j))/dy_clim + 1.0
1056 if (rlon_data(i,j)>180.0) rlon_data(i,j)=rlon_data(i,j)-360.0
1057 x = (rlon_data(i,j)-lon11_clim)/dx_clim + 1.0
1060 if (jj>jclim) jj=jclim
1062 if (ii<1) ii=ii+iclim
1063 if (ii>iclim) ii=ii-iclim
1064 if (bitmap_clim(ii,jj))
then 1065 if (climo(ii,jj) <1.0)
then 1066 count_nosnow_climo=count_nosnow_climo+1
1067 if (snow_data(i,j) == 0.0)
then 1068 count_nosnow_data=count_nosnow_data+1
1071 if (climo(ii,jj) > 99.)
then 1072 count_snow_climo=count_snow_climo+1
1073 if (snow_data(i,j) >thresh)
then 1074 count_snow_data=count_snow_data+1
1082 percent = float(count_snow_climo-count_snow_data) / float(count_snow_climo)
1083 percent = percent*100.
1084 write(6,200)
'- NUMBER OF DATA POINTS THAT SHOULD HAVE SNOW',count_snow_climo
1085 write(6,201)
'- NUMBER OF THESE POINTS THAT ARE BARE GROUND',(count_snow_climo-count_snow_data), &
1088 200
format(1x,a45,1x,i10)
1089 201
format(1x,a45,1x,i10,1x,a2,1x,f6.2,a1)
1091 if (percent>50.0)
then 1092 print*,
"- WARNING: PERCENTAGE OF BARE GROUND POINTS EXCEEDS ACCEPTABLE LEVEL." 1093 print*,
"- WILL NOT USE SOURCE DATA." 1097 percent = float(count_nosnow_climo-count_nosnow_data) / float(count_nosnow_climo)
1098 percent = percent*100.
1099 write(6,202)
'- NUMBER OF DATA POINTS THAT SHOULD *NOT* HAVE SNOW',count_nosnow_climo
1100 write(6,203)
'- NUMBER OF THESE POINTS WITH SNOW',(count_nosnow_climo-count_nosnow_data), &
1103 202
format(1x,a51,1x,i10)
1104 203
format(1x,a34,1x,i10,1x,a2,1x,f6.2,a1)
1106 if (percent>20.0)
then 1107 print*,
"- WARNING: PERCENTAGE OF POINTS WITH SNOW EXCEEDS ACCEPTABLE LEVEL." 1108 print*,
"- WILL NOT USE SOURCE DATA." 1112 if (
allocated(rlat_data))
deallocate (rlat_data)
1113 if (
allocated(rlon_data))
deallocate (rlon_data)
1114 if (
allocated(climo))
deallocate (climo)
1115 if (
allocated(bitmap_clim))
deallocate (bitmap_clim)
1130 integer,
intent(in) :: hemi
1131 integer :: kgds(200), nret
1132 integer,
parameter :: npts=1
1134 real :: fill, xpts(npts), ypts(npts)
1135 real :: rlon(npts), rlat(npts)
1141 print*,
'- QC DATA IN NH.' 1145 call gdswzd(kgds,(-1),npts,fill,xpts,ypts,rlon,rlat,nret)
1147 print*,
'- WARNING: NO SNOW IN GREENLAND: ',
snow_dep_afwa_nh(nint(xpts),nint(ypts))
1148 print*,
'- DONT USE AFWA DATA.' 1153 call gdswzd(kgds,(-1),npts,fill,xpts,ypts,rlon,rlat,nret)
1155 print*,
'- WARNING: SNOW IN S AMERICA: ',
snow_dep_afwa_nh(nint(xpts),nint(ypts))
1156 print*,
'- DONT USE AFWA DATA.' 1161 call gdswzd(kgds,(-1),npts,fill,xpts,ypts,rlon,rlat,nret)
1163 print*,
'- WARNING: SNOW IN SAHARA: ',
snow_dep_afwa_nh(nint(xpts),nint(ypts))
1164 print*,
'- DONT USE AFWA DATA.' 1169 call gdswzd(kgds,(-1),npts,fill,xpts,ypts,rlon,rlat,nret)
1171 print*,
'- WARNING: SNOW IN S INDIA: ',
snow_dep_afwa_nh(nint(xpts),nint(ypts))
1172 print*,
'- DONT USE AFWA DATA.' 1178 print*,
'- QC DATA IN SH.' 1182 call gdswzd(kgds,(-1),npts,fill,xpts,ypts,rlon,rlat,nret)
1184 print*,
'- WARNING: NO SNOW IN ANTARCTICA: ',
snow_dep_afwa_sh(nint(xpts),nint(ypts))
1185 print*,
'- DONT USE AFWA DATA.' 1190 call gdswzd(kgds,(-1),npts,fill,xpts,ypts,rlon,rlat,nret)
1192 print*,
'- WARNING: SNOW IN SOUTH AMERICA: ',
snow_dep_afwa_sh(nint(xpts),nint(ypts))
1193 print*,
'- DONT USE AFWA DATA.' 1198 call gdswzd(kgds,(-1),npts,fill,xpts,ypts,rlon,rlat,nret)
1200 print*,
'- WARNING: SNOW IN AUSTRALIA: ',
snow_dep_afwa_sh(nint(xpts),nint(ypts))
1201 print*,
'- DONT USE AFWA DATA.' 1206 call gdswzd(kgds,(-1),npts,fill,xpts,ypts,rlon,rlat,nret)
1208 print*,
'- WARNING: SNOW IN AFRICA: ',
snow_dep_afwa_sh(nint(xpts),nint(ypts))
1209 print*,
'- DONT USE AFWA DATA.' 1237 character*8 :: afwa_file_info(2)
1238 character*(*),
intent(in) :: file_name
1240 integer*2,
allocatable :: dummy(:,:)
1241 integer :: i,j, istat
1242 integer,
parameter :: iafwa = 512
1243 integer,
parameter :: jafwa = 512
1244 integer,
parameter :: iunit=11
1246 real,
intent(out) :: snow_dep_afwa(iafwa,jafwa)
1248 print*,
"- OPEN AFWA BINARY FILE ", trim(file_name)
1249 open (iunit, file=trim(file_name), access=
"direct", recl=iafwa*2, iostat=istat)
1251 if (istat /= 0)
then 1252 print*,
'- FATAL ERROR: BAD OPEN. ISTAT IS ',istat
1253 call w3tage(
'SNOW2MDL')
1257 print*,
"- READ AFWA BINARY FILE ", trim(file_name)
1258 read(iunit, rec=2, iostat = istat) afwa_file_info
1260 if (istat /= 0)
then 1261 print*,
'- FATAL ERROR: BAD READ. ISTAT IS ',istat
1262 call w3tage(
'SNOW2MDL')
1266 print*,
"- AFWA DATA IS ", afwa_file_info(1),
" AT TIME ", afwa_file_info(2)(2:7)
1268 allocate(dummy(iafwa,jafwa))
1271 read(iunit, rec=j+2, iostat=istat) (dummy(i,j),i=1,iafwa)
1272 if (istat /= 0)
then 1273 print*,
'- FATAL ERROR: BAD READ. ISTAT IS ',istat
1274 call w3tage(
'SNOW2MDL')
1285 where (dummy == 4090) dummy = 0
1287 snow_dep_afwa = float(dummy)
1294 snow_dep_afwa = snow_dep_afwa * 2.54 / 1000.0
1319 character*(*),
intent(in) :: file_name
1321 integer,
parameter :: iunit=11
1322 integer,
parameter :: iafwa = 512
1323 integer,
parameter :: jafwa = 512
1324 integer :: i, j, istat
1325 integer*4,
allocatable :: dummy4(:,:)
1327 logical*1,
intent(out) :: bitmap_afwa(iafwa,jafwa)
1329 allocate (dummy4(iafwa,jafwa))
1331 print*,
'- OPEN AFWA MASK FILE ', trim(file_name)
1332 open(iunit, file=trim(file_name), access=
'direct', &
1333 recl=iafwa*jafwa*4, iostat=istat)
1335 if (istat /= 0)
then 1336 print*,
'- FATAL ERROR: BAD OPEN. ISTAT IS ', istat
1337 call w3tage(
'SNOW2MDL')
1341 print*,
'- READ AFWA MASK FILE ', trim(file_name)
1342 read(iunit, rec=1, iostat=istat) dummy4
1344 if (istat /= 0)
then 1345 print*,
'- FATAL ERROR: BAD READ. ISTAT IS ', istat
1346 call w3tage(
'SNOW2MDL')
1356 bitmap_afwa = .false.
1360 if (dummy4(i,j) > 1)
then 1361 bitmap_afwa(i,j) = .true.
integer, dimension(200) kgds_afwa_sh_8th
grib1 grid description section for southern hemisphere 8th mesh afwa data.
real, dimension(:,:), allocatable snow_dep_afwa_sh
Southern hemisphere afwa snow depth.
This module reads in data from the program's configuration namelist.
logical bad_afwa_sh
When true, the southern hemisphere afwa data failed its quality control check.
integer mesh_nesdis
nesdis/ims data is 96th mesh (or bediant)
integer, dimension(200) kgds_afwa_nh
grib1 grid description section for northern hemisphere 16th mesh afwa data.
real, dimension(:,:), allocatable snow_cvr_autosnow
autosnow snow cover flag (0-no, 100-yes)
integer *1, dimension(:,:), allocatable sea_ice_nesdis
nesdis/ims sea ice flag (0-open water, 1-ice)
real, dimension(:,:), allocatable snow_dep_afwa_global
The global afwa snow depth.
subroutine grib2_null(gfld)
Nullify the grib2 gribfield pointers.
integer, public grib_century
date of the final merged snow product that will be placed in grib header.
integer jmdl
j-dimension of model grid
integer, dimension(200) kgds_nesdis
nesdis/ims grid description section (grib section 2)
logical *1, dimension(:,:), allocatable bitmap_nesdis
nesdis data grib bitmap (false-non land, true-land).
real afwa_res
Resolution of afwa data in km.
logical bad_afwa_global
When true, the global afwa data failed its quality control check.
integer, dimension(200) kgds_afwa_global
grib1 grid description section for global afwa data.
Read in data defining the model grid.
subroutine read_afwa_mask(file_name, bitmap_afwa)
Read afwa land mask file to get a bitmap.
integer, dimension(200) kgds_autosnow
autosnow grid description section (grib section 2)
integer, dimension(200) kgds_afwa_nh_8th
grib1 grid description section for northern hemisphere 8th mesh afwa data.
integer jafwa
j-dimension of afwa grid
integer iautosnow
i-dimension of autosnow grid
Read and qc afwa, nesdis/ims and autosnow snow data.
integer iafwa
i-dimension of afwa grid
subroutine read_afwa_binary(file_name, snow_dep_afwa)
Read afwa binary snow depth file.
logical *1, dimension(:,:), allocatable bitmap_autosnow
autosnow data grib bitmap (false-non land, true-land).
real nesdis_res
Resolution of the nesdis data in km.
integer, public grib_month
date of the final merged snow product that will be placed in grib header.
logical *1, dimension(:,:), allocatable bitmap_afwa_sh
The southern hemisphere afwa data grib bitmap.
subroutine afwa_check(hemi)
Check for corrupt afwa data.
real, dimension(:,:), allocatable snow_dep_afwa_nh
Northern hemisphere afwa snow depth.
character *200, public climo_qc_file
Climatological snow cover file.
logical use_sh_afwa
True if southern hemisphere afwa data to be used.
character *200, public nesdis_lsmask_file
nesdis/ims land mask file
subroutine gdt_to_gds(igdtnum, igdstmpl, igdtlen, kgds, ni, nj, res)
Convert from the grib2 grid description template array used by the ncep grib2 library, to the grib1 grid description section array used by ncep ipolates library.
character *200, public afwa_lsmask_nh_file
path/name afwa n hemis land/sea mask
subroutine readafwa
Read snow depth data and masks.
character *200, public afwa_lsmask_sh_file
path/name afwa s hemis land/sea mask
character *200, public autosnow_file
path/name s hemis autosnow file
character *200, public afwa_snow_sh_file
path/name afwa s hemis snow depth
integer inesdis
i-dimension of nesdis grid
integer imdl
i-dimension of model grid
integer, public grib_day
date of the final merged snow product that will be placed in grib header.
subroutine grib2_free(gfld)
Deallocate the grib2 gribfield pointers.
integer jautosnow
j-dimension of autosnow grid
character *200, public nesdis_snow_file
nesdis/ims snow file
logical use_nh_afwa
True if northern hemisphere afwa data to be used.
logical use_nesdis
True if nesdis/ims data to be used.
subroutine readnesdis
Read nesdis/ims snow cover/ice data.
character *200, public afwa_snow_global_file
global afwa snow file.
logical use_autosnow
True if autosnow data to be used.
character *200, public afwa_snow_nh_file
path/name afwa n hemis snow depth
logical *1, dimension(:,:), allocatable bitmap_afwa_global
The global afwa data grib bitmap.
logical bad_nesdis
When true, the nesdis data failed its quality control check.
integer, public grib_year
date of the final merged snow product that will be placed in grib header.
integer jnesdis
j-dimension of nesdis grid
subroutine nh_climo_check(kgds_data, snow_data, bitmap_data, idata, jdata, isrc, bad)
Check for corrupt nh snow cover data.
logical bad_afwa_nh
When true, the northern hemisphere afwa data failed its quality control check.
integer, dimension(200) kgds_afwa_sh
grib1 grid description section for southern hemisphere 16th mesh afwa data.
subroutine readautosnow
Read autosnow snow cover.
real autosnow_res
Resolution of autosnow in km.
logical *1, dimension(:,:), allocatable bitmap_afwa_nh
The northern hemisphere afwa data grib bitmap.
subroutine grib_check(file_name, isgrib)
Determine whether file is grib or not.
logical use_global_afwa
True if global hemisphere afwa data to be used.
real, dimension(:,:), allocatable snow_cvr_nesdis
nesdis/ims snow cover flag (0-no, 100-yes)