[22296] | 1 | %ISSMSETTINGS class definition
|
---|
| 2 | %
|
---|
| 3 | % Usage:
|
---|
| 4 | % issmsettings=issmsettings();
|
---|
| 5 |
|
---|
| 6 | classdef issmsettings
|
---|
| 7 | properties (SetAccess=public)
|
---|
| 8 | results_on_nodes = 0;
|
---|
| 9 | io_gather = 0;
|
---|
| 10 | lowmem = 0;
|
---|
| 11 | output_frequency = 0;
|
---|
[23474] | 12 | sb_coupling_frequency = 0;
|
---|
[22296] | 13 | recording_frequency = 0;
|
---|
| 14 | waitonlock = 0;
|
---|
| 15 | upload_server = '';
|
---|
| 16 | upload_path = '';
|
---|
| 17 | upload_login = '';
|
---|
| 18 | upload_port = 0;
|
---|
| 19 | upload_filename = '';
|
---|
| 20 | solver_residue_threshold = 0;
|
---|
| 21 | end
|
---|
| 22 | methods
|
---|
| 23 | function self = issmsettings(varargin) % {{{
|
---|
| 24 | switch nargin
|
---|
| 25 | case 0
|
---|
| 26 | self=setdefaultparameters(self);
|
---|
| 27 | otherwise
|
---|
| 28 | error('constructor not supported');
|
---|
| 29 | end
|
---|
| 30 | end % }}}
|
---|
| 31 | function self = setdefaultparameters(self) % {{{
|
---|
| 32 |
|
---|
| 33 | %are we short in memory ? (0 faster but requires more memory)
|
---|
| 34 | self.lowmem=0;
|
---|
| 35 |
|
---|
| 36 | %i/o:
|
---|
| 37 | self.io_gather=1;
|
---|
| 38 |
|
---|
| 39 | %results frequency by default every step
|
---|
| 40 | self.output_frequency=1;
|
---|
| 41 |
|
---|
[23474] | 42 | %coupling frequency of the stress balance solver by default every step
|
---|
| 43 | self.sb_coupling_frequency=1;
|
---|
| 44 |
|
---|
[22296] | 45 | %checkpoints frequency, by default never:
|
---|
| 46 | self.recording_frequency=0;
|
---|
| 47 |
|
---|
| 48 | %this option can be activated to load automatically the results
|
---|
| 49 | %onto the model after a parallel run by waiting for the lock file
|
---|
| 50 | %N minutes that is generated once the solution has converged
|
---|
| 51 | %0 to deactivate
|
---|
| 52 | self.waitonlock=Inf;
|
---|
| 53 |
|
---|
| 54 | %upload options:
|
---|
| 55 | self.upload_port = 0;
|
---|
| 56 |
|
---|
| 57 | %throw an error if solver residue exceeds this value
|
---|
| 58 | self.solver_residue_threshold = 1e-6;
|
---|
| 59 |
|
---|
| 60 | end % }}}
|
---|
| 61 | function md = checkconsistency(self,md,solution,analyses) % {{{
|
---|
| 62 |
|
---|
[22297] | 63 | md = checkfield(md,'fieldname','settings.results_on_nodes','numel',[1],'values',[0 1]);
|
---|
| 64 | md = checkfield(md,'fieldname','settings.io_gather','numel',[1],'values',[0 1]);
|
---|
| 65 | md = checkfield(md,'fieldname','settings.lowmem','numel',[1],'values',[0 1]);
|
---|
| 66 | md = checkfield(md,'fieldname','settings.output_frequency','numel',[1],'>=',1);
|
---|
[23474] | 67 | md = checkfield(md,'fieldname','settings.sb_coupling_frequency','numel',[1],'>=',1);
|
---|
[22297] | 68 | md = checkfield(md,'fieldname','settings.recording_frequency','numel',[1],'>=',0);
|
---|
| 69 | md = checkfield(md,'fieldname','settings.waitonlock','numel',[1]);
|
---|
| 70 | md = checkfield(md,'fieldname','settings.solver_residue_threshold','numel',[1],'>',0);
|
---|
[22296] | 71 |
|
---|
| 72 | end % }}}
|
---|
| 73 | function disp(self) % {{{
|
---|
| 74 | disp(sprintf(' general issmsettings parameters:'));
|
---|
| 75 |
|
---|
| 76 | fielddisplay(self,'results_on_nodes','results are output for all the nodes of each element');
|
---|
| 77 | fielddisplay(self,'io_gather','I/O gathering strategy for result outputs (default 1)');
|
---|
| 78 | fielddisplay(self,'lowmem','is the memory limited ? (0 or 1)');
|
---|
| 79 | fielddisplay(self,'output_frequency','frequency at which results are saved in all solutions with multiple time_steps');
|
---|
[23474] | 80 | fielddisplay(self,'sb_coupling_frequency','frequency at which StressBalance solver is coupled (default 1)');
|
---|
[22296] | 81 | fielddisplay(self,'recording_frequency','frequency at which the runs are being recorded, allowing for a restart');
|
---|
| 82 | fielddisplay(self,'waitonlock','maximum number of minutes to wait for batch results (NaN to deactivate)');
|
---|
| 83 | fielddisplay(self,'upload_server','server hostname where model should be uploaded');
|
---|
| 84 | fielddisplay(self,'upload_path','path on server where model should be uploaded');
|
---|
| 85 | fielddisplay(self,'upload_login','server login');
|
---|
| 86 | fielddisplay(self,'upload_port','port login (default is 0)');
|
---|
| 87 | fielddisplay(self,'upload_filename','unique id generated when uploading the file to server');
|
---|
| 88 | fielddisplay(self,'solver_residue_threshold','throw an error if solver residue exceeds this value (NaN to deactivate)');
|
---|
| 89 |
|
---|
| 90 | end % }}}
|
---|
| 91 | function marshall(self,prefix,md,fid) % {{{
|
---|
[22297] | 92 | WriteData(fid,prefix,'object',self,'class','settings','fieldname','results_on_nodes','format','Boolean');
|
---|
| 93 | WriteData(fid,prefix,'object',self,'class','settings','fieldname','io_gather','format','Boolean');
|
---|
| 94 | WriteData(fid,prefix,'object',self,'class','settings','fieldname','lowmem','format','Boolean');
|
---|
| 95 | WriteData(fid,prefix,'object',self,'class','settings','fieldname','output_frequency','format','Integer');
|
---|
[23474] | 96 | WriteData(fid,prefix,'object',self,'class','settings','fieldname','sb_coupling_frequency','format','Integer');
|
---|
[22297] | 97 | WriteData(fid,prefix,'object',self,'class','settings','fieldname','recording_frequency','format','Integer');
|
---|
| 98 | WriteData(fid,prefix,'object',self,'class','settings','fieldname','waitonlock','data',self.waitonlock>0,'format','Boolean');
|
---|
| 99 | WriteData(fid,prefix,'object',self,'class','settings','fieldname','solver_residue_threshold','format','Double');
|
---|
[22296] | 100 | end % }}}
|
---|
| 101 | function savemodeljs(self,fid,modelname) % {{{
|
---|
| 102 |
|
---|
[22297] | 103 | writejsdouble(fid,[modelname '.settings.results_on_nodes'],self.results_on_nodes);
|
---|
| 104 | writejsdouble(fid,[modelname '.settings.io_gather'],self.io_gather);
|
---|
| 105 | writejsdouble(fid,[modelname '.settings.lowmem'],self.lowmem);
|
---|
| 106 | writejsdouble(fid,[modelname '.settings.output_frequency'],self.output_frequency);
|
---|
[23474] | 107 | writejsdouble(fid,[modelname '.settings.sb_coupling_frequency'],self.sb_coupling_frequency);
|
---|
[22297] | 108 | writejsdouble(fid,[modelname '.settings.recording_frequency'],self.recording_frequency);
|
---|
| 109 | writejsdouble(fid,[modelname '.settings.waitonlock'],self.waitonlock);
|
---|
| 110 | writejsstring(fid,[modelname '.settings.upload_server'],self.upload_server);
|
---|
| 111 | writejsstring(fid,[modelname '.settings.upload_path'],self.upload_path);
|
---|
| 112 | writejsstring(fid,[modelname '.settings.upload_login'],self.upload_login);
|
---|
| 113 | writejsdouble(fid,[modelname '.settings.upload_port'],self.upload_port);
|
---|
| 114 | writejsstring(fid,[modelname '.settings.upload_filename'],self.upload_filename);
|
---|
| 115 | writejsstring(fid,[modelname '.settings.solver_residue_threshold'],self.solver_residue_threshold);
|
---|
[22296] | 116 | end % }}}
|
---|
| 117 | end
|
---|
| 118 | end
|
---|