%VERBOSE class definition
%
% Available verbosity levels:
% mprocessor : model processing
% module : modules
% solution : solution sequence
% solver : solver info (extensive)
% convergence : convergence criteria
% control : control method
% qmu : sensitivity analysis
% autodiff : AD analysis
% smb : smb analysis
%
% Usage:
% verbose=verbose();
% verbose=verbose(3);
% verbose=verbose('all');
% verbose=verbose('001100');
% verbose=verbose('module',true,'solver',false);
%WARNING: some parts of this file are Synchronized with src/c/shared/Numerics/Verbosity.h
% Do not modify these sections. See src/c/shared/Numerics/README for more info
classdef verbose
properties (SetAccess=public)
% {{{
%BEGINFIELDS
mprocessor=false;
module=false;
solution=false;
solver=false;
convergence=false;
control=false;
qmu=false;
autodiff=false;
smb=false;
%ENDFIELDS
% }}}
end
%}}}
methods
function createxml(self,fid) % {{{
fprintf(fid, '\n\n');
fprintf(fid, '%s\n', '');
fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n', '', ' ',' ',' ','');
fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n', '', ' ',' ',' ','');
fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n', '', ' ',' ',' ','');
fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n', '', ' ',' ',' ','');
fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n', '', ' ',' ',' ','');
fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n', '', ' ',' ',' ','');
fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n', '', ' ',' ',' ','');
fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n', '', ' ',' ',' ','');
end % }}}
function verbose=verbose(varargin) % {{{
switch(nargin),
case 0,
verbose.solution=true;
verbose.qmu=true;
verbose.control=true;
case 1,
binary=varargin{1};
if ischar(binary),
if strcmpi(binary,'all'),
binary=2^11-1; %all ones
verbose=BinaryToVerbose(verbose,binary);
verbose.solver=false; %Do not use by default
else
binary=bin2dec(binary);
verbose=BinaryToVerbose(verbose,binary);
end
elseif isnumeric(binary),
verbose=BinaryToVerbose(verbose,binary);
end
otherwise,
%Use options to initialize object
verbose=AssignObjectFields(pairoptions(varargin{:}),verbose);
%Cast to logicals
listproperties=properties('verbose');
for i=1:numel(listproperties),
fieldname=listproperties{i};
fieldvalue=verbose.(fieldname);
if (islogical(fieldvalue) | isnumeric(fieldvalue)) & numel(fieldvalue)==1,
verbose.(fieldname)=logical(fieldvalue);
else
error('verbose supported field values are logicals only (true or false)');
end
end
end
end
%}}}
function binary=VerboseToBinary(verbose) % {{{
%BEGINVERB2BIN
binary=0;
if (verbose.mprocessor), binary=bitor(binary,1); end
if (verbose.module), binary=bitor(binary,2); end
if (verbose.solution), binary=bitor(binary,4); end
if (verbose.solver), binary=bitor(binary,8); end
if (verbose.convergence), binary=bitor(binary,16); end
if (verbose.control), binary=bitor(binary,32); end
if (verbose.qmu), binary=bitor(binary,64); end
if (verbose.autodiff), binary=bitor(binary,128); end
if (verbose.smb), binary=bitor(binary,256); end
%ENDVERB2BIN
end
%}}}
function verbose=BinaryToVerbose(verbose,binary) % {{{
%BEGINBIN2VERB
if bitand(binary,1), verbose.mprocessor=true; else verbose.mprocessor=false; end
if bitand(binary,2), verbose.module=true; else verbose.module=false; end
if bitand(binary,4), verbose.solution=true; else verbose.solution=false; end
if bitand(binary,8), verbose.solver=true; else verbose.solver=false; end
if bitand(binary,16), verbose.convergence=true; else verbose.convergence=false; end
if bitand(binary,32), verbose.control=true; else verbose.control=false; end
if bitand(binary,64), verbose.qmu=true; else verbose.qmu=false; end
if bitand(binary,128), verbose.autodiff=true; else verbose.autodiff=false; end
if bitand(binary,256), verbose.smb=true; else verbose.smb=false; end
%ENDBIN2VERB
end
%}}}
function md = checkconsistency(self,md,solution,analyses) % {{{
end % }}}
function disp(verbose) % {{{
%BEGINDISP
disp(sprintf('class ''%s'' = ',class(verbose)));
disp(sprintf(' %15s : %s','mprocessor',mat2str(verbose.mprocessor)));
disp(sprintf(' %15s : %s','module',mat2str(verbose.module)));
disp(sprintf(' %15s : %s','solution',mat2str(verbose.solution)));
disp(sprintf(' %15s : %s','solver',mat2str(verbose.solver)));
disp(sprintf(' %15s : %s','convergence',mat2str(verbose.convergence)));
disp(sprintf(' %15s : %s','control',mat2str(verbose.control)));
disp(sprintf(' %15s : %s','qmu',mat2str(verbose.qmu)));
disp(sprintf(' %15s : %s','autodiff',mat2str(verbose.autodiff)));
disp(sprintf(' %15s : %s','smb',mat2str(verbose.smb)));
%ENDDISP
end
%}}}
function marshall(self,md,fid) % {{{
WriteData(fid,'data',VerboseToBinary(self),'enum',VerboseEnum(),'format','Integer');
end % }}}
function savemodeljs(self,fid,modelname) % {{{
writejsdouble(fid,[modelname '.verbose.mprocessor'],self.mprocessor);
writejsdouble(fid,[modelname '.verbose.module'],self.module);
writejsdouble(fid,[modelname '.verbose.solution'],self.solution);
writejsdouble(fid,[modelname '.verbose.solver'],self.solver);
writejsdouble(fid,[modelname '.verbose.convergence'],self.convergence);
writejsdouble(fid,[modelname '.verbose.control'],self.control);
writejsdouble(fid,[modelname '.verbose.qmu'],self.qmu);
writejsdouble(fid,[modelname '.verbose.autodiff'],self.autodiff);
writejsdouble(fid,[modelname '.verbose.smb'],self.smb);
end % }}}
end
end