From 8b94cb1ab0e35152fb24cd767ee8e055e7a61f54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Scylla=29?= <stephane.adjemian@univ-lemans.fr> Date: Thu, 31 Aug 2017 10:19:43 +0200 Subject: [PATCH] Added option stochastic to Dynare command. --- DynareMain.cc | 9 ++++++--- DynareMain2.cc | 6 +++--- ModFile.cc | 10 ++++++---- ModFile.hh | 4 ++-- 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/DynareMain.cc b/DynareMain.cc index bee2ce3a..8176d6f9 100644 --- a/DynareMain.cc +++ b/DynareMain.cc @@ -39,7 +39,7 @@ void main2(stringstream &in, string &basename, bool debug, bool clear_all, bool clear_global, bool no_tmp_terms, bool no_log, bool no_warn, bool warn_uninit, bool console, bool nograph, bool nointeractive, bool parallel, ConfigFile &config_file, - WarningConsolidation &warnings_arg, bool nostrict, bool check_model_changes, + WarningConsolidation &warnings_arg, bool nostrict, bool stochastic, bool check_model_changes, bool minimal_workspace, bool compute_xrefs, FileOutputType output_mode, LanguageOutputType lang, int params_derivs_order #if defined(_WIN32) || defined(__CYGWIN32__) || defined(__MINGW32__) @@ -57,7 +57,7 @@ usage() { cerr << "Dynare usage: dynare mod_file [debug] [noclearall] [onlyclearglobals] [savemacro[=macro_file]] [onlymacro] [nolinemacro] [notmpterms] [nolog] [warn_uninit]" << " [console] [nograph] [nointeractive] [parallel[=cluster_name]] [conffile=parallel_config_path_and_filename] [parallel_slave_open_mode] [parallel_test]" - << " [-D<variable>[=<value>]] [-I/path] [nostrict] [fast] [minimal_workspace] [compute_xrefs] [output=dynamic|first|second|third] [language=C|C++|julia]" + << " [-D<variable>[=<value>]] [-I/path] [nostrict] [stochastic] [fast] [minimal_workspace] [compute_xrefs] [output=dynamic|first|second|third] [language=C|C++|julia]" << " [params_derivs_order=0|1|2]" #if defined(_WIN32) || defined(__CYGWIN32__) || defined(__MINGW32__) << " [cygwin] [msvc] [mingw]" @@ -109,6 +109,7 @@ main(int argc, char **argv) bool parallel_slave_open_mode = false; bool parallel_test = false; bool nostrict = false; + bool stochastic = false; bool check_model_changes = false; bool minimal_workspace = false; bool compute_xrefs = false; @@ -197,6 +198,8 @@ main(int argc, char **argv) parallel_test = true; else if (!strcmp(argv[arg], "nostrict")) nostrict = true; + else if (!strcmp(argv[arg], "stochastic")) + stochastic = true; else if (!strcmp(argv[arg], "fast")) check_model_changes = true; else if (!strcmp(argv[arg], "minimal_workspace")) @@ -365,7 +368,7 @@ main(int argc, char **argv) // Do the rest main2(macro_output, basename, debug, clear_all, clear_global, no_tmp_terms, no_log, no_warn, warn_uninit, console, nograph, nointeractive, - parallel, config_file, warnings, nostrict, check_model_changes, minimal_workspace, + parallel, config_file, warnings, nostrict, stochastic, check_model_changes, minimal_workspace, compute_xrefs, output_mode, language, params_derivs_order #if defined(_WIN32) || defined(__CYGWIN32__) || defined(__MINGW32__) , cygwin, msvc, mingw diff --git a/DynareMain2.cc b/DynareMain2.cc index e0a9e539..6f0e1139 100644 --- a/DynareMain2.cc +++ b/DynareMain2.cc @@ -28,7 +28,7 @@ void main2(stringstream &in, string &basename, bool debug, bool clear_all, bool clear_global, bool no_tmp_terms, bool no_log, bool no_warn, bool warn_uninit, bool console, bool nograph, bool nointeractive, bool parallel, ConfigFile &config_file, - WarningConsolidation &warnings, bool nostrict, bool check_model_changes, + WarningConsolidation &warnings, bool nostrict, bool stochastic, bool check_model_changes, bool minimal_workspace, bool compute_xrefs, FileOutputType output_mode, LanguageOutputType language, int params_derivs_order #if defined(_WIN32) || defined(__CYGWIN32__) || defined(__MINGW32__) @@ -45,12 +45,12 @@ main2(stringstream &in, string &basename, bool debug, bool clear_all, bool clear mod_file->writeJsonOutput(basename, json, json_output_mode, onlyjson); // Run checking pass - mod_file->checkPass(nostrict); + mod_file->checkPass(nostrict, stochastic); if (json == checkpass) mod_file->writeJsonOutput(basename, json, json_output_mode, onlyjson); // Perform transformations on the model (creation of auxiliary vars and equations) - mod_file->transformPass(nostrict, compute_xrefs || json == transformpass); + mod_file->transformPass(nostrict, stochastic, compute_xrefs || json == transformpass); if (json == transformpass) mod_file->writeJsonOutput(basename, json, json_output_mode, onlyjson); diff --git a/ModFile.cc b/ModFile.cc index 6fea425e..3af3faa5 100644 --- a/ModFile.cc +++ b/ModFile.cc @@ -107,7 +107,7 @@ ModFile::addStatementAtFront(Statement *st) } void -ModFile::checkPass(bool nostrict) +ModFile::checkPass(bool nostrict, bool stochastic) { for (vector<Statement *>::iterator it = statements.begin(); it != statements.end(); it++) @@ -136,7 +136,8 @@ ModFile::checkPass(bool nostrict) || mod_file_struct.osr_present || mod_file_struct.ramsey_policy_present || mod_file_struct.discretionary_policy_present - || mod_file_struct.calib_smoother_present; + || mod_file_struct.calib_smoother_present + || stochastic; // Allow empty model only when doing a standalone BVAR estimation if (dynamic_model.equation_number() == 0 @@ -339,7 +340,7 @@ ModFile::checkPass(bool nostrict) } void -ModFile::transformPass(bool nostrict, bool compute_xrefs) +ModFile::transformPass(bool nostrict, bool stochastic, bool compute_xrefs) { // Save the original model (must be done before any model transformations by preprocessor) dynamic_model.setLeadsLagsOrig(); @@ -398,7 +399,8 @@ ModFile::transformPass(bool nostrict, bool compute_xrefs) || mod_file_struct.osr_present || mod_file_struct.ramsey_policy_present || mod_file_struct.discretionary_policy_present - || mod_file_struct.calib_smoother_present) + || mod_file_struct.calib_smoother_present + || stochastic ) { // In stochastic models, create auxiliary vars for leads and lags greater than 2, on both endos and exos dynamic_model.substituteEndoLeadGreaterThanTwo(false); diff --git a/ModFile.hh b/ModFile.hh index 7744d928..216542cb 100644 --- a/ModFile.hh +++ b/ModFile.hh @@ -131,10 +131,10 @@ public: void evalAllExpressions(bool warn_uninit); //! Do some checking and fills mod_file_struct /*! \todo add check for number of equations and endogenous if ramsey_policy is present */ - void checkPass(bool nostrict); + void checkPass(bool nostrict, bool stochastic); //! Perform some transformations on the model (creation of auxiliary vars and equations) /*! \param compute_xrefs if true, equation cross references will be computed */ - void transformPass(bool nostrict, bool compute_xrefs); + void transformPass(bool nostrict, bool stochastic, bool compute_xrefs); //! Execute computations /*! \param no_tmp_terms if true, no temporary terms will be computed in the static and dynamic files */ /*! \param params_derivs_order compute this order of derivs wrt parameters */ -- GitLab