diff --git a/src/ModelTree.cc b/src/ModelTree.cc index 856c226077caf45f9ff4b629e2b409ca788b322d..1bbcb48c5b84699acb39490955749fbeddc32655 100644 --- a/src/ModelTree.cc +++ b/src/ModelTree.cc @@ -1632,12 +1632,15 @@ ModelTree::includeExcludeEquations(set<pair<string, string>> &eqs, bool exclude_ // Get equation numbers of tags set<int> tag_eqns; - for (auto &it : eqs) - if (auto tmp = equation_tags.getEqnsByTag(it.first, it.second); !tmp.empty()) + for (auto it = eqs.begin(); it != eqs.end();) + if (auto tmp = equation_tags.getEqnsByTag(it->first, it->second); + !tmp.empty()) { tag_eqns.insert(tmp.begin(), tmp.end()); - eqs.erase(it); + it = eqs.erase(it); } + else + ++it; if (tag_eqns.empty()) return excluded_vars; @@ -1658,8 +1661,9 @@ ModelTree::includeExcludeEquations(set<pair<string, string>> &eqs, bool exclude_ if (eqns.find(i) != eqns.end()) { if (auto tmp = equation_tags.getTagValueByEqnAndKey(i, "endogenous"); !tmp.empty()) + excluded_vars.push_back(symbol_table.getID(tmp)); + else { - excluded_vars.push_back(symbol_table.getID(tmp)); set<pair<int, int>> result; equations[i]->arg1->collectDynamicVariables(SymbolType::endogenous, result); if (result.size() == 1)