Changeset 27178
- Timestamp:
- 08/02/22 02:54:59 (3 years ago)
- Location:
- issm/trunk-jpl/src/m/classes
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/timestepping.m
r26304 r27178 5 5 6 6 classdef timestepping 7 properties (SetAccess=public) 7 properties (SetAccess=public) 8 8 start_time = 0.; 9 9 final_time = 0.; 10 10 time_step = 0.; 11 11 interp_forcing = 1; 12 average_forcing = 0; 12 13 cycle_forcing = 0; 13 14 coupling_time = 0.; … … 32 33 fielddisplay(self,'time_step',['length of time steps [' unit ']']); 33 34 fielddisplay(self,'interp_forcing','interpolate in time between requested forcing values? (0 or 1)'); 35 fielddisplay(self,'average_forcing','average in time if there are several forcing values between steps? (0 or 1, default is 0)'); 34 36 fielddisplay(self,'cycle_forcing','cycle through forcing? (0 or 1)'); 35 37 fielddisplay(self,'coupling_time',['length of coupling time step with ocean model [' unit ']']); … … 46 48 %should we interpolate forcing between timesteps? 47 49 self.interp_forcing=1; 50 self.average_forcing=0; 48 51 self.cycle_forcing=0; 49 52 end % }}} … … 54 57 md = checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>=',0,'NaN',1,'Inf',1); 55 58 md = checkfield(md,'fieldname','timestepping.interp_forcing','numel',[1],'values',[0 1]); 59 md = checkfield(md,'fieldname','timestepping.average_forcing','numel',[1],'values',[0 1]); 56 60 md = checkfield(md,'fieldname','timestepping.cycle_forcing','numel',[1],'values',[0 1]); 57 61 if self.final_time-self.start_time<0, 58 62 md = checkmessage(md,'timestepping.final_time should be larger than timestepping.start_time'); 59 end 63 end 60 64 if strcmp(solution,'TransientSolution'), 61 65 md = checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>',0,'NaN',1,'Inf',1); … … 70 74 WriteData(fid,prefix,'object',self,'fieldname','time_step','format','Double','scale',scale); 71 75 WriteData(fid,prefix,'object',self,'fieldname','interp_forcing','format','Boolean'); 76 WriteData(fid,prefix,'object',self,'fieldname','average_forcing','format','Boolean'); 72 77 WriteData(fid,prefix,'object',self,'fieldname','cycle_forcing','format','Boolean'); 73 78 WriteData(fid,prefix,'object',self,'fieldname','coupling_time','format','Double','scale',scale); 74 79 end % }}} 75 80 function savemodeljs(self,fid,modelname) % {{{ 76 81 77 82 writejsdouble(fid,[modelname '.timestepping.start_time'],self.start_time); 78 83 writejsdouble(fid,[modelname '.timestepping.final_time'],self.final_time); 79 84 writejsdouble(fid,[modelname '.timestepping.time_step'],self.time_step); 80 85 writejsdouble(fid,[modelname '.timestepping.interp_forcing'],self.interp_forcing); 86 writejsdouble(fid,[modelname '.timestepping.average_forcing'],self.interp_forcing); 81 87 writejsdouble(fid,[modelname '.timestepping.cycle_forcing'],self.cycle_forcing); 82 88 -
issm/trunk-jpl/src/m/classes/timestepping.py
r26304 r27178 11 11 """ 12 12 13 def __init__(self, *args): #{{{13 def __init__(self, *args): #{{{ 14 14 self.start_time = 0 15 15 self.final_time = 0 16 16 self.time_step = 0 17 17 self.interp_forcing = 1 18 self.average_forcing = 0 18 19 self.cycle_forcing = 0 19 20 self.coupling_time = 0 … … 24 25 raise RuntimeError('constructor not supported') 25 26 #}}} 26 def __repr__(self): #{{{ 27 28 def __repr__(self): #{{{ 27 29 s = ' timestepping parameters:\n' 28 30 unit = 'yr' … … 31 33 s += '{}\n'.format(fielddisplay(self, 'time_step', 'length of time steps [' + unit + ']')) 32 34 s += '{}\n'.format(fielddisplay(self, 'interp_forcing', 'interpolate in time between requested forcing values? (0 or 1)')) 35 s += '{}\n'.format(fielddisplay(self, 'average_forcing', 'average in time if there are several forcing values between steps? (0 or 1, default is 0)')) 33 36 s += '{}\n'.format(fielddisplay(self, 'cycle_forcing', 'cycle through forcing? (0 or 1)')) 34 37 s += '{}\n'.format(fielddisplay(self, 'coupling_time', 'length of coupling time steps with ocean model [' + unit + ']')) 35 38 return s 36 39 #}}} 37 def setdefaultparameters(self): #{{{ 40 41 def setdefaultparameters(self): #{{{ 38 42 # Time between 2 time steps 39 43 self.time_step = 1 / 2 … … 44 48 # Should we interpolate forcing between timesteps? 45 49 self.interp_forcing = 1 50 self.average_forcing = 0 46 51 self.cycle_forcing = 0 47 52 48 53 return self 49 54 #}}} 50 def checkconsistency(self, md, solution, analyses): #{{{ 55 56 def checkconsistency(self, md, solution, analyses): #{{{ 51 57 md = checkfield(md, 'fieldname', 'timestepping.start_time', 'numel', [1], 'NaN', 1, 'Inf', 1) 52 58 md = checkfield(md, 'fieldname', 'timestepping.final_time', 'numel', [1], 'NaN', 1, 'Inf', 1) 53 59 md = checkfield(md, 'fieldname', 'timestepping.time_step', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1) 60 md = checkfield(md, 'fieldname', 'timestepping.interp_forcing', 'numel', [1], 'values', [0, 1]) 61 md = checkfield(md, 'fieldname', 'timestepping.average_forcing', 'numel', [1], 'values', [0, 1]) 54 62 md = checkfield(md, 'fieldname', 'timestepping.cycle_forcing', 'numel', [1], 'values', [0, 1]) 55 63 if (self.final_time - self.start_time) < 0: … … 60 68 return md 61 69 #}}} 62 def marshall(self, prefix, md, fid): #{{{ 70 71 def marshall(self, prefix, md, fid): #{{{ 63 72 scale = md.constants.yts 64 73 WriteData(fid, prefix, 'name', 'md.timestepping.type', 'data', 1, 'format', 'Integer') … … 67 76 WriteData(fid, prefix, 'object', self, 'fieldname', 'time_step', 'format', 'Double', 'scale', scale) 68 77 WriteData(fid, prefix, 'object', self, 'fieldname', 'interp_forcing', 'format', 'Boolean') 78 WriteData(fid, prefix, 'object', self, 'fieldname', 'average_forcing', 'format', 'Boolean') 69 79 WriteData(fid, prefix, 'object', self, 'fieldname', 'cycle_forcing', 'format', 'Boolean') 70 80 WriteData(fid, prefix, 'object', self, 'fieldname', 'coupling_time', 'format', 'Double', 'scale', scale) -
issm/trunk-jpl/src/m/classes/timesteppingadaptive.m
r26208 r27178 5 5 6 6 classdef timesteppingadaptive 7 properties (SetAccess=public) 7 properties (SetAccess=public) 8 8 start_time = 0.; 9 9 final_time = 0.; … … 11 11 time_step_max = 0.; 12 12 cfl_coefficient = 0.; 13 interp_forcing = 1; 14 cycle_forcing = 1; 13 interp_forcing = 1; 14 average_forcing = 0; 15 cycle_forcing = 1; 15 16 coupling_time = 0.; 16 17 end … … 40 41 %should we interpolate forcing between timesteps? 41 42 self.interp_forcing=1; 43 self.average_forcing=0; 42 44 self.cycle_forcing=0; 43 45 end % }}} … … 50 52 md = checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1); 51 53 md = checkfield(md,'fieldname','timestepping.interp_forcing','numel',[1],'values',[0 1]); 54 md = checkfield(md,'fieldname','timestepping.average_forcing','numel',[1],'values',[0 1]); 52 55 md = checkfield(md,'fieldname','timestepping.cycle_forcing','numel',[1],'values',[0 1]); 53 56 md = checkfield(md,'fieldname','timestepping.coupling_time','numel',[1],'>=',md.timestepping.coupling_time,'NaN',1,'Inf',1); 54 57 if self.final_time-self.start_time<0, 55 58 md = checkmessage(md,'timestepping.final_time should be larger than timestepping.start_time'); 56 end 59 end 57 60 end % }}} 58 61 function disp(self) % {{{ … … 66 69 fielddisplay(self,'cfl_coefficient','coefficient applied to cfl condition'); 67 70 fielddisplay(self,'interp_forcing','interpolate in time between requested forcing values ? (0 or 1)'); 71 fielddisplay(self,'average_forcing','average in time if there are several forcing values between steps? (0 or 1, default is 0)'); 68 72 fielddisplay(self,'cycle_forcing','cycle through forcing ? (0 or 1)'); 69 73 fielddisplay(self,'coupling_time',['coupling time step with ocean model [' unit ']']); … … 80 84 WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','cfl_coefficient','format','Double'); 81 85 WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','interp_forcing','format','Boolean'); 86 WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','average_forcing','format','Boolean'); 82 87 WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','cycle_forcing','format','Boolean'); 83 88 WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','coupling_time','format','Double','scale',scale); 84 89 end % }}} 85 90 function savemodeljs(self,fid,modelname) % {{{ 86 91 87 92 writejsdouble(fid,[modelname '.timesteppingadaptive.start_time'],self.start_time); 88 93 writejsdouble(fid,[modelname '.timesteppingadaptive.final_time'],self.final_time); … … 91 96 writejsdouble(fid,[modelname '.timesteppingadaptive.cfl_coefficient'],self.cfl_coefficient); 92 97 writejsdouble(fid,[modelname '.timesteppingadaptive.interp_forcing'],self.interp_forcing); 98 writejsdouble(fid,[modelname '.timesteppingadaptive.average_forcing'],self.interp_forcing); 93 99 writejsdouble(fid,[modelname '.timesteppingadaptive.cycle_forcing'],self.cycle_forcing); 94 100 writejsdouble(fid,[modelname '.timesteppingadaptive.coupling_time'],self.time_step_max); -
issm/trunk-jpl/src/m/classes/timesteppingadaptive.py
r26208 r27178 20 20 self.cfl_coefficient = 0. 21 21 self.interp_forcing = 1 22 self.average_forcing = 0 22 23 self.cycle_forcing = 0 23 24 self.coupling_time = 0. … … 33 34 self.final_time = old.final_time 34 35 self.interp_forcing = old.interp_forcing 36 self.average_forcing = old.average_forcing 35 37 self.cycle_forcing = old.cycle_forcing 36 38 self.coupling_time = old.coupling_time … … 42 44 def __repr__(self): # {{{ 43 45 string = " timesteppingadaptive parameters:" 44 string = "%s\n%s" % (string, fielddisplay(self, "start_time", "simulation starting time [yr]")) 45 string = "%s\n%s" % (string, fielddisplay(self, "final_time", "final time to stop the simulation [yr]")) 46 string = "%s\n%s" % (string, fielddisplay(self, "time_step_min", "minimum length of time steps [yr]")) 47 string = "%s\n%s" % (string, fielddisplay(self, "time_step_max", "maximum length of time steps [yr]")) 48 string = "%s\n%s" % (string, fielddisplay(self, "cfl_coefficient", "coefficient applied to cfl condition")) 49 string = "%s\n%s" % (string, fielddisplay(self, "interp_forcing", "interpolate in time between requested forcing values ? (0 or 1)")) 50 string = "%s\n%s" % (string, fielddisplay(self, "cycle_forcing", "cycle through forcing ? (0 or 1)")) 51 string = "%s\n%s" % (string, fielddisplay(self, "coupling_time", "coupling time steps with ocean model [yr]")) 46 string = '{}\n{}'.format (string, fielddisplay(self, "start_time", "simulation starting time [yr]")) 47 string = '{}\n{}'.format(string, fielddisplay(self, "final_time", "final time to stop the simulation [yr]")) 48 string = '{}\n{}'.format (string, fielddisplay(self, "time_step_min", "minimum length of time steps [yr]")) 49 string = '{}\n{}'.format (string, fielddisplay(self, "time_step_max", "maximum length of time steps [yr]")) 50 string = '{}\n{}'.format (string, fielddisplay(self, "cfl_coefficient", "coefficient applied to cfl condition")) 51 string = '{}\n{}'.format (string, fielddisplay(self, "interp_forcing", "interpolate in time between requested forcing values ? (0 or 1)")) 52 string = '{}\n{}'.format(string, fielddisplay(self, 'average_forcing', 'average in time if there are several forcing values between steps? (0 or 1, default is 0)')) 53 string = '{}\n{}'.format(string, fielddisplay(self, "cycle_forcing", "cycle through forcing ? (0 or 1)")) 54 string = '{}\n{}'.format(string, fielddisplay(self, "coupling_time", "coupling time steps with ocean model [yr]")) 52 55 return string 53 56 # }}} … … 63 66 #should we interpolate forcing between timesteps? 64 67 self.interp_forcing = 1 68 self.average_forcing = 0 65 69 self.cycle_forcing = 0 66 70 return self … … 76 80 md.checkmessage("timestepping.final_time should be larger than timestepping.start_time") 77 81 md = checkfield(md, 'fieldname', 'timestepping.interp_forcing', 'numel', [1], 'values', [0, 1]) 82 md = checkfield(md, 'fieldname', 'timestepping.average_forcing', 'numel', [1], 'values', [0, 1]) 78 83 md = checkfield(md, 'fieldname', 'timestepping.cycle_forcing', 'numel', [1], 'values', [0, 1]) 79 84 md = checkfield(md, 'fieldname', 'timestepping.coupling_time', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1) … … 91 96 WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'cfl_coefficient', 'format', 'Double') 92 97 WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'interp_forcing', 'format', 'Boolean') 98 WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'average_forcing', 'format', 'Boolean') 93 99 WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'cycle_forcing', 'format', 'Boolean') 94 100 WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'coupling_time', 'format', 'Double', 'scale', yts)
Note:
See TracChangeset
for help on using the changeset viewer.