Skip to content

Update develop-ref after #3403#3418

Merged
JohnHalleyGotway merged 351 commits into
develop-reffrom
update_develop_59950cce
Jul 15, 2026
Merged

Update develop-ref after #3403#3418
JohnHalleyGotway merged 351 commits into
develop-reffrom
update_develop_59950cce

Conversation

@github-actions

@github-actions github-actions Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Modifies 3 existing files and adds 3 new ones.
Created by @JohnHalleyGotway

PR #3403 modified the unit test output for MET's develop branch. Note that the nightly build regression test on seneca for 20260715 flagged the same differences flagged by this GHA testing workflow run.

Three existing output files are modified and three new output files are created:

Text diff
  A: MET-develop-ref/test_output/grid_stat/grid_stat_WRF_pres_120000L_20190831_120000V.stat
  B: MET-develop/test_output/grid_stat/grid_stat_WRF_pres_120000L_20190831_120000V.stat

NetCDF diff
  A: MET-develop-ref/test_output/grid_stat/grid_stat_WRF_pres_120000L_20190831_120000V_pairs.nc
  B: MET-develop/test_output/grid_stat/grid_stat_WRF_pres_120000L_20190831_120000V_pairs.nc

Text diff
  A: MET-develop-ref/test_output/grib_tables/um_raw/PS.557WW_SC.U_DI.F_GP.GALWEM-GD_GR.C17KM_AR.GLOBAL_DD.20160424_CY.00_FH.000_DF.ps
  B: MET-develop/test_output/grib_tables/um_raw/PS.557WW_SC.U_DI.F_GP.GALWEM-GD_GR.C17KM_AR.GLOBAL_DD.20160424_CY.00_FH.000_DF.ps

file not found (new output)
  A: 
  B: MET-develop/test_output/winds/pcp_combine_nam_winds_GRIB1.nc

file not found (new output)
  A: 
  B: MET-develop/test_output/winds/pcp_combine_nbm_winds_GRIB2.nc

file not found (new output)
  A: 
  B: MET-develop/test_output/winds/pcp_combine_winds_NETCDF_WRF.nc

hsoh-u and others added 30 commits July 2, 2024 11:35
* #2673 Removed redundant_parentheses

* #2673 Removed redundant_parentheses

* #2673 Removed redundant parentheses

* #2673 Removed redundant parentheses

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
* #2857 Added MetNcCFDataFile::build_grid_from_lat_lon_vars

* #2857 Added NcCfFile::build_grid_from_lat_lon_vars

* #2857 Check the coordinates attribute to find latitude, longitude, and time variables

* #2857 Get the lat/lon variables from coordinates attribute if exists

* #2857 Added two constants

* #2857 Deleted debug messages

* #2857 Added lat_vname and lon_vname for var_name_map

* #2857 Added two unit tests: point2grid_sea_ice_tripolar and point2grid_sea_ice_tripolar_config

* #2857 Initial release

* #2857 Correct dictinary to get file_type

* #2857 DO not check the time variable for point2grid

* #2857 Added point2grid_tripolar_rtofs

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
* Per #2932, updating version and release notes

* Per #2932, updating date on release notes

* Per #2932, fixed formatting and links

* Update release-notes.rst

* Update release-notes.rst

Removing inline backticks since they do not format the way I expected, especially when put inside bolded release notes.

---------

Co-authored-by: John Halley Gotway <johnhg@ucar.edu>
* Fixing up release notes

* Update release-notes.rst

---------

Co-authored-by: John Halley Gotway <johnhg@ucar.edu>
* Per #2924, Update the MPR and ORANK output line types to just write duplicate existing climo values, update the header tables and MPR/ORANK documentation tables.

* Per #2924, update get_n_orank_columns() logic

* Per #2924, update the Stat-Analysis parsing logic to parse the new MPR and ORANK climatology columns.

* Per #2924, making some changes to the vx_statistics library to store climo data... but more work to come. Committing this first set of changes that are incomplete but do compile.

* Per #2924, this big set of changes does compile but make test produces a segfault for ensemble-stat

* Per #2924, fix return value for is_keeper_obs()

* Per #2924, move fcst_info/obs_info into the VxPairBase pointer.

* Per #2924, update Ensemble-Stat to set the VxPairBase::fcst_info pointer

* Per #2924 udpate handling of fcst_info and obs_info pointers in Ensemble-Stat

* Per #2924, update the GSI tools to handle the new fcst climo columns.

* Per #2924, add backward compatibility logic so that when old climo column names are requested, the new ones are used.

* Per #2924, print a DEBUG(2) log message if old column names are used.

* Per #2924, switch the unit tests to reference the updated MPR column names rather than the old ones.

* Per #2924, working progress. Not fully compiling yet

* Per #2924, another round of changes. Removing MPR:FCST_CLIMO_CDF output column. This compiles but not sure if it actually runs yet

* Per #2924, work in progress

* Per #2924, work in progress. Almost compiling again.

* Per #2924, get it compiling

* Per #2924, add back in support for SCP and CDP which are interpreted as SOCP and OCDP, resp

* Per #2924, update docs about SCP and CDP threshold types

* Per #2924, minor whitespace changes

* Per #2924, fix an uninitialized pointer bug by defining/calling SeepsClimoGrid::init_from_scratch() member function. The constructor had been calling clear() to delete pointers that weren't properly initialized to nullptr. Also, simplify some map processing logic.

* Per #2924, rename SeepsAggScore from seeps to seeps_agg for clarity and to avoid conflicts in member function implementations.

* Per #2924, fix seeps compilation error in Point-Stat

* Per #2924, fix bug in the boolean logic for handling the do_climo_cdp NetCDF output option.

* Per #2924, add missing exit statement.

* Per #2924, tweak threshold.h

* Per #2924, define one perc_thresh_info entry for each enumerated PercThreshType value

* Per #2924, simplify the logic for handling percentile threshold types and print a log message once when the old versions are still used.

* Per #2924, update the string comparison return value logic

* Per #2924, fix the perc thresh string parsing logic by calling ConcatString::startswith()

* Per #2924, switch all instances of CDP to OCDP. Gen-Ens-Prod was writing NetCDF files with OCDP in the output variable names, but Grid-Stat was requesting that the wrong variable name be read. So the unit tests failed.

* Per #2924, add more doc details

* Per #2924, update default config file to indicate when climo_mean and climo_stdev can be set seperately in the fcst and obs dictionaries.

* Per #2924, update the MET tools to parse climo_mean and climo_stdev separately from the fcst and obs dictionaries.

* Per #2924, backing out new/modified columns to minimize reg test diffs

* Per #2924, one more section to be commented out later.

* Per #2924, replace several calls to strncmp() with ConcatString::startswith() to simplify the code

* Per #2924, strip out some more references to OBS_CLIMO_... in the unit tests.

* Per #2924, delete accidental file

* Per #2924 fix broken XML comments

* Per #2924, fix comments

* Per #2924, address SonarQube findings

* Per #2924, tweak a Point-Stat and Grid-Stat unit test config file to make the output more comparable to develop.

* Per #2924, fix bug in the logic of PairDataPoint and PairDataEnsemble, when looping over the 3-dim array do not return when checking the climo and fcst values. Instead we need to continue to the next loop iteration.

* Per #2924, address more SonarQube code smells to reduce the overall number in MET for this PR.

* Per #2924, correct the logic for parsing climo data from MPR lines.

* Per #2924, cleanup grid_stat.cc source code by making calls to DataPlane::is_empty() and Grid::nxy().

* Per #2924, remove unneeded ==0
* Per #2924, track SL1L2 and SAL1L2 MAE scores with separate variables since they are no longer the same value. I renamed the existing 'mae' as 'smae' and added a new 'samae' variable. Renaming the existing lets me use the compiler help find all references to it throughout the code.

* Per #2924, update the User's Guide climatology details and equations.

* Per #2924, some changes to aggr_stat_line.cc and series_analysis.cc to satisfy some SonarQube code smells.
…to clarify that data specified in the fcst dictionary is read from the -single input files.
* Per #2924, Update the MPR and ORANK output line types to just write duplicate existing climo values, update the header tables and MPR/ORANK documentation tables.

* Per #2924, update get_n_orank_columns() logic

* Per #2924, update the Stat-Analysis parsing logic to parse the new MPR and ORANK climatology columns.

* Per #2924, making some changes to the vx_statistics library to store climo data... but more work to come. Committing this first set of changes that are incomplete but do compile.

* Per #2924, this big set of changes does compile but make test produces a segfault for ensemble-stat

* Per #2924, fix return value for is_keeper_obs()

* Per #2924, move fcst_info/obs_info into the VxPairBase pointer.

* Per #2924, update Ensemble-Stat to set the VxPairBase::fcst_info pointer

* Per #2924 udpate handling of fcst_info and obs_info pointers in Ensemble-Stat

* Per #2924, update the GSI tools to handle the new fcst climo columns.

* Per #2924, add backward compatibility logic so that when old climo column names are requested, the new ones are used.

* Per #2924, print a DEBUG(2) log message if old column names are used.

* Per #2924, switch the unit tests to reference the updated MPR column names rather than the old ones.

* Per #2924, working progress. Not fully compiling yet

* Per #2924, another round of changes. Removing MPR:FCST_CLIMO_CDF output column. This compiles but not sure if it actually runs yet

* Per #2924, work in progress

* Per #2924, work in progress. Almost compiling again.

* Per #2924, get it compiling

* Per #2924, add back in support for SCP and CDP which are interpreted as SOCP and OCDP, resp

* Per #2924, update docs about SCP and CDP threshold types

* Per #2924, minor whitespace changes

* Per #2924, fix an uninitialized pointer bug by defining/calling SeepsClimoGrid::init_from_scratch() member function. The constructor had been calling clear() to delete pointers that weren't properly initialized to nullptr. Also, simplify some map processing logic.

* Per #2924, rename SeepsAggScore from seeps to seeps_agg for clarity and to avoid conflicts in member function implementations.

* Per #2924, fix seeps compilation error in Point-Stat

* Per #2924, fix bug in the boolean logic for handling the do_climo_cdp NetCDF output option.

* Per #2924, add missing exit statement.

* Per #2924, tweak threshold.h

* Per #2924, define one perc_thresh_info entry for each enumerated PercThreshType value

* Per #2924, simplify the logic for handling percentile threshold types and print a log message once when the old versions are still used.

* Per #2924, update the string comparison return value logic

* Per #2924, fix the perc thresh string parsing logic by calling ConcatString::startswith()

* Per #2924, switch all instances of CDP to OCDP. Gen-Ens-Prod was writing NetCDF files with OCDP in the output variable names, but Grid-Stat was requesting that the wrong variable name be read. So the unit tests failed.

* Per #2924, add more doc details

* Per #2924, update default config file to indicate when climo_mean and climo_stdev can be set seperately in the fcst and obs dictionaries.

* Per #2924, update the MET tools to parse climo_mean and climo_stdev separately from the fcst and obs dictionaries.

* Per #2924, backing out new/modified columns to minimize reg test diffs

* Per #2924, one more section to be commented out later.

* Per #2924, replace several calls to strncmp() with ConcatString::startswith() to simplify the code

* Per #2924, strip out some more references to OBS_CLIMO_... in the unit tests.

* Per #2924, delete accidental file

* Per #2924 fix broken XML comments

* Per #2924, fix comments

* Per #2924, address SonarQube findings

* Per #2924, tweak a Point-Stat and Grid-Stat unit test config file to make the output more comparable to develop.

* Per #2924, fix bug in the logic of PairDataPoint and PairDataEnsemble, when looping over the 3-dim array do not return when checking the climo and fcst values. Instead we need to continue to the next loop iteration.

* Per #2924, address more SonarQube code smells to reduce the overall number in MET for this PR.

* Per #2924, correct the logic for parsing climo data from MPR lines.

* Per #2924, update MPR and ORANK line types to update/add FCST/OBS_CLIMO_MEAN/STDEV/CDF columns.

* Per #2924, cleanup grid_stat.cc source code by making calls to DataPlane::is_empty() and Grid::nxy().

* Per #2924, remove unneeded ==0

* Per #2924, working on PR2.

* Per #2924, update User's Guide with notional example of specifying climo_mean and climo_stdev separately in the fcst and obs dicts.

* Per #2924, adding a new unit test. It does NOT yet run as expected. Will debug on seneca

* Per #2924, pass the description string to the read_climo_data_plane*() function to provide better log messages

* Per #2924, more work on consistent log messages

* Per #2924, tweak the configuration to define both field, climo_mean, and climo_stdev in both the fcst and obs dictionaries

* Per #2924, tweak the unit_climatology_mixed.xml test

* Per #2924, only whitespace changes.

* Per #2924, missed swapping MET #2924 changes in 3 test files

* Per #2924, delete accidentally committed file

* Per #2924, delete accidentally committed files

* Per #2924, add support for GRIB1 time range indicator value of 123 used for the corresponding METplus Use Case. Note that there are 22 other TRI values not currently supported.
#2947)

* Adds caveat regarding longitudes appearing in DEBUG statements with a different sign to the FAQ.

* Update appendixA.rst

Missing paren
* Per #2938, define CRC_Array::add_uniq(...) member function which is now used in PB2NC

* Per #2938, replace n_elements() with n() to make the code more concise. Refine log/warning message when multiple message center times are encountered.
* Per #1371, add -input command line argument and add support for ALL for the CTC, MCTC, SL1L2, and PCT line types.

* Per #1371, rename the -input command line option as -aggregate instead

* Per #1371, work in progress

* Per #1371, just comments

* Per #1371, working on aggregating CTC counts

* Per #1371, work in progress

* Per #1371, update timing info using time stamps in the aggr file

* Per #1371, close the aggregate data file

* Per #1371, define set_event() and set_nonevent() member functions

* Per #1371, add logic to aggregate MCTC and PCT counts

* Merging changes from develop

* Per #1371, work in progress aggregating all the line statistics types. Still have several issues to address

* Per #1371, switch to using get_stat() functions

* Per #1371, work in progress. More consolidation

* Per #1371, correct expected output file name

* Per #1371, consistent regridding log messages and fix the Series-Analysis PairDataPoint object handling logic.

* Per #1371, check the return status when opening the aggregate file.

* Per #1371, fix prc/pjc typo

* Per #1371, fix the series_analysis PCT aggregation logic and add a test to unit_series_analysis.xml to demonstrate.

* Per #1371, resolve a few SonarQube findings

* Per #1371, make use of range-based for loop, as recommeded by SonarQube

* Per #1371, update series-analysis to apply the valid data threshold properly using the old aggregate data and the new pair data.

* Per #1371, update series_analysis to buffer data and write it all at once instead of storing data value by value for each point.

* Per #1371, add useful error message when required aggregation variables are not present in the input -aggr file.

* Per #1371, print a Debug(2) message listing the aggregation fields being read.

* Per #1371, correct operator+= logic in met_stats.cc for SL1L2Info, VL1L2Info, and NBRCNTInfo. The metadata settings, like fthresh and othresh, were not being passed to the output.

* Per #1371, the DataPlane for the computed statistics should be initialized to a field of bad data values rather than the default value of 0. Otherwise, 0's are reported for stats a grid points with no data when they should really be reported as bad data!

* Per #1371, update logic of the compute_cntinfo() function so that CNT statistics can be derived from a single SL1L2Info object containing both scalar and scalar anomaly partial sums. These changes enable CNT:ANOM_CORR to be aggregated in the Series-Analysis tool.

* Per #1371, fix logic of climo log message.

* Per #1371, this is actually related to MET #2924. In compute_pctinfo() used obs climo data first, if provided. And if not, use fcst climo data.

* Per #1371, fix indexing bug (+i instead of +1) when check the valid data count. Also update the logic of read_aggr_total() to return a count of 0 for bad data.

* Per #1371, add logic to aggregate the PSTD BRIERCL and BSS statistics in the do_climo_brier() function. Tested manually to confirm that it works.

* Per #1371, switch to using string literals to satisfy SonarQube

* Per #1371, update series_analysis tests in unit_climatology_1.0deg.xml to demonstrate aggregating climo-based stats.

* Per #1371, remove extra comment

* Per #1371, skip writing the PCT THRESH_i columns to the Series-Analysis output since they are not used

* Per #1371, fix the R string literals to remove \t and \n escape sequences.

* Per #1371, update the read_aggr_data_plane() suggestion strings.

* Per #1371, ignore unneeded PCT 'THRESH_' variables both when reading and writing ALL PCT columns.

* Per #1371, update the test named series_analysis_AGGR_CMD_LINE to include data for the F42 lead time that had previously been included for the same run in the develop branch. Note however that the timestamps in the output file for the develop branch (2012040900_to_2012041100) were wrong and have been corrected here (2012040900_to_2012041018) to match the actual data.

* Per #1371, update the -aggr note to warn users about slow runtimes
* Per #2948, updating versions of ecbuild, eckit, and atlas

* Per #2948, Adding MET_CXX_STANDARD

* Per #2948, updated wording for MET_CXX_STANDARD description

* Per #2948, updating script to work with two versions of ecbuild, eckit, and atlas

* Per #2948, without this change, there are compilation problems if the user wants to compile wihtout python

* Per #2948, fixing logic for MET_CXX_STANDARD

* Per #2928, adding missing end bracket

* Per #2948, fixed the logic for compiling versions of ecbuild, eckit, and atlas

* Per 948, fixed syntax for setting CXXFLAGS

* Per #2948, adding new Makefile.in files and configure and changing METbaseimage 3.2 to 3.3.

* Per #2948, updating version of met base tag from 3.2 to 3.3

* Per #2948, adding --enable-all MET_CXX_STANDARD=11 job

* Update compilation_options.yml

* Per #2948, added a job10 for MET_CXX_STANDARD=14

* Per #2948, added brief documentation for the MET_CXX_STANDARD option

---------

Co-authored-by: Julie Prestopnik <jpresto@seneca.rap.ucar.edu>
Co-authored-by: John Halley Gotway <johnhg@ucar.edu>
* #1729 Allow to change to differnt grid size if the raw size is 0

* Added build_grid_by_grid_string and build_grid_by_grid_string

* #1729 Calls build_grid_by_grid_string

* #1729 Added set_attr_grid at the -field option

* #1729 Set obs_type to TYPE_NCCF if the file_type is given at the config file

* #1729 Support set_sttr_grid and changed Error messages to Warning

* #1729 FIxed SonmarQube findings

* #1729 Initial release for unit test

* #1729 Added update_missing_values

* #1729 Deleted a shadowed local variable

* #2673 Added more is_eq

* #2673 Added get_exe_duration

* 2673 Reducded nested statements

* 2673 Fixed SonarGube findings

* 2673 Fixed SonarQube findings

* 2673 Fixed SonarQube findings

* #1729 Added aan unittest plot_data_plane_set_attr_grid

* #1729 Added aan unittest point2grid_cice_set_attr_grid

* #1729 Added changed back the verbose level

* #1729 Corrected typo

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
* #2936 Support 1D lat/lon values

* #2936 Initial release

* #2936 Cast the data type to avoid a compile warning

* #2936 Added an unittest point2grid_gfs_1D_lat_lon

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
* #2968 Corrected set_attr_grid for point2grid_cice_set_attr_grid

* #2968 Compare the DataPlane size and the variable data size

* #2968 nx and ny are not ignored with set_attr_grid

* #2968 Compare the DataPlane size and the variable data size

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
* added single quotes around env var/val pairs in export statements in cmd only mode

* updated logic in unit() to check exec return value against expected return value; created TEST xml file to test this feature

* deleted TEST_ xml, added test with retval 1 to unit_ascii2nc

---------

Co-authored-by: Natalie Babij <nbabij@seneca.rap.ucar.edu>
* Per #2887, update NumArray::vals() to return a reference to the vector rather a pointer to doubles.

* Per #2887, switch over the whole ContingencyTable class heirarchy from storing integer counts to storing double-precision weights.

* Add ContingencyTable::is_integer() member function to check whether the table contains all integers

* Per #2887, update parse_stat_line.cc to get it to compile after changing PCT to store thresholds in a std::vector.

* Per #2887, update PCTInfo::clear() logic.

* Per #2887, update ctc_by_row() logic to create reproducible results with the develop branch.

* Per #2887, update logic of define_prob_bins() to add a final >=1.0 threshold if needed. While ==0.1 works fine, I found that ==0.05 did not because the last >=1.0 threshold was missing likely do to floating point precision issues. This change should fix that problem.

* Per #2887, update roc_auc() function to match the develop branch

* Per #2887, fix bug if computation of far()

* Per #2887, replaced all ==0 integer equality checks with calls to is_eq() instead and fix a couple of equations to snuff out diffs in some CTS statistics.

* Per #2887, address some of the 34 SonarQube code smells flagged for this PR. Note that the compute_ci.h/.cc changes are necessary and good since we should be computing CI's using doubles instead of integer counts.

* Per #2887, update run_sonarqube.sh to specify the target CXX standard as 11. The hope is that that will limit the findings to only those features available in the C++11 standard.

* Per #2887, update to SonarQube version 6.1.0.4477 released on 6/27/2024.

* Per #2887, updating build_met_sonarqube.sh to specify --std=c++11 since c++17 is used by default
…efine_prob_bins() utility function so that ==n probability thresholds result in the correct number of probability thresholds. We were adding an unncessary 10-th bin (from 1.07143 to 1.0) for the ==7 probability threshold type.
The docs directory was moved up to the top-level of the repository but this workflow was not updated. Changing the ignore setting so that doc-only updates do not trigger the full METplus testing workflow.
hsoh-u and others added 23 commits March 2, 2026 10:37
* #3337 Removed -D__64BIT__

* #3337 Added const for SonarQube findings

* #3337 Added a warning message when 2GB limitation was applied

* #3337 Changed the conndition for the log message

* #3337 Corrected path of GRIB2 library on seneca

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
* Per #3359, update the OpenMP shared statements to remove constant variables which were causing compilation errors. With these changes, MET version 12.2.1 does compile and run on the CCS AWS instance.

* Per #3359, for GNU 8.5.0 I removed the constant variables from the OpenMP shared list. But with default(none), that causes a compilation error for GNU 12.2.0. Switching default(none) to default(shared) should satisfy both GNU 8.5.0 and 12.2.0.
* #3336 Changed an API void set_dict(Dictionary &dict) to bool set_dict(Dictionary &dict, bool do_exit)

* #3336 Continue even though the requested field does not exist

* #3336 Fixed the SonarQube findings

* #3336 Corrected typo

* #3336 Added handle_config_error and separated validate_censor_arrays and validate_wind_attributes

* #3336 Added override to set_dict

* #3336 Separated parse_and_set_grib2_filters, parse_and_set_prob_field, resolve_field_name, and validate_ipdtmpl_arrays from set_dict

* #3336 Reduced the duplicated codes

* #3336 Removed an unused argument

* #3336 rollback

* #3336 rollback and reduced duplicated codes

* #added const to handle_config_error

* #3336 Added missing return statement

* #3336 Added const to APIs

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
* Per #3362, update compute_aggregated_seeps_grid() to store the forecast timing info in the SEEPS output fields.

* Per #3362, remove commented out code to reduce SQ findings.

* Per #3362, update the configuration for the existing Grid-Stat SEEPS unit test to correct the metadata not parsed well from the input observation file.

* Per #3362, update version of actions to get passed Node.js 20 warnings from GHA.

* Per #3362, do still need to use upload-artifact/merge@7

* Update Docker image scanning action to version 2

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
* Per #3374, update nc_cf_file.cc to apply false_easting and false_northing offsets. Also include an OpenMP patch when compiling on casper.

* Per #3374, add a unit test to demonstrate MET reading NCCF files on a lambert conformal projection where false_easting and false_northing > 0.

* Per #3374, update comp_dir.py to ignore a small recurring difference in the ALAL2010_stat.out file.
* #3254 Modified offset 24 to value @850

* #3254

* #3254 Cleanup for SonarQube findings

* #3254 Cleanup for SonarQube findings

* #3254 Added get_vertical_offset

* #3254 Changed dimention to long

* #3254 Resolved SonarQube findings

* #3254 Added assign_dim_from_metadata

* #3254 Corrected typo

* #3254 Set boolean value to PFlag

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
* Per #3294, update GaussianInfo to use std::vector.

* Per #3294, add EASProbInfo struct to store EAS config options.

* Per #3294, switch from dynamically allocated memory to stl vectors.

* Per #3294, need to parse eas_prob.alpha config entry.

* Per #3294, update logic of DataPlane::operator+=() to check for an empty object, and if so, initialize it to 0's using the dimensions of the input.

* Per #3294, add fractional_distance() utility function.

* Per #3294, add new, convenient DataPlane constructor.

* Per #3294, update GenEnsProd to compute EAS probabilities

* Per #3294, update GenEnsProd config files.

* Per #3294, append threshold string to the EAS output variables.

* Per #3294, adjust the default eas_prob settings.

* Per #3294, tweak one more openmp call to satisfy the intel one api compiler on casper.

* Per #3294, reimplementation of EAS functionality in Gen-Ens-Prod to greatly reduce the amount of memory used.

* Per #3294, update the logic in CommandLine and main.cc to create the logfile as early as possible to make sure that it includes all mlog messages. Previously, the starting log message and number of OpenMP threads were written before the logfile was created.

* Per #3279, add eas_prob config details to the MET User's Guide.

* Per #3294, move EAS logic into compute_eas.h/.cc files to keep the source code well-organized.

* Per #3294, tweak openmp code to get it to run in parallel without error.

* Per #3294, add missing Blake, 2018 reference.

* Per #3294, refine Blake et al reference.

* Per #3294, reduce some sonarqube findings.

* Per #3294, satisfy more SonarQube findings

* Per #3294, drive down SonarQube findings in config sources.

* Per #3294, solve a couple more SonarQube findings.

* Per #3294, add ensemble_flag.eas_width and update the config files, docs, and gen_ens_prod logic to only write the eas probabilities and widths when requested.

* Per #3294, delete 2 files accidentally added.

* Per #3294, fix SonarQube issue.

* Per #3294, reduce SonarQube findings in the gen_ens_prod source code.

* Per #3294, fix SonarQube issue.

* Per #3294, eliminate fixed length character array.

* Per #3294, tweak config_options.rst based on Michelle's feedback.

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
* Per #3377, made changes to remove versions, change versions, add flags, and add libaec

* Per #3377, updated installation file to reflect upgraded versions and addition of the AEC library

* Per #3377 updated installation files changing version and adding LIB_LIBAEC

* Updating version number to 13.0.0

* Per #3377, removing references to freetype and cairo

* Fix comment formatting in compile_MET_all.sh

* Fix condition to compile LIBAEC instead of ZLIB
* #3373 Removed commented code

* #3373 Use normal string instead of F-string

* #3373 Updated a comment

* #3373 Simplify nested if

* #3373 Check if attrs is serializable

* #3373 Corrected typo

* #3373 Updtaed the return value from check_attrs

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
* Per #3370, update tc_rmw to check for analysis track when parse ATCF input files.

* Per #3370, add a new TC-RMW unit test to demonstrate running with a BEST track.

* Per #3370, small update to the TC-RMW docs.

* Per #3370, add best_technique to the TCRMW config file and update the User's Guide accordingly.

* Per #3370, update tc_rmw application code to parse and use best_technique and update the unit tests.

* Per #3370, move the TrackLines array from the TrackInfo class down into the TrackPoint class. This enables me to keep report the track lines point by point in the output of TC-RMW rather than only having them for the entire track.

* Per #3370, revise the search starting point in tc_rmw.cc.

* Per #3370, write a debug(2) summary message listing the number of track points used.

* Per #3370, fix SonarQube warning.

* Whitespace only

* Per #3370, solve many SonarQube findings in track_info.h and track_info.cc.

* Per #3370, squash a few more SonarQube issues.

* Per #3370, squash a few more SonarQube issues.

* Per #3370, fix one more SonarQube finding.

* Per #3370, clean up SonarQube issues in tc_rmw application code.

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
* remove sqlite env vars and add zlib env var so the compile script will install them

* turn on flag to compile sqlite

* Per #3389, update zlib and sqlite versions in the docs.

* skip installing bufr utils

---------

Co-authored-by: John Halley Gotway <johnhg@ucar.edu>
* Per #3387, add beta2 release notes.

* Per #3387, tweak wording
* Initial add of data type table.

* Changed all _LEAD column types from int to str

* Changed appropriate columns to regular expressions

* Added blurb to User's Guide

* Added name to  User's Guide author list

* Per #3384, update description of the column types.

---------

Co-authored-by: Lindsay Blank <lindsay.blank@fiqas-vps1.gsd.esrl.noaa.gov>
* Per #3396, refine logic in RPSInfo::set() to use centered probability bins based on the number of ensemble members.

* Per #3396, add 1 to the list of HiRA neighborhood sizes to confirm that it now works well.

* Per #3396, reduce some easy SonarQube findings.

* Per #3396, really only need to add the HiRA width of 1, not 3.

* Per #3396, work on the User's Guide docs.

* Per #3396, resolve SonarQube issue.

* Delete swap file.

* Per #3396, switch to METbaseimage:3.5-latest as the base image.

* Fix typo in Point-Stat docs.

* Per #3396, add details to the upgrade instructions to note the existing RPS output is modified by #3396.
* #3395 Removed MET_TEST_RSCRIPT

* #3395 Repalcing mgnc.R and mpnc.R

* #3395 Removed unused script and unit tests

* #3395 Removed unit_trmm2nc.xml and unit_plot_tc.xml

* #3395 Changed a R script to a python script

* #3395 Removed push origin  plot_tc and trmm2nc

* #3395 Used [[ notation (SonarQube)

* #3395 Updated EOL (Unix format)

* #3395 Corrected typo

* #3395 Added one more arg to check_size_and_return

* #3395 Removed shell scripts with MET_TEST_RSCRIPT

* #3395 Changed MET_PYTHON_BIN_EXE to MET_TEST_MET_PYTHON_EXE

* #3395 Added verbose_msg to reduce Cognitive Complexity

* #3395 Added line_break optionj to verbose_msg

* #3395 Added line_break option to verbose_msg

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
* Per #1518, add WindVectorInfo struct along with code to parse it.

* Per #1518, switch to WindMetadata struct name and parse it for the VarInfo base class.

* Per #1518, refine logic for checking wind metadata.

* Per #1518, don't need kinetic_energy_field_name config option. Instead, used a pre-defined hard-coded list of variable names to drive the derivation logic.

* Per #1518, update the VarInfo is_... functions throughout.

* Per #1518, lots of changes for handling wind deriviation in the base class. Next up are handling wind rotations and adding lots of tests.

* Per #1518, update function names, add a hook for rotate_winds(), and add long names and units for derived wind fields.

* Per #1518, improve level string handling for NetCDF files. When deriving winds, the level string needs to be wrapped in parenthesis based on the existing parsing logic.

* Per #1518, handle wind rotation in the Met2dDataFile base class rather than just the derived classes for GRIB1 and GRIB2.

* Per #1518, add hooks to derive kinetic energy, vorticity, and divergence. Still need to add the vorticity and divergence derivations and add new unit tests.

* Per #1518, back out hooks for deriving divergence and vorticity since they're non-trivial.

* Per #1518, refine logic slightly.

* Per #1518, update library code to assume NetCDF files (MET, WRF, and CF) contain earth-relative winds.

* Per #1518, patch logic in GRIB2 find_record_matches() to enable the pcp_combine -sum command to work again on precip data where name = APCP_03 while req_name = APCP.

* Per #1518, update call to read_data_plane() ci-run-unit

* Per #1518, siwitchtch from index_a/index_b/index_c to the more descriptive disc/pcat/pnum.

* Per #1518, update the grib table lookup to return a vector of matches.

* Correct TCDC to be TCC for GALWEM.

* Per #1518, add logic to check whether DataPlaneArray level values match.

* Per #1518, move call to rotate_winds() outside of process_data_plane(). We now have rotate_winds() for both DataPlane and DataPlaneArray inputs. And wind rotation is now handled AFTER the calls to process_data_plane().

* Per #1518, rotate_winds() should return true for non-wind vars.

* Per #1518, patch rotate_winds() logic for DataPlaneArray. ci-run-unit

* Per #1518, add back in calls to set the GRIB code after doing a table lookup.

* Per #1518, need to store the units parsed from the GRIB tables.

* Per #1518, delete accidentally committed swap file. ci-run-unit

* Per #1518, reverting logic in find_record_matches() back to what it was to make the unit tests happier. ci-run-unit

* Trying to eliminate testing workflow failures  ci-run-unit

* Per #1518, always read ConfigConstants before reading a config string.

* Per #1518, more tweaks to try get the unit tests to pass ci-run-unit

* Minor tweak

* Per #1518, add VarInfo::reset_dict_with_name() function and update read_wind_data() to call it. Hopefully that'll parse the wind component data better. ci-run-unit

* Per #1518, improve the read_wind_data() warning messages. ci-run-unit

* Per #1518, refined wind rotation log messages #ci-run-unit

* Per #1518, handle wind rotation before calling process_data_plane(). That's the order of the logic in the develop branch and changing it caused differences in the unit test output.

* Per #1518, update gen_ens_prod and ensemble_stat to clone the VarInfo object prior to reading data since deriving/rotating winds can affect the contents of the VarInfo object. ci-run-unit

* Per #1518, abandon VarInfo::set_earth_relative() since that logic wreaks havoc when processing paired VL1L2 winds. Use a VarInfo::clone() in read_wind_data() and nowhere else.

* Per #1518, refine log message formatting and update existing plots of U-wind from WRF to demonstrate use is_grid_relative=false and produce the same output as before.

* Per #1518, patch pcp_combine.cc read_field to read the -field config strings into a copy of the MetConfig object to avoid settings from one -field option from being passed along to the next one.

* Per #1518, log each wind rotation operation.

* Per #1518, move clone() operation up in the logic from read_wind_data() to the upstream derive_winds() and rotate_winds() functions. When deriving wind_direction, we need to know if the U and V components are grid or earth relative.

* More tweaks

* Per #1518, add unit_winds.xml to demonstrate the new functionality. ci-run-unit

* Start doc updates

* Per #1518, add logic to read_wind_data() when converting U to V or vice-versa try swapping the U's and V's and searching for that string first. Also update unit_winds.xml to no longer set u_wind_field_name and v_wind_field_name for a couple of fields.

* Per #1518, update docs about wind rotation.

* Per #1518, note config changes in the upgrade instructions.

* Try reverting from METbaseimage 3.5-latest back to 3.4-latest. The TC-Diag unit test fails in GHA when using 3.4-latest.

* Per #1518, don't need to specify u_wind_field and v_wind_field_name after adding the swap UV logic.

* Per #1518, solve 3 SonarQube findings.

* Per #1518, solve SonarQube findings in data_class.h/.cc.

* Per #1518, make GRIB table lookup functions const to satisfy SonarQube.

* Per #1518, solve more SonarQube findings.

* Per #1518, drive down more SonarQube findings to reduce the overall number of them relative to the develop branch.

* Per #1518, reduce 4 more SonarQube findings.

* Per #1518, add missing references to Error or Debug for handful of calls to mlog throughout the MET repo.

* Per #1518, refine the swap UV name logic so that it's only employed when the current field name setting matches the contents of what's in ConfigConstants. That way, it is NOT used when the user explicitly sets the field name.

* MetConfig doesn't need to be static

* Per #1518, switch VarInfo::clone() to return an std::unique_ptr() to satisfy SonarQube's complaints about calling new and delete.

* Per #1518, solve another SonarQube finding.

* Switch double to bool

* More SonarQube cleanup

* One more SonarQube issue

* Per #1518, update docs based on PR feedback.
* use 3.5 base image to test updates to tar files

* Added workflow dispatch input to override the MET base image tag to use for testing. Added logic to change the MET base image repo to append '-dev' if the tag name doesn't start with a number, assuming that the value has been overridden since the tags in the regular repos are always numeric

* TEMP: override MET base tag to test rhel ubi9 as base image

* move check to add '-dev' to MET base repo outside of block that is only run when running unit tests

* fix check for dev version of base image

* use rhel ubi9 syntax for updating/upgrading packages, use 3.5 base image by default

* skip package upgrade due to errors upgrading centos packages

* add additional lib directory to rpath

* switch back to base image 3.4 until issues can be resolved

* use met base tag from workflow dispatch instead of hard-coded branch
@JohnHalleyGotway JohnHalleyGotway added this to the MET-13.0.0 milestone Jul 15, 2026
@github-project-automation github-project-automation Bot moved this to 🩺 Needs Triage in METplus-13.0 Development Jul 15, 2026
@JohnHalleyGotway JohnHalleyGotway moved this from 🩺 Needs Triage to 🏁 Done in METplus-13.0 Development Jul 15, 2026
@JohnHalleyGotway
JohnHalleyGotway merged commit 151028a into develop-ref Jul 15, 2026
1 check passed
@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: 🏁 Done

Development

Successfully merging this pull request may close these issues.

Generalize support for automated derivation of wind speed and direction and rotation of winds from grid to earth-relative