From aa12dc6d5baf5c32427cd6b1c99dc3a49896cdb6 Mon Sep 17 00:00:00 2001 From: Michel Juillard <michel.juillard@mjui.fr> Date: Fri, 8 Apr 2016 21:45:44 +0200 Subject: [PATCH] fixed issue with auxiliary variables and external function --- StaticModel.cc | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/StaticModel.cc b/StaticModel.cc index f3a5d866..898b48e3 100644 --- a/StaticModel.cc +++ b/StaticModel.cc @@ -2122,12 +2122,6 @@ void StaticModel::writeSetAuxiliaryVariables(const string &basename, const bool << comment << " from model file (.mod)" << endl << endl; - deriv_node_temp_terms_t tef_terms; - temporary_terms_t temporary_terms; - for (int i = 0; i < (int) aux_equations.size(); i++) - if (dynamic_cast<ExprNode *>(aux_equations[i])->containsExternalFunction()) - dynamic_cast<ExprNode *>(aux_equations[i])->writeExternalFunctionOutput(output, oMatlabStaticModel, - temporary_terms, tef_terms); writeAuxVarRecursiveDefinitions(output, oMatlabStaticModel); } @@ -2135,9 +2129,14 @@ 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++) + if (dynamic_cast<ExprNode *>(aux_equations[i])->containsExternalFunction()) + dynamic_cast<ExprNode *>(aux_equations[i])->writeExternalFunctionOutput(output, oMatlabStaticModel, + temporary_terms, tef_terms); for (int i = 0; i < (int) aux_equations.size(); i++) { - dynamic_cast<ExprNode *>(aux_equations[i]->substituteStaticAuxiliaryDefinition())->writeOutput(output, output_type); + dynamic_cast<ExprNode *>(aux_equations[i]->substituteStaticAuxiliaryDefinition())->writeOutput(output, output_type, temporary_terms, tef_terms); output << ";" << endl; } } -- GitLab