From f4d2ce70dafd1331791b2fd96f3468b3f6c103da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= Date: Fri, 19 Jun 2020 17:44:05 +0200 Subject: [PATCH] Block decomposition: move logic for Jacobians in stochastic mode outside the dynamic file --- src/DynamicModel.cc | 53 +-------------------------------------------- 1 file changed, 1 insertion(+), 52 deletions(-) diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc index 23a70030..4c48fb50 100644 --- a/src/DynamicModel.cc +++ b/src/DynamicModel.cc @@ -1348,58 +1348,7 @@ DynamicModel::writeDynamicBlockMFile(const string &basename) const << "% Warning : this file is generated automatically by Dynare" << endl << "% from model file (.mod)" << endl << endl << "%" << endl - << endl - << "function [residual, dr] = dynamic(options_, M_, oo_, y, x, params, steady_state, it_, dr)" << endl; - - if (blocks_temporary_terms_idxs.size() > 0) - mDynamicModelFile << " T=NaN(" << blocks_temporary_terms_idxs.size() << ");" << endl; - - mDynamicModelFile << " ys=y;" << endl - << " ll_index=M_.lead_lag_incidence(M_.maximum_endo_lag+1, :);" << endl; - - for (int blk = 0; blk < static_cast(blocks.size()); blk++) - { - int block_size = blocks[blk].size, - block_recursive_size = blocks[blk].getRecursiveSize(); - BlockSimulationType simulation_type = blocks[blk].simulation_type; - - mDynamicModelFile << " y_index_eq=["; - for (int eq = (simulation_type == BlockSimulationType::evaluateForward - || simulation_type == BlockSimulationType::evaluateBackward) - ? 0 : block_recursive_size; eq < block_size; eq++) - mDynamicModelFile << " " << getBlockEquationID(blk, eq)+1; - mDynamicModelFile << "];" << endl - << " y_index=["; - for (int var = (simulation_type == BlockSimulationType::evaluateForward - || simulation_type == BlockSimulationType::evaluateBackward) - ? 0 : block_recursive_size; var < block_size; var++) - mDynamicModelFile << " " << getBlockVariableID(blk, var)+1; - mDynamicModelFile << "];" << endl; - - switch (simulation_type) - { - case BlockSimulationType::evaluateForward: - case BlockSimulationType::evaluateBackward: - mDynamicModelFile << " [y, T, dr(" << blk + 1 << ").g1, dr(" << blk + 1 << ").g1_x, dr(" << blk + 1 << ").g1_xd, dr(" << blk + 1 << ").g1_o]=" << basename << ".block.dynamic_" << blk + 1 << "(y, x, params, steady_state, T, it_, true);" << endl - << " r=NaN(M_.endo_nbr,1);" << endl - << " r(nonzeros(ll_index))=ys(find(ll_index))-y(find(ll_index));" << endl - << " residual(y_index_eq)=r(y_index);" << endl; - break; - case BlockSimulationType::solveForwardSimple: - case BlockSimulationType::solveBackwardSimple: - case BlockSimulationType::solveForwardComplete: - case BlockSimulationType::solveBackwardComplete: - case BlockSimulationType::solveTwoBoundariesComplete: - case BlockSimulationType::solveTwoBoundariesSimple: - mDynamicModelFile << " [r, T, dr(" << blk + 1 << ").g1, dr(" << blk + 1 << ").g1_x, dr(" << blk + 1 << ").g1_xd, dr(" << blk + 1 << ").g1_o]=" << basename << ".block.dynamic_" << blk + 1 << "(y, x, params, steady_state, T, it_, true);" << endl - << " residual(y_index_eq)=r;" << endl; - break; - default: - break; - } - } - - mDynamicModelFile << "end" << endl; + << endl; mDynamicModelFile.close(); }