diff --git a/ComputingTasks.cc b/ComputingTasks.cc index d189e34f..2c48c5a4 100644 --- a/ComputingTasks.cc +++ b/ComputingTasks.cc @@ -160,6 +160,50 @@ ForecastStatement::writeOutput(ostream &output, const string &basename) const output << "info = dyn_forecast(var_list_,'simul');" << endl; } +RamseyModelStatement::RamseyModelStatement(const SymbolList &symbol_list_arg, + const OptionsList &options_list_arg) : + symbol_list(symbol_list_arg), + options_list(options_list_arg) +{ +} + +void +RamseyModelStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) +{ + mod_file_struct.ramsey_model_present = true; + + /* Fill in option_order of mod_file_struct + Since ramsey model needs one further order of derivation (for example, for 1st order + approximation, it needs 2nd derivatives), we add 1 to the order declared by user */ + OptionsList::num_options_t::const_iterator it = options_list.num_options.find("order"); + if (it != options_list.num_options.end()) + { + int order = atoi(it->second.c_str()); + if (order > 2) + { + cerr << "ERROR: ramsey_model: order > 2 is not implemented" << endl; + exit(EXIT_FAILURE); + } + mod_file_struct.order_option = max(mod_file_struct.order_option, order + 1); + } + + // Fill in mod_file_struct.partial_information + it = options_list.num_options.find("partial_information"); + if (it != options_list.num_options.end() && it->second == "1") + mod_file_struct.partial_information = true; + + // Option k_order_solver (implicit when order >= 3) + it = options_list.num_options.find("k_order_solver"); + if ((it != options_list.num_options.end() && it->second == "1") + || mod_file_struct.order_option >= 3) + mod_file_struct.k_order_solver = true; +} + +void +RamseyModelStatement::writeOutput(ostream &output, const string &basename) const +{ +} + RamseyPolicyStatement::RamseyPolicyStatement(const SymbolList &symbol_list_arg, const OptionsList &options_list_arg) : symbol_list(symbol_list_arg), diff --git a/ComputingTasks.hh b/ComputingTasks.hh index 8882f2ce..fde8b668 100644 --- a/ComputingTasks.hh +++ b/ComputingTasks.hh @@ -91,6 +91,18 @@ public: virtual void writeOutput(ostream &output, const string &basename) const; }; +class RamseyModelStatement : public Statement +{ +private: + const SymbolList symbol_list; + const OptionsList options_list; +public: + RamseyModelStatement(const SymbolList &symbol_list_arg, + const OptionsList &options_list_arg); + virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings); + virtual void writeOutput(ostream &output, const string &basename) const; +}; + class RamseyPolicyStatement : public Statement { private: