Ticket #59: add cases for errors that were not being caught and convert AIM error codes so that they don't overlap with other error codes in print_info
parent
9ae3115b9d
commit
85332744d8
|
@ -0,0 +1,58 @@
|
|||
function [info] = convertAimCodeToInfo(aimCode)
|
||||
% function [info] = convertAimCodeToInfo(aimCode)
|
||||
% Returns an appropriate code for print_info
|
||||
%
|
||||
% INPUTS
|
||||
% aimCode [integer] code returned by AIM
|
||||
% (aimCode==1) e='Aim: unique solution.';
|
||||
% (aimCode==2) e='Aim: roots not correctly computed by real_schur.';
|
||||
% (aimCode==3) e='Aim: too many big roots.';
|
||||
% (aimCode==35) e='Aim: too many big roots, and q(:,right) is singular.';
|
||||
% (aimCode==4) e='Aim: too few big roots.';
|
||||
% (aimCode==45) e='Aim: too few big roots, and q(:,right) is singular.';
|
||||
% (aimCode==5) e='Aim: q(:,right) is singular.';
|
||||
% (aimCode==61) e='Aim: too many exact shiftrights.';
|
||||
% (aimCode==62) e='Aim: too many numeric shiftrights.';
|
||||
%
|
||||
% OUTPUTS
|
||||
% info [integer] Code to be used to print error in print_info.m
|
||||
|
||||
% Copyright (C) 2011 Dynare Team
|
||||
%
|
||||
% This file is part of Dynare.
|
||||
%
|
||||
% Dynare is free software: you can redistribute it and/or modify
|
||||
% it under the terms of the GNU General Public License as published by
|
||||
% the Free Software Foundation, either version 3 of the License, or
|
||||
% (at your option) any later version.
|
||||
%
|
||||
% Dynare is distributed in the hope that it will be useful,
|
||||
% but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
% GNU General Public License for more details.
|
||||
%
|
||||
% You should have received a copy of the GNU General Public License
|
||||
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
switch aimCode
|
||||
case 1
|
||||
info = 0; % no problem encountered
|
||||
case 2
|
||||
info = 102;
|
||||
case 3
|
||||
info = 103;
|
||||
case 35
|
||||
info = 135;
|
||||
case 4
|
||||
info = 104;
|
||||
case 45
|
||||
info = 145;
|
||||
case 5
|
||||
info = 105;
|
||||
case 61
|
||||
info = 161;
|
||||
case 62
|
||||
info = 162;
|
||||
otherwise
|
||||
info = 1;
|
||||
end
|
|
@ -230,7 +230,7 @@ if M_.maximum_endo_lead == 0
|
|||
try
|
||||
[dr,aimcode]=dynAIMsolver1(jacobia_,M_,dr);
|
||||
if aimcode ~=1
|
||||
info(1) = aimcode;
|
||||
info(1) = convertAimCodeToInfo(aimcode);
|
||||
info(2) = 1.0e+8;
|
||||
return
|
||||
end
|
||||
|
@ -283,7 +283,7 @@ if (options_.aim_solver == 1) && (task == 0)
|
|||
% reuse some of the bypassed code and tests that may be needed
|
||||
|
||||
if aimcode ~=1
|
||||
info(1) = aimcode;
|
||||
info(1) = convertAimCodeToInfo(aimcode);
|
||||
info(2) = 1.0e+8;
|
||||
return
|
||||
end
|
||||
|
|
|
@ -56,10 +56,36 @@ if ~noprint
|
|||
error('The steady state is complex.')
|
||||
case 30
|
||||
error('Variance can''t be computed')
|
||||
case 41
|
||||
error('one (many) parameter(s) do(es) not satisfy the lower bound');
|
||||
case 42
|
||||
error('one (many) parameter(s) do(es) not satisfy the upper bound');
|
||||
case 43
|
||||
error('Covariance matrix of shocks is not positive definite')
|
||||
case 44 %DsgeLikelihood_hh / DsgeLikelihood
|
||||
error('');
|
||||
case 51
|
||||
error('You are estimating a DSGE-VAR model, but the value of the dsge prior weight is too low!')
|
||||
case 52 %DsgeVarLikelihood
|
||||
error('');
|
||||
|
||||
% Aim Code Conversions by convertAimCodeToInfo.m
|
||||
case 102
|
||||
error('Aim: roots not correctly computed by real_schur.');
|
||||
case 103
|
||||
error('Aim: too many big roots.');
|
||||
case 135
|
||||
error('Aim: too many big roots, and q(:,right) is singular.');
|
||||
case 104
|
||||
error('Aim: too few big roots.');
|
||||
case 145
|
||||
error('Aim: too few big roots, and q(:,right) is singular.');
|
||||
case 105
|
||||
error('Aim: q(:,right) is singular.');
|
||||
case 161
|
||||
error('Aim: too many exact shiftrights.');
|
||||
case 162
|
||||
error('Aim: too many numeric shiftrights.');
|
||||
otherwise
|
||||
error('This case shouldn''t happen. Contact the authors of Dynare')
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue