diff --git a/src/basic/vx_config/config_constants.h b/src/basic/vx_config/config_constants.h index e06901003f..076f1ab79c 100644 --- a/src/basic/vx_config/config_constants.h +++ b/src/basic/vx_config/config_constants.h @@ -693,12 +693,6 @@ static const char conf_key_is_wind_speed[] = "is_wind_speed"; static const char conf_key_is_wind_direction[] = "is_wind_direction"; static const char conf_key_is_prob[] = "is_prob"; -// -// for use with mode multivar -// - -static const char conf_key_multivar_logic [] = "multivar_logic"; - // // Climatology parameter key names // @@ -893,6 +887,15 @@ static const char conf_key_plot_gcarc_flag[] = "plot_gcarc_flag"; static const char conf_key_ct_stats_flag[] = "ct_stats_flag"; static const char conf_key_shift_right[] = "shift_right"; +// +// Multivar MODE specific parameter key names +// + +static const char conf_key_multivar_logic [] = "multivar_logic"; +static const char conf_key_multivar_name [] = "multivar_name"; +static const char conf_key_multivar_level [] = "multivar_level"; +static const char conf_key_multivar_intensity_flag [] = "multivar_intensity_flag"; + // // MTD specific parameter key names // diff --git a/src/basic/vx_config/dictionary.cc b/src/basic/vx_config/dictionary.cc index 615ed0841e..8931546ccf 100644 --- a/src/basic/vx_config/dictionary.cc +++ b/src/basic/vx_config/dictionary.cc @@ -1523,22 +1523,27 @@ return ( Entry->b_value() ); } + //////////////////////////////////////////////////////////////////////// + + BoolArray Dictionary::lookup_bool_array(const char * name, bool error_out, bool print_warning, - bool search_parent) -{ + bool search_parent) { + BoolArray array; NumArray num_array = lookup_num_array(name, error_out, print_warning); -for (int i=0; ilookup(conf_key_field); if ( !ee ) { - mlog << "\n\n ModeConfInfo::read_fields () -> \"field\" entry not found in dictionary!\n\n"; + mlog << "\nModeConfInfo::read_fields () -> \"field\" entry not found in dictionary!\n\n"; exit ( 1 ); @@ -593,7 +590,7 @@ if ( field->is_array() ) { if ( (N_fields > 0) && (N != N_fields) ) { mlog << Error - << "\n\n ModeConfInfo::read_field_dict() -> fcst and obs dictionaries have different number of entries\n\n"; + << "\nModeConfInfo::read_field_dict() -> fcst and obs dictionaries have different number of entries\n\n"; exit ( 1 ); @@ -607,7 +604,7 @@ if ( field->is_array() ) { if ( (e->type() != DictionaryType) && (e->type() != ArrayType) ) { mlog << Error - << "\n\n ModeConfInfo::read_field_dict() -> field entry # " << (j + 1) << " is not a dictionary!\n\n"; + << "\nModeConfInfo::read_field_dict() -> field entry # " << (j + 1) << " is not a dictionary!\n\n"; exit ( 1 ); @@ -695,7 +692,7 @@ void ModeConfInfo::set_field_index(int k) if ( (k < 0) || (k >= N_fields) ) { mlog << Error - << "\n\n ModeConfInfo::set_field_index(int) -> range check error\n\n"; + << "\nModeConfInfo::set_field_index(int) -> range check error\n\n"; exit ( 1 ); @@ -1026,7 +1023,7 @@ const DictionaryEntry * e = conf.lookup("fcst"); if ( e->type() != DictionaryType ) { mlog << Error - << "\n\n ModeConfInfo::is_multivar() const -> bad object type for entry \"fcst\"\n\n"; + << "\nModeConfInfo::is_multivar() const -> bad object type for entry \"fcst\"\n\n"; exit ( 1 ); @@ -1043,7 +1040,7 @@ switch ( e2->type() ) { default: mlog << Error - << "\n\n ModeConfInfo::is_multivar() const -> bad object type for entry \"fcst.field\"\n\n"; + << "\nModeConfInfo::is_multivar() const -> bad object type for entry \"fcst.field\"\n\n"; exit ( 1 ); } @@ -1065,26 +1062,26 @@ Dictionary * dict = (Dictionary *) 0; fcst_multivar_logic.clear(); obs_multivar_logic.clear(); -fcst_multivar_name = "Super"; // default, maybe set elsewhere? -obs_multivar_name = "Super"; -fcst_multivar_level = "NA"; -obs_multivar_level = "NA"; +fcst_multivar_name = default_multivar_name; +obs_multivar_name = default_multivar_name; +fcst_multivar_level = na_str; +obs_multivar_level = na_str; dict = conf.lookup_dictionary(conf_key_fcst); -if ( dict->lookup(conf_key_multivar_logic) ) fcst_multivar_logic = dict->lookup_string(conf_key_multivar_logic); -if ( dict->lookup("multivar_name") ) fcst_multivar_name = dict->lookup_string("multivar_name"); -if ( dict->lookup("multivar_level") ) fcst_multivar_level = dict->lookup_string("multivar_level"); - +if ( dict->lookup(conf_key_multivar_logic) ) fcst_multivar_logic = dict->lookup_string(conf_key_multivar_logic); +if ( dict->lookup(conf_key_multivar_name) ) fcst_multivar_name = dict->lookup_string(conf_key_multivar_name); +if ( dict->lookup(conf_key_multivar_level) ) fcst_multivar_level = dict->lookup_string(conf_key_multivar_level); dict = conf.lookup_dictionary(conf_key_obs); -if ( dict->lookup(conf_key_multivar_logic) ) obs_multivar_logic = dict->lookup_string(conf_key_multivar_logic); -if ( dict->lookup("multivar_name") ) obs_multivar_name = dict->lookup_string("multivar_name"); -if ( dict->lookup("multivar_level") ) obs_multivar_level = dict->lookup_string("multivar_level"); +if ( dict->lookup(conf_key_multivar_logic) ) obs_multivar_logic = dict->lookup_string(conf_key_multivar_logic); +if ( dict->lookup(conf_key_multivar_name) ) obs_multivar_name = dict->lookup_string(conf_key_multivar_name); +if ( dict->lookup(conf_key_multivar_level) ) obs_multivar_level = dict->lookup_string(conf_key_multivar_level); multivar_intensity.clear(); -if ( dict->lookup("multivar_intensity_flag")) multivar_intensity = dict->lookup_bool_array("multivar_intensity_flag"); +if ( dict->lookup(conf_key_multivar_intensity_flag)) multivar_intensity = dict->lookup_bool_array(conf_key_multivar_intensity_flag); + return; } @@ -1100,23 +1097,23 @@ void ModeConfInfo::check_multivar_not_implemented() bool status = false; if (quilt) { mlog << Error - << "\n\nModeConfInfo::multivar_not_implemented:\n" - << " quilting not yet implemented for multivar mode\n"; + << "\nModeConfInfo::multivar_not_implemented:\n" + << " quilting not yet implemented for multivar mode\n\n"; status = true; } for (int i=0; ilookup_num_array(name, error_out, print_warning); -for (int i=0; i