diff --git a/src/ExprNode.cc b/src/ExprNode.cc index 7461ae65..25ca28c7 100644 --- a/src/ExprNode.cc +++ b/src/ExprNode.cc @@ -420,11 +420,6 @@ NumConstNode::collectDynamicVariables(SymbolType type_arg, set > { } -void -NumConstNode::collectModelLocalVariables(map &result) const -{ -} - pair NumConstNode::normalizeEquation(int var_endo, vector > > &List_of_Op_RHS) const { @@ -1193,16 +1188,6 @@ VariableNode::collectDynamicVariables(SymbolType type_arg, set > datatree.local_variables_table[symb_id]->collectDynamicVariables(type_arg, result); } -void -VariableNode::collectModelLocalVariables(map &result) const -{ - if (type == eModelLocalVariable) - { - result[symb_id] = const_cast(this); - datatree.local_variables_table[symb_id]->collectModelLocalVariables(result); - } -} - pair VariableNode::normalizeEquation(int var_endo, vector > > &List_of_Op_RHS) const { @@ -2736,12 +2721,6 @@ UnaryOpNode::collectDynamicVariables(SymbolType type_arg, set > & arg->collectDynamicVariables(type_arg, result); } -void -UnaryOpNode::collectModelLocalVariables(map &result) const -{ - arg->collectModelLocalVariables(result); -} - pair UnaryOpNode::normalizeEquation(int var_endo, vector > > &List_of_Op_RHS) const { @@ -4404,13 +4383,6 @@ BinaryOpNode::collectDynamicVariables(SymbolType type_arg, set > arg2->collectDynamicVariables(type_arg, result); } -void -BinaryOpNode::collectModelLocalVariables(map &result) const -{ - arg1->collectModelLocalVariables(result); - arg2->collectModelLocalVariables(result); -} - expr_t BinaryOpNode::Compute_RHS(expr_t arg1, expr_t arg2, int op, int op_type) const { @@ -5660,14 +5632,6 @@ TrinaryOpNode::collectDynamicVariables(SymbolType type_arg, set > arg3->collectDynamicVariables(type_arg, result); } -void -TrinaryOpNode::collectModelLocalVariables(map &result) const -{ - arg1->collectModelLocalVariables(result); - arg2->collectModelLocalVariables(result); - arg3->collectModelLocalVariables(result); -} - pair TrinaryOpNode::normalizeEquation(int var_endo, vector > > &List_of_Op_RHS) const { @@ -6121,14 +6085,6 @@ AbstractExternalFunctionNode::collectDynamicVariables(SymbolType type_arg, set

collectDynamicVariables(type_arg, result); } -void -AbstractExternalFunctionNode::collectModelLocalVariables(map &result) const -{ - for (vector::const_iterator it = arguments.begin(); - it != arguments.end(); it++) - (*it)->collectModelLocalVariables(result); -} - void AbstractExternalFunctionNode::collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const { @@ -7887,11 +7843,6 @@ VarExpectationNode::collectDynamicVariables(SymbolType type_arg, set &result) const -{ -} - void VarExpectationNode::collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const { @@ -8329,11 +8280,6 @@ PacExpectationNode::collectDynamicVariables(SymbolType type_arg, set &result) const -{ -} - void PacExpectationNode::collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const { diff --git a/src/ExprNode.hh b/src/ExprNode.hh index 3baf0046..dbea8e80 100644 --- a/src/ExprNode.hh +++ b/src/ExprNode.hh @@ -269,9 +269,6 @@ class ExprNode */ virtual void collectDynamicVariables(SymbolType type_arg, set > &result) const = 0; - //! Used in the collection of Model Local Variables for writing as Temporary Terms in Static and Dynamic files - virtual void collectModelLocalVariables(map &result) const = 0; - //! Find lowest lag for VAR virtual int VarMinLag() const = 0; @@ -568,7 +565,6 @@ public: virtual bool containsExternalFunction() const; virtual void collectVARLHSVariable(set &result) const; virtual void collectDynamicVariables(SymbolType type_arg, set > &result) const; - virtual void collectModelLocalVariables(map &result) const; virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const; virtual double eval(const eval_context_t &eval_context) const throw (EvalException, EvalExternalFunctionException); virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, deriv_node_temp_terms_t &tef_terms) const; @@ -637,7 +633,6 @@ public: virtual bool containsExternalFunction() const; virtual void collectVARLHSVariable(set &result) const; virtual void collectDynamicVariables(SymbolType type_arg, set > &result) const; - virtual void collectModelLocalVariables(map &result) const; virtual void computeTemporaryTerms(map &reference_count, temporary_terms_t &temporary_terms, map > &first_occurence, @@ -756,7 +751,6 @@ public: int equation) const; virtual void collectVARLHSVariable(set &result) const; virtual void collectDynamicVariables(SymbolType type_arg, set > &result) const; - virtual void collectModelLocalVariables(map &result) const; virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const; static double eval_opcode(UnaryOpcode op_code, double v) throw (EvalException, EvalExternalFunctionException); virtual double eval(const eval_context_t &eval_context) const throw (EvalException, EvalExternalFunctionException); @@ -871,7 +865,6 @@ public: int equation) const; virtual void collectVARLHSVariable(set &result) const; virtual void collectDynamicVariables(SymbolType type_arg, set > &result) const; - virtual void collectModelLocalVariables(map &result) const; virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const; static double eval_opcode(double v1, BinaryOpcode op_code, double v2, int derivOrder) throw (EvalException, EvalExternalFunctionException); virtual double eval(const eval_context_t &eval_context) const throw (EvalException, EvalExternalFunctionException); @@ -1005,7 +998,6 @@ public: int equation) const; virtual void collectVARLHSVariable(set &result) const; virtual void collectDynamicVariables(SymbolType type_arg, set > &result) const; - virtual void collectModelLocalVariables(map &result) const; virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const; static double eval_opcode(double v1, TrinaryOpcode op_code, double v2, double v3) throw (EvalException, EvalExternalFunctionException); virtual double eval(const eval_context_t &eval_context) const throw (EvalException, EvalExternalFunctionException); @@ -1109,7 +1101,6 @@ public: int equation) const = 0; virtual void collectVARLHSVariable(set &result) const; virtual void collectDynamicVariables(SymbolType type_arg, set > &result) const; - virtual void collectModelLocalVariables(map &result) const; virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const; virtual double eval(const eval_context_t &eval_context) const throw (EvalException, EvalExternalFunctionException); unsigned int compileExternalFunctionArguments(ostream &CompileCode, unsigned int &instruction_number, @@ -1350,7 +1341,6 @@ public: virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const; virtual void collectVARLHSVariable(set &result) const; virtual void collectDynamicVariables(SymbolType type_arg, set > &result) const; - virtual void collectModelLocalVariables(map &result) const; virtual bool containsEndogenous(void) const; virtual bool containsExogenous() const; virtual bool isDiffPresent(void) const; @@ -1435,7 +1425,6 @@ public: virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const; virtual void collectVARLHSVariable(set &result) const; virtual void collectDynamicVariables(SymbolType type_arg, set > &result) const; - virtual void collectModelLocalVariables(map &result) const; virtual bool containsEndogenous(void) const; virtual bool containsExogenous() const; virtual bool isDiffPresent(void) const; diff --git a/src/ModelTree.cc b/src/ModelTree.cc index 72eb44ab..c3045139 100644 --- a/src/ModelTree.cc +++ b/src/ModelTree.cc @@ -1128,15 +1128,16 @@ ModelTree::computeTemporaryTerms(bool is_matlab) // Collect all model local variables appearing in equations. See #101 // All used model local variables are automatically set as temporary variables - map used_local_vars; + set used_local_vars; for (size_t i = 0; i < equations.size(); i++) - equations[i]->collectModelLocalVariables(used_local_vars); + equations[i]->collectVariables(eModelLocalVariable, used_local_vars); - for (map::const_iterator it = used_local_vars.begin(); + for (set::const_iterator it = used_local_vars.begin(); it != used_local_vars.end(); it++) { - temporary_terms_mlv[it->second] = local_variables_table.find(it->first)->second; - reference_count[it->second] = make_pair(MIN_COST(is_matlab)+1, eResiduals); + VariableNode *v = AddVariable(*it); + temporary_terms_mlv[v] = local_variables_table.find(*it)->second; + reference_count[v] = make_pair(MIN_COST(is_matlab)+1, eResiduals); } map temp_terms_map;