diff --git a/src/Bytecode.cc b/src/Bytecode.cc index 54cdf2688534da00350215a65d3036c1447c2ab7..06021a7317f78d48bdfe513f1cc94f1d293aa593 100644 --- a/src/Bytecode.cc +++ b/src/Bytecode.cc @@ -82,8 +82,6 @@ operator<<(BytecodeWriter &code_file, const FBEGINBLOCK_ &instr) { code_file.write(reinterpret_cast<const char *>(&instr.is_linear), sizeof instr.is_linear); code_file.write(reinterpret_cast<const char *>(&instr.endo_nbr), sizeof instr.endo_nbr); - code_file.write(reinterpret_cast<const char *>(&instr.Max_Lag), sizeof instr.Max_Lag); - code_file.write(reinterpret_cast<const char *>(&instr.Max_Lead), sizeof instr.Max_Lead); code_file.write(reinterpret_cast<const char *>(&instr.u_count_int), sizeof instr.u_count_int); } code_file.write(reinterpret_cast<const char *>(&instr.nb_col_jacob), sizeof instr.nb_col_jacob); diff --git a/src/Bytecode.hh b/src/Bytecode.hh index 45e1d76ef4ea568d2aca10897b28501530d58655..54ca053814b2307619e7ecf2105be20cdf8ba334 100644 --- a/src/Bytecode.hh +++ b/src/Bytecode.hh @@ -899,8 +899,6 @@ private: bool is_linear{false}; vector<Block_contain_type> Block_Contain_; int endo_nbr{0}; - int Max_Lag{0}; - int Max_Lead{0}; int u_count_int{0}; int nb_col_jacob{0}; int det_exo_size, exo_size; @@ -914,7 +912,7 @@ public: derivatives w.r.t. endogenous not belonging to the block) */ FBEGINBLOCK_(int size_arg, BlockSimulationType type_arg, int first_element, int block_size, const vector<int> &variable_arg, const vector<int> &equation_arg, - bool is_linear_arg, int endo_nbr_arg, int Max_Lag_arg, int Max_Lead_arg, int u_count_int_arg, int nb_col_jacob_arg, + bool is_linear_arg, int endo_nbr_arg, int u_count_int_arg, int nb_col_jacob_arg, int det_exo_size_arg, int exo_size_arg, vector<int> det_exogenous_arg, vector<int> exogenous_arg) : BytecodeInstruction{Tags::FBEGINBLOCK}, @@ -926,8 +924,6 @@ public: det_exogenous{move(det_exogenous_arg)}, is_linear{is_linear_arg}, endo_nbr{endo_nbr_arg}, - Max_Lag{Max_Lag_arg}, - Max_Lead{Max_Lead_arg}, u_count_int{u_count_int_arg}, nb_col_jacob{nb_col_jacob_arg}, det_exo_size{det_exo_size_arg}, @@ -937,7 +933,7 @@ public: // Constructor when derivatives w.r.t. exogenous are absent FBEGINBLOCK_(int size_arg, BlockSimulationType type_arg, int first_element, int block_size, const vector<int> &variable_arg, const vector<int> &equation_arg, - bool is_linear_arg, int endo_nbr_arg, int Max_Lag_arg, int Max_Lead_arg, int u_count_int_arg, int nb_col_jacob_arg) : + bool is_linear_arg, int endo_nbr_arg, int u_count_int_arg, int nb_col_jacob_arg) : BytecodeInstruction{Tags::FBEGINBLOCK}, size{size_arg}, type{type_arg}, @@ -945,8 +941,6 @@ public: equation{equation_arg.begin()+first_element, equation_arg.begin()+(first_element+block_size)}, is_linear{is_linear_arg}, endo_nbr{endo_nbr_arg}, - Max_Lag{Max_Lag_arg}, - Max_Lead{Max_Lead_arg}, u_count_int{u_count_int_arg}, nb_col_jacob{nb_col_jacob_arg}, det_exo_size{0}, @@ -974,16 +968,6 @@ public: return endo_nbr; }; int - get_Max_Lag() - { - return Max_Lag; - }; - int - get_Max_Lead() - { - return Max_Lead; - }; - int get_u_count_int() { return u_count_int; @@ -1040,8 +1024,6 @@ public: { memcpy(&is_linear, code, sizeof(is_linear)); code += sizeof(is_linear); memcpy(&endo_nbr, code, sizeof(endo_nbr)); code += sizeof(endo_nbr); - memcpy(&Max_Lag, code, sizeof(Max_Lag)); code += sizeof(Max_Lag); - memcpy(&Max_Lead, code, sizeof(Max_Lead)); code += sizeof(Max_Lead); memcpy(&u_count_int, code, sizeof(u_count_int)); code += sizeof(u_count_int); } memcpy(&nb_col_jacob, code, sizeof(nb_col_jacob)); code += sizeof(nb_col_jacob); diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc index b64ac641cc01aa94b85dc7ba12f6acb4cd4840c2..b4437e8e6638702982b90279604e279313030530 100644 --- a/src/DynamicModel.cc +++ b/src/DynamicModel.cc @@ -182,8 +182,6 @@ DynamicModel::writeDynamicBytecode(const string &basename) const eq_idx, false, symbol_table.endo_nbr(), - max_endo_lag, - max_endo_lead, u_count_int, jacobian_ncols_endo, symbol_table.exo_det_nbr(), @@ -230,8 +228,6 @@ DynamicModel::writeDynamicBlockBytecode(const string &basename) const eq_idx_block2orig, blocks[block].linear, symbol_table.endo_nbr(), - blocks[block].max_lag, - blocks[block].max_lead, u_count, static_cast<int>(blocks_jacob_cols_endo[block].size())}; @@ -2309,8 +2305,8 @@ DynamicModel::determineBlockDerivativesType(int blk) map<tuple<int, int, int>, BlockDerivativeType> derivType; int size = blocks[blk].size; int nb_recursive = blocks[blk].getRecursiveSize(); - for (int lag {time_recursive_block_decomposition ? 0 : -blocks[blk].max_lag}; - lag <= (time_recursive_block_decomposition ? 0 : blocks[blk].max_lead); + for (int lag {time_recursive_block_decomposition ? 0 : -blocks[blk].max_endo_lag}; + lag <= (time_recursive_block_decomposition ? 0 : blocks[blk].max_endo_lead); lag++) for (int eq = 0; eq < size; eq++) { diff --git a/src/ModelTree.cc b/src/ModelTree.cc index 32827dd269e67dc49fdcaa658458f565e26d302c..9e780a58beb5c82adaeceaa2e1be0437f3e745fc 100644 --- a/src/ModelTree.cc +++ b/src/ModelTree.cc @@ -536,16 +536,13 @@ ModelTree::computeDynamicStructureOfBlock(int blk) { vector max_endo_lag_lead(blocks[blk].size, pair{0, 0}); blocks[blk].max_endo_lag = blocks[blk].max_endo_lead = 0; - blocks[blk].max_other_endo_lag = blocks[blk].max_other_endo_lead = 0; - blocks[blk].max_exo_lag = blocks[blk].max_exo_lead = 0; - blocks[blk].max_exo_det_lag = blocks[blk].max_exo_det_lead = 0; for (int eq = 0; eq < blocks[blk].size; eq++) { set<pair<int, int>> endos_and_lags; expr_t e = getBlockEquationExpr(blk, eq); - /* Compute max lags/leads for endogenous. Also fill per-variable structure - for endos belonging to this block */ + /* Compute max lags/leads and per-variable structure for endos belonging + to this block */ e->collectEndogenous(endos_and_lags); for (auto [endo, lag] : endos_and_lags) if (endo2block[endo] == blk) @@ -556,33 +553,7 @@ ModelTree::computeDynamicStructureOfBlock(int blk) max_endo_lag = max(max_endo_lag, -lag); max_endo_lead = max(max_endo_lead, lag); } - else - { - blocks[blk].max_other_endo_lag = max(blocks[blk].max_other_endo_lag, -lag); - blocks[blk].max_other_endo_lead = max(blocks[blk].max_other_endo_lead, lag); - } - - // Compute max lags/leads for exogenous - blocks[blk].max_exo_lag = max(e->maxExoLag(), blocks[blk].max_exo_lag); - blocks[blk].max_exo_lead = max(e->maxExoLead(), blocks[blk].max_exo_lead); - - // Compute max lags/leads for deterministic exogenous - set<pair<int, int>> dynvars; - e->collectDynamicVariables(SymbolType::exogenousDet, dynvars); - for (auto [symb_id, lag] : dynvars) - { - blocks[blk].max_exo_det_lag = max(-lag, blocks[blk].max_exo_det_lag); - blocks[blk].max_exo_det_lead = max(lag, blocks[blk].max_exo_det_lead); - } } - - // Compute max lags/leads over all variables - blocks[blk].max_lag = max(blocks[blk].max_endo_lag, max(blocks[blk].max_other_endo_lag, - max(blocks[blk].max_exo_lag, - blocks[blk].max_exo_det_lag))); - blocks[blk].max_lead = max(blocks[blk].max_endo_lead, max(blocks[blk].max_other_endo_lead, - max(blocks[blk].max_exo_lead, - blocks[blk].max_exo_det_lead))); } void diff --git a/src/ModelTree.hh b/src/ModelTree.hh index 73f83a434c55bd0c859768b5ebea6a70a57d2d3f..7ae3f4f50835e9541ee210dc1ff813e994b28c02 100644 --- a/src/ModelTree.hh +++ b/src/ModelTree.hh @@ -196,10 +196,6 @@ protected: int mfs_size{0}; // Size of the minimal feedback set bool linear{true}; // Whether the block is linear in endogenous variable int max_endo_lag{0}, max_endo_lead{0}; // Maximum lag/lead on endos that appear in and *that belong to* the block - int max_other_endo_lag{0}, max_other_endo_lead{0}; // Maximum lag/lead on endos that appear in but do not belong to the block - int max_exo_lag{0}, max_exo_lead{0}; - int max_exo_det_lag{0}, max_exo_det_lead{0}; - int max_lag{0}, max_lead{0}; // The max over all endo/exo variables int getRecursiveSize() const diff --git a/src/StaticModel.cc b/src/StaticModel.cc index f86bf114b26fdede72a1118c23c609f3d942c4f7..4ddb82a060b36f3b74b17ca704a929cab49eba6b 100644 --- a/src/StaticModel.cc +++ b/src/StaticModel.cc @@ -118,8 +118,6 @@ StaticModel::writeStaticBytecode(const string &basename) const eq_idx, false, symbol_table.endo_nbr(), - 0, - 0, u_count_int, symbol_table.endo_nbr()}; @@ -160,8 +158,6 @@ StaticModel::writeStaticBlockBytecode(const string &basename) const eq_idx_block2orig, blocks[block].linear, symbol_table.endo_nbr(), - 0, - 0, u_count, block_size};