Users will notice two major upgrades for METv4.0: support for GRIB2 and a restructuring of the MET configuration files.
Retrieve all of the recommended updates for METv4.0 in a tarfile:
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.0/src/tools/core/pcp_combine/pcp_combine.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.0/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.0/src/basic/vx_config/Makefile
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.0/src/tools/other/pb2nc/pb2nc.cc
And then recompile MET.
See details in PB2NC Virtual Temperature write-up.
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.0/src/tools/other/pb2nc/pb2nc.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.0/src/libcode/vx_data2d_grib2/data2d_grib2.cc
And then recompile MET.
Problem: When applying a lat/lon polyline to the global GFS grid, no points were retained.
Solution: When applying the mask, we need to ensure that the longitude values being checked remain in the expected range of values.
Update: METv4.0/src/libcode/vx_statistics/apply_mask.cc
And then recompile MET.
Problem: The MET GRIB2 library code was not parsing the scanning mode flag correctly for GFS data. The parenthesis were in the wrong place, preventing the logic from being applied correctly.
Solution: The fix is a small edit to the placement of parenthesis.
Update: METv4.0/src/libcode/vx_data2d_grib2/data2d_grib2.cc
And then recompile MET.
Problem: The MADIS2NC tool was storing observations of dewpoint using GRIB code 7 rather than the correct value of 17.
Solution: The fix is to update the code to use 17 instead of 7.
Update: METv4.0/src/tools/other/madis2nc/madis2nc.cc
And then recompile MET.
Problem: When reading multiple fields in Point-Stat from a MET NetCDF file, the forecast data from the first verification task is being used for all the verification tasks.
Solution: The function reading the data is failing to call clear on the object containing the array of data planes. So it is writing the new data at the end of the list rather than clearing it first and writing to the beginning. The fix is to call clear first.
Update: METv4.0/src/libcode/vx_data2d_nc_met/data2d_nc_met.cc
And then recompile MET.
Problem: When processing GRIB files larger than 2GB, MET is unable to access the GRIB records whose byte offset is too large. This problem is due to integer overflow when storing byte offsets for each record.
Solution: The fix is to use the off_t type in place of the integer type for storing byte offsets.
Update: METv4.0/src/libcode/vx_data2d_grib/grib_classes.h
Update: METv4.0/src/libcode/vx_data2d_grib/grib_classes.cc
And then recompile MET.
Problem: Users are free to create their own observation message types when running the ASCII2NC tool. However, the Point-Stat and Ensemble-Stat tools were erroring out when a user-defined, non-PREPBUFR message type was specified in the configuration file.
Solution: Remove the error checking for message types when parsing the configuration files.
Update: METv4.0/src/basic/vx_config/config_util.cc
And then recompile MET.
Problem: On some systems, the compilation of MET errors out since PATH_MAX is undefined. PATH_MAX is defined in the limits.h include file, which is missing from a handful of the MET source files that reference PATH_MAX.
Solution: Add limits.h to the list of include files.
Update: METv4.0/src/tools/core/ensemble_stat/ensemble_stat.cc
Update: METv4.0/src/libcode/vx_analysis_util/mode_line.cc
Update: METv4.0/src/libcode/vx_analysis_util/stat_line.cc
Update: METv4.0/src/libcode/vx_nc_util/write_netcdf.cc
And then recompile MET.
Problem: In the gen_poly_mask tool, the option of defining a masking region as the grid on which a data file resides was not working. The tool was correctly parsing the grid information but then also trying to process the data file as an ASCII polyline file.
Solution: Fix the logic so that the data file is not processed as an ASCII polyline file.
Update: METv4.0/src/tools/other/gen_poly_mask/gen_poly_mask.cc
And then recompile MET.
Problem: The trmm2nc.R script was not parsing the ASCII TRMM header information correctly.
Solution: Fix the parsing.
Update: METv4.0/scripts/Rscripts/trmm2nc.R
Problem: When multiple inputs were specified for the PCP-Combine -add option, it was trying to extract the first accumulation from all of the input files specified. There was also a problem in the computation of the total accumulation interval.
Solution: The fix is to correctly index the requested accumulation to correspond to the file being processed and compute the total accumulation interval correctly.
Update: METv4.0/src/tools/core/pcp_combine/pcp_combine.cc
And then recompile MET.
Problem: The previous patch failed to fix the transposition of delta_lat and delta_lon for Lat/Lon projections.
Solution: The fix is to parse the lat/lon grid spacing out of the correct GRIB2 grid parameters.
Update: METv4.0/src/libcode/vx_data2d_grib2/data2d_grib2.cc
And then recompile MET.
Problem: The llabs() function is not defined for some PGI compiler versions causing a compilation error.
Solution: The fix is to switch to using labs() instead which is defined for PGI.
Update: METv4.0/src/libcode/vx_statistics/pair_base.cc
And then recompile MET.
Problem: Fixed a GRIB2 library bug that caused gridding problems.
Solution: Adjusted how grid information in GRIB2 files is parsed into the MET grid framework.
Update: METv4.0/src/libcode/vx_data2d_grib2/data2d_grib2.cc
And then recompile MET.
Problem: MET tools that read multiple GRIB2 variables during a single run may experience a mixup in the forecast values between the fields.
Solution: Initialize the data member that stores forecast variable data at the beginning of each read operation.
Update: METv4.0/src/libcode/vx_data2d_grib2/data2d_grib2.cc
And then recompile MET.
Problem: When STAT-Analysis is run with a config file that includes an aggregate_stat job for the MPR line type, it seg faults when attempting to build the jobstring because it calls strlen on boot_seed which is a null string.
Solution: The fix is to check for a null string prior to calling strlen.
Update: METv4.0/src/libcode/vx_analysis_util/stat_job.cc
And then recompile MET.
Problem: MET tools attempting to parse a config file including a string list containing only an emtpy string would seg fault when trying to parse the config file
Solution: Fixed the parsing of config string lists to handle empty strings
Update: METv4.0/src/basic/vx_log/string_array.cc
Update: METv4.0/src/libcode/vx_statistics/apply_mask.cc
And then recompile MET.
Problem: When compiling MET with PGI compiler family on some systems, a comiler error related to cmath abs function is thrown.
Solution: Adjust order of include files to put cmath at the end of the list
Update: METv4.0/src/tools/core/grid_stat/grid_stat_conf_info.cc
Update: METv4.0/src/tools/core/wavelet_stat/wavelet_stat_conf_info.cc
Update: METv4.0/src/tools/core/point_stat/point_stat_conf_info.cc
Update: METv4.0/src/tools/core/ensemble_stat/ensemble_stat_conf_info.cc
Update: METv4.0/src/tools/core/stat_analysis/parse_stat_line.cc
Update: METv4.0/src/tools/core/stat_analysis/stat_analysis.cc
Update: METv4.0/src/tools/core/stat_analysis/aggr_stat_line.cc
Update: METv4.0/src/tools/core/stat_analysis/stat_analysis_job.cc
And then recompile MET.
Problem: Wind fields from GRIB2 data files read by a PGI-compiled instance MET were not properly rotated.
Solution: Adjust return type from a support function in the MET GRIB2 library
Update: METv4.0/doc/MET_Users_Guide.pdf
Update: METv4.0/src/libcode/vx_data2d_grib2/data2d_grib2.cc
Update: METv4.0/src/libcode/vx_data2d_grib2/data2d_grib2.cc
And then recompile MET.
Problem: When building MET without the -static flag, the build would fail when linking gen_poly_mask because the gslcblas library
Solution: Added the gslcblas library to the link list in the affected Makefiles
Update: METv4.0/src/tools/other/madis2nc/Makefile
Update: METv4.0/src/tools/other/gen_poly_mask/Makefile
Update: METv4.0/src/tools/other/plot_point_obs/Makefile
And then recompile MET.
Copyright © 2024. All rights reserved.