source: issm/trunk-jpl/src/m/classes/verbose.m@ 11867

Last change on this file since 11867 was 11867, checked in by Mathieu Morlighem, 13 years ago

Pairoptions less restrictive for now

File size: 3.8 KB
RevLine 
[6304]1%VERBOSE class definition
2%
[6583]3% Available verbosity levels:
4% mprocessor : model processing
5% module : modules
6% solution : solution sequence
7% solver : solver info (extensive)
8% convergence : convergence criteria
9% control : control method
10% qmu : sensitivity analysis
11%
[6304]12% Usage:
13% verbose=verbose();
14% verbose=verbose(3);
15% verbose=verbose('001100');
16% verbose=verbose('module',true,'solver',false);
17
[6315]18%WARNING: some parts of this file are Synchronized with src/c/shared/Numerics/Verbosity.h
19% Do not modify these sections. See src/c/shared/Numerics/README for more info
20
[6304]21classdef verbose
[6315]22 properties (SetAccess=public)
23 % {{{1
24 %BEGINFIELDS
[10969]25 mprocessor = false;
26 module = false;
27 solution = false;
28 solver = false;
29 convergence = false;
30 control = false;
31 qmu = false;
[6315]32 %ENDFIELDS
33 % }}}
34 end
35 %}}}
36 methods
37 function verbose=verbose(varargin) % {{{1
[6304]38
[11867]39 switch(nargin),
40 case 0,
41 %Don't do anything
42 case 1,
43 binary=varargin{1};
44 if ischar(binary),
45 if strcmpi(binary,'all'),
46 binary=2^11-1; %all ones
47 verbose=BinaryToVerbose(verbose,binary);
48 verbose.solver=false; %Do not use by default
49 else
50 binary=bin2dec(binary);
51 verbose=BinaryToVerbose(verbose,binary);
52 end
53 end
54 otherwise,
55 %Use options to initialize object
56 verbose=AssignObjectFields(pairoptions(varargin{:}),verbose);
[6304]57
[11867]58 %Cast to logicals
59 listproperties=properties('verbose');
60 for i=1:numel(listproperties),
61 fieldname=listproperties{i};
62 fieldvalue=verbose.(fieldname);
63 if (islogical(fieldvalue) | isnumeric(fieldvalue)) & numel(fieldvalue)==1,
[7872]64 verbose.(fieldname)=logical(fieldvalue);
65 else
66 error('verbose supported field values are logicals only (true or false)');
67 end
[6315]68 end
69 end
70 end
71 %}}}
72 function binary=VerboseToBinary(verbose) % {{{1
[6304]73
[6315]74 %BEGINVERB2BIN
75 binary=0;
[6323]76 if (verbose.mprocessor), binary=bitor(binary,1); end
77 if (verbose.module), binary=bitor(binary,2); end
78 if (verbose.solution), binary=bitor(binary,4); end
[6315]79 if (verbose.solver), binary=bitor(binary,8); end
[6323]80 if (verbose.convergence), binary=bitor(binary,16); end
81 if (verbose.control), binary=bitor(binary,32); end
82 if (verbose.qmu), binary=bitor(binary,64); end
[6315]83 %ENDVERB2BIN
[6304]84
[6315]85 end
86 %}}}
87 function verbose=BinaryToVerbose(verbose,binary) % {{{1
[6304]88
[6315]89 %BEGINBIN2VERB
[6323]90 if bitand(binary,1), verbose.mprocessor=true; else verbose.mprocessor=false; end
91 if bitand(binary,2), verbose.module=true; else verbose.module=false; end
92 if bitand(binary,4), verbose.solution=true; else verbose.solution=false; end
[6315]93 if bitand(binary,8), verbose.solver=true; else verbose.solver=false; end
[6323]94 if bitand(binary,16), verbose.convergence=true; else verbose.convergence=false; end
95 if bitand(binary,32), verbose.control=true; else verbose.control=false; end
96 if bitand(binary,64), verbose.qmu=true; else verbose.qmu=false; end
[6315]97 %ENDBIN2VERB
[6304]98
[6315]99 end
100 %}}}
[9853]101 function checkconsistency(obj,md,solution,analyses) % {{{
[9739]102
103 end % }}}
[6315]104 function disp(verbose) % {{{1
105
106 %BEGINDISP
107 disp(sprintf('class ''%s'' = ',class(verbose)));
[6324]108 disp(sprintf(' %15s : %s','mprocessor',mat2str(verbose.mprocessor)));
109 disp(sprintf(' %15s : %s','module',mat2str(verbose.module)));
110 disp(sprintf(' %15s : %s','solution',mat2str(verbose.solution)));
111 disp(sprintf(' %15s : %s','solver',mat2str(verbose.solver)));
112 disp(sprintf(' %15s : %s','convergence',mat2str(verbose.convergence)));
113 disp(sprintf(' %15s : %s','control',mat2str(verbose.control)));
114 disp(sprintf(' %15s : %s','qmu',mat2str(verbose.qmu)));
[6315]115 %ENDDISP
[6304]116
[6315]117 end
118 %}}}
[10969]119 function marshall(obj,fid) % {{{
120 WriteData(fid,'data',VerboseToBinary(obj),'enum',VerboseEnum,'format','Integer');
121 end % }}}
[6304]122 end
123end
Note: See TracBrowser for help on using the repository browser.