From 9ca4a51f63df26666aab75916bbb7726109bcd1d Mon Sep 17 00:00:00 2001 From: johnhg Date: Tue, 29 Nov 2022 14:43:27 -0700 Subject: [PATCH] Feature #2357 wind (#2358) --- src/libcode/vx_data2d/var_info.cc | 42 ++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/src/libcode/vx_data2d/var_info.cc b/src/libcode/vx_data2d/var_info.cc index d8975033ed..135a907b4b 100644 --- a/src/libcode/vx_data2d/var_info.cc +++ b/src/libcode/vx_data2d/var_info.cc @@ -568,6 +568,21 @@ void VarInfo::set_dict(Dictionary &dict) { SetAttrIsProb = parse_set_attr_flag(dict, conf_key_is_prob); + // At most one wind attribute flag can be set + n = 0; + if(SetAttrIsUWind == 1) n++; + if(SetAttrIsVWind == 1) n++; + if(SetAttrIsWindSpeed == 1) n++; + if(SetAttrIsWindDirection == 1) n++; + if(n > 1) { + mlog << Error << "\nVarInfo::set_dict() -> " + << "At most one wind attribute flag (" + << conf_key_is_u_wind << ", " << conf_key_is_v_wind << ", " + << conf_key_is_wind_speed << ", " << conf_key_is_wind_direction + << ") can be set to true for each field.\n\n"; + exit(1); + } + return; } @@ -790,22 +805,21 @@ int parse_set_attr_flag(Dictionary &dict, const char *key) { } /////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////// // // Code for class EnsVarInfo // -//////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// EnsVarInfo::EnsVarInfo() { ctrl_info = NULL; } -//////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// EnsVarInfo::~EnsVarInfo() { clear(); } + /////////////////////////////////////////////////////////////////////////////// EnsVarInfo::EnsVarInfo(const EnsVarInfo &f) { @@ -815,7 +829,7 @@ EnsVarInfo::EnsVarInfo(const EnsVarInfo &f) { assign(f); } -//////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// void EnsVarInfo::clear() { vector::const_iterator it; @@ -841,25 +855,25 @@ void EnsVarInfo::assign(const EnsVarInfo &v) { return; } -//////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// void EnsVarInfo::add_input(InputInfo input) { inputs.push_back(input); } -//////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// int EnsVarInfo::inputs_n() { return inputs.size(); } -//////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// void EnsVarInfo::set_ctrl(VarInfo * ctrl) { ctrl_info = ctrl; } -//////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// VarInfo * EnsVarInfo::get_ctrl(int index) { if(ctrl_info) { @@ -868,7 +882,7 @@ VarInfo * EnsVarInfo::get_ctrl(int index) { return inputs[index].var_info; } -//////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// VarInfo * EnsVarInfo::get_var_info(int index) { if(inputs[index].var_info) { @@ -877,26 +891,26 @@ VarInfo * EnsVarInfo::get_var_info(int index) { return inputs[0].var_info; } -//////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// ConcatString EnsVarInfo::get_file(int index) { int file_index = inputs[index].file_index; return (*inputs[index].file_list)[file_index]; } -//////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// int EnsVarInfo::get_file_index(int index) { return inputs[index].file_index; } -//////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// ConcatString EnsVarInfo::get_ens_member_id(int index) { return inputs[index].ens_member_id; } -//////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// ConcatString raw_magic_str(Dictionary i_edict, GrdFileType file_type) { ConcatString magic_str;