88 lines
3.8 KiB
Matlab
88 lines
3.8 KiB
Matlab
|
function model_info;
|
|||
|
global M_;
|
|||
|
fprintf(' Informations about %s\n',M_.fname);
|
|||
|
fprintf(strcat(' ===================',char(ones(1,length(M_.fname))*'='),'\n\n'));
|
|||
|
if(isfield(M_,'block_structure'))
|
|||
|
nb_blocks=length(M_.block_structure.block);
|
|||
|
fprintf('The model has %d equations and is decomposed in %d blocks as follow:\n',M_.endo_nbr,nb_blocks);
|
|||
|
fprintf('==============================================================================================================\n');
|
|||
|
fprintf('| %10s | %10s | %30s | %14s | %30s |\n','Block n<>','Size','Block Type','Equation','Dependent variable');
|
|||
|
fprintf('|============|============|================================|================|================================|\n');
|
|||
|
for i=1:nb_blocks
|
|||
|
size_block=length(M_.block_structure.block(i).equation);
|
|||
|
if(i>1)
|
|||
|
fprintf('|------------|------------|--------------------------------|----------------|--------------------------------|\n');
|
|||
|
end;
|
|||
|
for j=1:size_block
|
|||
|
if(j==1)
|
|||
|
fprintf('| %3d (%4d) | %10d | %30s | %14d | %30s |\n',i,M_.block_structure.block(i).num,size_block,Sym_type(M_.block_structure.block(i).Simulation_Type),M_.block_structure.block(i).equation(j),M_.endo_names(M_.block_structure.block(i).variable(j),:));
|
|||
|
else
|
|||
|
fprintf('| %10s | %10s | %30s | %14d | %30s |\n','','','',M_.block_structure.block(i).equation(j),M_.endo_names(M_.block_structure.block(i).variable(j),:));
|
|||
|
end;
|
|||
|
end;
|
|||
|
end;
|
|||
|
fprintf('==============================================================================================================\n');
|
|||
|
fprintf('\n');
|
|||
|
for k=1:M_.maximum_endo_lag+M_.maximum_endo_lead+1
|
|||
|
if(k==M_.maximum_endo_lag+1)
|
|||
|
fprintf('%-30s %s','the variable','is used in equations contemporously');
|
|||
|
elseif(k<M_.maximum_endo_lag+1)
|
|||
|
fprintf('%-30s %s %d','the variable','is used in equations with lag ',M_.maximum_endo_lag+1-k);
|
|||
|
else
|
|||
|
fprintf('%-30s %s %d','the variable','is used in equations with lead ',k-(M_.maximum_endo_lag+1));
|
|||
|
end;
|
|||
|
if(size(M_.block_structure.incidence(k).sparse_IM,1)>0)
|
|||
|
IM=sortrows(M_.block_structure.incidence(k).sparse_IM,2);
|
|||
|
else
|
|||
|
IM=[];
|
|||
|
end;
|
|||
|
size_IM=size(IM,1);
|
|||
|
last=0;
|
|||
|
for i=1:size_IM
|
|||
|
if(last~=IM(i,2))
|
|||
|
fprintf('\n%-30s',M_.endo_names(IM(i,2),:));
|
|||
|
end;
|
|||
|
fprintf(' %5d',IM(i,1));
|
|||
|
last=IM(i,2);
|
|||
|
end;
|
|||
|
fprintf('\n\n');
|
|||
|
end;
|
|||
|
else
|
|||
|
fprintf('There is no block decomposition of the model.\nUse ''sparse'' or ''sparse_dll'' model''s option.\n');
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
function ret=Sym_type(type);
|
|||
|
EVALUATE_FOREWARD=0;
|
|||
|
EVALUATE_BACKWARD=1;
|
|||
|
SOLVE_FOREWARD_SIMPLE=2;
|
|||
|
SOLVE_BACKWARD_SIMPLE=3;
|
|||
|
SOLVE_TWO_BOUNDARIES_SIMPLE=4;
|
|||
|
SOLVE_FOREWARD_COMPLETE=5;
|
|||
|
SOLVE_BACKWARD_COMPLETE=6;
|
|||
|
SOLVE_TWO_BOUNDARIES_COMPLETE=7;
|
|||
|
EVALUATE_FOREWARD_R=8;
|
|||
|
EVALUATE_BACKWARD_R=9;
|
|||
|
switch (type)
|
|||
|
case {EVALUATE_FOREWARD,EVALUATE_FOREWARD_R},
|
|||
|
ret='EVALUATE FOREWARD ';
|
|||
|
case {EVALUATE_BACKWARD,EVALUATE_BACKWARD_R},
|
|||
|
ret='EVALUATE BACKWARD ';
|
|||
|
case SOLVE_FOREWARD_SIMPLE,
|
|||
|
ret='SOLVE FOREWARD SIMPLE ';
|
|||
|
case SOLVE_BACKWARD_SIMPLE,
|
|||
|
ret='SOLVE BACKWARD SIMPLE ';
|
|||
|
case SOLVE_TWO_BOUNDARIES_SIMPLE,
|
|||
|
ret='SOLVE TWO BOUNDARIES SIMPLE ';
|
|||
|
case SOLVE_FOREWARD_COMPLETE,
|
|||
|
ret='SOLVE FOREWARD COMPLETE ';
|
|||
|
case SOLVE_BACKWARD_COMPLETE,
|
|||
|
ret='SOLVE BACKWARD COMPLETE ';
|
|||
|
case SOLVE_TWO_BOUNDARIES_COMPLETE,
|
|||
|
ret='SOLVE TWO BOUNDARIES COMPLETE';
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|