diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc index 5274ae0fa3c1edfd15e4704b45319bda1ad345ac..3752d0190d2eb1089689382e67ef4815e407de50 100644 --- a/src/DynamicModel.cc +++ b/src/DynamicModel.cc @@ -2383,9 +2383,8 @@ void DynamicModel::computeBlockDynJacobianCols() { size_t nb_blocks { blocks.size() }; - // Structures used for lexicographic ordering over (lag, var ID) - vector<set<pair<int, int>>> dynamic_endo(nb_blocks), dynamic_other_endo(nb_blocks), - dynamic_exo(nb_blocks), dynamic_exo_det(nb_blocks); + // Structure used for lexicographic ordering over (lag, var ID) + vector<set<pair<int, int>>> dynamic_endo(nb_blocks); for (auto & [indices, d1] : derivatives[1]) { @@ -2393,23 +2392,9 @@ DynamicModel::computeBlockDynJacobianCols() int block_eq { eq2block[eq_orig] }; int var { getTypeSpecificIDByDerivID(deriv_id) }; int lag { getLagByDerivID(deriv_id) }; - switch (getTypeByDerivID(deriv_id)) - { - case SymbolType::endogenous: - if (block_eq == endo2block[var]) - dynamic_endo[block_eq].emplace(lag, getBlockInitialVariableID(block_eq, var)); - else - dynamic_other_endo[block_eq].emplace(lag, var); - break; - case SymbolType::exogenous: - dynamic_exo[block_eq].emplace(lag, var); - break; - case SymbolType::exogenousDet: - dynamic_exo_det[block_eq].emplace(lag, var); - break; - default: - break; - } + if (getTypeByDerivID(deriv_id) == SymbolType::endogenous + && block_eq == endo2block[var]) + dynamic_endo[block_eq].emplace(lag, getBlockInitialVariableID(block_eq, var)); } // Compute Jacobian column indices