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

Last change on this file since 19879 was 19879, checked in by Eric.Larour, 9 years ago

CHG (javascript): adding savemodeljs to save a model in matlab into javascript file

File size: 7.7 KB
Line 
1%VERBOSE class definition
2%
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% autodiff : AD analysis
12% smb : smb analysis
13%
14% Usage:
15% verbose=verbose();
16% verbose=verbose(3);
17% verbose=verbose('all');
18% verbose=verbose('001100');
19% verbose=verbose('module',true,'solver',false);
20
21%WARNING: some parts of this file are Synchronized with src/c/shared/Numerics/Verbosity.h
22% Do not modify these sections. See src/c/shared/Numerics/README for more info
23
24classdef verbose
25 properties (SetAccess=public)
26 % {{{
27 %BEGINFIELDS
28 mprocessor=false;
29 module=false;
30 solution=false;
31 solver=false;
32 convergence=false;
33 control=false;
34 qmu=false;
35 autodiff=false;
36 smb=false;
37 %ENDFIELDS
38 % }}}
39 end
40 %}}}
41 methods
42 function createxml(self,fid) % {{{
43 fprintf(fid, '\n\n');
44 fprintf(fid, '%s\n', '<!-- verbose -->');
45
46 fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n', '<parameter key ="mprocessor" type="', class(self.mprocessor),'" optional="false">', ' <section name="verbose" />',' <option value="',convert2str(self.mprocessor),'" type="string" default="true"></option>',' <help> </help>','</parameter>');
47 fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n', '<parameter key ="module" type="', class(self.module),'" optional="false">', ' <section name="verbose" />',' <option value="',convert2str(self.module),'" type="string" default="true"></option>',' <help> </help>','</parameter>');
48 fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n', '<parameter key ="solution" type="', class(self.solution),'" optional="false">', ' <section name="verbose" />',' <option value="',convert2str(self.solution),'" type="string" default="true"></option>',' <help> </help>','</parameter>');
49 fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n', '<parameter key ="solver" type="', class(self.solver),'" optional="false">', ' <section name="verbose" />',' <option value="',convert2str(self.solver),'" type="string" default="true"></option>',' <help> </help>','</parameter>');
50 fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n', '<parameter key ="convergence" type="', class(self.convergence),'" optional="false">', ' <section name="verbose" />',' <option value="',convert2str(self.convergence),'" type="string" default="true"></option>',' <help> </help>','</parameter>');
51 fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n', '<parameter key ="control" type="', class(self.control),'" optional="false">', ' <section name="verbose" />',' <option value="',convert2str(self.control),'" type="string" default="true"></option>',' <help> </help>','</parameter>');
52 fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n', '<parameter key ="qmu" type="', class(self.qmu),'" optional="false">', ' <section name="verbose" />',' <option value="',convert2str(self.qmu),'" type="string" default="true"></option>',' <help> </help>','</parameter>');
53 fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n', '<parameter key ="autodiff" type="', class(self.autodiff),'" optional="false">', ' <section name="verbose" />',' <option value="',convert2str(self.autodiff),'" type="string" default="true"></option>',' <help> </help>','</parameter>');
54
55
56 end % }}}
57 function verbose=verbose(varargin) % {{{
58
59 switch(nargin),
60 case 0,
61 verbose.solution=true;
62 verbose.qmu=true;
63 verbose.control=true;
64 case 1,
65 binary=varargin{1};
66 if ischar(binary),
67 if strcmpi(binary,'all'),
68 binary=2^11-1; %all ones
69 verbose=BinaryToVerbose(verbose,binary);
70 verbose.solver=false; %Do not use by default
71 else
72 binary=bin2dec(binary);
73 verbose=BinaryToVerbose(verbose,binary);
74 end
75 elseif isnumeric(binary),
76 verbose=BinaryToVerbose(verbose,binary);
77 end
78 otherwise,
79 %Use options to initialize object
80 verbose=AssignObjectFields(pairoptions(varargin{:}),verbose);
81
82 %Cast to logicals
83 listproperties=properties('verbose');
84 for i=1:numel(listproperties),
85 fieldname=listproperties{i};
86 fieldvalue=verbose.(fieldname);
87 if (islogical(fieldvalue) | isnumeric(fieldvalue)) & numel(fieldvalue)==1,
88 verbose.(fieldname)=logical(fieldvalue);
89 else
90 error('verbose supported field values are logicals only (true or false)');
91 end
92 end
93 end
94 end
95 %}}}
96 function binary=VerboseToBinary(verbose) % {{{
97
98 %BEGINVERB2BIN
99 binary=0;
100 if (verbose.mprocessor), binary=bitor(binary,1); end
101 if (verbose.module), binary=bitor(binary,2); end
102 if (verbose.solution), binary=bitor(binary,4); end
103 if (verbose.solver), binary=bitor(binary,8); end
104 if (verbose.convergence), binary=bitor(binary,16); end
105 if (verbose.control), binary=bitor(binary,32); end
106 if (verbose.qmu), binary=bitor(binary,64); end
107 if (verbose.autodiff), binary=bitor(binary,128); end
108 if (verbose.smb), binary=bitor(binary,256); end
109 %ENDVERB2BIN
110
111 end
112 %}}}
113 function verbose=BinaryToVerbose(verbose,binary) % {{{
114
115 %BEGINBIN2VERB
116 if bitand(binary,1), verbose.mprocessor=true; else verbose.mprocessor=false; end
117 if bitand(binary,2), verbose.module=true; else verbose.module=false; end
118 if bitand(binary,4), verbose.solution=true; else verbose.solution=false; end
119 if bitand(binary,8), verbose.solver=true; else verbose.solver=false; end
120 if bitand(binary,16), verbose.convergence=true; else verbose.convergence=false; end
121 if bitand(binary,32), verbose.control=true; else verbose.control=false; end
122 if bitand(binary,64), verbose.qmu=true; else verbose.qmu=false; end
123 if bitand(binary,128), verbose.autodiff=true; else verbose.autodiff=false; end
124 if bitand(binary,256), verbose.smb=true; else verbose.smb=false; end
125 %ENDBIN2VERB
126
127 end
128 %}}}
129 function md = checkconsistency(self,md,solution,analyses) % {{{
130
131 end % }}}
132 function disp(verbose) % {{{
133
134 %BEGINDISP
135 disp(sprintf('class ''%s'' = ',class(verbose)));
136 disp(sprintf(' %15s : %s','mprocessor',mat2str(verbose.mprocessor)));
137 disp(sprintf(' %15s : %s','module',mat2str(verbose.module)));
138 disp(sprintf(' %15s : %s','solution',mat2str(verbose.solution)));
139 disp(sprintf(' %15s : %s','solver',mat2str(verbose.solver)));
140 disp(sprintf(' %15s : %s','convergence',mat2str(verbose.convergence)));
141 disp(sprintf(' %15s : %s','control',mat2str(verbose.control)));
142 disp(sprintf(' %15s : %s','qmu',mat2str(verbose.qmu)));
143 disp(sprintf(' %15s : %s','autodiff',mat2str(verbose.autodiff)));
144 disp(sprintf(' %15s : %s','smb',mat2str(verbose.smb)));
145 %ENDDISP
146
147 end
148 %}}}
149 function marshall(self,md,fid) % {{{
150 WriteData(fid,'data',VerboseToBinary(self),'enum',VerboseEnum(),'format','Integer');
151 end % }}}
152 function savemodeljs(self,fid,modelname) % {{{
153
154 writejsdouble(fid,[modelname '.verbose.mprocessor'],self.mprocessor);
155 writejsdouble(fid,[modelname '.verbose.module'],self.module);
156 writejsdouble(fid,[modelname '.verbose.solution'],self.solution);
157 writejsdouble(fid,[modelname '.verbose.solver'],self.solver);
158 writejsdouble(fid,[modelname '.verbose.convergence'],self.convergence);
159 writejsdouble(fid,[modelname '.verbose.control'],self.control);
160 writejsdouble(fid,[modelname '.verbose.qmu'],self.qmu);
161 writejsdouble(fid,[modelname '.verbose.autodiff'],self.autodiff);
162 writejsdouble(fid,[modelname '.verbose.smb'],self.smb);
163
164 end % }}}
165 end
166end
Note: See TracBrowser for help on using the repository browser.