trunk preprocessor: added option "notmpterms" to dynare command, for disabling temporary terms in static and dynamic files

git-svn-id: https://www.dynare.org/svn/dynare/dynare_v4@2226 ac1d8469-bf42-47a9-8791-bf33cf982152
time-shift
sebastien 2008-10-29 15:10:51 +00:00
parent 6eadbe0005
commit 342f32b59c
8 changed files with 21 additions and 13 deletions

View File

@ -840,7 +840,7 @@ void
PlannerObjectiveStatement::computingPass()
{
model_tree->computeStaticHessian = true;
model_tree->computingPass(eval_context_type());
model_tree->computingPass(eval_context_type(), false);
}
void

View File

@ -32,7 +32,7 @@ using namespace std;
Splitting main() in two parts was necessary because ParsingDriver.h and MacroDriver.h can't be
included simultaneously (because of Bison limitations).
*/
void main2(stringstream &in, string &basename, bool debug, bool clear_all);
void main2(stringstream &in, string &basename, bool debug, bool clear_all, bool no_tmp_terms);
int
main(int argc, char** argv)
@ -47,6 +47,7 @@ main(int argc, char** argv)
bool clear_all = true;
bool save_macro = false;
bool debug = false;
bool no_tmp_terms = false;
// Parse options
for (int arg = 2; arg < argc; arg++)
@ -57,6 +58,8 @@ main(int argc, char** argv)
clear_all = false;
else if (string(argv[arg]) == string("savemacro"))
save_macro = true;
else if (string(argv[arg]) == string("notmpterms"))
no_tmp_terms = true;
}
cout << "Starting Dynare ..." << endl
@ -86,7 +89,7 @@ main(int argc, char** argv)
}
// Do the rest
main2(macro_output, basename, debug, clear_all);
main2(macro_output, basename, debug, clear_all, no_tmp_terms);
return 0;
}

View File

@ -25,7 +25,7 @@ using namespace std;
#include "ModFile.hh"
void
main2(stringstream &in, string &basename, bool debug, bool clear_all)
main2(stringstream &in, string &basename, bool debug, bool clear_all, bool no_tmp_terms)
{
ParsingDriver p;
@ -36,7 +36,7 @@ main2(stringstream &in, string &basename, bool debug, bool clear_all)
mod_file->checkPass();
// Do computations
mod_file->computingPass();
mod_file->computingPass(no_tmp_terms);
// Write outputs
mod_file->writeOutputFiles(basename, clear_all);

View File

@ -91,7 +91,7 @@ ModFile::checkPass()
}
void
ModFile::computingPass()
ModFile::computingPass(bool no_tmp_terms)
{
// Mod file may have no equation (for example in a standalone BVAR estimation)
if (model_tree.equation_number() > 0)
@ -113,7 +113,7 @@ ModFile::computingPass()
model_tree.computeThirdDerivatives = true;
}
model_tree.computingPass(global_eval_context);
model_tree.computingPass(global_eval_context, no_tmp_terms);
}
for(vector<Statement *>::iterator it = statements.begin();

View File

@ -3140,7 +3140,7 @@ ModelTree::BlockLinear(Model_Block *ModelBlock)
}
void
ModelTree::computingPass(const eval_context_type &eval_context)
ModelTree::computingPass(const eval_context_type &eval_context, bool no_tmp_terms)
{
cout << equations.size() << " equation(s) found" << endl;
@ -3171,10 +3171,12 @@ ModelTree::computingPass(const eval_context_type &eval_context)
block_triangular.Normalize_and_BlockDecompose_Static_0_Model(j_m);
BlockLinear(block_triangular.ModelBlock);
computeTemporaryTermsOrdered(order, block_triangular.ModelBlock);
if (!no_tmp_terms)
computeTemporaryTermsOrdered(order, block_triangular.ModelBlock);
}
else
computeTemporaryTerms(order);
if (!no_tmp_terms)
computeTemporaryTerms(order);
}
void

View File

@ -434,6 +434,7 @@ public:
/*! \todo check there are only endogenous variables at the current period in the objective
(no exogenous, no lead/lag) */
virtual void checkPass(ModFileStructure &mod_file_struct);
/*! \todo allow for the possibility of disabling temporary terms */
virtual void computingPass();
virtual void writeOutput(ostream &output, const string &basename) const;
};

View File

@ -63,7 +63,8 @@ public:
/*! \todo add check for number of equations and endogenous if ramsey_policy is present */
void checkPass();
//! Execute computations
void computingPass();
/*! \param no_tmp_terms if true, no temporary terms will be computed in the static and dynamic files */
void computingPass(bool no_tmp_terms);
//! Writes Matlab/Scilab output files
/*!
\param basename The base name used for writing output files. Should be the name of the mod file without its extension

View File

@ -157,8 +157,9 @@ public:
//! Whether dynamic third order derivatives (w.r. to endogenous and exogenous) should be written
bool computeThirdDerivatives;
//! Execute computations (variable sorting + derivation)
/*! You must set computeJacobian, computeJacobianExo, computeHessian, computeStaticHessian and computeThirdDerivatives to correct values before calling this function */
void computingPass(const eval_context_type &eval_context);
/*! You must set computeJacobian, computeJacobianExo, computeHessian, computeStaticHessian and computeThirdDerivatives to correct values before calling this function
\param no_tmp_terms if true, no temporary terms will be computed in the static and dynamic files */
void computingPass(const eval_context_type &eval_context, bool no_tmp_terms);
//! Writes model initialization and lead/lag incidence matrix to output
void writeOutput(ostream &output) const;
//! Writes static model file