source: issm/trunk-jpl/src/m/classes/issmsettings.m@ 23474

Last change on this file since 23474 was 23474, checked in by rueckamp, 6 years ago

CHG: added coupling frequency of StressBalance solver in transient core

File size: 5.6 KB
Line 
1%ISSMSETTINGS class definition
2%
3% Usage:
4% issmsettings=issmsettings();
5
6classdef issmsettings
7 properties (SetAccess=public)
8 results_on_nodes = 0;
9 io_gather = 0;
10 lowmem = 0;
11 output_frequency = 0;
12 sb_coupling_frequency = 0;
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
42 %coupling frequency of the stress balance solver by default every step
43 self.sb_coupling_frequency=1;
44
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
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);
67 md = checkfield(md,'fieldname','settings.sb_coupling_frequency','numel',[1],'>=',1);
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);
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');
80 fielddisplay(self,'sb_coupling_frequency','frequency at which StressBalance solver is coupled (default 1)');
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) % {{{
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');
96 WriteData(fid,prefix,'object',self,'class','settings','fieldname','sb_coupling_frequency','format','Integer');
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');
100 end % }}}
101 function savemodeljs(self,fid,modelname) % {{{
102
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);
107 writejsdouble(fid,[modelname '.settings.sb_coupling_frequency'],self.sb_coupling_frequency);
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);
116 end % }}}
117 end
118end
Note: See TracBrowser for help on using the repository browser.