From d0c66b836a7942cceda4f8c4e9b4228688de72b3 Mon Sep 17 00:00:00 2001 From: jprestop Date: Thu, 19 May 2022 09:59:23 -0600 Subject: [PATCH] Update main_v10.1-ref after #2163 (#2164) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * added logic to manually trigger a workflow via the GitHub… (#2107) * Bugfix #2102 main_v10.1 initialize modified_hdr_typ (#2108) * Bugfix #2115 main_v10.1 Rotated LatLon (#2116) * Per #2123, added debug code to make this error that was unrepoducible, reproducible on seneca. Just initialize the newly allocated time_values array with values of -10. PLEASE REMOVE THAT TEST CODE PRIOR TO SUBMITTING A PR TO FIX THIS ISSUE. * #2123 Initialize ValidTime if afile to read time bvariable * #2123 Support int64 data type * #2123 Support int64 data type * Bugfix #2118 main_v10.1 grib1_rotll (#2129) Co-authored-by: George McCabe <23407799+georgemccabe@users.noreply.github.com> * Bugfix #2106 main_v10.1 gcc (#2134) * Feature 2141 v10.1.1 (#2144) * Add testing and docs badges. * #14 Using literal instead of numbers and make sure no overflow * #14 Using literal instead of numbers * #14 Added tmp_buf_size * #14 Define n_kw_infos first * #14 Using literal instead of numbers * Bugfix #2148 main_v10.1 misses (#2149) Co-authored-by: George McCabe <23407799+georgemccabe@users.noreply.github.com> * dtcenter/METplus-Internal#14 formatting code * Feature 2162 v10.1.2 (#2163) * Per #2162, update versions and notes for the 10.1.2 bugfix release * Per #2162, update versions and notes for the 10.1.2 bugfix release * Per #2162, fixing syntax error * Add "METplus-Internal" before the issue number for clarity Co-authored-by: johnhg Co-authored-by: Julie Prestopnik Co-authored-by: johnhg Co-authored-by: George McCabe <23407799+georgemccabe@users.noreply.github.com> Co-authored-by: johnhg Co-authored-by: Howard Soh Co-authored-by: hsoh-u Co-authored-by: Julie Prestopnik --- README.md | 2 + met/docs/Users_Guide/release-notes.rst | 8 ++++ met/docs/conf.py | 5 +- met/src/basic/vx_log/concat_string.cc | 12 +++-- met/src/basic/vx_log/concat_string.h | 3 +- met/src/basic/vx_util/ascii_table.cc | 20 +++++--- met/src/basic/vx_util/ascii_table.h | 5 +- met/src/basic/vx_util/observation.h | 5 +- met/src/basic/vx_util/util_constants.h | 5 +- met/src/libcode/vx_afm/afm_keywords.h | 14 +++--- met/src/libcode/vx_color/color.h | 3 +- met/src/libcode/vx_color/color_table.cc | 6 +-- met/src/libcode/vx_pxm/ppm.cc | 4 +- met/src/libcode/vx_render/ps_filter.cc | 4 +- met/src/libcode/vx_render/ps_filter.h | 3 +- met/src/libcode/vx_summary/summary_obs.h | 11 +++-- .../libcode/vx_tc_util/pair_data_genesis.cc | 8 +++- .../libcode/vx_tc_util/pair_data_genesis.h | 3 +- .../vx_time_series/compute_swinging_door.h | 2 +- met/src/tools/other/gsi_tools/rad_record.cc | 46 +++++++++---------- met/src/tools/other/gsi_tools/rad_record.h | 13 ++++-- met/src/tools/tc_utils/tc_gen/tc_gen.cc | 4 +- 22 files changed, 119 insertions(+), 67 deletions(-) diff --git a/README.md b/README.md index ee97ac3082..bb0b829264 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ Model Evaluation Tools (MET) Repository ======================================= +[![Tests](https://github.com/DTCenter/MET/actions/workflows/testing.yml/badge.svg?event=push)](https://github.com/DTCenter/MET/actions/workflows/testing.yml) +[![Docs](https://img.shields.io/badge/Documentation-latest-brightgreen.svg)](https://met.readthedocs.io) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5565322.svg)](https://doi.org/10.5281/zenodo.5565322) This repository contains the source code for the Model Evaluation Tools package (met), unit test code (test), and scripts used to build and test the code (scripts). diff --git a/met/docs/Users_Guide/release-notes.rst b/met/docs/Users_Guide/release-notes.rst index 9252713b88..51750f0390 100644 --- a/met/docs/Users_Guide/release-notes.rst +++ b/met/docs/Users_Guide/release-notes.rst @@ -5,6 +5,14 @@ When applicable, release notes are followed by the GitHub issue number which des enhancement, or new feature (`MET GitHub issues `_). Important issues are listed **in bold** for emphasis. +MET Version 10.1.2 release notes (20220516) +------------------------------------------- + +* Bugfixes: + + * Update static arrays with hard-coded size (`METplus-Internal #14 `_). + * Fix TC-Gen to only count misses from requested initialization hours and lead times (`#2148 `_). + MET Version 10.1.1 release notes (20220419) ------------------------------------------- diff --git a/met/docs/conf.py b/met/docs/conf.py index ae0069a127..94c93b66bd 100644 --- a/met/docs/conf.py +++ b/met/docs/conf.py @@ -20,11 +20,12 @@ project = 'MET' author = 'UCAR/NCAR, NOAA, CSU/CIRA, and CU/CIRES' author_list = 'Newman, K., J. Opatz, T. Jensen, J. Prestopnik, H. Soh, L. Goodrich, B. Brown, R. Bullock, J. Halley Gotway' -version = '10.1.1' + +version = '10.1.2' verinfo = version release = f'{version}' release_year = '2022' -release_date = f'{release_year}-04-19' +release_date = f'{release_year}-05-16' copyright = f'{release_year}, {author}' # -- General configuration --------------------------------------------------- diff --git a/met/src/basic/vx_log/concat_string.cc b/met/src/basic/vx_log/concat_string.cc index 36ea8b17a1..03669e9e28 100644 --- a/met/src/basic/vx_log/concat_string.cc +++ b/met/src/basic/vx_log/concat_string.cc @@ -231,7 +231,10 @@ void ConcatString::assign(const ConcatString & c) if (c.text()) s->assign(c.text()); else s->clear(); - memcpy(FloatFormat, c.FloatFormat, sizeof(FloatFormat)); + int buf_size = sizeof(c.FloatFormat); + if (buf_size > concat_string_buf_size) buf_size = concat_string_buf_size; + + memcpy(FloatFormat, c.FloatFormat, buf_size); Precision = c.Precision; } @@ -337,9 +340,12 @@ if ( (k < 0) || (k > concat_string_max_precision) ) { if (Precision != k) { Precision = k; - memset(FloatFormat, 0, sizeof(FloatFormat)); + int buf_size = sizeof(FloatFormat); + if (buf_size > concat_string_buf_size) buf_size = concat_string_buf_size; + + memset(FloatFormat, 0, buf_size); - snprintf(FloatFormat, sizeof(FloatFormat), "%%.%df", Precision); + snprintf(FloatFormat, buf_size, "%%.%df", Precision); } return; diff --git a/met/src/basic/vx_log/concat_string.h b/met/src/basic/vx_log/concat_string.h index df41cbf78e..59dec5f4f6 100644 --- a/met/src/basic/vx_log/concat_string.h +++ b/met/src/basic/vx_log/concat_string.h @@ -47,6 +47,7 @@ static const int max_str_len = 512; static const int concat_string_default_precision = 5; static const int concat_string_max_precision = 12; +static const int concat_string_buf_size = concat_string_max_precision + 4; //////////////////////////////////////////////////////////////////////// @@ -73,7 +74,7 @@ class ConcatString { int Precision; - char FloatFormat[16]; + char FloatFormat[concat_string_buf_size]; std::string *s; diff --git a/met/src/basic/vx_util/ascii_table.cc b/met/src/basic/vx_util/ascii_table.cc index fccfede13b..343a5aad23 100644 --- a/met/src/basic/vx_util/ascii_table.cc +++ b/met/src/basic/vx_util/ascii_table.cc @@ -271,8 +271,12 @@ BadDataValue = a.BadDataValue; set_bad_data_str(a.BadDataStr); -memcpy(f_FloatFormat, a.f_FloatFormat, sizeof(f_FloatFormat)); -memcpy(g_FloatFormat, a.g_FloatFormat, sizeof(g_FloatFormat)); +int f_buf_size = sizeof(a.f_FloatFormat); +int g_buf_size = sizeof(a.g_FloatFormat); +if (f_buf_size > ascii_table_buf_size) f_buf_size = ascii_table_buf_size; +if (g_buf_size > ascii_table_buf_size) g_buf_size = ascii_table_buf_size; +memcpy(f_FloatFormat, a.f_FloatFormat, f_buf_size); +memcpy(g_FloatFormat, a.g_FloatFormat, g_buf_size); DoCommaString = a.DoCommaString; @@ -697,11 +701,15 @@ if ( (k < 0) || (k > ascii_table_max_precision) ) { Precision = k; -memset(f_FloatFormat, 0, sizeof(f_FloatFormat)); -memset(g_FloatFormat, 0, sizeof(g_FloatFormat)); +int f_buf_size = sizeof(f_FloatFormat); +int g_buf_size = sizeof(g_FloatFormat); +if (f_buf_size > ascii_table_buf_size) f_buf_size = ascii_table_buf_size; +if (g_buf_size > ascii_table_buf_size) g_buf_size = ascii_table_buf_size; +memset(f_FloatFormat, 0, f_buf_size); +memset(g_FloatFormat, 0, g_buf_size); -snprintf(f_FloatFormat, sizeof(f_FloatFormat), "%%.%df", Precision); -snprintf(g_FloatFormat, sizeof(g_FloatFormat), "%%.%dg", Precision); +snprintf(f_FloatFormat, f_buf_size, "%%.%df", Precision); +snprintf(g_FloatFormat, g_buf_size, "%%.%dg", Precision); return; diff --git a/met/src/basic/vx_util/ascii_table.h b/met/src/basic/vx_util/ascii_table.h index a0f32056fd..c13c67c904 100644 --- a/met/src/basic/vx_util/ascii_table.h +++ b/met/src/basic/vx_util/ascii_table.h @@ -112,6 +112,7 @@ static const bool default_fill_blank = false; static const int ascii_table_default_precision = 2; static const int ascii_table_max_precision = 12; +static const int ascii_table_buf_size = ascii_table_max_precision + 4; static const double ascii_table_default_bad_data_value = -9999.0; @@ -163,8 +164,8 @@ class AsciiTable { std::string BadDataStr; - char f_FloatFormat[16]; - char g_FloatFormat[16]; + char f_FloatFormat[ascii_table_buf_size]; + char g_FloatFormat[ascii_table_buf_size]; bool DoCommaString; // do comma string? diff --git a/met/src/basic/vx_util/observation.h b/met/src/basic/vx_util/observation.h index f9230e2dfe..58d9e29285 100644 --- a/met/src/basic/vx_util/observation.h +++ b/met/src/basic/vx_util/observation.h @@ -22,6 +22,7 @@ #include #include "config.h" +#include "util_constants.h" #ifdef ENABLE_PYTHON #include "vx_python3_utils.h" @@ -223,7 +224,7 @@ class Observation { struct tm *time_struct = gmtime(&unix_time); - char time_string[80]; + char time_string[tmp_buf_size]; snprintf(time_string, sizeof(time_string), "%04d%02d%02d_%02d%02d%02d", @@ -240,7 +241,7 @@ class Observation string start_time_string = _getTimeString(start_time); string end_time_string = _getTimeString(end_time); - char time_string[80]; + char time_string[tmp_buf_size]; snprintf(time_string, sizeof(time_string), "%s-%s", diff --git a/met/src/basic/vx_util/util_constants.h b/met/src/basic/vx_util/util_constants.h index 4a40628fa3..453d7b8303 100644 --- a/met/src/basic/vx_util/util_constants.h +++ b/met/src/basic/vx_util/util_constants.h @@ -18,6 +18,8 @@ //////////////////////////////////////////////////////////////////////// // Released versions of MET + +static const char met_version_10_1_2[] = "V10.1.2"; static const char met_version_10_1_1[] = "V10.1.1"; static const char met_version_10_1_0[] = "V10.1.0"; static const char met_version_10_0_0[] = "V10.0.0"; @@ -41,7 +43,7 @@ static const char met_version_1_1[] = "V1.1"; //////////////////////////////////////////////////////////////////////// -static const char * const met_version = met_version_10_1_1; +static const char * const met_version = met_version_10_1_2; static const char default_met_data_dir[] = "MET_BASE"; static const char txt_file_ext[] = ".txt"; static const char stat_file_ext[] = ".stat"; @@ -93,6 +95,7 @@ static const int boot_perc_flag = 1; //////////////////////////////////////////////////////////////////////// static const int max_line_len = 2048; +static const int tmp_buf_size = 512; static const double grib_earth_radius_km = 6371.20; static const int default_nc_compression = 0; static const int default_precision = 5; diff --git a/met/src/libcode/vx_afm/afm_keywords.h b/met/src/libcode/vx_afm/afm_keywords.h index 026f0ca0c5..70c141bdef 100644 --- a/met/src/libcode/vx_afm/afm_keywords.h +++ b/met/src/libcode/vx_afm/afm_keywords.h @@ -83,7 +83,13 @@ struct AfmKeywordInfo { //////////////////////////////////////////////////////////////////////// -static const AfmKeywordInfo kw_info[42] = { +static const int n_kw_infos = 42; + + +//////////////////////////////////////////////////////////////////////// + + +static const AfmKeywordInfo kw_info[n_kw_infos] = { { "StartFontMetrics", afm_keyword_StartFontMetrics }, { "EndFontMetrics", afm_keyword_EndFontMetrics }, @@ -134,12 +140,6 @@ static const AfmKeywordInfo kw_info[42] = { //////////////////////////////////////////////////////////////////////// -static const int n_kw_infos = 42; - - -//////////////////////////////////////////////////////////////////////// - - extern int is_afm_keyword (ConcatString text, AfmKeyword &); diff --git a/met/src/libcode/vx_color/color.h b/met/src/libcode/vx_color/color.h index 746b3610bb..986287aa6c 100644 --- a/met/src/libcode/vx_color/color.h +++ b/met/src/libcode/vx_color/color.h @@ -200,6 +200,7 @@ extern ostream & operator<<(ostream &, const CtableEntry &); static const int ctable_alloc_inc = 30; +static const int fudge_size = 256; //////////////////////////////////////////////////////////////////////// @@ -226,7 +227,7 @@ class ColorTable { double Gamma; - unsigned char fudge[256]; + unsigned char fudge[fudge_size]; public: diff --git a/met/src/libcode/vx_color/color_table.cc b/met/src/libcode/vx_color/color_table.cc index ed6f66843b..46157de13f 100644 --- a/met/src/libcode/vx_color/color_table.cc +++ b/met/src/libcode/vx_color/color_table.cc @@ -332,7 +332,7 @@ Nalloc = 0; int j; -for (j=0; j<256; ++j) { +for (j=0; j max_decimal_places) ) { DecimalPlaces = k; -snprintf(double_format, sizeof(double_format), "%%.%df", DecimalPlaces); // example: "%.5f" +int buf_size = sizeof(double_format); +if (buf_size > filter_buf_size) buf_size = filter_buf_size; +snprintf(double_format, buf_size, "%%.%df", DecimalPlaces); // example: "%.5f" return; diff --git a/met/src/libcode/vx_render/ps_filter.h b/met/src/libcode/vx_render/ps_filter.h index 23b3100de4..00bacc0e25 100644 --- a/met/src/libcode/vx_render/ps_filter.h +++ b/met/src/libcode/vx_render/ps_filter.h @@ -44,6 +44,7 @@ static const int FlateEncode = 4; static const int max_filters = 10; +static const int filter_buf_size = 32; //////////////////////////////////////////////////////////////////////// @@ -60,7 +61,7 @@ class PSFilter { int DecimalPlaces; - char double_format[32]; + char double_format[filter_buf_size]; virtual void eat(unsigned char); diff --git a/met/src/libcode/vx_summary/summary_obs.h b/met/src/libcode/vx_summary/summary_obs.h index 67b2aa353f..284b67b388 100644 --- a/met/src/libcode/vx_summary/summary_obs.h +++ b/met/src/libcode/vx_summary/summary_obs.h @@ -19,6 +19,7 @@ #include "observation.h" #include "summary_calc.h" #include "time_summary_interval.h" +#include "util_constants.h" //////////////////////////////////////////////////////////////////////// @@ -135,7 +136,7 @@ class SummaryObs // Create the string - char string_buffer[20]; + char string_buffer[tmp_buf_size]; snprintf(string_buffer, sizeof(string_buffer), "%02d%02d%02d", hour, minute, second); @@ -222,7 +223,7 @@ class SummaryObs { struct tm *time_struct = gmtime(&unix_time); - char time_string[80]; + char time_string[tmp_buf_size]; snprintf(time_string, sizeof(time_string), "%04d%02d%02d_%02d%02d%02d", @@ -239,11 +240,11 @@ class SummaryObs memset(&time_struct, 0, sizeof(time_struct)); time_struct.tm_year = atoi(time_string.substr(0, 4).c_str()) - 1900; - time_struct.tm_mon = atoi(time_string.substr(4, 2).c_str()) - 1; + time_struct.tm_mon = atoi(time_string.substr(4, 2).c_str()) - 1; time_struct.tm_mday = atoi(time_string.substr(6, 2).c_str()); time_struct.tm_hour = atoi(time_string.substr(9, 2).c_str()); - time_struct.tm_min = atoi(time_string.substr(11, 2).c_str()); - time_struct.tm_sec = atoi(time_string.substr(13, 2).c_str()); + time_struct.tm_min = atoi(time_string.substr(11, 2).c_str()); + time_struct.tm_sec = atoi(time_string.substr(13, 2).c_str()); return timegm(&time_struct); } diff --git a/met/src/libcode/vx_tc_util/pair_data_genesis.cc b/met/src/libcode/vx_tc_util/pair_data_genesis.cc index 2b3e5f07b7..b07185e4c1 100644 --- a/met/src/libcode/vx_tc_util/pair_data_genesis.cc +++ b/met/src/libcode/vx_tc_util/pair_data_genesis.cc @@ -260,7 +260,8 @@ void PairDataGenesis::add_fcst_gen(const GenesisInfo *fgi) { void PairDataGenesis::add_best_gen(const GenesisInfo *bgi, const int fcst_beg, const int fcst_end, const int init_add, const unixtime init_beg, const unixtime init_end, - const TimeArray &init_inc, const TimeArray &init_exc) { + const TimeArray &init_inc, const TimeArray &init_exc, + const NumArray &init_hour, const NumArray &lead) { if(!bgi) return; @@ -282,6 +283,11 @@ void PairDataGenesis::add_best_gen(const GenesisInfo *bgi, (init_exc.n() > 0 && init_exc.has(init_ut))) continue; + // Check if this initialization hour and lead time should be used + if((init_hour.n() > 0 && !init_hour.has(unix_to_sec_of_day(init_ut))) || + (lead.n() > 0 && !lead.has(nint(bgi->genesis_time() - init_ut)))) + continue; + // Check if this case already exists if(!has_case(bgi->storm_id(), init_ut, i_case)) { diff --git a/met/src/libcode/vx_tc_util/pair_data_genesis.h b/met/src/libcode/vx_tc_util/pair_data_genesis.h index 12949ec790..1725273751 100644 --- a/met/src/libcode/vx_tc_util/pair_data_genesis.h +++ b/met/src/libcode/vx_tc_util/pair_data_genesis.h @@ -129,7 +129,8 @@ class PairDataGenesis { void add_best_gen(const GenesisInfo *, const int, const int, const int, const unixtime, const unixtime, - const TimeArray &, const TimeArray &); + const TimeArray &, const TimeArray &, + const NumArray &, const NumArray &); void add_gen_pair(const GenesisInfo *, const GenesisInfo *); void set_gen_diff(int, const GenesisPairDiff &); diff --git a/met/src/libcode/vx_time_series/compute_swinging_door.h b/met/src/libcode/vx_time_series/compute_swinging_door.h index 9c990fe231..052ce0a789 100644 --- a/met/src/libcode/vx_time_series/compute_swinging_door.h +++ b/met/src/libcode/vx_time_series/compute_swinging_door.h @@ -118,7 +118,7 @@ class SDObservation { struct tm *time_struct = gmtime(&unix_time); - char time_string[80]; + char time_string[tmp_buf_size]; snprintf(time_string, sizeof(time_string), "%04d%02d%02d_%02d%02d%02d", diff --git a/met/src/tools/other/gsi_tools/rad_record.cc b/met/src/tools/other/gsi_tools/rad_record.cc index 4ce91f1202..a87b453853 100644 --- a/met/src/tools/other/gsi_tools/rad_record.cc +++ b/met/src/tools/other/gsi_tools/rad_record.cc @@ -404,23 +404,23 @@ if ( n_read < 72 ) { unsigned char * b = buf; -my_memcpy( &(R_params.isis), b, 20); -my_memcpy( &(R_params.dplat), b, 10); -my_memcpy( &(R_params.obstype), b, 10); +my_memcpy( &(R_params.isis), b, rad_isis_len); +my_memcpy( &(R_params.dplat), b, rad_dplat_len); +my_memcpy( &(R_params.obstype), b, rad_obstype_len); -my_memcpy( &(R_params.jiter), b, 4); -my_memcpy( &(R_params.nchanl), b, 4); -my_memcpy( &(R_params.npred), b, 4); -my_memcpy( &(R_params.idate), b, 4); -my_memcpy( &(R_params.ireal), b, 4); -my_memcpy( &(R_params.ipchan), b, 4); -my_memcpy( &(R_params.iextra), b, 4); -my_memcpy( &(R_params.jextra), b, 4); +my_memcpy( &(R_params.jiter), b, rad_int_len); +my_memcpy( &(R_params.nchanl), b, rad_int_len); +my_memcpy( &(R_params.npred), b, rad_int_len); +my_memcpy( &(R_params.idate), b, rad_int_len); +my_memcpy( &(R_params.ireal), b, rad_int_len); +my_memcpy( &(R_params.ipchan), b, rad_int_len); +my_memcpy( &(R_params.iextra), b, rad_int_len); +my_memcpy( &(R_params.jextra), b, rad_int_len); -my_memcpy( &(R_params.idiag), b, 4); -my_memcpy( &(R_params.angord), b, 4); -my_memcpy( &(R_params.iversion), b, 4); -my_memcpy( &(R_params.inewpc), b, 4); +my_memcpy( &(R_params.idiag), b, rad_int_len); +my_memcpy( &(R_params.angord), b, rad_int_len); +my_memcpy( &(R_params.iversion), b, rad_int_len); +my_memcpy( &(R_params.inewpc), b, rad_int_len); if ( SwapEndian ) { @@ -483,14 +483,14 @@ if ( n_read != 32 ) { unsigned char * b = buf; -my_memcpy( &(cp.freq), b, 4); -my_memcpy( &(cp.plo), b, 4); -my_memcpy( &(cp.wave), b, 4); -my_memcpy( &(cp.varch), b, 4); -my_memcpy( &(cp.tlap), b, 4); -my_memcpy( &(cp.iuse), b, 4); -my_memcpy( &(cp.nuchan), b, 4); -my_memcpy( &(cp.ich), b, 4); +my_memcpy( &(cp.freq), b, rad_int_len); +my_memcpy( &(cp.plo), b, rad_int_len); +my_memcpy( &(cp.wave), b, rad_int_len); +my_memcpy( &(cp.varch), b, rad_int_len); +my_memcpy( &(cp.tlap), b, rad_int_len); +my_memcpy( &(cp.iuse), b, rad_int_len); +my_memcpy( &(cp.nuchan), b, rad_int_len); +my_memcpy( &(cp.ich), b, rad_int_len); if ( SwapEndian ) { diff --git a/met/src/tools/other/gsi_tools/rad_record.h b/met/src/tools/other/gsi_tools/rad_record.h index c26d768514..f13ac496c8 100644 --- a/met/src/tools/other/gsi_tools/rad_record.h +++ b/met/src/tools/other/gsi_tools/rad_record.h @@ -22,14 +22,21 @@ #include "vx_cal.h" +//////////////////////////////////////////////////////////////////////// + +static const int rad_obstype_len = 10; +static const int rad_dplat_len = 10; +static const int rad_isis_len = 20; +static const int rad_int_len = 4; + //////////////////////////////////////////////////////////////////////// struct RadParams { - char obstype [11]; - char dplat [11]; - char isis [21]; + char obstype [rad_obstype_len+1]; + char dplat [rad_dplat_len + 1]; + char isis [rad_isis_len + 1]; int jiter; int nchanl; diff --git a/met/src/tools/tc_utils/tc_gen/tc_gen.cc b/met/src/tools/tc_utils/tc_gen/tc_gen.cc index c6f136d5d5..1e339dbec5 100644 --- a/met/src/tools/tc_utils/tc_gen/tc_gen.cc +++ b/met/src/tools/tc_utils/tc_gen/tc_gen.cc @@ -22,6 +22,7 @@ // 005 04/02/21 Halley Gotway MET #1714 Refinem matching logic // 006 11/04/21 Halley Gotway MET #1809 Add -edeck option // 007 11/22/21 Halley Gotway MET #1810 Add -shape option +// 008 05/02/22 Halley Gotway MET #2148 Fix init_hour and lead misses // //////////////////////////////////////////////////////////////////////// @@ -605,7 +606,8 @@ void get_genesis_pairs(const TCGenVxOpt &vx_opt, conf_info.FcstSecBeg, conf_info.FcstSecEnd, conf_info.InitFreqHr*sec_per_hour, vx_opt.InitBeg, vx_opt.InitEnd, - vx_opt.InitInc, vx_opt.InitExc); + vx_opt.InitInc, vx_opt.InitExc, + vx_opt.InitHour, vx_opt.Lead); } // end for i bga // Loop over the model genesis events looking for pairs.