Stop deterministic simulation if nonlinear solver failure.

Only for purely backward/forward models. In the case of purely static models the
solution for the previous or following period is not required.
fix-nonlinear-solvers
Stéphane Adjemian (Ryûk) 2022-04-10 10:55:40 +02:00
parent 23a72d7aaa
commit 01203f7e39
Signed by: stepan
GPG Key ID: 295C1FE89E17EB3C
2 changed files with 7 additions and 9 deletions

View File

@ -47,9 +47,8 @@ for it = M.maximum_lag + (1:options.periods)
end
if check
info.status = false;
if options.debug
dprintf('sim1_purely_backward: Nonlinear solver routine failed with errorcode=%i. in period %i', errorcode, it)
end
dprintf('sim1_purely_backward: Nonlinear solver routine failed with errorcode=%i. in period %i', errorcode, it)
break
end
endogenousvariables(:,it) = tmp;
end

View File

@ -28,7 +28,7 @@ end
dynamicmodel = str2func(sprintf('%s.%s', M.fname, 'dynamic'));
dynamicmodel_s = str2func('dynamic_forward_model_for_simulation');
info.status = 1;
info.status = true;
for it = options.periods:-1:1
yf = endogenousvariables(:,it+1); % Values at next period, also used as guess value for current period
@ -40,10 +40,9 @@ for it = options.periods:-1:1
dynamicmodel, yf(iyf), exogenousvariables, M.params, steadystate, it);
end
if check
info.status = 0;
if option.debug
dprintf('sim1_purely_forward: Nonlinear solver routine failed with errorcode=%i in period %i.', errorcode, it)
end
info.status = false;
dprintf('sim1_purely_forward: Nonlinear solver routine failed with errorcode=%i in period %i.', errorcode, it)
break
end
endogenousvariables(:,it) = tmp(1:M.endo_nbr);
end
end