Skip to content

Conversation

JohnHalleyGotway
Copy link
Collaborator

@JohnHalleyGotway JohnHalleyGotway commented Feb 7, 2025

Expected Differences

After MET version 12.0.0 was released, problems were noted compiling and running MET with different compiler families (e.g. GNU vs Intel) and different optimization levels (e.g. -O1, -O2, and -O3). This pull request proposes changes throughout MET to the main_v12.0 branch to resolve many, but not all of these issues. In particular, these changes improve memory management, especially when reading data from NetCDF files. It switches from variable length arrays, which are not universally supported in C++, to using STL vectors.

With these changes, MET compiles well with GNU and Intel at all optimization levels. The differences flagged by GHA are trivial and only due to a difference in the order of variable attributes in point2grid output files.

I recommend making these changes to the main_v12.0 branch to be included in a MET-12.0.2 bugfix release. I also recommend making these same changes in the develop branch to be included in a MET-12.1.0 release. We should also document additional needs as separate issues to be considered for MET-12.1.0. These issues include:

  • Runtime differences for different GNU/Intel optimization levels from TC-Pairs FORTRAN code in clip_shif.f.

  • Runtime differences for different GNU/Intel optimization levels from PB2NC FORTRAN code in calpbl.f.

  • Runtime failures for Intel from the TC-Diag Python code.

  • Recommend carefully inspecting output from other FORTRAN code at various Intel/GNU optimization levels as well.

  • Do these changes introduce new tools, command line arguments, or configuration file options? [No]

    If yes, please describe:

  • Do these changes modify the structure of existing or add new output data types (e.g. statistic line types or NetCDF variables)? [No]

    If yes, please describe:

Pull Request Testing

  • Describe testing already performed for these changes:

    I tested extensively in seneca /d1/personal/johnhg/MET/MET_development/optimization by compiling with Intel/GNU at 3 optimization levels (-O1, -O2, and -O3).

  • Recommend testing for the reviewer(s) to perform, including the location of input datasets, and any additional instructions:

  1. Please carefully review the code changes.
  2. Please confirm that the only differences flagged by the GHA testing workflow are a trivial reordering of 2 variable attributes in NetCDF point2grid outputs.
  3. Note that the development.docker environment is modifies to remove the -g debugger flag to make the MET Docker image run more efficiently.
  • Do these changes include sufficient documentation updates, ensuring that no errors or warnings exist in the build of the documentation? [Yes or No]
    None needed.

  • Do these changes include sufficient testing updates? [No]
    No new tests are needed. But recommend, through a separate issue, providing a method for routine, automated testing using Intel.

  • Will this PR result in changes to the MET test suite? [Yes]

    If yes, describe the new output and/or changes to the existing output:

    Only changes are to the order of NetCDF variable attributes written by point2grid.

  • Will this PR result in changes to existing METplus Use Cases? [Maybe]

    If yes, create a new Update Truth METplus issue to describe them.
    I don't know if the METplus differencing logic is sensitive to the order of NetCDF variable attributes. If so, then yes, there will likely be diffs. If not, then no.

  • Do these changes introduce new SonarQube findings? [No]

    If yes, please describe:
    While some code smells findings are flagged in code that has been touched, the overall number of findings is reduced by 358 for this PR, from 18,317 in main_v12.0 to 17,959.

  • Please complete this pull request review by [Wed 2/12/25].

Pull Request Checklist

See the METplus Workflow for details.

  • Review the source issue metadata (required labels, projects, and milestone).
  • Complete the PR definition above.
  • Ensure the PR title matches the feature or bugfix branch name.
  • Define the PR metadata, as permissions allow.
    Select: Reviewer(s) and Development issue
    Select: Milestone as the version that will include these changes
    Select: Coordinated METplus-X.Y Support project for bugfix releases or MET-X.Y.Z Development project for official releases
  • After submitting the PR, select the ⚙️ icon in the Development section of the right hand sidebar. Search for the issue that this PR will close and select it, if it is not already selected.
  • After the PR is approved, merge your changes. If permissions do not allow this, request that the reviewer do the merge.
  • Close the linked issue and delete your feature or bugfix branch from GitHub.

… attribute value in a string rather than a fixed-length character array for which overflow may occur.
…g to using -O2 optimization since that's what how we configure installations on supported platforms. This makes the testing environment more simliar to the deployed versions. And we've found some bugs due to unexpected behavior when compiled with -O2 optimization.
…an a pointer to temporary memory to solve the problem with diagnostic names in unit_tc_pairs.xml when compiled with optimization enabled.
…ers rather than local variables which go out of scope.
…to -1. An array of length 0 is different from a vector of length 0.
… not stored in contiguous memory and therefore not useful for reading data from the NetCDF files.
…e are issues parsing NC_STRING attribute types. Reverting back to the previous logic from main_v12.0 since that works.
…th it, differences on flagged by GHA. I'd like to make sure all the changes on this branch cause NO differences before switching to using -O2... most likely in the develop branch rather than main_v12.0.
…er vectors after reading NetCDF attributes just to be safe.
…le attributes and added and defined prior to writing the data for that variable. Writing attributes AFTER the data, as we had been doing, causes unexpected failures, as found when compiled with Intel.
@JohnHalleyGotway JohnHalleyGotway marked this pull request as ready for review February 11, 2025 19:29
…ignment operator is used when the == comparison operator is needed.
Copy link
Collaborator

@georgemccabe georgemccabe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I confirmed that all unit tests pass (despite intermittent errors described in issue #3077) for MET executables installed via conda on Linux (seneca) and MacOS (ral-dimeola). Thanks for fixing these issues!

Copy link
Collaborator

@hsoh-u hsoh-u left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I approve the changes.
The local variable length arrays were replaced with the vectors. The only differences were the order of the attributes with point2grid.

@JohnHalleyGotway JohnHalleyGotway merged commit ca3c74d into main_v12.0 Feb 12, 2025
38 of 40 checks passed
JohnHalleyGotway added a commit that referenced this pull request Feb 13, 2025
* use custom GitHub Action to trigger METplus use cases

* Updating values

* Bugfix #3020 main_v12.0 grid_stat_seeps (#3022)

* Per #3020, add missing GridStatNcOutInfo::do_seeps flag and use it to determine if SEEPS information should be written to the Grid-Stat NetCDF matched pairs output file.

* Unrelated to #3020, fix broken NetCDF cf-conventions links in the User's Guide.

* Per #3020, no real changes. Just whitespace

* Update to reflect usage of oneAPI compilers

* Updating file to reflect usage of oneAPI compilers

* Hotfix to the main_v12.0 branch after PR #3022 fixed a SEEPS bug. The GridStatConfig_SEEPS config file needs to be updated with nc_pairs_flag.seeps = TRUE in order for the same output to be produced by the unit tests.

* Adding In Memoriam

* Feature #3032 main_v12.0 docs data type (#3040)

* Per #3032, add data type column to all of the output tables

* Per #3032, remove the first row from each output table since its info is repeated from the table name. Additional changes for consistency and accuracy in column names.

* Update docs/Users_Guide/gsi-tools.rst

Co-authored-by: Julie Prestopnik <jpresto@ucar.edu>

---------

Co-authored-by: Julie Prestopnik <jpresto@ucar.edu>

* Making a superficial change in the main_v12.0 branch to trigger GHA to create and push an updated test output image.

* Feature #3033 v12.0.0 (#3042)

* Per #3033, update version info, consolidate release notes, and add upgrade instructions.

* Per #3033, remove all instances of 'Bugfix: ' from the release notes since it's redundant with the dropdown name

* Per #3030, based on request from Randy Pierce, also add MTD header columns to met_header_columns_v12.0.txt to make it easier to parse the output from MET.

* Per #3033, fix typo and correct alignment in table

* Update install_met_env.acorn

Removing reference to beta version

* Update install_met_env.cactus

Remove references to beta version

* Update install_met_env.cactus

Update paths for eckit and atlas

* Update install_met_env.wcoss2

Remove beta references

* Fix typo, missing one * to make SciPy bold in appendixF.rst

* Per #3051, update unit tests so that installed files are found relative to MET_BASE (<install_loc>/share/met) and other files that are only in the MET repo are found relative to MET_TEST_BASE (MET/internal/test_unit). Also remove MET_BUILD_BASE env var (#3052)

* Bugfix #3054 main_v12.0 parusr (#3068)

* Per #3054, fix PARUSR BUFRLIB error by solving the upstream reference to temporary memory returned by c_str(). Store a copy of the temporary variable name in a string rather than a pointer to temporary memory. Note that I checked all other calls to c_str() in pb2nc.cc and found these 2 instances to be only problematic ones. All others are used as arguments to functions for which a copy is made.

* Unrelated to #3054, but discovered while investigating the dtcenter/METplus#2875 discussion, the PairBase::calc_obs_summary() function loops over map entries and attempts to update the mapped 'summary_val' value. However, the current version only updates it in a copy and not what's actually in the map. This changes how we loop over the map to actually udpate its contents. Note that the only impact is fixing a log file to accurately report the 'summary_val'. So this is really a logging bug.

* Per #3054, revert emplace_back() to its original push_back() to make the bugfix diffs as limited as possible.

* Per #3054, correct bugfix in PairBase::calc_obs_summary() in pair_base.cc

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>

* Per #3070, updates for the 12.0.1 bugfix release. (#3071)

* Updating file for 12.0.1 installation for NCO

* Updating to 12.0.1 for NCO

* Update and rename 12.0.0_acorn to 12.0.1_acorn for NCO

* Rename 12.0.0.lua_wcoss2 to 12.0.1.lua_wcoss2 for NCO

* Update 12.0.0_hercules

* Update install_met_env.hercules

* Update compiler and MET version in install_met_env.orion

* Update  compiler and MET version in 12.0.0_orion

* Bugfix #3075 main_v12.0 optimization (#3076)

* Per #3075, update get_att_value_chars() utility function to store the attribute value in a string rather than a fixed-length character array for which overflow may occur.

* Per #3075, switch from compiling MET in Docker using the -g debug flag to using -O2 optimization since that's what how we configure installations on supported platforms. This makes the testing environment more simliar to the deployed versions. And we've found some bugs due to unexpected behavior when compiled with -O2 optimization.

* Per #3075, remove accidentally committed log file

* Per #3075, update TrackInfo::diag_name() to return a string rather than a pointer to temporary memory to solve the problem with diagnostic names in unit_tc_pairs.xml when compiled with optimization enabled.

* Per #3075, update read_netcdf_logic() to store pointers to class members rather than local variables which go out of scope.

* Per #3075, don't need to use local variables at all.

* Per #3075, switch to using STL vectors for memory management

* Per #3075, reimplement month_name_to_m() with stl strings to avoid variable length arrays.

* Per #3075, update MetNcFile::readFile() to use stl vectors instead of variable length arrays

* Per #3075, update NcCfFile member functions to use stl vectors instead of variable length arrays

* Per #3075, update is_netcdf_file() to use stl vectors instead of variable length arrays

* Per #3075, update 3d_conv.cc to use stl vectors instead of variable length arrays

* Per #3075, update the vx_util library to use stl vectors instead of variable length arrays

* Per #3075, update ensemble_stat to use stl vectors instead of variable length arrays

* Per #3075, update decode_lat_lon() to use stl vectors instead of variable length arrays

* Per #3075, update grid_diag to use stl vectors instead of variable length arrays

* Per #3075, update ioda2nc to use stl vectors instead of variable length arrays

* Per #3075, update madis2nc to use stl vectors instead of variable length arrays

* Per #3075, update mode_graphics to use stl vectors instead of variable length arrays

* Per #3075, update the vx_nc_obs library to use stl vectors instead of variable length arrays

* Per #3075, update plot_point_obs to use stl vectors instead of variable length arrays

* Per #3075, update point_stat to use stl vectors instead of variable length arrays

* Per #3075, update wavelet_stat to use stl vectors instead of variable length arrays

* Per #3075, no real code change, just whitespace

* Per #3075, removing commented out code

* Per #3075, need to add 2 to account for time_count being initialized to -1. An array of length 0 is different from a vector of length 0.

* Per #3075, can't use 2D vectors to read data from NetCDF files into a contiguous block of memory.

* Per #3075, can't use 2D vectors to read data from NetCDF files into a contiguous block of memory.

* Per #3075, update looping logic

* Per #3075, eliminate all instances of vector<vector<type>> since it's not stored in contiguous memory and therefore not useful for reading data from the NetCDF files.

* Per #303075, bit more madis2nc changes.

* Per #3075, fix Nx typo

* Per #3075, fix chaNetCDF attribute character type

* Per #3075, minor changes to satisfy SonarQube findings.

* Per #3075, when sizing vectors of type <char> add one for the trailing null.

* Per #3075, remove debugging code.

* Per #3075, unit_ioda2nc.xml fails when compiled with Intel since there are issues parsing NC_STRING attribute types. Reverting back to the previous logic from main_v12.0 since that works.

* Per #3750, back out the change to using -O2 in development.docker. With it, differences on flagged by GHA. I'd like to make sure all the changes on this branch cause NO differences before switching to using -O2... most likely in the develop branch rather than main_v12.0.

* Per #3075, getting segfault from point2grid. Null terminating character vectors after reading NetCDF attributes just to be safe.

* Unrelated to #3075, only whitespace changes.

* Per #3075, fix logic of the write_nc(...) function so that all variable attributes and added and defined prior to writing the data for that variable. Writing attributes AFTER the data, as we had been doing, causes unexpected failures, as found when compiled with Intel.

* Per #3075, update args to write_nc(...) to minimize regression test diffs.

* Per #3075, fix madis2nc i_buf definition problem.

* Per #3075, more refinement of i_buf definition in madis2nc for acars and raob inputs.

* Per #3075, remove FFLAGS from development.docker becuase there's no good reason to add it.

* replace raw array with std array

* replace raw array with std array in 2 other places

* Per #3075, fix clear bug in vx_bool_calc/tokenizer.cc where the = assignment operator is used when the == comparison operator is needed.

---------

Co-authored-by: George McCabe <23407799+georgemccabe@users.noreply.github.com>

---------

Co-authored-by: George McCabe <23407799+georgemccabe@users.noreply.github.com>
Co-authored-by: Julie Prestopnik <jpresto@ucar.edu>
Co-authored-by: John Halley Gotway <johnhg@ucar.edu>
Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
Co-authored-by: metplus-bot <97135045+metplus-bot@users.noreply.github.com>
JohnHalleyGotway added a commit that referenced this pull request Feb 13, 2025
…ed in the #3076 pull request. The logic for converting to camel case was in the wrong order and the details of this are described in this comment: #3078 (comment)
JohnHalleyGotway added a commit that referenced this pull request Feb 13, 2025
* Per #3075, port changes from PR #3076 over for the develop branch.

* Per #3075, update ioda.cc to switch from using variable length arrays to using STL vectors.

* Per #3075, correct logic in unit_to_mdyhms.cc for switching a string to camel case.
JohnHalleyGotway added a commit that referenced this pull request Feb 15, 2025
* use custom GitHub Action to trigger METplus use cases

* Updating values

* Bugfix #3020 main_v12.0 grid_stat_seeps (#3022)

* Per #3020, add missing GridStatNcOutInfo::do_seeps flag and use it to determine if SEEPS information should be written to the Grid-Stat NetCDF matched pairs output file.

* Unrelated to #3020, fix broken NetCDF cf-conventions links in the User's Guide.

* Per #3020, no real changes. Just whitespace

* Update to reflect usage of oneAPI compilers

* Updating file to reflect usage of oneAPI compilers

* Hotfix to the main_v12.0 branch after PR #3022 fixed a SEEPS bug. The GridStatConfig_SEEPS config file needs to be updated with nc_pairs_flag.seeps = TRUE in order for the same output to be produced by the unit tests.

* Adding In Memoriam

* Feature #3032 main_v12.0 docs data type (#3040)

* Per #3032, add data type column to all of the output tables

* Per #3032, remove the first row from each output table since its info is repeated from the table name. Additional changes for consistency and accuracy in column names.

* Update docs/Users_Guide/gsi-tools.rst

Co-authored-by: Julie Prestopnik <jpresto@ucar.edu>

---------

Co-authored-by: Julie Prestopnik <jpresto@ucar.edu>

* Making a superficial change in the main_v12.0 branch to trigger GHA to create and push an updated test output image.

* Feature #3033 v12.0.0 (#3042)

* Per #3033, update version info, consolidate release notes, and add upgrade instructions.

* Per #3033, remove all instances of 'Bugfix: ' from the release notes since it's redundant with the dropdown name

* Per #3030, based on request from Randy Pierce, also add MTD header columns to met_header_columns_v12.0.txt to make it easier to parse the output from MET.

* Per #3033, fix typo and correct alignment in table

* Update install_met_env.acorn

Removing reference to beta version

* Update install_met_env.cactus

Remove references to beta version

* Update install_met_env.cactus

Update paths for eckit and atlas

* Update install_met_env.wcoss2

Remove beta references

* Fix typo, missing one * to make SciPy bold in appendixF.rst

* Per #3051, update unit tests so that installed files are found relative to MET_BASE (<install_loc>/share/met) and other files that are only in the MET repo are found relative to MET_TEST_BASE (MET/internal/test_unit). Also remove MET_BUILD_BASE env var (#3052)

* Bugfix #3054 main_v12.0 parusr (#3068)

* Per #3054, fix PARUSR BUFRLIB error by solving the upstream reference to temporary memory returned by c_str(). Store a copy of the temporary variable name in a string rather than a pointer to temporary memory. Note that I checked all other calls to c_str() in pb2nc.cc and found these 2 instances to be only problematic ones. All others are used as arguments to functions for which a copy is made.

* Unrelated to #3054, but discovered while investigating the dtcenter/METplus#2875 discussion, the PairBase::calc_obs_summary() function loops over map entries and attempts to update the mapped 'summary_val' value. However, the current version only updates it in a copy and not what's actually in the map. This changes how we loop over the map to actually udpate its contents. Note that the only impact is fixing a log file to accurately report the 'summary_val'. So this is really a logging bug.

* Per #3054, revert emplace_back() to its original push_back() to make the bugfix diffs as limited as possible.

* Per #3054, correct bugfix in PairBase::calc_obs_summary() in pair_base.cc

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>

* Per #3070, updates for the 12.0.1 bugfix release. (#3071)

* Updating file for 12.0.1 installation for NCO

* Updating to 12.0.1 for NCO

* Update and rename 12.0.0_acorn to 12.0.1_acorn for NCO

* Rename 12.0.0.lua_wcoss2 to 12.0.1.lua_wcoss2 for NCO

* Update 12.0.0_hercules

* Update install_met_env.hercules

* Update compiler and MET version in install_met_env.orion

* Update  compiler and MET version in 12.0.0_orion

* Bugfix #3075 main_v12.0 optimization (#3076)

* Per #3075, update get_att_value_chars() utility function to store the attribute value in a string rather than a fixed-length character array for which overflow may occur.

* Per #3075, switch from compiling MET in Docker using the -g debug flag to using -O2 optimization since that's what how we configure installations on supported platforms. This makes the testing environment more simliar to the deployed versions. And we've found some bugs due to unexpected behavior when compiled with -O2 optimization.

* Per #3075, remove accidentally committed log file

* Per #3075, update TrackInfo::diag_name() to return a string rather than a pointer to temporary memory to solve the problem with diagnostic names in unit_tc_pairs.xml when compiled with optimization enabled.

* Per #3075, update read_netcdf_logic() to store pointers to class members rather than local variables which go out of scope.

* Per #3075, don't need to use local variables at all.

* Per #3075, switch to using STL vectors for memory management

* Per #3075, reimplement month_name_to_m() with stl strings to avoid variable length arrays.

* Per #3075, update MetNcFile::readFile() to use stl vectors instead of variable length arrays

* Per #3075, update NcCfFile member functions to use stl vectors instead of variable length arrays

* Per #3075, update is_netcdf_file() to use stl vectors instead of variable length arrays

* Per #3075, update 3d_conv.cc to use stl vectors instead of variable length arrays

* Per #3075, update the vx_util library to use stl vectors instead of variable length arrays

* Per #3075, update ensemble_stat to use stl vectors instead of variable length arrays

* Per #3075, update decode_lat_lon() to use stl vectors instead of variable length arrays

* Per #3075, update grid_diag to use stl vectors instead of variable length arrays

* Per #3075, update ioda2nc to use stl vectors instead of variable length arrays

* Per #3075, update madis2nc to use stl vectors instead of variable length arrays

* Per #3075, update mode_graphics to use stl vectors instead of variable length arrays

* Per #3075, update the vx_nc_obs library to use stl vectors instead of variable length arrays

* Per #3075, update plot_point_obs to use stl vectors instead of variable length arrays

* Per #3075, update point_stat to use stl vectors instead of variable length arrays

* Per #3075, update wavelet_stat to use stl vectors instead of variable length arrays

* Per #3075, no real code change, just whitespace

* Per #3075, removing commented out code

* Per #3075, need to add 2 to account for time_count being initialized to -1. An array of length 0 is different from a vector of length 0.

* Per #3075, can't use 2D vectors to read data from NetCDF files into a contiguous block of memory.

* Per #3075, can't use 2D vectors to read data from NetCDF files into a contiguous block of memory.

* Per #3075, update looping logic

* Per #3075, eliminate all instances of vector<vector<type>> since it's not stored in contiguous memory and therefore not useful for reading data from the NetCDF files.

* Per #303075, bit more madis2nc changes.

* Per #3075, fix Nx typo

* Per #3075, fix chaNetCDF attribute character type

* Per #3075, minor changes to satisfy SonarQube findings.

* Per #3075, when sizing vectors of type <char> add one for the trailing null.

* Per #3075, remove debugging code.

* Per #3075, unit_ioda2nc.xml fails when compiled with Intel since there are issues parsing NC_STRING attribute types. Reverting back to the previous logic from main_v12.0 since that works.

* Per #3750, back out the change to using -O2 in development.docker. With it, differences on flagged by GHA. I'd like to make sure all the changes on this branch cause NO differences before switching to using -O2... most likely in the develop branch rather than main_v12.0.

* Per #3075, getting segfault from point2grid. Null terminating character vectors after reading NetCDF attributes just to be safe.

* Unrelated to #3075, only whitespace changes.

* Per #3075, fix logic of the write_nc(...) function so that all variable attributes and added and defined prior to writing the data for that variable. Writing attributes AFTER the data, as we had been doing, causes unexpected failures, as found when compiled with Intel.

* Per #3075, update args to write_nc(...) to minimize regression test diffs.

* Per #3075, fix madis2nc i_buf definition problem.

* Per #3075, more refinement of i_buf definition in madis2nc for acars and raob inputs.

* Per #3075, remove FFLAGS from development.docker becuase there's no good reason to add it.

* replace raw array with std array

* replace raw array with std array in 2 other places

* Per #3075, fix clear bug in vx_bool_calc/tokenizer.cc where the = assignment operator is used when the == comparison operator is needed.

---------

Co-authored-by: George McCabe <23407799+georgemccabe@users.noreply.github.com>

* Per #3075, adding a hotfix to main_v12.0 that should have been included in the #3076 pull request. The logic for converting to camel case was in the wrong order and the details of this are described in this comment: #3078 (comment)

* Bugfix #3077 main_v12.0 yyerror (#3083)

* Per #3077, back out the yystate patching logic added to Makefile.am for MET #2408 to allow for the parsing of empty configuration file. This has caused a 'shift/reduce conflict' warning message from the Intel compiler, is flagged as problem by '-fsanitize=address', and very well may be causing the sporadic yyerror failures described in #3077. Recommend testing with this change to see if the yyerror's go away, but also re-testing MET #2408 to assess the handling of empty configuration files.

* Per #3075, update config.tab.yy/.cc to allow for empty inputs but allowing for an empty input in the statement_list.

* Feature #3081 v12.0.2 (#3085)

* Per #3081, roll the MET version number from 12.0.1 to 12.0.2 and add release notes.

* Per #3081, improve the title for issue #3075

---------

Co-authored-by: George McCabe <23407799+georgemccabe@users.noreply.github.com>
Co-authored-by: Julie Prestopnik <jpresto@ucar.edu>
Co-authored-by: John Halley Gotway <johnhg@ucar.edu>
Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
Co-authored-by: metplus-bot <97135045+metplus-bot@users.noreply.github.com>
JohnHalleyGotway added a commit that referenced this pull request Jul 21, 2025
* use custom GitHub Action to trigger METplus use cases

* Updating values

* Bugfix #3020 main_v12.0 grid_stat_seeps (#3022)

* Per #3020, add missing GridStatNcOutInfo::do_seeps flag and use it to determine if SEEPS information should be written to the Grid-Stat NetCDF matched pairs output file.

* Unrelated to #3020, fix broken NetCDF cf-conventions links in the User's Guide.

* Per #3020, no real changes. Just whitespace

* Update to reflect usage of oneAPI compilers

* Updating file to reflect usage of oneAPI compilers

* Hotfix to the main_v12.0 branch after PR #3022 fixed a SEEPS bug. The GridStatConfig_SEEPS config file needs to be updated with nc_pairs_flag.seeps = TRUE in order for the same output to be produced by the unit tests.

* Adding In Memoriam

* Feature #3032 main_v12.0 docs data type (#3040)

* Per #3032, add data type column to all of the output tables

* Per #3032, remove the first row from each output table since its info is repeated from the table name. Additional changes for consistency and accuracy in column names.

* Update docs/Users_Guide/gsi-tools.rst

Co-authored-by: Julie Prestopnik <jpresto@ucar.edu>

---------

Co-authored-by: Julie Prestopnik <jpresto@ucar.edu>

* Making a superficial change in the main_v12.0 branch to trigger GHA to create and push an updated test output image.

* Feature #3033 v12.0.0 (#3042)

* Per #3033, update version info, consolidate release notes, and add upgrade instructions.

* Per #3033, remove all instances of 'Bugfix: ' from the release notes since it's redundant with the dropdown name

* Per #3030, based on request from Randy Pierce, also add MTD header columns to met_header_columns_v12.0.txt to make it easier to parse the output from MET.

* Per #3033, fix typo and correct alignment in table

* Update install_met_env.acorn

Removing reference to beta version

* Update install_met_env.cactus

Remove references to beta version

* Update install_met_env.cactus

Update paths for eckit and atlas

* Update install_met_env.wcoss2

Remove beta references

* Fix typo, missing one * to make SciPy bold in appendixF.rst

* Per #3051, update unit tests so that installed files are found relative to MET_BASE (<install_loc>/share/met) and other files that are only in the MET repo are found relative to MET_TEST_BASE (MET/internal/test_unit). Also remove MET_BUILD_BASE env var (#3052)

* Bugfix #3054 main_v12.0 parusr (#3068)

* Per #3054, fix PARUSR BUFRLIB error by solving the upstream reference to temporary memory returned by c_str(). Store a copy of the temporary variable name in a string rather than a pointer to temporary memory. Note that I checked all other calls to c_str() in pb2nc.cc and found these 2 instances to be only problematic ones. All others are used as arguments to functions for which a copy is made.

* Unrelated to #3054, but discovered while investigating the dtcenter/METplus#2875 discussion, the PairBase::calc_obs_summary() function loops over map entries and attempts to update the mapped 'summary_val' value. However, the current version only updates it in a copy and not what's actually in the map. This changes how we loop over the map to actually udpate its contents. Note that the only impact is fixing a log file to accurately report the 'summary_val'. So this is really a logging bug.

* Per #3054, revert emplace_back() to its original push_back() to make the bugfix diffs as limited as possible.

* Per #3054, correct bugfix in PairBase::calc_obs_summary() in pair_base.cc

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>

* Per #3070, updates for the 12.0.1 bugfix release. (#3071)

* Updating file for 12.0.1 installation for NCO

* Updating to 12.0.1 for NCO

* Update and rename 12.0.0_acorn to 12.0.1_acorn for NCO

* Rename 12.0.0.lua_wcoss2 to 12.0.1.lua_wcoss2 for NCO

* Update 12.0.0_hercules

* Update install_met_env.hercules

* Update compiler and MET version in install_met_env.orion

* Update  compiler and MET version in 12.0.0_orion

* Bugfix #3075 main_v12.0 optimization (#3076)

* Per #3075, update get_att_value_chars() utility function to store the attribute value in a string rather than a fixed-length character array for which overflow may occur.

* Per #3075, switch from compiling MET in Docker using the -g debug flag to using -O2 optimization since that's what how we configure installations on supported platforms. This makes the testing environment more simliar to the deployed versions. And we've found some bugs due to unexpected behavior when compiled with -O2 optimization.

* Per #3075, remove accidentally committed log file

* Per #3075, update TrackInfo::diag_name() to return a string rather than a pointer to temporary memory to solve the problem with diagnostic names in unit_tc_pairs.xml when compiled with optimization enabled.

* Per #3075, update read_netcdf_logic() to store pointers to class members rather than local variables which go out of scope.

* Per #3075, don't need to use local variables at all.

* Per #3075, switch to using STL vectors for memory management

* Per #3075, reimplement month_name_to_m() with stl strings to avoid variable length arrays.

* Per #3075, update MetNcFile::readFile() to use stl vectors instead of variable length arrays

* Per #3075, update NcCfFile member functions to use stl vectors instead of variable length arrays

* Per #3075, update is_netcdf_file() to use stl vectors instead of variable length arrays

* Per #3075, update 3d_conv.cc to use stl vectors instead of variable length arrays

* Per #3075, update the vx_util library to use stl vectors instead of variable length arrays

* Per #3075, update ensemble_stat to use stl vectors instead of variable length arrays

* Per #3075, update decode_lat_lon() to use stl vectors instead of variable length arrays

* Per #3075, update grid_diag to use stl vectors instead of variable length arrays

* Per #3075, update ioda2nc to use stl vectors instead of variable length arrays

* Per #3075, update madis2nc to use stl vectors instead of variable length arrays

* Per #3075, update mode_graphics to use stl vectors instead of variable length arrays

* Per #3075, update the vx_nc_obs library to use stl vectors instead of variable length arrays

* Per #3075, update plot_point_obs to use stl vectors instead of variable length arrays

* Per #3075, update point_stat to use stl vectors instead of variable length arrays

* Per #3075, update wavelet_stat to use stl vectors instead of variable length arrays

* Per #3075, no real code change, just whitespace

* Per #3075, removing commented out code

* Per #3075, need to add 2 to account for time_count being initialized to -1. An array of length 0 is different from a vector of length 0.

* Per #3075, can't use 2D vectors to read data from NetCDF files into a contiguous block of memory.

* Per #3075, can't use 2D vectors to read data from NetCDF files into a contiguous block of memory.

* Per #3075, update looping logic

* Per #3075, eliminate all instances of vector<vector<type>> since it's not stored in contiguous memory and therefore not useful for reading data from the NetCDF files.

* Per #303075, bit more madis2nc changes.

* Per #3075, fix Nx typo

* Per #3075, fix chaNetCDF attribute character type

* Per #3075, minor changes to satisfy SonarQube findings.

* Per #3075, when sizing vectors of type <char> add one for the trailing null.

* Per #3075, remove debugging code.

* Per #3075, unit_ioda2nc.xml fails when compiled with Intel since there are issues parsing NC_STRING attribute types. Reverting back to the previous logic from main_v12.0 since that works.

* Per #3750, back out the change to using -O2 in development.docker. With it, differences on flagged by GHA. I'd like to make sure all the changes on this branch cause NO differences before switching to using -O2... most likely in the develop branch rather than main_v12.0.

* Per #3075, getting segfault from point2grid. Null terminating character vectors after reading NetCDF attributes just to be safe.

* Unrelated to #3075, only whitespace changes.

* Per #3075, fix logic of the write_nc(...) function so that all variable attributes and added and defined prior to writing the data for that variable. Writing attributes AFTER the data, as we had been doing, causes unexpected failures, as found when compiled with Intel.

* Per #3075, update args to write_nc(...) to minimize regression test diffs.

* Per #3075, fix madis2nc i_buf definition problem.

* Per #3075, more refinement of i_buf definition in madis2nc for acars and raob inputs.

* Per #3075, remove FFLAGS from development.docker becuase there's no good reason to add it.

* replace raw array with std array

* replace raw array with std array in 2 other places

* Per #3075, fix clear bug in vx_bool_calc/tokenizer.cc where the = assignment operator is used when the == comparison operator is needed.

---------

Co-authored-by: George McCabe <23407799+georgemccabe@users.noreply.github.com>

* Per #3075, adding a hotfix to main_v12.0 that should have been included in the #3076 pull request. The logic for converting to camel case was in the wrong order and the details of this are described in this comment: #3078 (comment)

* Bugfix #3077 main_v12.0 yyerror (#3083)

* Per #3077, back out the yystate patching logic added to Makefile.am for MET #2408 to allow for the parsing of empty configuration file. This has caused a 'shift/reduce conflict' warning message from the Intel compiler, is flagged as problem by '-fsanitize=address', and very well may be causing the sporadic yyerror failures described in #3077. Recommend testing with this change to see if the yyerror's go away, but also re-testing MET #2408 to assess the handling of empty configuration files.

* Per #3075, update config.tab.yy/.cc to allow for empty inputs but allowing for an empty input in the statement_list.

* Feature #3081 v12.0.2 (#3085)

* Per #3081, roll the MET version number from 12.0.1 to 12.0.2 and add release notes.

* Per #3081, improve the title for issue #3075

* Update install_met_env.gaea

* Update 12.0.0_gaea

* Feature 3092 main v12.0 comp script (#3093)

* Per #3092, updating compilation script and removing old wcoss file

* Per #3092, updated config and modulefiles as necessary

* Per #2891, updating reference to 12.0.0 to 12.0.2

* Bugfix #3095 main_v12.0 ascii2nc_tab_delimited (#3103)

* Per #3095, when checking the IABP file type, just use the existing DataLine object rather than re-parsing based on whitespace. Also call is_eq() to check for equality of doubles rather than precise equality with ==.

* Per dtcenter/METplus#2920 discussion (incl with issue #3095), update the is_eq(a,b) logic to return true if both values are NaN.

* Per #3095, reorder for efficiency.

* Feature METplus2771 main_v12.0 subprojects (#3116)

* Adding ToC for subprojects

* Removing references to feature branch

* Per #3100, tweaks to issue and pull request templates to reflect project board updates.

* Fixing zenodo link

* Update grid-stat.rst for Zenodo link (#3124)

Zenodo link was not working properly. Modified to use correct link.

* Updating to reflect the setting of MET_PYTHON_EXE which is actually occurring on Casper

* Minor update to the internal nightly build script (test_nightly.sh) to revise the email list and update the 'latest' link after each successful run.

* #3107 Added GribEntryMatch and APIs (is_eq, match, is_new_entry) (#3135)

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>

* Bugfix #3112 netcdf dimension main v12.0 (#3139)

* #3112 Removed the number of dimensions. Exit if not found a data variable

* #3112 Changed Error log to Warning

* #3112 Fixed a bug with a index. Changed back error and stop

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>

* Hotfix to develop remove write permission for groups others for nightly build runs and also log updates to the latest link.

* Hotfix to develop branch to get NB latest link to update correctly. ci-skip-all

* Per dtcenter/METbaseimage#32, hotfix to the MET main_v12.0 branch to make the docker build enviornment more portable.

* Per dtcenter/METbaseimage#32, add workflow to build Docker images for MET releases on a schedule.

* Per dtcenter/METbaseimage#32, update the release_docker_images.yml workflow to build releases using Dockerfile instead of Dockerfile.copy.

* Per dtcenter/METbaseimage#32, omit the leading v for released versions in the Docker Hub tag.

* Per METbaseimage#32, store logs for docker builds.

* Update the Docker image logic to add X.Y-latest

* Update release-docker-images workflow to do a shallow checkout of the Dockerfile for the version to be built, but run scripts from the triggered branch.

* Avoid overwritting checkout

* Fix Dockerfile checkout #ci-skip-unit

* Update schedule to rebuild supported releases weekly instead of daily.

* Feature #3198 main_v12.0 scan_for_CVEs (#3200)

* Per #3198, port over CVE scanning logic from METbaseimage to MET.

* Per #3198, use SOURCE_BRANCH instead of GITHUB_NAME for the scan_docker_image.sh script.

* Fix typo

* Update CVE log message

* Per #3198, update the versions listed in the release-docker-images.yml workflow for the develop branch.

* Per #3198, update the versions listed in the release-docker-images.yml workflow for the main_v6.0 branch.

* Feature #3204 v12.0.3 (#3205)

* Per #3204, update to version number 12.0.3.

* Per #3204, update from METbaseimage version 3.3 to 3.3.1.

* Per #3204, add v12.0.3 release notes.

* Per #3204, update GHA automation to use the  secret.

* Per #3204, update release-docker-images.yml workflow to build the new 12.0.3 images instead of the previous 12.0.2.

---------

Co-authored-by: George McCabe <23407799+georgemccabe@users.noreply.github.com>
Co-authored-by: Julie Prestopnik <jpresto@ucar.edu>
Co-authored-by: John Halley Gotway <johnhg@ucar.edu>
Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
Co-authored-by: Pratiman <31694629+pratiman-91@users.noreply.github.com>
Co-authored-by: Howard Soh <hsoh@ucar.edu>
Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
Co-authored-by: metplus-bot <97135045+metplus-bot@users.noreply.github.com>
JohnHalleyGotway added a commit that referenced this pull request Jul 24, 2025
* use custom GitHub Action to trigger METplus use cases

* Updating values

* Bugfix #3020 main_v12.0 grid_stat_seeps (#3022)

* Per #3020, add missing GridStatNcOutInfo::do_seeps flag and use it to determine if SEEPS information should be written to the Grid-Stat NetCDF matched pairs output file.

* Unrelated to #3020, fix broken NetCDF cf-conventions links in the User's Guide.

* Per #3020, no real changes. Just whitespace

* Update to reflect usage of oneAPI compilers

* Updating file to reflect usage of oneAPI compilers

* Hotfix to the main_v12.0 branch after PR #3022 fixed a SEEPS bug. The GridStatConfig_SEEPS config file needs to be updated with nc_pairs_flag.seeps = TRUE in order for the same output to be produced by the unit tests.

* Adding In Memoriam

* Feature #3032 main_v12.0 docs data type (#3040)

* Per #3032, add data type column to all of the output tables

* Per #3032, remove the first row from each output table since its info is repeated from the table name. Additional changes for consistency and accuracy in column names.

* Update docs/Users_Guide/gsi-tools.rst

Co-authored-by: Julie Prestopnik <jpresto@ucar.edu>

---------

Co-authored-by: Julie Prestopnik <jpresto@ucar.edu>

* Making a superficial change in the main_v12.0 branch to trigger GHA to create and push an updated test output image.

* Feature #3033 v12.0.0 (#3042)

* Per #3033, update version info, consolidate release notes, and add upgrade instructions.

* Per #3033, remove all instances of 'Bugfix: ' from the release notes since it's redundant with the dropdown name

* Per #3030, based on request from Randy Pierce, also add MTD header columns to met_header_columns_v12.0.txt to make it easier to parse the output from MET.

* Per #3033, fix typo and correct alignment in table

* Update install_met_env.acorn

Removing reference to beta version

* Update install_met_env.cactus

Remove references to beta version

* Update install_met_env.cactus

Update paths for eckit and atlas

* Update install_met_env.wcoss2

Remove beta references

* Fix typo, missing one * to make SciPy bold in appendixF.rst

* Per #3051, update unit tests so that installed files are found relative to MET_BASE (<install_loc>/share/met) and other files that are only in the MET repo are found relative to MET_TEST_BASE (MET/internal/test_unit). Also remove MET_BUILD_BASE env var (#3052)

* Bugfix #3054 main_v12.0 parusr (#3068)

* Per #3054, fix PARUSR BUFRLIB error by solving the upstream reference to temporary memory returned by c_str(). Store a copy of the temporary variable name in a string rather than a pointer to temporary memory. Note that I checked all other calls to c_str() in pb2nc.cc and found these 2 instances to be only problematic ones. All others are used as arguments to functions for which a copy is made.

* Unrelated to #3054, but discovered while investigating the dtcenter/METplus#2875 discussion, the PairBase::calc_obs_summary() function loops over map entries and attempts to update the mapped 'summary_val' value. However, the current version only updates it in a copy and not what's actually in the map. This changes how we loop over the map to actually udpate its contents. Note that the only impact is fixing a log file to accurately report the 'summary_val'. So this is really a logging bug.

* Per #3054, revert emplace_back() to its original push_back() to make the bugfix diffs as limited as possible.

* Per #3054, correct bugfix in PairBase::calc_obs_summary() in pair_base.cc

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>

* Per #3070, updates for the 12.0.1 bugfix release. (#3071)

* Updating file for 12.0.1 installation for NCO

* Updating to 12.0.1 for NCO

* Update and rename 12.0.0_acorn to 12.0.1_acorn for NCO

* Rename 12.0.0.lua_wcoss2 to 12.0.1.lua_wcoss2 for NCO

* Update 12.0.0_hercules

* Update install_met_env.hercules

* Update compiler and MET version in install_met_env.orion

* Update  compiler and MET version in 12.0.0_orion

* Bugfix #3075 main_v12.0 optimization (#3076)

* Per #3075, update get_att_value_chars() utility function to store the attribute value in a string rather than a fixed-length character array for which overflow may occur.

* Per #3075, switch from compiling MET in Docker using the -g debug flag to using -O2 optimization since that's what how we configure installations on supported platforms. This makes the testing environment more simliar to the deployed versions. And we've found some bugs due to unexpected behavior when compiled with -O2 optimization.

* Per #3075, remove accidentally committed log file

* Per #3075, update TrackInfo::diag_name() to return a string rather than a pointer to temporary memory to solve the problem with diagnostic names in unit_tc_pairs.xml when compiled with optimization enabled.

* Per #3075, update read_netcdf_logic() to store pointers to class members rather than local variables which go out of scope.

* Per #3075, don't need to use local variables at all.

* Per #3075, switch to using STL vectors for memory management

* Per #3075, reimplement month_name_to_m() with stl strings to avoid variable length arrays.

* Per #3075, update MetNcFile::readFile() to use stl vectors instead of variable length arrays

* Per #3075, update NcCfFile member functions to use stl vectors instead of variable length arrays

* Per #3075, update is_netcdf_file() to use stl vectors instead of variable length arrays

* Per #3075, update 3d_conv.cc to use stl vectors instead of variable length arrays

* Per #3075, update the vx_util library to use stl vectors instead of variable length arrays

* Per #3075, update ensemble_stat to use stl vectors instead of variable length arrays

* Per #3075, update decode_lat_lon() to use stl vectors instead of variable length arrays

* Per #3075, update grid_diag to use stl vectors instead of variable length arrays

* Per #3075, update ioda2nc to use stl vectors instead of variable length arrays

* Per #3075, update madis2nc to use stl vectors instead of variable length arrays

* Per #3075, update mode_graphics to use stl vectors instead of variable length arrays

* Per #3075, update the vx_nc_obs library to use stl vectors instead of variable length arrays

* Per #3075, update plot_point_obs to use stl vectors instead of variable length arrays

* Per #3075, update point_stat to use stl vectors instead of variable length arrays

* Per #3075, update wavelet_stat to use stl vectors instead of variable length arrays

* Per #3075, no real code change, just whitespace

* Per #3075, removing commented out code

* Per #3075, need to add 2 to account for time_count being initialized to -1. An array of length 0 is different from a vector of length 0.

* Per #3075, can't use 2D vectors to read data from NetCDF files into a contiguous block of memory.

* Per #3075, can't use 2D vectors to read data from NetCDF files into a contiguous block of memory.

* Per #3075, update looping logic

* Per #3075, eliminate all instances of vector<vector<type>> since it's not stored in contiguous memory and therefore not useful for reading data from the NetCDF files.

* Per #303075, bit more madis2nc changes.

* Per #3075, fix Nx typo

* Per #3075, fix chaNetCDF attribute character type

* Per #3075, minor changes to satisfy SonarQube findings.

* Per #3075, when sizing vectors of type <char> add one for the trailing null.

* Per #3075, remove debugging code.

* Per #3075, unit_ioda2nc.xml fails when compiled with Intel since there are issues parsing NC_STRING attribute types. Reverting back to the previous logic from main_v12.0 since that works.

* Per #3750, back out the change to using -O2 in development.docker. With it, differences on flagged by GHA. I'd like to make sure all the changes on this branch cause NO differences before switching to using -O2... most likely in the develop branch rather than main_v12.0.

* Per #3075, getting segfault from point2grid. Null terminating character vectors after reading NetCDF attributes just to be safe.

* Unrelated to #3075, only whitespace changes.

* Per #3075, fix logic of the write_nc(...) function so that all variable attributes and added and defined prior to writing the data for that variable. Writing attributes AFTER the data, as we had been doing, causes unexpected failures, as found when compiled with Intel.

* Per #3075, update args to write_nc(...) to minimize regression test diffs.

* Per #3075, fix madis2nc i_buf definition problem.

* Per #3075, more refinement of i_buf definition in madis2nc for acars and raob inputs.

* Per #3075, remove FFLAGS from development.docker becuase there's no good reason to add it.

* replace raw array with std array

* replace raw array with std array in 2 other places

* Per #3075, fix clear bug in vx_bool_calc/tokenizer.cc where the = assignment operator is used when the == comparison operator is needed.

---------

Co-authored-by: George McCabe <23407799+georgemccabe@users.noreply.github.com>

* Per #3075, adding a hotfix to main_v12.0 that should have been included in the #3076 pull request. The logic for converting to camel case was in the wrong order and the details of this are described in this comment: #3078 (comment)

* Bugfix #3077 main_v12.0 yyerror (#3083)

* Per #3077, back out the yystate patching logic added to Makefile.am for MET #2408 to allow for the parsing of empty configuration file. This has caused a 'shift/reduce conflict' warning message from the Intel compiler, is flagged as problem by '-fsanitize=address', and very well may be causing the sporadic yyerror failures described in #3077. Recommend testing with this change to see if the yyerror's go away, but also re-testing MET #2408 to assess the handling of empty configuration files.

* Per #3075, update config.tab.yy/.cc to allow for empty inputs but allowing for an empty input in the statement_list.

* Feature #3081 v12.0.2 (#3085)

* Per #3081, roll the MET version number from 12.0.1 to 12.0.2 and add release notes.

* Per #3081, improve the title for issue #3075

* Update install_met_env.gaea

* Update 12.0.0_gaea

* Feature 3092 main v12.0 comp script (#3093)

* Per #3092, updating compilation script and removing old wcoss file

* Per #3092, updated config and modulefiles as necessary

* Per #2891, updating reference to 12.0.0 to 12.0.2

* Bugfix #3095 main_v12.0 ascii2nc_tab_delimited (#3103)

* Per #3095, when checking the IABP file type, just use the existing DataLine object rather than re-parsing based on whitespace. Also call is_eq() to check for equality of doubles rather than precise equality with ==.

* Per dtcenter/METplus#2920 discussion (incl with issue #3095), update the is_eq(a,b) logic to return true if both values are NaN.

* Per #3095, reorder for efficiency.

* Feature METplus2771 main_v12.0 subprojects (#3116)

* Adding ToC for subprojects

* Removing references to feature branch

* Per #3100, tweaks to issue and pull request templates to reflect project board updates.

* Fixing zenodo link

* Update grid-stat.rst for Zenodo link (#3124)

Zenodo link was not working properly. Modified to use correct link.

* Updating to reflect the setting of MET_PYTHON_EXE which is actually occurring on Casper

* Minor update to the internal nightly build script (test_nightly.sh) to revise the email list and update the 'latest' link after each successful run.

* #3107 Added GribEntryMatch and APIs (is_eq, match, is_new_entry) (#3135)

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>

* Bugfix #3112 netcdf dimension main v12.0 (#3139)

* #3112 Removed the number of dimensions. Exit if not found a data variable

* #3112 Changed Error log to Warning

* #3112 Fixed a bug with a index. Changed back error and stop

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>

* Hotfix to develop remove write permission for groups others for nightly build runs and also log updates to the latest link.

* Hotfix to develop branch to get NB latest link to update correctly. ci-skip-all

* Per dtcenter/METbaseimage#32, hotfix to the MET main_v12.0 branch to make the docker build enviornment more portable.

* Per dtcenter/METbaseimage#32, add workflow to build Docker images for MET releases on a schedule.

* Per dtcenter/METbaseimage#32, update the release_docker_images.yml workflow to build releases using Dockerfile instead of Dockerfile.copy.

* Per dtcenter/METbaseimage#32, omit the leading v for released versions in the Docker Hub tag.

* Per METbaseimage#32, store logs for docker builds.

* Update the Docker image logic to add X.Y-latest

* Update release-docker-images workflow to do a shallow checkout of the Dockerfile for the version to be built, but run scripts from the triggered branch.

* Avoid overwritting checkout

* Fix Dockerfile checkout #ci-skip-unit

* Update schedule to rebuild supported releases weekly instead of daily.

* Feature #3198 main_v12.0 scan_for_CVEs (#3200)

* Per #3198, port over CVE scanning logic from METbaseimage to MET.

* Per #3198, use SOURCE_BRANCH instead of GITHUB_NAME for the scan_docker_image.sh script.

* Fix typo

* Update CVE log message

* Per #3198, update the versions listed in the release-docker-images.yml workflow for the develop branch.

* Per #3198, update the versions listed in the release-docker-images.yml workflow for the main_v6.0 branch.

* Feature #3204 v12.0.3 (#3205)

* Per #3204, update to version number 12.0.3.

* Per #3204, update from METbaseimage version 3.3 to 3.3.1.

* Per #3204, add v12.0.3 release notes.

* Per #3204, update GHA automation to use the  secret.

* Per #3204, update release-docker-images.yml workflow to build the new 12.0.3 images instead of the previous 12.0.2.

* Bugfix #3210 main_v12.0 WDIR (#3213)

* Fix jobstring to write -out_wind_logic correctly instead of reporting the value for cnt_logic instead.

* Restore logic in aggr_mpr_wind_lines() removed for #2395 when STAT-Analysis aggregates MPR lines to compute WDIR output. In main_v11.0, that job automatically removes 0 vectors when computing ROW_MEAN_WDIR output.

* Per #3210, update the revision history

* Per #3210, update the WDIR documentation

* Per #3210, add one more WDIR job to STAT-Analysis using all inputs, not just the non-zero MPR vectors.

* Unrelated to #3210, but noted by @CPKalb, note that MET can read raw WRF output.

* Per #3210, solve one additional bug in the MPR -> VCNT aggregation. Since the local v_info object was declared outside the loop, when d_diff is bad data, the values from the previous iteration were being using. This cause the TOTAL_DIR value to be reported as the TOTAL value and not properly skip over the zero length vectors as it should... and as Point-Stat does.

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>

---------

Co-authored-by: George McCabe <23407799+georgemccabe@users.noreply.github.com>
Co-authored-by: Julie Prestopnik <jpresto@ucar.edu>
Co-authored-by: John Halley Gotway <johnhg@ucar.edu>
Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
Co-authored-by: Pratiman <31694629+pratiman-91@users.noreply.github.com>
Co-authored-by: Howard Soh <hsoh@ucar.edu>
Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
Co-authored-by: metplus-bot <97135045+metplus-bot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Development

Successfully merging this pull request may close these issues.

Bugfix: Fix memory management issues by replacing variable length arrays with STL vectors and arrays
3 participants