Retrieve all of the recommended updates for METv8.0 in a tarfile:
Problem: In met-8.0, MODE was enhanced to remove the hard-coded upper limit on the number of object sets by dynamically reallocating memory as needed. This introduced a bug in writing past the end of that dynamically allocated array.
Solution: Add code to reallocate as needed to manage the memory correctly.
Problem: When parsing Polar Stereographic and Lambert Conformal grid definitions from GRIB2 files, MET did not apply the correct logic to determine the hemisphere, leading to the following runtime error:
ERROR : MetGrib2DataFile::read_grib2_grid() -> unexpected polar stereo projection center (128)
Solution: Fix MET's GRIB2 library to parse the hemisphere correctly.
Problem: When computing vector statistics (VL1L2 or VAL1L2 output), point_stat checks to make sure that each UGRD observation is followed by a VGRD observation. However an input point observation file containing more than 33 unique observation variable types results in a runtime error similar to the following:
ERROR : process_obs_file() -> for observation index 503, when computing VL1L2 and/or VAL1L2 vector winds each UGRD observation must be followed by a VGRD observation with the same header and at the same level.
This bug appeared in met-6.1 after switching from identifying point observations by a GRIB code to a string.
Solution: Update this logic to handle the use of GRIB codes (old format) or the use of the strings (new format).
Problem: In pcp_combine, if any of the input values for a grid point are bad data, then the output value should be bad data as well. The -add command checks for bad input values but fails to write the bad data value to the output. Solution: Update the -add command to write the bad data value to the output whenever bad input data is found.
Problem: The Fourier decomposition logic in Grid-Stat fails to decompose the climatological mean field. This yields erroneous output in the Grid-Stat SAL1L2 and VAL1L2 output line types and is not consistent with the methodology applied at NOAA EMC.
Solution: Update Grid-Stat to also decompose the climatological mean field when computing scalar anomaly statistics. Also, write the decomposed climatological mean field to the output NetCDF matched pairs file, if configured to do so.
Problem: In MTD, the start_time_delta, end_time_delta, and time_centroid_delta object pair attributes are all computed as forecast minus observation. These time deltas can be positive or negative. The interest function for the time_centroid_delta is defined for both positive and negative values, while the interest functions for start_time_delta and end_time_delta are defined only for positive values.
Solution: Update the default MTD configuration file to make it more consistent by defining the interest functions for the start_time_delta and end_time_delta for both postive and negative values. Users are welcome to modify this default configuration however they see fit.
Problem: The mode_quilt_plot.R script fails when the first MODE output file it reads contains no objects.
Solution: Update the logic in the script to make it more robust.
Problem: Compiling MET using GNU version 8.2.0 requires an additional include file.
Solution: Include limits.h in config_util.cc.
Problem: When selecting grid points to be used in HiRA ensemble computations, Point-Stat may choose the wrong set of forecast grid points. When the HiRA interpolation width is odd, Point-Stat centers the interpolation area on the lower-left grid point, rather than choosing the nearest one.
Solution: Fix the interpolation logic. For odd interpolation widths, center the interpolation area on the nearest grid point. For even interpolation widths, start with the four surrounding grid points.
Problem: PB2NC runs rather slowly and could be made more efficient.
Solution: PB2NC calls BUFRLIB to read BUFR/PREPBufr messages. It can call BUFRLIB using a small, medium, or large memory buffer. By default, met-8.0 uses the large memory buffer. This fix uses the level_range setting from the PB2NC configuration file to select the smallest buffer possible for the requested levels. In addition, it refines the logic of how/when to process the message headers and data, enhancing runtime efficiency.
Problem: The GRIB1 library code in MET applies some logic to accumulated precipitation but is only checking for 2-digit (i.e. HH for hours) or 6-digit (i.e. HHMMSS for hours, minutes, and seconds) accumulations. This logic does not work for 3-digit accumulations, such as 120 hours (or 5 days) of accumulation. These accumulations may appear in the post-processed output of WRF-ARW which, by default, stores runtime accumulations.
Solution: Rather than checking for 2 or 6 digits, use a regular expression to check for any number of digits.
Problem: Passing data to pcp_combine using a python script results in a segfault unless the "-name" command line option is used. pcp_combine accesses null strings prior to them being set by the python script.
Solution: Change the order of the logic to not access those strings until after they have been set.
Problem: MET fails to check for NULL pointers when processing python scripts, potentially leading to a segfault.
Solution: Update library code to check for NULL pointers prior to accessing their values.
Problem: MET fails to parse timing information from CF-Compliant NetCDF files which do not define the "time" variable.
Solution: Add support for time coordinates attribute and standard name for time variables.
The pcp_combine tool is typically used to modify the accumulation interval of precipitation amounts in model and/or analysis datasets. For example, when verifying model output in GRIB format containing runtime accumulations of precipitation, run the pcp_combine -subtract option every 6 hours to create 6-hourly precipitation amounts. In this example, it is not really necessary to run pcp_combine on the 6-hour GRIB forecast file since the model output already contains the 0 to 6 hour accumulation. However, the output of pcp_combine is typically passed to point_stat, grid_stat, or mode for verification. Having the 6-hour forecast in GRIB format and all other forecast hours in NetCDF format (output of pcp_combine) makes the logic for configuring the other MET tools messy. To make the configuration consist for all forecast hours, one option is to choose to run pcp_combine as a pass-through to simply reformat from GRIB to NetCDF. Listed below is an example of passing a single record to the pcp_combine -add option to do the reformatting:
$MET_BUILD/bin/pcp_combine -add forecast_F06.grb \
'name="APCP"; level="A6";' \
forecast_APCP_06_F06.nc -name APCP_06
Reformatting from GRIB to NetCDF may be done for any other reason the user may have. For example, the -name option can be used to define the NetCDF output variable name. Presuming this file is then passed to another MET tool, the new variable name (CompositeReflectivity) will appear in the output of downstream tools:
$MET_BUILD/bin/pcp_combine -add forecast.grb \
'name="REFC"; level="L0"; GRIB1_ptv=129; lead_time="120000";' \
forecast.nc -name CompositeReflectivity
Copyright © 2020. All rights reserved.