METv4.1 includes several new tools and enhancements:
Retrieve all of the recommended updates for METv4.1 in a tarfile:
Problem: Ensemble-Stat errors out when writing the output NetCDF ensemble summary file for GRIB2 probability fields. The segmentation fault happens when trying to write the "units" NetCDF variable attribute which is empty.
Solution: The fix is to use the probability units for the NetCDF variable attribute.
Update: met-5.0/src/libcode/vx_data2d_grib2/var_info_grib2.cc
Problem: The GRIB_lvl_typ configuration setting may be used to explicitly specify the GRIB1 level type to be used. However, it was not being applied in the filtering logic correctly.
Solution: The fix is to update the GRIB1 filtering logic so that only those records with the specified level type are retained.
Update: METv4.1/src/libcode/vx_data2d/level_info.cc
Update: METv4.1/src/libcode/vx_data2d/level_info.h
Update: METv4.1/src/libcode/vx_data2d/var_info.cc
Update: METv4.1/src/libcode/vx_data2d_grib/data2d_grib_utils.cc
Update: METv4.1/src/libcode/vx_data2d_grib/data2d_grib_utils.h
Update: METv4.1/src/libcode/vx_data2d_grib/data2d_grib.cc
Problem: GRIB2 aerosol data produced by NCEP for NGAC uses a PDS template number of 48, which MET GRIB2 interface does not support.
Solution: The fix is to update the MET GRIB2 interface to support the PDS template number of 48 and update the GRIB2 table definitions. Note that g2clib version 1.4.0 or later is also required to support this setting.
Update: METv4.1/src/libcode/vx_data2d_grib2/data2d_grib2.cc
Update: METv4.1/data/table_files/grib2_vars_flat.txt
Problem: Some GRIB2 data produced for the NWS National Digital Forecast Database (NDFD) use a Scanning Mode of 80, which MET GRIB2 interface does not support.
Solution: The fix is to update the MET GRIB2 interface to support a Scanning Mode value of 80. In addition, retrieve any missing data values specified in the GRIB2 metadata and check them when parsing the data.
Update: METv4.1/src/libcode/vx_data2d_grib2/data2d_grib2.cc
Problem: When verifying a range of vertical levels (eg. Z100-500) in Point-Stat and Ensemble-Stat, they first interpolate horizontally to the observation location in the forecast fields above and below the observation's height. Then they interpolate those two values vertically to the observation's height. However, the formula for that linear vertical interpolation contains a bug. The weights for the two values are reversed, meaning that the farther level is weighted more heavily than the closer level.
Solution: The fix is to switch the two weights.
Update: METv4.1/src/basic/vx_util/interp_util.cc
Problem: The Point-Stat and Ensemble-Stat tools are failing to check for bad data after performing horizontal interpolation. When missing data is present in one of the forecast levels above or below the observation level, the missing data value of -9999 is used in the vertical interpolation step, resulting in erroneous interpolated forecast values.
Solution: The fix is to check for bad data before doing the vertical interpolation. When bad data is found, the resulting forecast value is set to bad data, and that matched pair is not used in the verification.
Update: METv4.1/src/libcode/vx_statistics/pair_data_point.cc
Update: METv4.1/src/libcode/vx_statistics/pair_data_ensemble.cc
Problem: MET was not properly handling polylines that crossed the international date line which led to incorrect points being included in the mask.
Solution: The fix is to detect when the polyline includes the international date line and account for it.
Update: METv4.1/src/libcode/vx_analysis_util/mask_poly.h
Update: METv4.1/src/libcode/vx_analysis_util/mask_poly.cc
Problem: The latest versions of the Intel compilers fail to define the isatty() function which is called by MET in the vx_config and vx_color libraries. This results in compilation errors.
Solution: The fix is to redefine isatty() within the MET libraries and use that version.
Update: METv4.1/src/basic/vx_util/util_constants.h
Update: METv4.1/src/basic/vx_config/lex.config.cc
Problem: The initialization and valid times are assigned a bad data value of -9999 when the last variable listed in a gridded MET NetCDF file does not contain the init_time_ut and valid_time_ut variable attributes. The bad data value of -9999 results in a timestamp of 19691231_211321.
Solution: When parsing timing information from gridded MET NetCDF files, only update the times when the corresponding variable attributes are successfully read.
Update: METv4.1/src/libcode/vx_data2d_nc_met/met_file.cc
Problem: Users have reported receiving the following intermittent runtime error from the MODE: convex_hull(Polyline &) -> can't find next hull point This typically occurs when MET is compiled with Intel.
Solution: We were able to replicate the behavior and add additional checks to the convex hull routine to prevent the error from occurring. Users who continue to encounter this error message are encouraged to notify us at met_help@ucar.edu.
Update: METv4.1/src/libcode/vx_shapedata/shapedata.cc
Problem: A value of 1 for GRIB2 Table 3.2 means that the radius of the earth is specified in the GRIB2 record itself. MET was erroring out with the message MetGrib2DataFile::data_plane() - unexpected earth shape (1).
Solution: The fix is to update the GRIB2 code to parse the radius of the earth from the GRIB2 record. Also change two error messages in pcp_combine to warnings.
Update: METv4.1/src/tools/core/pcp_combine/pcp_combine.cc
Update: METv4.1/src/libcode/vx_data2d_grib2/data2d_grib2.cc
Update: METv4.1/src/libcode/vx_data2d_grib/data2d_grib.cc
Problem: When given a series of length one, the Series-Analysis tool errors out. While this is a very simple case, it should still produce output.
Solution: The fix is to modify the logic to allow it to produce output for a series of length one.
Update: METv4.1/src/tools/core/series_analysis/series_analysis.cc
Problem: In METv4.1, ascii2nc determines unique observation locations by checking the message type, station name, and timestamp. Earlier versions of ascii2nc also checked the latitude, longitude, and elevation values. In METv4.1, observations with the same message type, station name, and timestamp but differing latitude, longitude, or elevation values are being assigned to the same observation location.
Solution: The fix is to add back in that additional checking when determining unique observation locations.
Update: METv4.1/src/tools/other/ascii2nc/file_handler.cc
Problem: When reading through the search directory (specified by the -pcpdir option) for matching files, pcp_combine opens each data file but fails to close it. On some systems this can lead to a runtime error with too many file handles open.
Solution: The fix is to close the files after reading their contents.
Update: METv4.1/src/tools/core/pcp_combine/pcp_combine.cc
And then recompile MET.
Problem: The little_R file format allows for station names up to 40 characters in length. The ascii2nc tool expects a maximum of 30 characters, resulting in the following runtime error message:
NetCDF: Start+count exceeds dimension bound
Solution: The fix is to extend the maximum string length to 40 characters and check the length of the station name. If it's too long, print a warning message and only write the first 40 characters.
Update: METv4.1/src/tools/other/ascii2nc/file_handler.cc
And then recompile MET.
Problem: The GRIB1_rec and GRIB1_ptv arguments to the GRIB1 library lookup function were transposed causing the usage of those configuration file options to fail.
Solution: The fix is to correct the order of those arguments.
Update: METv4.1/src/libcode/vx_data2d_grib/var_info_grib.cc
And then recompile MET.
Problem: Three of the compilation commands in the Makefile for the vx_config library were missing $(CXX_FLAGS). So the compiler flags were not being properly applied.
Solution: The fix is to add $(CXX_FLAGS) to those lines.
Update: METv4.1/src/basic/vx_config/Makefile
And then recompile MET.
Problem: Running Point-Stat and Grid-Stat with twelve or more probabilistic thresholds results in a range check error from the AsciiTable class. The logic determining the number of necessary output columns for probabilistic data is flawed.
Solution: The fix is to update the logic to ensure that the number of output columns is correctly computed based on the number of thresholds chosen.
Update: METv4.1/src/tools/core/point_stat/point_stat.cc
Update: METv4.1/src/tools/core/grid_stat/grid_stat.cc
And then recompile MET.
Problem: For some lat/lon grids in GRIB2 files, the dx and dy parameters are not set. This is indicated by the resolution and component flag. MET was assuming that dx and dy were set correctly.
Solution: The fix is to check the resolution and component flag to see if dx and dy are set. If they are, use their values. Otherwise, compute them using the min/max lat/lon and dx/dy values.
Update: METv4.1/src/libcode/vx_data2d_grib2/data2d_grib2.cc
And then recompile MET.
Problem: Running a STAT-Analysis job to aggregate wind direction errors (-job aggregate_stat -line_type VL1L2 -out_line_type WDIR) results in this runtime error:
AsciiTable::rc_to_n() -> range check error
Solution: This is caused by a bug introduced in METv4.1. The fix is to correct how the row and column indices are handled when writing the job output.
Update: METv4.1/src/tools/core/stat_analysis/stat_analysis_job.cc
And then recompile MET.
Problem: A cut-and-paste error caused the tc_pairs tool to incorrectly parse the cyclone and storm_name configuration file entries.
Solution: The fix is to update the parsing to store their values correctly.
Update: METv4.1/src/tools/tc_utils/tc_pairs/tc_pairs_conf_info.cc
And then recompile MET.
Problem: Older GDAS data makes use of program code 10 which may exist at the top of the event stack after the temperature has already been converted from sensible to virtual.
Solution: The fix is to search through the entire event stack looking for the VIRTMP processing step and use the observation value immediately prior to that. Also include more diagnostic logging information at verbosity level 4.
Update: METv4.1/src/tools/other/pb2nc/pb2nc.cc
And then recompile MET.
See details in PB2NC Virtual Temperature write-up.
Problem: For the GRIB magic cookie bugfix, MET checks the first 256 bytes of files to determine if they are in GRIB format. However, attempting to read 256 bytes from files that are smaller than that results in a runtime error.
Solution: The fix is to compute the minimum of the 256 and the file size and only read that number of bytes when checking for the GRIB magic cookie.
Add: METv4.1/src/basic/vx_util/file_size.h
Add: METv4.1/src/basic/vx_util/file_size.cc
Update: METv4.1/src/basic/vx_util/vx_util.h
Update: METv4.1/src/basic/vx_util/Makefile
Update: METv4.1/src/libcode/vx_data2d_factory/is_grib_file.cc
And then recompile MET.
Problem: By default, the pb2nc tool is configured to select PREPBUFR observations from the top of the event stack. However, it is often the case that for temperature, the observation at the top of the stack has gone through the VIRTMP PREPBUFR processing step and has been converted to virtual temperature. Only observations of sensible temperature should be used for verification.
Solution: The fix is to check the program and reason codes that correspond to the observation. If the program code is 8 and the reason code is 3, do not use that observation at all since all versions of it contain virtual temperature. If the program code is 8 and the reason code is anything other than 3, step down the event stack looking for a program code that isn't 8. Select the temperature value for that event which contains sensible temperature.
Update: METv4.1/src/tools/other/pb2nc/pb2nc.cc
And then recompile MET.
Problem: The station names used for SURFRAD sometimes contain whitespace. If they are propagated through the rest of MET this will cause problems in the output of point_stat which is space-delimited.
Solution: The fix is to modify ascii2nc to replace any embedded whitespace in the SURFRAD station names with underscores.
Update: METv4.1/src/tools/other/ascii2nc/surfrad_handler.cc
And then recompile MET.
Problem: The Makefile for the modis_regrid tool links in the GRIB2 libraries directly rather than using the GRIB2 build variables defined in the top-level MET directory.
Solution: The fix is to update that Makefile to use the correct GRIB2 build variables.
Update: METv4.1/src/tools/other/modis_regrid/Makefile
And then recompile MET.
Problem: The MET library code assumed that the GRIB magic cookie would appear at the very beginning of the file.
Solution: The fix is to search the first 256 characters of the file for the GRIB magic cookie.
Update: METv4.1/src/libcode/vx_data2d_factory/is_grib_file.cc
And then recompile MET.
Problem: The MET GRIB2 library code was not parsing Mercator grid information correctly.
Solution: Correct the GRIB2 Mercator grid information parsing.
Update: METv4.1/src/libcode/vx_data2d_grib2/data2d_grib2.cc
And then recompile MET.
Problem: MET was parsing the model initialization time from the SIMULATION_START_DATE global attribute when it should have been using the START_DATE global attribute. For a cold start these values are the same, but when cycling they differ.
Solution: The fix is to parse the initialization time from the START_DATE global attribute.
Update: METv4.1/src/libcode/vx_data2d_nc_pinterp/pinterp_file.cc
And then recompile MET.
Problem: Update the Makefiles for the vx_util and vx_tc_util libraries to clean out the test programs they compiled.
Solution: Minor updates to two Makefiles.
Update: METv4.1/src/basic/vx_util/Makefile
Update: METv4.1/src/libcode/vx_tc_util/Makefile
And then recompile MET.
Copyright © 2024. All rights reserved.