From ebc0b7ecb2a00b242639e0dcfed24f63b03c4302 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Fri, 19 Jun 2020 17:44:31 +0200
Subject: [PATCH] Block decomposition: move logic for Jacobians in stochastic
 mode outside the dynamic file

---
 matlab/dr_block.m | 12 +++++++++---
 preprocessor      |  2 +-
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/matlab/dr_block.m b/matlab/dr_block.m
index 24243c27c2..ce28abdb61 100644
--- a/matlab/dr_block.m
+++ b/matlab/dr_block.m
@@ -70,10 +70,16 @@ else
     data = M_;
     Size = 1;
 end
-if (options_.bytecode)
-    [zz, data]= bytecode('dynamic','evaluate', z, zx, M_.params, dr.ys, 1, data);
+if options_.bytecode
+    [~, data]= bytecode('dynamic','evaluate', z, zx, M_.params, dr.ys, 1, data);
 else
-    [r, data] = feval([M_.fname '.dynamic'], options_, M_, oo_, dynvars_from_endo_simul(z, M_.maximum_lag+1, M_), zx, M_.params, dr.ys, M_.maximum_lag+1, data);
+    T=NaN(M_.block_structure.dyn_tmp_nbr, 1);
+    it_=M_.maximum_lag+1;
+    y=dynvars_from_endo_simul(z, it_, M_);
+    for blk = 1:length(M_.block_structure.block)
+        funcname = sprintf('%s.block.dynamic_%d', M_.fname, blk);
+        [~, T, data(blk).g1, data(blk).g1_x, data(blk).g1_xd, data(blk).g1_o]=feval(funcname, y, zx, M_.params, dr.ys, T, it_, true);
+    end
 end
 dr.full_rank = 1;
 dr.eigval = [];
diff --git a/preprocessor b/preprocessor
index 92aff91066..f4d2ce70da 160000
--- a/preprocessor
+++ b/preprocessor
@@ -1 +1 @@
-Subproject commit 92aff91066315b7975f5de60542a255b912278f3
+Subproject commit f4d2ce70dafd1331791b2fd96f3468b3f6c103da
-- 
GitLab