Simplify code for model local variables

issue#70
Sébastien Villemot 2018-05-23 19:19:11 +02:00
parent 164a6f303b
commit bb4b5993b0
3 changed files with 6 additions and 70 deletions

View File

@ -420,11 +420,6 @@ NumConstNode::collectDynamicVariables(SymbolType type_arg, set<pair<int, int> >
{
}
void
NumConstNode::collectModelLocalVariables(map<int, expr_t> &result) const
{
}
pair<int, expr_t >
NumConstNode::normalizeEquation(int var_endo, vector<pair<int, pair<expr_t, expr_t> > > &List_of_Op_RHS) const
{
@ -1193,16 +1188,6 @@ VariableNode::collectDynamicVariables(SymbolType type_arg, set<pair<int, int> >
datatree.local_variables_table[symb_id]->collectDynamicVariables(type_arg, result);
}
void
VariableNode::collectModelLocalVariables(map<int, expr_t> &result) const
{
if (type == eModelLocalVariable)
{
result[symb_id] = const_cast<VariableNode *>(this);
datatree.local_variables_table[symb_id]->collectModelLocalVariables(result);
}
}
pair<int, expr_t>
VariableNode::normalizeEquation(int var_endo, vector<pair<int, pair<expr_t, expr_t> > > &List_of_Op_RHS) const
{
@ -2736,12 +2721,6 @@ UnaryOpNode::collectDynamicVariables(SymbolType type_arg, set<pair<int, int> > &
arg->collectDynamicVariables(type_arg, result);
}
void
UnaryOpNode::collectModelLocalVariables(map<int, expr_t> &result) const
{
arg->collectModelLocalVariables(result);
}
pair<int, expr_t>
UnaryOpNode::normalizeEquation(int var_endo, vector<pair<int, pair<expr_t, expr_t> > > &List_of_Op_RHS) const
{
@ -4404,13 +4383,6 @@ BinaryOpNode::collectDynamicVariables(SymbolType type_arg, set<pair<int, int> >
arg2->collectDynamicVariables(type_arg, result);
}
void
BinaryOpNode::collectModelLocalVariables(map<int, expr_t> &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<pair<int, int> >
arg3->collectDynamicVariables(type_arg, result);
}
void
TrinaryOpNode::collectModelLocalVariables(map<int, expr_t> &result) const
{
arg1->collectModelLocalVariables(result);
arg2->collectModelLocalVariables(result);
arg3->collectModelLocalVariables(result);
}
pair<int, expr_t>
TrinaryOpNode::normalizeEquation(int var_endo, vector<pair<int, pair<expr_t, expr_t> > > &List_of_Op_RHS) const
{
@ -6121,14 +6085,6 @@ AbstractExternalFunctionNode::collectDynamicVariables(SymbolType type_arg, set<p
(*it)->collectDynamicVariables(type_arg, result);
}
void
AbstractExternalFunctionNode::collectModelLocalVariables(map<int, expr_t> &result) const
{
for (vector<expr_t>::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<pair<int, i
{
}
void
VarExpectationNode::collectModelLocalVariables(map<int, expr_t> &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<pair<int, i
{
}
void
PacExpectationNode::collectModelLocalVariables(map<int, expr_t> &result) const
{
}
void
PacExpectationNode::collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const
{

View File

@ -269,9 +269,6 @@ class ExprNode
*/
virtual void collectDynamicVariables(SymbolType type_arg, set<pair<int, int> > &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<int, expr_t> &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<expr_t> &result) const;
virtual void collectDynamicVariables(SymbolType type_arg, set<pair<int, int> > &result) const;
virtual void collectModelLocalVariables(map<int, expr_t> &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<expr_t> &result) const;
virtual void collectDynamicVariables(SymbolType type_arg, set<pair<int, int> > &result) const;
virtual void collectModelLocalVariables(map<int, expr_t> &result) const;
virtual void computeTemporaryTerms(map<expr_t, int > &reference_count,
temporary_terms_t &temporary_terms,
map<expr_t, pair<int, int> > &first_occurence,
@ -756,7 +751,6 @@ public:
int equation) const;
virtual void collectVARLHSVariable(set<expr_t> &result) const;
virtual void collectDynamicVariables(SymbolType type_arg, set<pair<int, int> > &result) const;
virtual void collectModelLocalVariables(map<int, expr_t> &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<expr_t> &result) const;
virtual void collectDynamicVariables(SymbolType type_arg, set<pair<int, int> > &result) const;
virtual void collectModelLocalVariables(map<int, expr_t> &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<expr_t> &result) const;
virtual void collectDynamicVariables(SymbolType type_arg, set<pair<int, int> > &result) const;
virtual void collectModelLocalVariables(map<int, expr_t> &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<expr_t> &result) const;
virtual void collectDynamicVariables(SymbolType type_arg, set<pair<int, int> > &result) const;
virtual void collectModelLocalVariables(map<int, expr_t> &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<expr_t> &result) const;
virtual void collectDynamicVariables(SymbolType type_arg, set<pair<int, int> > &result) const;
virtual void collectModelLocalVariables(map<int, expr_t> &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<expr_t> &result) const;
virtual void collectDynamicVariables(SymbolType type_arg, set<pair<int, int> > &result) const;
virtual void collectModelLocalVariables(map<int, expr_t> &result) const;
virtual bool containsEndogenous(void) const;
virtual bool containsExogenous() const;
virtual bool isDiffPresent(void) const;

View File

@ -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<int, expr_t> used_local_vars;
set<int> 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<int, expr_t>::const_iterator it = used_local_vars.begin();
for (set<int>::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<NodeTreeReference, temporary_terms_t> temp_terms_map;