Changeset 24793
- Timestamp:
- 05/05/20 06:26:00 (5 years ago)
- Location:
- issm/trunk-jpl/src/m/classes
- Files:
-
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/SMBcomponents.m
r24240 r24793 11 11 evaporation = NaN; 12 12 steps_per_step = 1; 13 averaging = 0; 13 14 requested_outputs = {}; 14 15 end … … 62 63 end 63 64 md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]); 65 md = checkfield(md,'fieldname','smb.averaging',,'numel',[1],'values',[0 1 2]); 64 66 md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1); 65 67 md = checkfield(md,'fieldname','smb.isclimatology','values',[0 1]); … … 80 82 fielddisplay(self,'isclimatology','repeat all forcings when past last forcing time (default false)'); 81 83 fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'); 84 fielddisplay(self, 'averaging', 'averaging methods from short to long steps'); 85 disp(sprintf('%55s 0: Arithmetic (default)'); 86 disp(sprintf('%55s 0: Geometric'); 87 disp(sprintf('%55s 0: Harmonic'); 82 88 fielddisplay(self,'requested_outputs','additional outputs requested'); 83 89 end % }}} … … 91 97 WriteData(fid,prefix,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 92 98 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer'); 99 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer'); 93 100 %process requested outputs 94 101 outputs = self.requested_outputs; -
issm/trunk-jpl/src/m/classes/SMBcomponents.py
r24240 r24793 19 19 self.isclimatology = 0 20 20 self.steps_per_step = 1 21 self.averaging = 0 21 22 self.requested_outputs = [] 22 #}}}23 # }}} 23 24 24 25 def __repr__(self): # {{{ … … 29 30 string = "%s\n%s" % (string, fielddisplay(self, 'isclimatology', 'repeat all forcings when past last forcing time (default false)')) 30 31 string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of smb steps per time step')) 32 string = "%s\n%s" % (string, fielddisplay(self, 'averaging', 'averaging methods from short to long steps')) 33 string = "%s\n\t\t%s" % (string, '0: Arithmetic (default)') 34 string = "%s\n\t\t%s" % (string, '1: Geometric') 35 string = "%s\n\t\t%s" % (string, '2: Harmonic') 31 36 string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 32 37 return string 33 #}}}38 # }}} 34 39 35 40 def extrude(self, md): # {{{ … … 38 43 self.mass_balance = project3d(md, 'vector', self.evaporation, 'type', 'node') 39 44 return self 40 # }}}45 # }}} 41 46 42 47 def defaultoutputs(self, md): # {{{ 43 48 return [] 44 # }}}49 # }}} 45 50 46 51 def initialize(self, md): # {{{ … … 58 63 59 64 return self 60 # }}}65 # }}} 61 66 62 67 def checkconsistency(self, md, solution, analyses): # {{{ … … 71 76 72 77 md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1]) 78 md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2]) 73 79 md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1) 74 80 md = checkfield(md, 'fieldname', 'smb.isclimatology', 'values', [0, 1]) … … 85 91 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'evaporation', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts) 86 92 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer') 93 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer') 87 94 #process requested outputs 88 95 outputs = self.requested_outputs -
issm/trunk-jpl/src/m/classes/SMBd18opdd.m
r24583 r24793 30 30 pddfac_ice = NaN; 31 31 steps_per_step = 1; 32 averaging = 0; 32 33 requested_outputs = {}; 33 34 end … … 115 116 end 116 117 md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]); 118 md = checkfield(md,'fieldname','smb.averaging',,'numel',[1],'values',[0 1 2]); 117 119 md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1); 118 120 end % }}} … … 147 149 end 148 150 fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'); 151 fielddisplay(self, 'averaging', 'averaging methods from short to long steps'); 152 disp(sprintf('%55s 0: Arithmetic (default)'); 153 disp(sprintf('%55s 0: Geometric'); 154 disp(sprintf('%55s 0: Harmonic'); 149 155 fielddisplay(self,'requested_outputs','additional outputs requested'); 150 156 % No need to display rlapslgm, Tdiff, ismungsm … … 169 175 WriteData(fid,prefix,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts); 170 176 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer'); 177 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer'); 171 178 172 179 if self.isd18opd -
issm/trunk-jpl/src/m/classes/SMBd18opdd.py
r24588 r24793 37 37 self.pddfac_ice = float('NaN') 38 38 self.steps_per_step = 1 39 self.averaging = 0 39 40 40 41 #set defaults … … 72 73 string = "%s\n%s" % (string, fielddisplay(self, 'pddfac_ice', 'Pdd factor for ice, at each vertex [mm ice equiv/day/degree C]')) 73 74 string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of smb steps per time step')) 75 string = "%s\n%s" % (string, fielddisplay(self, 'averaging', 'averaging methods from short to long steps')) 76 string = "%s\n\t\t%s" % (string, '0: Arithmetic (default)') 77 string = "%s\n\t\t%s" % (string, '1: Geometric') 78 string = "%s\n\t\t%s" % (string, '2: Harmonic') 79 74 80 string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 75 81 … … 135 141 md = checkfield(md, 'fieldname', 'smb.rlapslgm', '>=', 0, 'numel', [1]) 136 142 md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1]) 143 md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2]) 137 144 138 145 if self.isd18opd: … … 181 188 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'sealev', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', md.constants.yts) 182 189 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer') 190 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer') 183 191 184 192 if self.isd18opd: -
issm/trunk-jpl/src/m/classes/SMBforcing.py
r24240 r24793 19 19 self.isclimatology = 0 20 20 self.steps_per_step = 1 21 self.averaging = 0 21 22 #}}} 22 23 … … 26 27 string = "%s\n%s" % (string, fielddisplay(self, 'isclimatology', 'repeat all forcings when past last forcing time (default false)')) 27 28 string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of smb steps per time step')) 29 string = "%s\n%s" % (string, fielddisplay(self, 'averaging', 'averaging methods from short to long steps')) 30 string = "%s\n\t\t%s" % (string, '0: Arithmetic (default)') 31 string = "%s\n\t\t%s" % (string, '1: Geometric') 32 string = "%s\n\t\t%s" % (string, '2: Harmonic') 28 33 string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 29 34 return string … … 56 61 57 62 md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1]) 63 md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2]) 58 64 md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1) 59 65 md = checkfield(md, 'fieldname', 'smb.isclimatology', 'values', [0, 1]) … … 69 75 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'mass_balance', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts) 70 76 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer') 77 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer') 71 78 72 79 #process requested outputs -
issm/trunk-jpl/src/m/classes/SMBgemb.m
r24772 r24793 112 112 113 113 steps_per_step = 1; 114 averaging = 0; 114 115 requested_outputs = {}; 115 116 … … 286 287 end 287 288 md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]); 289 md = checkfield(md,'fieldname','smb.averaging',,'numel',[1],'values',[0 1 2]); 288 290 md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1); 289 291 … … 379 381 380 382 fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'); 383 fielddisplay(self, 'averaging', 'averaging methods from short to long steps'); 384 disp(sprintf('%55s 0: Arithmetic (default)'); 385 disp(sprintf('%55s 0: Geometric'); 386 disp(sprintf('%55s 0: Harmonic'); 381 387 fielddisplay(self,'requested_outputs','additional outputs requested'); 382 388 … … 450 456 WriteData(fid,prefix,'object',self,'class','smb','fieldname','Sizeini','format','IntMat','mattype',2); 451 457 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer'); 458 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer'); 452 459 %figure out dt from forcings: 453 460 if (any(md.smb.P(end,:) - md.smb.Ta(end,:) ~= 0) | ... -
issm/trunk-jpl/src/m/classes/SMBgemb.py
r24772 r24793 21 21 #solution choices 22 22 #check these: 23 #isgraingrowth 23 #self.isgraingrowth = 0 24 #self.issmbgradients = 0 24 25 #isalbedo 25 26 #isshortwave … … 94 95 95 96 self.steps_per_step = 1 97 self.averaging = 0 96 98 self.requested_outputs = [] 97 99 … … 191 193 '4 = Greenland model of Kuipers Munneke et al. (2015)'])) 192 194 string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of smb steps per time step')) 195 string = "%s\n%s" % (string, fielddisplay(self, 'averaging', 'averaging methods from short to long steps')) 196 string = "%s\n\t\t%s" % (string, '0: Arithmetic (default)') 197 string = "%s\n\t\t%s" % (string, '1: Geometric') 198 string = "%s\n\t\t%s" % (string, '2: Harmonic') 193 199 string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 194 200 return string … … 218 224 def setdefaultparameters(self, mesh, geometry): # {{{ 219 225 self.isgraingrowth = 1 226 self.issmbgradients = 0 220 227 self.isalbedo = 1 221 228 self.isshortwave = 1 … … 226 233 self.isturbulentflux = 1 227 234 self.isclimatology = 0 228 self.isconstrainsurfaceT = 0 ;235 self.isconstrainsurfaceT = 0 229 236 230 237 self.aIdx = 1 … … 274 281 275 282 md = checkfield(md, 'fieldname', 'smb.isgraingrowth', 'values', [0, 1]) 283 #md = checkfield(md, 'fieldname', 'smb.issmbgradients', 'values', [0, 1]) 276 284 md = checkfield(md, 'fieldname', 'smb.isalbedo', 'values', [0, 1]) 277 285 md = checkfield(md, 'fieldname', 'smb.isshortwave', 'values', [0, 1]) … … 338 346 raise IOError('SMBgemb consistency check error: zTop should be smaller than local ice thickness') 339 347 md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1]) 348 md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2]) 340 349 md = checkfield(md, 'fieldname', 'smb.requested_outputs', 'stringrow', 1) 341 350 return md … … 349 358 350 359 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isgraingrowth', 'format', 'Boolean') 360 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'issmbgradients', 'format', 'Boolean') 351 361 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isalbedo', 'format', 'Boolean') 352 362 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isshortwave', 'format', 'Boolean') … … 409 419 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Sizeini', 'format', 'IntMat', 'mattype', 2) 410 420 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer') 421 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer') 411 422 #figure out dt from forcings: 412 if (np.any(self.P[-1] - self.Ta[-1] != 0) | np.any(self.V[-1] - self.Ta[-1] != 0) | np.any(self.dswrf[-1] - self.Ta[-1] != 0) | np.any(self.dlwrf[-1] - self.Ta[-1] != 0) | np.any(self.eAir[-1] - self.Ta[-1] != 0) | np.any(self.pAir[-1] - self.Ta[-1] != 0)):423 if (np.any(self.P[-1] - self.Ta[-1] != 0) | np.any(self.V[-1] - self.Ta[-1] != 0) | np.any(self.dswrf[-1] - self.Ta[-1] != 0) | np.any(self.dlwrf[-1] - self.Ta[-1] != 0) | np.any(self.eAir[-1] - self.Ta[-1] != 0) | np.any(self.pAir[-1] - self.Ta[-1] != 0)): 413 424 raise IOError('All GEMB forcings (Ta, P, V, dswrf, dlwrf, eAir, pAir) must have the same time steps in the final row!') 414 425 -
issm/trunk-jpl/src/m/classes/SMBgradients.m
r24240 r24793 11 11 b_neg = NaN; 12 12 steps_per_step = 1; 13 averaging = 0; 13 14 requested_outputs = {}; 14 15 end … … 49 50 end 50 51 md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]); 52 md = checkfield(md,'fieldname','smb.averaging',,'numel',[1],'values',[0 1 2]); 51 53 md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1); 52 54 end % }}} … … 60 62 fielddisplay(self,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated'); 61 63 fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'); 64 fielddisplay(self, 'averaging', 'averaging methods from short to long steps'); 65 disp(sprintf('%55s 0: Arithmetic (default)'); 66 disp(sprintf('%55s 0: Geometric'); 67 disp(sprintf('%55s 0: Harmonic'); 62 68 fielddisplay(self,'requested_outputs','additional outputs requested'); 63 69 … … 74 80 'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 75 81 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer'); 82 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer'); 76 83 77 84 %process requested outputs -
issm/trunk-jpl/src/m/classes/SMBgradients.py
r24240 r24793 18 18 self.b_neg = float('NaN') 19 19 self.steps_per_step = 1 20 self.averaging = 0 20 21 self.requested_outputs = [] 21 22 #}}} … … 30 31 string = "%s\n%s" % (string, fielddisplay(self, 'b_neg', ' slope of hs - smb regression line for ablation regime required if smb gradients is activated')) 31 32 string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of smb steps per time step')) 33 string = "%s\n%s" % (string, fielddisplay(self, 'averaging', 'averaging methods from short to long steps')) 34 string = "%s\n\t\t%s" % (string, '0: Arithmetic (default)') 35 string = "%s\n\t\t%s" % (string, '1: Geometric') 36 string = "%s\n\t\t%s" % (string, '2: Harmonic') 32 37 string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 33 38 … … 57 62 58 63 md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1]) 64 md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2]) 59 65 md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1) 60 66 return md … … 70 76 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'b_neg', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts) 71 77 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer') 78 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer') 72 79 73 80 #process requested outputs -
issm/trunk-jpl/src/m/classes/SMBgradientscomponents.m
r24530 r24793 14 14 runoffgrad = NaN; 15 15 steps_per_step = 1; 16 averaging = 0; 16 17 requested_outputs = {}; 17 18 end … … 54 55 end 55 56 md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]); 57 md = checkfield(md,'fieldname','smb.averaging',,'numel',[1],'values',[0 1 2]); 56 58 md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1); 57 59 end % }}} … … 67 69 fielddisplay(self,'runoffgrad',' Gradient of the variation of the runoff (0 for uniform runoff) m w.e. m-1 y-1 (lpase rate times ddf)'); 68 70 fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'); 71 fielddisplay(self, 'averaging', 'averaging methods from short to long steps'); 72 disp(sprintf('%55s 0: Arithmetic (default)'); 73 disp(sprintf('%55s 0: Geometric'); 74 disp(sprintf('%55s 0: Harmonic'); 69 75 fielddisplay(self,'requested_outputs','additional outputs requested'); 70 76 … … 81 87 'format','Double','scale',1./md.constants.yts); 82 88 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer'); 89 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer'); 83 90 84 91 -
issm/trunk-jpl/src/m/classes/SMBgradientscomponents.py
r24240 r24793 21 21 self.runoffgrad = float('NaN') 22 22 self.steps_per_step = 1 23 self.averaging = 0 23 24 self.requested_outputs = ['default'] 24 25 #}}} … … 33 34 string = "%s\n%s" % (string, fielddisplay(self, 'runoffgrad', ' Gradient of the variation of the runoff (0 for uniform runoff) m w.e. m-1 y-1 (lapse rate times ddf)')) 34 35 string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of smb steps per time step')) 36 string = "%s\n%s" % (string, fielddisplay(self, 'averaging', 'averaging methods from short to long steps')) 37 string = "%s\n\t\t%s" % (string, '0: Arithmetic (default)') 38 string = "%s\n\t\t%s" % (string, '1: Geometric') 39 string = "%s\n\t\t%s" % (string, '2: Harmonic') 35 40 string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 36 41 … … 65 70 66 71 md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1]) 72 md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2]) 67 73 md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1) 68 74 return md … … 79 85 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'runoffgrad', 'format', 'Double', 'scale', 1. / md.constants.yts) 80 86 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer') 87 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer') 81 88 82 89 #process requested outputs -
issm/trunk-jpl/src/m/classes/SMBgradientsela.m
r24240 r24793 12 12 b_min = NaN; 13 13 steps_per_step = 1; 14 averaging = 0; 14 15 requested_outputs = {}; 15 16 end … … 52 53 end 53 54 md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]); 55 md = checkfield(md,'fieldname','smb.averaging',,'numel',[1],'values',[0 1 2]); 54 56 md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1); 55 57 end % }}} … … 64 66 fielddisplay(self,'b_min',' lower cap on smb rate, default: -9999 (no cap) [m ice eq./yr]'); 65 67 fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'); 68 fielddisplay(self, 'averaging', 'averaging methods from short to long steps'); 69 disp(sprintf('%55s 0: Arithmetic (default)'); 70 disp(sprintf('%55s 0: Geometric'); 71 disp(sprintf('%55s 0: Harmonic'); 66 72 fielddisplay(self,'requested_outputs','additional outputs requested'); 67 73 … … 79 85 'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 80 86 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer'); 87 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer'); 81 88 82 89 %process requested outputs -
issm/trunk-jpl/src/m/classes/SMBgradientsela.py
r24240 r24793 19 19 self.b_min = float('NaN') 20 20 self.steps_per_step = 1 21 self.averaging = 0 21 22 self.requested_outputs = [] 22 23 self.setdefaultparameters() … … 33 34 string = "%s\n%s" % (string, fielddisplay(self, 'b_min', ' lower cap on smb rate, default: -9999 (no cap) [m ice eq./yr]')) 34 35 string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of smb steps per time step')) 36 string = "%s\n%s" % (string, fielddisplay(self, 'averaging', 'averaging methods from short to long steps')) 37 string = "%s\n\t\t%s" % (string, '0: Arithmetic (default)') 38 string = "%s\n\t\t%s" % (string, '1: Geometric') 39 string = "%s\n\t\t%s" % (string, '2: Harmonic') 40 35 41 string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 36 42 return string … … 66 72 67 73 md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1]) 74 md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2]) 68 75 md = checkfield(md, 'fieldname', 'smb.requested_outputs', 'stringrow', 1) 69 76 return md … … 80 87 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'b_min', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts) 81 88 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer') 89 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer') 82 90 83 91 #process requested outputs -
issm/trunk-jpl/src/m/classes/SMBhenning.m
r24240 r24793 8 8 smbref = NaN; 9 9 steps_per_step=1; 10 averaging=0; 10 11 requested_outputs = {}; 11 12 end … … 53 54 end 54 55 md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]); 56 md = checkfield(md,'fieldname','smb.averaging',,'numel',[1],'values',[0 1 2]); 55 57 md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1); 56 58 end % }}} … … 59 61 fielddisplay(self,'smbref','reference smb from which deviation is calculated [m/yr ice eq]'); 60 62 fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'); 63 fielddisplay(self, 'averaging', 'averaging methods from short to long steps'); 64 disp(sprintf('%55s 0: Arithmetic (default)'); 65 disp(sprintf('%55s 0: Geometric'); 66 disp(sprintf('%55s 0: Harmonic'); 61 67 fielddisplay(self,'requested_outputs','additional outputs requested'); 62 68 end % }}} … … 68 74 WriteData(fid,prefix,'object',self,'class','smb','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 69 75 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer'); 76 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer'); 70 77 71 78 %process requested outputs -
issm/trunk-jpl/src/m/classes/SMBmeltcomponents.m
r24240 r24793 12 12 refreeze = NaN; 13 13 steps_per_step=1; 14 averaging = 0; 14 15 requested_outputs = {}; 15 16 end … … 68 69 end 69 70 md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]); 71 md = checkfield(md,'fieldname','smb.averaging',,'numel',[1],'values',[0 1 2]); 70 72 md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1); 71 73 md = checkfield(md,'fieldname','smb.isclimatology','values',[0 1]); … … 89 91 fielddisplay(self,'isclimatology','repeat all forcings when past last forcing time (default false)'); 90 92 fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'); 93 fielddisplay(self, 'averaging', 'averaging methods from short to long steps'); 94 disp(sprintf('%55s 0: Arithmetic (default)'); 95 disp(sprintf('%55s 0: Geometric'); 96 disp(sprintf('%55s 0: Harmonic'); 91 97 fielddisplay(self,'requested_outputs','additional outputs requested'); 92 98 end % }}} … … 101 107 WriteData(fid,prefix,'object',self,'class','smb','fieldname','refreeze','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 102 108 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer'); 109 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer'); 103 110 104 111 %process requested outputs -
issm/trunk-jpl/src/m/classes/SMBmeltcomponents.py
r24240 r24793 19 19 self.isclimatology = 0 20 20 self.steps_per_step = 1 21 self.averaging = 0 21 22 self.requested_outputs = [] 22 23 #}}} … … 30 31 string = "%s\n%s" % (string, fielddisplay(self, 'isclimatology', 'repeat all forcings when past last forcing time (default false)')) 31 32 string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of smb steps per time step')) 33 string = "%s\n%s" % (string, fielddisplay(self, 'averaging', 'averaging methods from short to long steps')) 34 string = "%s\n\t\t%s" % (string, '0: Arithmetic (default)') 35 string = "%s\n\t\t%s" % (string, '1: Geometric') 36 string = "%s\n\t\t%s" % (string, '2: Harmonic') 32 37 string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 33 38 return string … … 80 85 81 86 md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1]) 87 md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2]) 82 88 md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1) 83 89 md = checkfield(md, 'fieldname', 'smb.isclimatology', 'values', [0, 1]) … … 94 100 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'refreeze', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts) 95 101 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer') 102 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer') 96 103 97 104 #process requested outputs -
issm/trunk-jpl/src/m/classes/SMBpdd.m
r24586 r24793 26 26 precipitations_lgm = NaN; 27 27 steps_per_step = 1; 28 averaging = 0; 28 29 requested_outputs = {}; 29 30 end … … 107 108 end 108 109 md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]); 110 md = checkfield(md,'fieldname','smb.averaging',,'numel',[1],'values',[0 1 2]); 109 111 md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1); 110 112 … … 143 145 end 144 146 fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'); 147 fielddisplay(self, 'averaging', 'averaging methods from short to long steps'); 148 disp(sprintf('%55s 0: Arithmetic (default)'); 149 disp(sprintf('%55s 0: Geometric'); 150 disp(sprintf('%55s 0: Harmonic'); 145 151 fielddisplay(self,'requested_outputs','additional outputs requested'); 146 152 end % }}} … … 160 166 WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlapslgm','format','Double'); 161 167 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer'); 168 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer'); 162 169 if(self.isdelta18o==0 & self.ismungsm==0) 163 170 %WriteData(fid,prefix,'object',self,'class','smb','fieldname','monthlytemperatures','format','DoubleMat','mattype',1); -
issm/trunk-jpl/src/m/classes/SMBpdd.py
r24586 r24793 35 35 self.precipitations_lgm = float('NaN') 36 36 self.steps_per_step = 1 37 self.averaging = 0 37 38 38 39 #set defaults … … 74 75 75 76 string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of smb steps per time step')) 77 string = "%s\n%s" % (string, fielddisplay(self, 'averaging', 'averaging methods from short to long steps')) 78 string = "%s\n\t\t%s" % (string, '0: Arithmetic (default)') 79 string = "%s\n\t\t%s" % (string, '1: Geometric') 80 string = "%s\n\t\t%s" % (string, '2: Harmonic') 81 76 82 string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 77 83 … … 155 161 md = checkfield(md, 'fieldname', 'smb.precipitations_lgm', 'size', [md.mesh.numberofvertices, 12], 'NaN', 1, 'Inf', 1) 156 162 md = checkfield(md, 'fieldname', 'smb.Pfac', 'NaN', 1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1) 157 md = checkfield(md, 'fieldname', 'smb.Tdiff', 'NaN', 1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1)158 md = checkfield(md, 'fieldname', 'smb.sealev', 'NaN',1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1)163 md = checkfield(md, 'fieldname', 'smb.Tdiff', 'NaN', 1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1) 164 md = checkfield(md, 'fieldname', 'smb.sealev', 'NaN', 1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1) 159 165 160 166 md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1]) 167 md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2]) 161 168 md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1) 162 169 return md … … 177 184 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'rlapslgm', 'format', 'Double') 178 185 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer') 186 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer') 179 187 180 188 if (self.isdelta18o == 0 and self.ismungsm == 0): -
issm/trunk-jpl/src/m/classes/SMBpddSicopolis.py
r24591 r24793 28 28 self.isfirnwarming = 0 29 29 self.steps_per_step = 1 30 self.averaging = 0 30 31 self.requested_outputs = [] 31 32 32 33 self.setdefaultparameters() 34 # }}} 35 36 def __repr__(self): # {{{ 37 string = ' surface forcings parameters:' 38 string += '\n SICOPOLIS PDD scheme (Calov & Greve, 2005) :' 39 40 string = "%s\n%s" % (string, fielddisplay(self, 'monthlytemperatures', 'monthly surface temperatures [K]')) 41 string = "%s\n%s" % (string, fielddisplay(self, 'precipitation', 'monthly surface precipitation [m/yr water eq]')) 42 string = "%s\n%s" % (string, fielddisplay(self, 'temperature_anomaly', 'anomaly to monthly reference temperature (additive [K])')) 43 string = "%s\n%s" % (string, fielddisplay(self, 'precipitation_anomaly', 'anomaly to monthly precipitation (multiplicative, e.g. q = q0*exp(0.070458*DeltaT) after Huybrechts (2002)) [no unit])')) 44 string = "%s\n%s" % (string, fielddisplay(self, 'smb_corr', 'correction of smb after PDD call [m/a]')) 45 string = "%s\n%s" % (string, fielddisplay(self, 's0p', 'should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]')) 46 string = "%s\n%s" % (string, fielddisplay(self, 's0t', 'should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]')) 47 string = "%s\n%s" % (string, fielddisplay(self, 'rlaps', 'present day lapse rate (default is 7.4 degree/km)')) 48 string = "%s\n%s" % (string, fielddisplay(self, 'desfac', 'desertification elevation factor (default is -log(2.0)/1000)')) 49 string = "%s\n%s" % (string, fielddisplay(self, 'isfirnwarming', 'is firnwarming (Reeh 1991) activated (0 or 1, default is 1)')) 50 string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of smb steps per time step')) 51 string = "%s\n%s" % (string, fielddisplay(self, 'averaging', 'averaging methods from short to long steps')) 52 string = "%s\n\t\t%s" % (string, '0: Arithmetic (default)') 53 string = "%s\n\t\t%s" % (string, '1: Geometric') 54 string = "%s\n\t\t%s" % (string, '2: Harmonic') 55 56 string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested (TemperaturePDD, SmbAccumulation, SmbMelt)')) 33 57 # }}} 34 58 … … 98 122 md = checkfield(md, 'fieldname', 'smb.rlaps', '>=', 0, 'numel', 1) 99 123 md = checkfield(md, 'fieldname', 'smb.monthlytemperatures', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices, 12]) 100 md = checkfield(md, 'fieldname', 'smb.precipitation', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices, 12])124 md = checkfield(md, 'fieldname', 'smb.precipitation', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices, 12]) 101 125 102 126 md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1]) 127 md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2]) 103 128 md = checkfield(md, 'fieldname', 'smb.requested_outputs', 'stringrow', 1) 104 129 105 130 return md 106 # }}}107 108 def __repr__(self): # {{{109 string = ' surface forcings parameters:'110 string += '\n SICOPOLIS PDD scheme (Calov & Greve, 2005) :'111 112 string = "%s\n%s" % (string, fielddisplay(self, 'monthlytemperatures', 'monthly surface temperatures [K]'))113 string = "%s\n%s" % (string, fielddisplay(self, 'precipitation', 'monthly surface precipitation [m/yr water eq]'))114 string = "%s\n%s" % (string, fielddisplay(self, 'temperature_anomaly', 'anomaly to monthly reference temperature (additive [K])'))115 string = "%s\n%s" % (string, fielddisplay(self, 'precipitation_anomaly', 'anomaly to monthly precipitation (multiplicative, e.g. q = q0*exp(0.070458*DeltaT) after Huybrechts (2002)) [no unit])'))116 string = "%s\n%s" % (string, fielddisplay(self, 'smb_corr', 'correction of smb after PDD call [m/a]'))117 string = "%s\n%s" % (string, fielddisplay(self, 's0p', 'should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'))118 string = "%s\n%s" % (string, fielddisplay(self, 's0t', 'should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]'))119 string = "%s\n%s" % (string, fielddisplay(self, 'rlaps', 'present day lapse rate (default is 7.4 degree/km)'))120 string = "%s\n%s" % (string, fielddisplay(self, 'desfac', 'desertification elevation factor (default is -log(2.0)/1000)'))121 string = "%s\n%s" % (string, fielddisplay(self, 'isfirnwarming', 'is firnwarming (Reeh 1991) activated (0 or 1, default is 1)'))122 string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'))123 string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested (TemperaturePDD, SmbAccumulation, SmbMelt)'))124 131 # }}} 125 132 … … 142 149 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'smb_corr', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts) 143 150 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer') 151 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer') 144 152 145 153 #process requested outputs -
issm/trunk-jpl/src/m/classes/SMBsemic.m
r24240 r24793 20 20 s0gcm = NaN; 21 21 steps_per_step = 1; 22 averaging = 0; 22 23 requested_outputs = {}; 23 24 end … … 80 81 end 81 82 md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]); 83 md = checkfield(md,'fieldname','smb.averaging',,'numel',[1],'values',[0 1 2]); 82 84 md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1); 83 85 … … 104 106 fielddisplay(self,'s0gcm','GCM reference elevation; (default is 0) [m]'); 105 107 fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'); 108 fielddisplay(self, 'averaging', 'averaging methods from short to long steps'); 109 disp(sprintf('%55s 0: Arithmetic (default)'); 110 disp(sprintf('%55s 0: Geometric'); 111 disp(sprintf('%55s 0: Harmonic'); 106 112 fielddisplay(self,'requested_outputs','additional outputs requested'); 107 113 end % }}} … … 124 130 WriteData(fid,prefix,'object',self,'class','smb','fieldname','dailytemperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 125 131 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer'); 132 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer'); 126 133 %process requested outputs 127 134 outputs = self.requested_outputs; -
issm/trunk-jpl/src/m/classes/hydrologydc.m
r24240 r24793 12 12 rel_tol = 0; 13 13 max_iter = 0; 14 steps_per_step = 0; 14 steps_per_step = 0; 15 averaging = 0; 15 16 sedimentlimit_flag = 0; 16 17 sedimentlimit = 0; … … 19 20 leakage_factor = 0; 20 21 basal_moulin_input = NaN; 21 22 requested_outputs = {}; 22 23 23 24 spcsediment_head = NaN; 24 25 mask_thawed_node = NaN; 25 26 sediment_transmitivity = NaN; 26 27 sediment_compressibility = 0; … … 39 40 epl_conductivity = 0; 40 41 eplflip_lock = 0; 41 42 end 42 43 methods 43 % {{{ function self = extrude(self,md) 44 function self = extrude(self,md) 44 function self = extrude(self,md) % {{{ 45 45 self.spcsediment_head=project3d(md,'vector',self.spcsediment_head,'type','node','layer',1); 46 46 self.sediment_transmitivity=project3d(md,'vector',self.sediment_transmitivity,'type','node','layer',1); 47 47 self.basal_moulin_input=project3d(md,'vector',self.basal_moulin_input,'type','node','layer',1); 48 48 self.mask_thawed_node=project3d(md,'vector',self.mask_thawed_node,'type','node','layer',1); 49 49 if(self.isefficientlayer==1); 50 50 self.spcepl_head=project3d(md,'vector',self.spcepl_head,'type','node','layer',1); 51 self.mask_eplactive_node=project3d(md,'vector',self.mask_eplactive_node,'type','node','layer',1); 52 end 53 end 54 % }}} 55 % {{{ function self = hydrologydc(varargin) 56 function self = hydrologydc(varargin) 51 self.mask_eplactive_node=project3d(md,'vector',self.mask_eplactive_node,'type','node','layer',1); 52 end 53 end % }}} 54 function self = hydrologydc(varargin) % {{{ 57 55 switch nargin 58 56 case 0 … … 61 59 error('constructor not supported'); 62 60 end 63 end 64 % }}} 65 function list = defaultoutputs(self,md) % {{{ 66 list = {'SedimentHead','SedimentHeadResidual','EffectivePressure'}; 67 if self.isefficientlayer, 68 list=[list,{'EplHead','HydrologydcMaskEplactiveNode','HydrologydcMaskEplactiveElt','EplHeadSlopeX','EplHeadSlopeY','HydrologydcEplThickness'}]; 69 end 70 if self.steps_per_step>1, 71 list = [list,'EffectivePressureSubstep','SedimentHeadSubstep']; 72 if self.isefficientlayer, 73 list = [list,'EplHeadSubstep','HydrologydcEplThicknessSubstep']; 74 end 75 end 76 end % }}} 77 61 end% }}} 62 function list = defaultoutputs(self,md) % {{{ 63 list = {'SedimentHead','SedimentHeadResidual','EffectivePressure'}; 64 if self.isefficientlayer, 65 list=[list,{'EplHead','HydrologydcMaskEplactiveNode','HydrologydcMaskEplactiveElt','EplHeadSlopeX','EplHeadSlopeY','HydrologydcEplThickness'}]; 66 end 67 if self.steps_per_step>1, 68 list = [list,'EffectivePressureSubstep','SedimentHeadSubstep']; 69 if self.isefficientlayer, 70 list = [list,'EplHeadSubstep','HydrologydcEplThicknessSubstep']; 71 end 72 end 73 end % }}} 78 74 function self = initialize(self,md) % {{{ 79 75 self.epl_colapse_thickness = self.sediment_transmitivity/self.epl_conductivity; … … 84 80 85 81 end % }}} 86 % {{{ function self = setdefaultparameters(self) 87 88 function self = setdefaultparameters(self) 89 82 function self = setdefaultparameters(self)% {{{ 90 83 %Parameters from de Fleurian 2014 91 84 self.water_compressibility = 5.04e-10; … … 96 89 self.max_iter = 100; 97 90 self.steps_per_step = 1; 91 self.averaging = 0; 98 92 self.sedimentlimit_flag = 0; 99 93 self.sedimentlimit = 0; … … 101 95 self.unconfined_flag = 0; 102 96 self.leakage_factor = 1.0e-10; 103 97 self.requested_outputs = {'default'}; 104 98 105 99 … … 117 111 self.epl_max_thickness = 5.0; 118 112 self.eplflip_lock = 0; 119 end 120 121 % }}} 122 % {{{ function md = checkconsistency(self,md,solution,analyses) 123 124 function md = checkconsistency(self,md,solution,analyses) 125 %Early return 113 end % }}} 114 function md = checkconsistency(self,md,solution,analyses)% {{{ 115 %Early return 126 116 if ~ismember('HydrologyDCInefficientAnalysis',analyses) & ~ismember('HydrologyDCEfficientAnalysis',analyses), 127 117 return; … … 135 125 md = checkfield(md,'fieldname','hydrology.max_iter','>',0,'numel',1); 136 126 md = checkfield(md,'fieldname','hydrology.steps_per_step','>',0,'numel',1); 127 md = checkfield(md,'fieldname','hydrology.averaging',,'numel',[1],'values',[0 1 2]); 137 128 md = checkfield(md,'fieldname','hydrology.sedimentlimit_flag','numel',[1],'values',[0 1 2 3]); 138 129 md = checkfield(md,'fieldname','hydrology.transfer_flag','numel',[1],'values',[0 1]); 139 130 md = checkfield(md,'fieldname','hydrology.unconfined_flag','numel',[1],'values',[0 1]); 140 131 md = checkfield(md,'fieldname','hydrology.requested_outputs','stringrow',1); 141 132 if self.sedimentlimit_flag==1, 142 133 md = checkfield(md,'fieldname','hydrology.sedimentlimit','>',0,'numel',1); … … 152 143 md = checkfield(md,'fieldname','hydrology.sediment_thickness','>',0,'numel',1); 153 144 md = checkfield(md,'fieldname','hydrology.sediment_transmitivity','>=',0,'size',[md.mesh.numberofvertices 1]); 154 145 md = checkfield(md,'fieldname','hydrology.mask_thawed_node','size',[md.mesh.numberofvertices 1],'values',[0 1]); 155 146 156 147 if self.isefficientlayer==1, … … 169 160 end 170 161 end 171 end 172 173 % }}} 174 % {{{ function disp(self) 175 176 function disp(self) 162 end% }}} 163 function disp(self)% {{{ 177 164 disp(sprintf(' hydrology Dual Porous Continuum Equivalent parameters:')); 178 165 disp(sprintf(' - general parameters')); … … 184 171 fielddisplay(self,'max_iter','maximum number of nonlinear iteration'); 185 172 fielddisplay(self,'steps_per_step','number of hydrology steps per timestep'); 173 fielddisplay(self, 'averaging', 'averaging methods from short to long steps'); 174 disp(sprintf('%55s 0: Arithmetic (default)'); 175 disp(sprintf('%55s 0: Geometric'); 176 disp(sprintf('%55s 0: Harmonic'); 186 177 fielddisplay(self,'sedimentlimit_flag','what kind of upper limit is applied for the inefficient layer'); 187 178 disp(sprintf('%55s 0: no limit',' ')); … … 224 215 fielddisplay(self,'eplflip_lock','lock the epl activation to avoid fli-floping (default is 0, no stabilization)'); 225 216 end 226 227 end 228 229 % }}} 230 % {{{ function marshall(self,prefix,md,fid) 231 232 function marshall(self,prefix,md,fid) 217 end % }}} 218 function marshall(self,prefix,md,fid)% {{{ 233 219 WriteData(fid,prefix,'name','md.hydrology.model','data',1,'format','Integer'); 234 220 WriteData(fid,prefix,'object',self,'fieldname','water_compressibility','format','Double'); … … 239 225 WriteData(fid,prefix,'object',self,'fieldname','max_iter','format','Integer'); 240 226 WriteData(fid,prefix,'object',self,'fieldname','steps_per_step','format','Integer'); 227 WriteData(fid,prefix,'object',self,'fieldname','averaging','format','Integer'); 241 228 WriteData(fid,prefix,'object',self,'fieldname','sedimentlimit_flag','format','Integer'); 242 229 WriteData(fid,prefix,'object',self,'fieldname','transfer_flag','format','Integer'); … … 255 242 WriteData(fid,prefix,'object',self,'fieldname','sediment_thickness','format','Double'); 256 243 WriteData(fid,prefix,'object',self,'fieldname','sediment_transmitivity','format','DoubleMat','mattype',1'); 257 WriteData(fid,prefix,'object',self,'fieldname','mask_thawed_node','format','DoubleMat','mattype',1); 258 244 WriteData(fid,prefix,'object',self,'fieldname','mask_thawed_node','format','DoubleMat','mattype',1); 259 245 if self.isefficientlayer==1, 260 246 WriteData(fid,prefix,'object',self,'fieldname','spcepl_head','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); … … 269 255 WriteData(fid,prefix,'object',self,'fieldname','eplflip_lock','format','Integer'); 270 256 end 271 outputs = self.requested_outputs; 272 pos = find(ismember(outputs,'default')); 273 if ~isempty(pos), 274 outputs(pos) = []; %remove 'default' from outputs 275 outputs = [outputs defaultoutputs(self,md)]; %add defaults 276 end 277 WriteData(fid,prefix,'data',outputs,'name','md.hydrology.requested_outputs','format','StringArray'); 278 end 279 280 % }}} 257 outputs = self.requested_outputs; 258 pos = find(ismember(outputs,'default')); 259 if ~isempty(pos), 260 outputs(pos) = []; %remove 'default' from outputs 261 outputs = [outputs defaultoutputs(self,md)]; %add defaults 262 end 263 WriteData(fid,prefix,'data',outputs,'name','md.hydrology.requested_outputs','format','StringArray'); 264 end% }}} 281 265 end 282 266 end -
issm/trunk-jpl/src/m/classes/hydrologydc.py
r24240 r24793 22 22 self.max_iter = 0 23 23 self.steps_per_step = 0 24 self.averaging = 0 24 25 self.sedimentlimit_flag = 0 25 26 self.sedimentlimit = 0 … … 50 51 #set defaults 51 52 self.setdefaultparameters() 52 # }}}53 # }}} 53 54 54 55 def __repr__(self): # {{{ … … 62 63 string = "%s\n%s" % (string, fielddisplay(self, 'max_iter', 'maximum number of nonlinear iteration')) 63 64 string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of hydrology steps per time step')) 65 string = "%s\n%s" % (string, fielddisplay(self, 'averaging', 'averaging methods from short to long steps')) 66 string = "%s\n\t\t%s" % (string, '0: Arithmetic (default)') 67 string = "%s\n\t\t%s" % (string, '1: Geometric') 68 string = "%s\n\t\t%s" % (string, '2: Harmonic') 64 69 string = "%s\n%s" % (string, fielddisplay(self, 'basal_moulin_input', 'water flux at a given point [m3 s - 1]')) 65 70 string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested')) … … 105 110 string = "%s\n%s" % (string, fielddisplay(self, 'eplflip_lock', 'lock epl activity to avoid flip - floping (default is 0, no stabilization)')) 106 111 return string 112 # }}} 107 113 108 114 def extrude(self, md): # {{{ … … 115 121 self.mask_eplactive_node = project3d(md, 'vector', self.mask_eplactive_node, 'type', 'node', 'layer', 1) 116 122 return self 117 # }}}118 119 def setdefaultparameters(self): # {{{123 # }}} 124 125 def setdefaultparameters(self): # {{{ 120 126 #Parameters from de Fleurian 2014 121 127 self.water_compressibility = 5.04e-10 … … 126 132 self.max_iter = 100 127 133 self.steps_per_step = 1 134 self.averaging = 0 128 135 self.sedimentlimit_flag = 0 129 136 self.sedimentlimit = 0 … … 158 165 list.extend(['EplHeadSubstep', 'HydrologydcEplThicknessSubstep']) 159 166 return list 160 # }}}167 # }}} 161 168 162 169 def initialize(self, md): # {{{ … … 169 176 # }}} 170 177 171 def checkconsistency(self, md, solution, analyses): # {{{178 def checkconsistency(self, md, solution, analyses): # {{{ 172 179 #Early return 173 180 if 'HydrologyDCInefficientAnalysis' not in analyses and 'HydrologyDCEfficientAnalysis' not in analyses: … … 181 188 md = checkfield(md, 'fieldname', 'hydrology.max_iter', '>', 0., 'numel', [1]) 182 189 md = checkfield(md, 'fieldname', 'hydrology.steps_per_step', '>=', 1, 'numel', [1]) 190 md = checkfield(md, 'fieldname', 'hydrology.averaging', 'numel', [1], 'values', [0, 1, 2]) 183 191 md = checkfield(md, 'fieldname', 'hydrology.sedimentlimit_flag', 'numel', [1], 'values', [0, 1, 2, 3]) 184 192 md = checkfield(md, 'fieldname', 'hydrology.transfer_flag', 'numel', [1], 'values', [0, 1]) … … 214 222 # }}} 215 223 216 def marshall(self, prefix, md, fid): # {{{224 def marshall(self, prefix, md, fid): # {{{ 217 225 WriteData(fid, prefix, 'name', 'md.hydrology.model', 'data', 1, 'format', 'Integer') 218 226 WriteData(fid, prefix, 'object', self, 'fieldname', 'water_compressibility', 'format', 'Double') … … 223 231 WriteData(fid, prefix, 'object', self, 'fieldname', 'max_iter', 'format', 'Integer') 224 232 WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer') 233 WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer') 225 234 WriteData(fid, prefix, 'object', self, 'fieldname', 'sedimentlimit_flag', 'format', 'Integer') 226 235 WriteData(fid, prefix, 'object', self, 'fieldname', 'transfer_flag', 'format', 'Integer')
Note:
See TracChangeset
for help on using the changeset viewer.