From da63d21f0d679b193ddcf91515976558211185ec Mon Sep 17 00:00:00 2001 From: Michel Juillard Date: Mon, 4 Apr 2016 17:11:03 +0200 Subject: [PATCH] fixing problems with Ramsey policy and auxiliary variables --- StaticModel.cc | 14 +++++++++++--- StaticModel.hh | 3 ++- SteadyStateModel.cc | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/StaticModel.cc b/StaticModel.cc index dbd636d5..d6bef86d 100644 --- a/StaticModel.cc +++ b/StaticModel.cc @@ -1739,7 +1739,7 @@ StaticModel::writeStaticFile(const string &basename, bool block, bool bytecode, writeStaticJuliaFile(basename); else writeStaticMFile(basename); - writeAuxVarRecursiveDefinitions(basename, julia); + writeSetAuxiliaryVariables(basename, julia); } void @@ -2099,8 +2099,9 @@ StaticModel::writeAuxVarInitval(ostream &output, ExprNodeOutputType output_type) } } -void StaticModel::writeAuxVarRecursiveDefinitions(const string &basename, const bool julia) const +void StaticModel::writeSetAuxiliaryVariables(const string &basename, const bool julia) const { + string func_name = basename + "_set_auxiliary_variables"; string filename = julia ? func_name + ".jl" : func_name + ".m"; string comment = julia ? "#" : "%"; @@ -2127,10 +2128,17 @@ void StaticModel::writeAuxVarRecursiveDefinitions(const string &basename, const if (dynamic_cast(aux_equations[i])->containsExternalFunction()) dynamic_cast(aux_equations[i])->writeExternalFunctionOutput(output, oMatlabStaticModel, temporary_terms, tef_terms); + writeAuxVarRecursiveDefinitions(output, oMatlabStaticModel); +} +void +StaticModel::writeAuxVarRecursiveDefinitions(ostream &output, ExprNodeOutputType output_type) const +{ + deriv_node_temp_terms_t tef_terms; + temporary_terms_t temporary_terms; for (int i = 0; i < (int) aux_equations.size(); i++) { - dynamic_cast(aux_equations[i]->substituteStaticAuxiliaryDefinition())->writeOutput(output, oMatlabStaticModel, temporary_terms, tef_terms); + dynamic_cast(aux_equations[i]->substituteStaticAuxiliaryDefinition())->writeOutput(output, output_type, temporary_terms, tef_terms); output << ";" << endl; } } diff --git a/StaticModel.hh b/StaticModel.hh index 90a3aebb..5dfc5dda 100644 --- a/StaticModel.hh +++ b/StaticModel.hh @@ -183,7 +183,8 @@ public: void writeAuxVarInitval(ostream &output, ExprNodeOutputType output_type) const; //! Writes definition of the auxiliary variables in a .m or .jl file - void writeAuxVarRecursiveDefinitions(const string &basename, const bool julia) const; + void writeSetAuxiliaryVariables(const string &basename, const bool julia) const; + void writeAuxVarRecursiveDefinitions(ostream &output, ExprNodeOutputType output_type) const; virtual int getDerivID(int symb_id, int lag) const throw (UnknownDerivIDException); virtual void addAllParamDerivId(set &deriv_id_set); diff --git a/SteadyStateModel.cc b/SteadyStateModel.cc index 4533c41f..61220a80 100644 --- a/SteadyStateModel.cc +++ b/SteadyStateModel.cc @@ -161,7 +161,7 @@ SteadyStateModel::writeSteadyStateFile(const string &basename, bool ramsey_model output << " % Auxiliary equations" << endl; else output << " # Auxiliary equations" << endl; - static_model.writeAuxVarInitval(output, output_type); + static_model.writeAuxVarRecursiveDefinitions(output, output_type); if (!julia) output << " check_=0;" << endl;