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-bf33cf982152time-shift
parent
6eadbe0005
commit
342f32b59c
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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,9 +3171,11 @@ ModelTree::computingPass(const eval_context_type &eval_context)
|
|||
block_triangular.Normalize_and_BlockDecompose_Static_0_Model(j_m);
|
||||
BlockLinear(block_triangular.ModelBlock);
|
||||
|
||||
if (!no_tmp_terms)
|
||||
computeTemporaryTermsOrdered(order, block_triangular.ModelBlock);
|
||||
}
|
||||
else
|
||||
if (!no_tmp_terms)
|
||||
computeTemporaryTerms(order);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue