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(k0) 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;