Skip to content

Commit

Permalink
Per #2357, add sanity check logic to make sure that at most 1 wind at…
Browse files Browse the repository at this point in the history
…tribute flag is set.
  • Loading branch information
JohnHalleyGotway committed Nov 28, 2022
1 parent 2bc783e commit 26f86d8
Showing 1 changed file with 28 additions and 14 deletions.
42 changes: 28 additions & 14 deletions src/libcode/vx_data2d/var_info.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down Expand Up @@ -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) {
Expand All @@ -815,7 +829,7 @@ EnsVarInfo::EnsVarInfo(const EnsVarInfo &f) {
assign(f);
}

////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

void EnsVarInfo::clear() {
vector<InputInfo>::const_iterator it;
Expand All @@ -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) {
Expand All @@ -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) {
Expand All @@ -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;
Expand Down

0 comments on commit 26f86d8

Please sign in to comment.