Changeset 27458 for issm/trunk-jpl/src
- Timestamp:
- 12/08/22 00:23:36 (2 years ago)
- Location:
- issm/trunk-jpl/src/m
- Files:
-
- 137 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/boundaryconditions/getlovenumbers.py
r26301 r27458 4 4 5 5 6 def getlovenumbers(*args): #{{{6 def getlovenumbers(*args): # {{{ 7 7 """GETLOVENUMBERS - provide love numbers retrieved from: 8 8 http://www.srosat.com/iag-jsg/loveNb.php in a chosen reference frame … … 10085 10085 10086 10086 return series 10087 # }}}10087 # }}} -
issm/trunk-jpl/src/m/classes/SMBarma.py
r27417 r27458 61 61 # }}} 62 62 63 def setdefaultparameters(self): #{{{63 def setdefaultparameters(self): # {{{ 64 64 self.ar_order = 0.0 # Autoregression model of order 0 65 65 self.ma_order = 0.0 # Moving-average model of order 0 -
issm/trunk-jpl/src/m/classes/SMBcomponents.py
r27417 r27458 103 103 self.requested_outputs = ['default'] 104 104 return self 105 # }}}105 # }}} -
issm/trunk-jpl/src/m/classes/SMBd18opdd.py
r27455 r27458 44 44 else: 45 45 raise Exception('constructor not supported') 46 # }}}46 # }}} 47 47 def __repr__(self): # {{{ 48 48 s = ' surface forcings parameters:\n' … … 81 81 s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 82 82 return s 83 # }}}83 # }}} 84 84 def extrude(self, md): # {{{ 85 85 if self.isd18opd: … … 94 94 self.s0t = project3d(md, 'vector', self.s0t, 'type', 'node') 95 95 return self 96 # }}}96 # }}} 97 97 def defaultoutputs(self, md): # {{{ 98 98 return ['SmbMassBalance'] 99 # }}}99 # }}} 100 100 def initialize(self, md): # {{{ 101 101 if np.all(np.isnan(self.s0p)): … … 122 122 self.requested_outputs = ['default'] 123 123 return self 124 # }}}124 # }}} 125 125 def checkconsistency(self, md, solution, analyses): # {{{ 126 126 if 'MasstransportAnalysis' in analyses: -
issm/trunk-jpl/src/m/classes/SMBforcing.py
r27453 r27458 28 28 else: 29 29 raise Exception('constructor not supported') 30 # }}}30 # }}} 31 31 32 32 def __repr__(self): # {{{ … … 40 40 s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 41 41 return s 42 # }}}42 # }}} 43 43 44 44 def extrude(self, md): # {{{ 45 45 self.mass_balance = project3d(md, 'vector', self.mass_balance, 'type', 'node') 46 46 return self 47 # }}}47 # }}} 48 48 49 49 def defaultoutputs(self, md): # {{{ 50 50 return ['SmbMassBalance'] 51 # }}}51 # }}} 52 52 53 53 def initialize(self, md): # {{{ … … 56 56 print(" no smb.mass_balance specified: values set as zero") 57 57 return self 58 # }}}58 # }}} 59 59 60 60 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/SMBgemb.py
r27448 r27458 156 156 else: 157 157 raise Exception('constructor not supported: need mesh and geometry to set defaults') 158 # }}}158 # }}} 159 159 160 160 def __repr__(self): # {{{ … … 267 267 s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 268 268 return s 269 # }}}269 # }}} 270 270 271 271 def extrude(self, md): # {{{ … … 316 316 317 317 return self 318 # }}}318 # }}} 319 319 320 320 def defaultoutputs(self, md): # {{{ 321 321 return ['SmbMassBalance','SmbAccumulatedMassBalance'] 322 # }}}322 # }}} 323 323 324 324 def setdefaultparameters(self, mesh, geometry): # {{{ … … 390 390 # Element.cpp 391 391 self.Sizeini = 2 * np.ones((mesh.numberofelements,)) 392 # }}}392 # }}} 393 393 394 394 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/SMBgradients.py
r27415 r27458 23 23 # Set defaults 24 24 self.setdefaultparameters() 25 # }}}25 # }}} 26 26 27 27 def __repr__(self): # {{{ … … 41 41 42 42 return string 43 # }}}43 # }}} 44 44 45 45 def extrude(self, md): # {{{ 46 46 #Nothing for now 47 47 return self 48 # }}}48 # }}} 49 49 50 50 def defaultoutputs(self, md): # {{{ 51 51 return ['SmbMassBalance'] 52 # }}}52 # }}} 53 53 54 54 def setdefaultparameters(self): # {{{ … … 56 56 self.requested_outputs = ['default'] 57 57 return self 58 # }}}58 # }}} 59 59 60 60 def initialize(self, md): # {{{ 61 61 #Nothing for now 62 62 return self 63 # }}}63 # }}} 64 64 65 65 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/SMBgradientscomponents.py
r27414 r27458 23 23 self.averaging = 0 24 24 self.requested_outputs = ['default'] 25 # }}}25 # }}} 26 26 27 27 def __repr__(self): # {{{ … … 41 41 42 42 return string 43 # }}}43 # }}} 44 44 45 45 def extrude(self, md): # {{{ 46 46 #Nothing for now 47 47 return self 48 # }}}48 # }}} 49 49 50 50 def defaultoutputs(self, md): # {{{ … … 53 53 list.extend(['SmbMassBalanceSubstep']) 54 54 return list 55 # }}}55 # }}} 56 56 57 57 def initialize(self, md): # {{{ 58 58 #Nothing for now 59 59 return self 60 # }}}60 # }}} 61 61 62 62 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/SMBgradientsela.py
r27415 r27458 25 25 else: 26 26 error('constructor not supported') 27 # }}}27 # }}} 28 28 29 29 def __repr__(self): # {{{ … … 44 44 string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 45 45 return string 46 # }}}46 # }}} 47 47 48 48 def extrude(self, md): # {{{ 49 49 #Nothing for now 50 50 return self 51 # }}}51 # }}} 52 52 53 53 def defaultoutputs(self, md): # {{{ 54 54 return ['SmbMassBalance'] 55 # }}}55 # }}} 56 56 57 57 def initialize(self, md): # {{{ 58 58 #Nothing for now 59 59 return self 60 # }}}60 # }}} 61 61 62 62 def setdefaultparameters(self): # {{{ … … 65 65 self.requested_outputs = ['default'] 66 66 return self 67 # }}}67 # }}} 68 68 69 69 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/SMBhenning.py
r27453 r27458 28 28 else: 29 29 raise Exception('constructor not supported') 30 # }}}30 # }}} 31 31 32 32 def __repr__(self): # {{{ … … 40 40 s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 41 41 return s 42 # }}}42 # }}} 43 43 44 44 def extrude(self, md): # {{{ 45 45 self.smbref = project3d(md, 'vector', self.smbref, 'type', 'node') 46 46 return self 47 # }}}47 # }}} 48 48 49 49 def defaultoutputs(self, md): # {{{ 50 50 return ['SmbMassBalance'] 51 # }}}51 # }}} 52 52 53 53 def initialize(self, md): # {{{ … … 56 56 print(" no smb.smbref specified: values set as zero") 57 57 return self 58 # }}}58 # }}} 59 59 60 60 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/SMBmeltcomponents.py
r27415 r27458 27 27 else: 28 28 error('constructor not supported') 29 # }}}29 # }}} 30 30 31 31 def __repr__(self): # {{{ … … 42 42 s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 43 43 return s 44 # }}}44 # }}} 45 45 46 46 def extrude(self, md): # {{{ … … 50 50 self.refreeze = project3d(md, 'vector', self.refreeze, 'type', 'node') 51 51 return self 52 # }}}52 # }}} 53 53 54 54 def defaultoutputs(self, md): # {{{ 55 55 return ['SmbMassBalance'] 56 # }}}56 # }}} 57 57 58 58 def initialize(self, md): # {{{ … … 74 74 75 75 return self 76 # }}}76 # }}} 77 77 78 78 def checkconsistency(self, md, solution, analyses): # {{{ … … 118 118 self.requested_outputs = ['default'] 119 119 return self 120 # }}}120 # }}} -
issm/trunk-jpl/src/m/classes/SMBpdd.py
r27415 r27458 42 42 # Set defaults 43 43 self.setdefaultparameters() 44 # }}}44 # }}} 45 45 46 46 def __repr__(self): # {{{ … … 112 112 self.s0t = project3d(md, 'vector', self.s0t, 'type', 'node') 113 113 return self 114 # }}}114 # }}} 115 115 116 116 def defaultoutputs(self, md): # {{{ 117 117 return ['SmbMassBalance'] 118 # }}}118 # }}} 119 119 120 120 def initialize(self, md): # {{{ … … 128 128 129 129 return self 130 # }}}130 # }}} 131 131 132 132 def setdefaultparameters(self): # {{{ … … 141 141 142 142 return self 143 # }}}143 # }}} 144 144 145 145 def checkconsistency(self, md, solution, analyses): # {{{ … … 181 181 md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1) 182 182 return md 183 # }}}183 # }}} 184 184 185 185 def marshall(self, prefix, md, fid): # {{{ -
issm/trunk-jpl/src/m/classes/SMBsemic.py
r27453 r27458 37 37 else: 38 38 raise Exception('constructor not supported') 39 # }}}39 # }}} 40 40 41 41 def __repr__(self): # {{{ … … 64 64 s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 65 65 return s 66 # }}}66 # }}} 67 67 68 68 def extrude(self, md): # {{{ … … 78 78 self.s0gcm = project3d(md, 'vector', self.s0gcm, 'type', 'node') 79 79 return self 80 # }}}80 # }}} 81 81 82 82 def defaultoutputs(self, md): # {{{ 83 83 return ['SmbMassBalance'] 84 # }}}84 # }}} 85 85 86 86 def initialize(self, md): # {{{ … … 89 89 print(" no SMBsemic.s0gcm specified: values set as zero") 90 90 return self 91 # }}}91 # }}} 92 92 93 93 def setdefaultparameters(self): #{{{ -
issm/trunk-jpl/src/m/classes/amr.py
r26301 r27458 11 11 """ 12 12 13 def __init__(self): #{{{13 def __init__(self): # {{{ 14 14 self.hmin = 0 15 15 self.hmax = 0 … … 33 33 34 34 self.setdefaultparameters() 35 # }}}35 # }}} 36 36 37 def __repr__(self): #{{{37 def __repr__(self): # {{{ 38 38 s = ' amr parameters:\n' 39 39 s += '{}\n'.format(fielddisplay(self, 'hmin', 'minimum element length')) … … 56 56 s += '{}\n'.format(fielddisplay(self, 'restart', 'indicates if ReMesh() will call before first time step')) 57 57 return s 58 # }}}58 # }}} 59 59 60 def setdefaultparameters(self): #{{{60 def setdefaultparameters(self): # {{{ 61 61 self.hmin = 100 62 62 self.hmax = 100e3 … … 89 89 self.restart = 0 90 90 return self 91 # }}}91 # }}} 92 92 93 def checkconsistency(self, md, solution, analyses): #{{{93 def checkconsistency(self, md, solution, analyses): # {{{ 94 94 md = checkfield(md, 'fieldname', 'amr.hmax', 'numel', [1], '>', 0, 'NaN', 1) 95 95 md = checkfield(md, 'fieldname', 'amr.hmin', 'numel', [1], '>', 0, '<', self.hmax, 'NaN', 1) … … 112 112 # }}} 113 113 114 def marshall(self, prefix, md, fid): #{{{114 def marshall(self, prefix, md, fid): # {{{ 115 115 WriteData(fid, prefix, 'name', 'md.amr.type', 'data', 1, 'format', 'Integer') 116 116 WriteData(fid, prefix, 'object', self, 'fieldname', 'hmin', 'format', 'Double') … … 133 133 WriteData(fid, prefix, 'object', self, 'fieldname', 'deviatoricerror_maximum', 'format', 'Double') 134 134 WriteData(fid, prefix, 'object', self, 'class', 'amr', 'fieldname', 'restart', 'format', 'Integer') 135 # }}}135 # }}} -
issm/trunk-jpl/src/m/classes/autodiff.py
r25585 r27458 104 104 WriteData(fid, prefix, 'object', self, 'fieldname', 'gcTriggerMaxSize', 'format', 'Double') 105 105 WriteData(fid, prefix, 'object', self, 'fieldname', 'tapeAlloc', 'format', 'Integer') 106 # }}}106 # }}} 107 107 #process dependent variables {{{ 108 108 num_dependent_objects = len(self.dependents) … … 119 119 WriteData(fid, prefix, 'data', names, 'name', 'md.autodiff.dependent_object_names', 'format', 'StringArray') 120 120 WriteData(fid, prefix, 'data', indices, 'name', 'md.autodiff.dependent_object_indices', 'format', 'IntMat', 'mattype', 3) 121 # }}}121 # }}} 122 122 #process independent variables {{{ 123 123 num_independent_objects = len(self.independents) … … 134 134 WriteData(fid, prefix, 'data', names, 'name', 'md.autodiff.independent_object_names', 'format', 'StringArray') 135 135 WriteData(fid, prefix, 'data', types, 'name', 'md.autodiff.independent_object_types', 'format', 'IntMat', 'mattype', 3) 136 # }}}136 # }}} 137 137 #if driver is fos_forward, build index: {{{ 138 138 if strcmpi(self.driver, 'fos_forward'): … … 151 151 index -= 1 #get c - index numbering going 152 152 WriteData(fid, prefix, 'data', index, 'name', 'md.autodiff.fos_forward_index', 'format', 'Integer') 153 # }}}153 # }}} 154 154 #if driver is fos_reverse, build index: {{{ 155 155 if strcmpi(self.driver, 'fos_reverse'): … … 165 165 index -= 1 #get c - index numbering going 166 166 WriteData(fid, prefix, 'data', index, 'name', 'md.autodiff.fos_reverse_index', 'format', 'Integer') 167 # }}}167 # }}} 168 168 #if driver is fov_forward, build indices: {{{ 169 169 if strcmpi(self.driver, 'fov_forward'): … … 182 182 indices -= 1 #get c - indices numbering going 183 183 WriteData(fid, prefix, 'data', indices, 'name', 'md.autodiff.fov_forward_indices', 'format', 'IntMat', 'mattype', 3) 184 # }}}184 # }}} 185 185 #deal with mass fluxes: {{{ 186 186 mass_flux_segments = [dep.segments for dep in self.dependents if strcmpi(dep.name, 'MassFlux')] … … 192 192 flag = False 193 193 WriteData(fid, prefix, 'data', flag, 'name', 'md.autodiff.mass_flux_segments_present', 'format', 'Boolean') 194 # }}}194 # }}} 195 195 #deal with trace keep on: {{{ 196 196 keep = False … … 210 210 keep = False 211 211 WriteData(fid, prefix, 'data', keep, 'name', 'md.autodiff.keep', 'format', 'Boolean') 212 # }}}212 # }}} 213 213 214 214 return -
issm/trunk-jpl/src/m/classes/balancethickness.py
r24213 r27458 23 23 self.setdefaultparameters() 24 24 25 # }}}25 # }}} 26 26 27 27 def __repr__(self): # {{{ … … 32 32 string = "%s\n%s" % (string, fielddisplay(self, 'stabilization', "0: None, 1: SU, 2: SSA's artificial diffusivity, 3:DG")) 33 33 return string 34 # }}}34 # }}} 35 35 36 36 def setdefaultparameters(self): # {{{ … … 38 38 self.stabilization = 1 39 39 return self 40 # }}}40 # }}} 41 41 42 42 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/basalforcings.py
r26358 r27458 20 20 21 21 self.setdefaultparameters() 22 # }}}22 # }}} 23 23 def __repr__(self): # {{{ 24 24 s = ' basal forcings parameters:\n' … … 27 27 s += '{}\n'.format(fielddisplay(self, 'geothermalflux', 'geothermal heat flux [W/m^2]')) 28 28 return s 29 # }}}29 # }}} 30 30 def extrude(self, md): # {{{ 31 31 self.groundedice_melting_rate = project3d(md, 'vector', self.groundedice_melting_rate, 'type', 'node', 'layer', 1) … … 33 33 self.geothermalflux = project3d(md, 'vector', self.geothermalflux, 'type', 'node', 'layer', 1) # Bedrock only gets geothermal flux 34 34 return self 35 # }}}35 # }}} 36 36 def initialize(self, md): # {{{ 37 37 if np.all(np.isnan(self.groundedice_melting_rate)): … … 42 42 print(' no basalforcings.floatingice_melting_rate specified: values set as zero') 43 43 return self 44 # }}}44 # }}} 45 45 def setdefaultparameters(self): # {{{ 46 46 return self 47 # }}}47 # }}} 48 48 def checkconsistency(self, md, solution, analyses): # {{{ 49 49 if 'MasstransportAnalysis' in analyses and not solution == 'TransientSolution' and not md.transient.ismasstransport: -
issm/trunk-jpl/src/m/classes/basin.py
r25455 r27458 18 18 19 19 20 class basin(object): #{{{20 class basin(object): # {{{ 21 21 """BASIN class definition 22 22 … … 25 25 """ 26 26 27 def __init__(self, *args): #{{{27 def __init__(self, *args): # {{{ 28 28 self.boundaries = [] 29 29 self.name = '' … … 55 55 56 56 self.proj = proj 57 # }}}58 59 def __repr__(self): # {{{57 # }}} 58 59 def __repr__(self): # {{{ 60 60 s = ' basin parameters:\n' 61 61 s += '{}\n'.format(fielddisplay(self, 'continent', 'continent name')) … … 67 67 68 68 return s 69 # }}}70 71 def setdefaultparameters(self): # {{{69 # }}} 70 71 def setdefaultparameters(self): # {{{ 72 72 self.name = '' 73 73 self.continent = '' … … 76 76 77 77 return self 78 # }}}79 80 def isnameany(self, *args): #{{{78 # }}} 79 80 def isnameany(self, *args): # {{{ 81 81 boolean = 0 82 82 for arg in args: … … 90 90 break 91 91 return boolean 92 # }}}93 94 def iscontinentany(self, *args): #{{{92 # }}} 93 94 def iscontinentany(self, *args): # {{{ 95 95 boolean = 0 96 96 for arg in args: … … 104 104 break 105 105 return boolean 106 # }}}107 108 def outputname(self, *args): #{{{106 # }}} 107 108 def outputname(self, *args): # {{{ 109 109 #recover options 110 110 options = pairoptions(*args) … … 118 118 119 119 return output 120 # }}}121 122 def plot(self, *args): #{{{120 # }}} 121 122 def plot(self, *args): # {{{ 123 123 #add option 124 124 for i in range(len(self.boundaries)): 125 125 self.boundaries[i].plot('proj', self.proj, *args) 126 # }}}127 128 def plot3d(self, *args): #{{{126 # }}} 127 128 def plot3d(self, *args): # {{{ 129 129 #add option 130 130 for i in range(len(self.boundaries)): 131 131 self.boundaries[i].plot3d(*args) 132 # }}}133 134 def contour(self, *args): #{{{132 # }}} 133 134 def contour(self, *args): # {{{ 135 135 #recover options 136 136 options = pairoptions(*args) … … 162 162 163 163 return out 164 # }}}165 166 def checkconsistency(self, *args): #{{{164 # }}} 165 166 def checkconsistency(self, *args): # {{{ 167 167 #recover options 168 168 options = pairoptions(*args) … … 180 180 boundary == self.boundaries[i] 181 181 boundary.checkconsistency() 182 # }}}183 184 def contourplot(self, *args): #{{{182 # }}} 183 184 def contourplot(self, *args): # {{{ 185 185 contour = self.contour() 186 186 plot(contour.x, contour.y, 'r*-') 187 # }}}188 189 def shapefilecrop(self, *args): #{{{187 # }}} 188 189 def shapefilecrop(self, *args): # {{{ 190 190 #recover options 191 191 options = pairoptions(*args) … … 252 252 253 253 return output 254 # }}}255 # }}}254 # }}} 255 # }}} -
issm/trunk-jpl/src/m/classes/boundary.py
r25455 r27458 10 10 11 11 12 class boundary(object): #{{{12 class boundary(object): # {{{ 13 13 """BOUNDARY class definition 14 14 … … 17 17 """ 18 18 19 def __init__(self, *args): #{{{19 def __init__(self, *args): # {{{ 20 20 self.boundaries = [] 21 21 self.name = '' … … 51 51 52 52 self.proj = proj 53 # }}}53 # }}} 54 54 55 def __repr__(self): #{{{55 def __repr__(self): # {{{ 56 56 s = ' boundary parameters:\n' 57 57 s += '{}\n'.format(fielddisplay(self, 'shppath', 'path to filename for this boundary')) … … 61 61 62 62 return s 63 # }}}63 # }}} 64 64 65 def setdefaultparameters(self): #{{{65 def setdefaultparameters(self): # {{{ 66 66 self.shppath = '' 67 67 self.shpfilename = '' … … 70 70 71 71 return self 72 # }}}72 # }}} 73 73 74 def name(self): #{{{74 def name(self): # {{{ 75 75 output = self.shpfilename 76 76 77 77 return output 78 # }}}78 # }}} 79 79 80 def edges(self): #{{{80 def edges(self): # {{{ 81 81 #read domain 82 82 path, name, ext = fileparts(self.shpfilename) … … 92 92 93 93 return output 94 # }}}94 # }}} 95 95 96 def plot(self, *args): #{{{96 def plot(self, *args): # {{{ 97 97 #recover options 98 98 options = pairoptions(*args) … … 131 131 # y = domain[i].y * unitmultiplier 132 132 # if len(x) == 1: 133 # }}}133 # }}} 134 134 135 135 #TODO: Finish translating from MATLAB after test2004.py runs without plot 136 # }}}136 # }}} 137 137 138 def checkconsistency(self, *args): #{{{138 def checkconsistency(self, *args): # {{{ 139 139 #recover options 140 140 options = pairoptions(*args) … … 157 157 raise Exception('boundary {} has two vertices extermely close to one another'.format(shpfilename)) 158 158 159 def plot3d(self, *args): #{{{159 def plot3d(self, *args): # {{{ 160 160 #recover options 161 161 options = pairoptions(*args) … … 181 181 182 182 #TODO: Finish translating from MATLAB after test2004.py runs without plot 183 # }}}184 # }}}183 # }}} 184 # }}} -
issm/trunk-jpl/src/m/classes/calving.py
r25844 r27458 17 17 self.calvingrate = np.nan 18 18 #self.setdefaultparameters() # Uncomment if/when setdefaultparameters is used 19 # }}}19 # }}} 20 20 21 21 def __repr__(self): # {{{ … … 23 23 s += '{}\n'.format(fielddisplay(self, 'calvingrate', 'calving rate at given location [m/a]')) 24 24 return s 25 # }}}25 # }}} 26 26 27 27 def setdefaultparameters(self): # {{{ 28 28 return self 29 # }}}29 # }}} 30 30 31 31 def extrude(self, md): # {{{ 32 32 self.calvingrate = project3d(md, 'vector', self.calvingrate, 'type', 'node') 33 33 return self 34 # }}}34 # }}} 35 35 36 36 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/calvingcrevassedepth.py
r26444 r27458 18 18 19 19 #self.setdefaultparameters() # Uncomment if/when setdefaultparameters is used 20 # }}}20 # }}} 21 21 def __repr__(self): # {{{ 22 22 s = ' Calving Pi parameters:' … … 25 25 s += '{}\n'.format(fielddisplay(self, 'water_height', 'water height in the crevasse [m]')) 26 26 return s 27 # }}}27 # }}} 28 28 def setdefaultparameters(self): # {{{ 29 29 return self 30 # }}}30 # }}} 31 31 def extrude(self, md): # {{{ 32 32 return self 33 # }}}33 # }}} 34 34 def checkconsistency(self, md, solution, analyses): # {{{ 35 35 #Early return -
issm/trunk-jpl/src/m/classes/calvingdev.py
r24305 r27458 21 21 self.setdefaultparameters() 22 22 23 # }}}23 # }}} 24 24 25 25 def __repr__(self): # {{{ … … 29 29 30 30 return string 31 # }}}31 # }}} 32 32 33 33 def extrude(self, md): # {{{ 34 34 return self 35 # }}}35 # }}} 36 36 37 37 def setdefaultparameters(self): # {{{ … … 40 40 self.stress_threshold_floatingice = 150e3 41 41 return self 42 # }}}42 # }}} 43 43 44 44 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/calvinglevermann.py
r24305 r27458 20 20 self.setdefaultparameters() 21 21 22 # }}}22 # }}} 23 23 24 24 def __repr__(self): # {{{ … … 27 27 28 28 return string 29 # }}}29 # }}} 30 30 31 31 def extrude(self, md): # {{{ 32 32 self.coeff = project3d(md, 'vector', self.coeff, 'type', 'node') 33 33 return self 34 # }}}34 # }}} 35 35 36 36 def setdefaultparameters(self): # {{{ 37 37 #Proportionality coefficient in Levermann model 38 38 self.coeff = 2e13 39 # }}}39 # }}} 40 40 41 41 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/calvingminthickness.py
r24305 r27458 19 19 self.setdefaultparameters() 20 20 21 # }}}21 # }}} 22 22 23 23 def __repr__(self): # {{{ … … 25 25 string = "%s\n%s" % (string, fielddisplay(self, 'min_thickness', 'minimum thickness below which no ice is allowed')) 26 26 return string 27 # }}}27 # }}} 28 28 29 29 def extrude(self, md): # {{{ 30 30 return self 31 # }}}31 # }}} 32 32 33 33 def setdefaultparameters(self): # {{{ 34 34 #minimum thickness is 100 m by default 35 35 self.min_thickness = 100. 36 # }}}36 # }}} 37 37 38 38 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/calvingparameterization.m
r27280 r27458 1 1 %CALVINGPARAMETERIZATION class definition 2 % 2 % For test calving laws and coefficients 3 3 % Usage: 4 4 % calvingparameterization=calvingparameterization(); -
issm/trunk-jpl/src/m/classes/calvingparameterization.py
r27417 r27458 5 5 6 6 class calvingparameterization(object): 7 """ CALVINGPARAMETERIZATIONclass definition7 """calvingparameterization class definition 8 8 For test calving laws and coefficients 9 9 … … 22 22 self.nonlinearlaw = 0 23 23 24 #set defaults 25 self.setdefaultparameters() 26 27 #}}} 24 nargs = len(args) 25 if nargs == 0: 26 self.setdefaultparameters() 27 elif nargs == 1: 28 # TODO: Replace the following with constructor 29 self.setdefaultparameters() 30 else: 31 raise Exception('constructor not supported') 32 # }}} 28 33 29 34 def __repr__(self): # {{{ … … 33 38 s += '{}\n'.format(fielddisplay(self, 'min_thickness', 'minimum thickness below which no ice is allowed [m]')) 34 39 return s 35 # }}}40 # }}} 36 41 37 42 def extrude(self, md): # {{{ 38 43 return self 39 # }}}44 # }}} 40 45 41 46 def setdefaultparameters(self): # {{{ … … 47 52 self.min_thickness = 0. 48 53 return self 49 # }}}54 # }}} 50 55 51 56 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/calvingvonmises.py
r26804 r27458 19 19 self.setdefaultparameters() 20 20 21 # }}}21 # }}} 22 22 23 23 def __repr__(self): # {{{ … … 27 27 s += '{}\n'.format(fielddisplay(self, 'min_thickness', 'minimum thickness below which no ice is allowed [m]')) 28 28 return s 29 # }}}29 # }}} 30 30 31 31 def extrude(self, md): # {{{ 32 32 return self 33 # }}}33 # }}} 34 34 35 35 def setdefaultparameters(self): # {{{ … … 41 41 self.min_thickness = 0. 42 42 return self 43 # }}}43 # }}} 44 44 45 45 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/clusters/local.py
r25762 r27458 8 8 9 9 10 class local(object): #{{{10 class local(object): # {{{ 11 11 """LOCAL class definition 12 12 … … 16 16 """ 17 17 18 def __init__(self, *args): #{{{18 def __init__(self, *args): # {{{ 19 19 self.name = '' 20 20 self.np = 1 … … 34 34 self = options.AssignObjectFields(self) 35 35 36 def __repr__(cluster): #{{{36 def __repr__(cluster): # {{{ 37 37 # Display the object 38 38 s = 'class {} = \n'.format(type(cluster).__name__) … … 46 46 47 47 return s 48 # }}}48 # }}} 49 49 50 def checkconsistency(self, md, solution, analyses): #{{{50 def checkconsistency(self, md, solution, analyses): # {{{ 51 51 if cluster.np < 1: 52 52 md.checkmessage('number of processors should be at least 1') … … 56 56 57 57 return md 58 # }}}58 # }}} 59 59 60 def BuildQueueScript(cluster, dirname, modelname, solution, io_gather, isvalgrind, isgporf, isdakota, isoceancoupling): #{{{60 def BuildQueueScript(cluster, dirname, modelname, solution, io_gather, isvalgrind, isgporf, isdakota, isoceancoupling): # {{{ 61 61 # Which executable are we calling? 62 62 executable = 'issm.exe' # Default … … 70 70 fid.close() 71 71 72 def UploadQueueJob(cluster, modelname, dirname, filelist): #{{{72 def UploadQueueJob(cluster, modelname, dirname, filelist): # {{{ 73 73 # Do nothing really 74 74 pass 75 # }}}75 # }}} 76 76 77 def LaunchQueueJob(cluster, modelname, dirname, filelist, restart, batch): #{{{77 def LaunchQueueJob(cluster, modelname, dirname, filelist, restart, batch): # {{{ 78 78 subprocess.call('source ' + modelname + '.queue') 79 # }}}79 # }}} 80 80 81 def Download(cluster, dirname, filelist): #{{{81 def Download(cluster, dirname, filelist): # {{{ 82 82 pass 83 # }}}83 # }}} -
issm/trunk-jpl/src/m/classes/constants.py
r26358 r27458 20 20 #set defaults 21 21 self.setdefaultparameters() 22 # }}}22 # }}} 23 23 def __repr__(self): # {{{ 24 24 s = ' constants parameters:\n' … … 29 29 s += '{}\n'.format(fielddisplay(self, 'gravitational_constant', 'Newtonian constant of gravitation [m^3/kg/s^2]')) 30 30 return s 31 # }}}31 # }}} 32 32 def setdefaultparameters(self): # {{{ 33 33 # Acceleration due to gravity (m / s^2) … … 47 47 48 48 return self 49 # }}}49 # }}} 50 50 def checkconsistency(self, md, solution, analyses): # {{{ 51 51 md = checkfield(md, 'fieldname', 'constants.g', '>=', 0, 'size', [1]) # We allow 0 for validation tests -
issm/trunk-jpl/src/m/classes/damage.py
r26571 r27458 74 74 self.spcdamage = project3d(md, 'vector', self.spcdamage, 'type', 'node') 75 75 return self 76 # }}}76 # }}} 77 77 78 78 def setdefaultparameters(self): # {{{ … … 109 109 list = ['DamageD'] 110 110 return list 111 # }}}111 # }}} 112 112 113 113 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/debris.py
r27453 r27458 127 127 self.spcthickness = project3d(md, 'vector', self.spcthickness, 'type', 'node') 128 128 return 129 # }}}129 # }}} -
issm/trunk-jpl/src/m/classes/debug.py
r24240 r27458 19 19 self.setdefaultparameters() 20 20 21 # }}}21 # }}} 22 22 23 23 def __repr__(self): # {{{ … … 28 28 string = "%s\n%s" % (string, fielddisplay(self, 'profiling', 'enables profiling (memory, flops, time)')) 29 29 return string 30 # }}}30 # }}} 31 31 32 32 def setdefaultparameters(self): # {{{ 33 33 return self 34 # }}}34 # }}} 35 35 36 36 def marshall(self, prefix, md, fid): # {{{ -
issm/trunk-jpl/src/m/classes/dsl.py
r26359 r27458 23 23 else: 24 24 raise Exception('constructor not supported') 25 # }}}25 # }}} 26 26 27 27 def __repr__(self): #{{{ … … 31 31 s += '{}\n'.format(fielddisplay(self, 'sea_water_pressure_at_sea_floor', 'Corresponds to bpo field in CMIP5 archives. Specified as a spatio-temporally variable quantity (in m equivalent, not in Pa!).')) 32 32 return s 33 # }}}33 # }}} 34 34 35 35 def setdefaultparameters(self): #{{{ … … 37 37 self.sea_surface_height_above_geoid = np.nan 38 38 self.sea_water_pressure_at_sea_floor = np.nan 39 # }}}39 # }}} 40 40 41 41 def checkconsistency(self, md, solution, analyses): #{{{ … … 65 65 self.sea_water_pressure_at_sea_floor = project3d(md, 'vector', self.sea_water_pressure_at_sea_floor, 'type', 'node', 'layer', 1) 66 66 return self 67 # }}}67 # }}} 68 68 69 69 def initialize(self, md): #{{{ … … 79 79 self.sea_water_pressure_at_sea_floor = np.append(np.zeros((md.mesh.numberofvertices, 1)), 0).reshape(-1, 1) 80 80 print(' no dsl.sea_water_pressure_at_sea_floor specified: transient values set at zero') 81 # }}}81 # }}} -
issm/trunk-jpl/src/m/classes/dslmme.py
r27417 r27458 22 22 else: 23 23 raise Exception('constructor not supported') 24 # }}}24 # }}} 25 25 26 26 def __repr__(self): # {{{ … … 31 31 s += '{}\n'.format(fielddisplay(self, 'sea_water_pressure_at_sea_floor', 'Corresponds to bpo field in CMIP5 archives. Specified as a spatio-temporally variable quantity (in m equivalent, not in Pa!) for each ensemble.')) 32 32 return s 33 # }}}33 # }}} 34 34 35 35 def setdefaultparameters(self): #{{{ 36 36 return self 37 # }}}37 # }}} 38 38 39 39 def checkconsistency(self, md, solution, analyses): # {{{ … … 52 52 53 53 return md 54 # }}}54 # }}} 55 55 56 56 def marshall(self, prefix, md, fid): #{{{ … … 61 61 WriteData(fid, prefix, 'object', self, 'fieldname', 'sea_water_pressure_at_sea_floor', 'format', 'MatArray', 'timeserieslength', md.mesh.numberofvertices + 1) 62 62 WriteData(fid, prefix, 'object', self, 'fieldname', 'sea_surface_height_above_geoid', 'format', 'MatArray', 'timeserieslength', md.mesh.numberofvertices + 1) 63 # }}}63 # }}} 64 64 65 65 def extrude(self, md): #{{{ … … 69 69 70 70 return self 71 # }}}71 # }}} -
issm/trunk-jpl/src/m/classes/esa.py
r24255 r27458 25 25 #set defaults 26 26 self.setdefaultparameters() 27 # }}}27 # }}} 28 28 29 29 def __repr__(self): # {{{ … … 52 52 self.requested_outputs = ['default'] 53 53 return self 54 # }}}54 # }}} 55 55 56 56 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/flowequation.py
r27031 r27458 39 39 40 40 self.setdefaultparameters() 41 # }}}41 # }}} 42 42 43 43 def __repr__(self): # {{{ … … 60 60 s += '{}\n'.format(fielddisplay(self, 'borderFS', "vertices on FS' border (for tiling)")) 61 61 return s 62 # }}}62 # }}} 63 63 64 64 def setdefaultparameters(self): # {{{ … … 72 72 self.fe_FS = 'MINIcondensed' 73 73 return self 74 # }}}74 # }}} 75 75 76 76 def extrude(self, md): # {{{ … … 81 81 self.borderFS = project3d(md, 'vector', self.borderFS, 'type', 'node') 82 82 return self 83 # }}}83 # }}} 84 84 85 85 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/fourierlove.py
r27327 r27458 13 13 """ 14 14 15 def __init__(self): #{{{15 def __init__(self): # {{{ 16 16 self.nfreq = 0 17 17 self.frequencies = 0 … … 37 37 38 38 self.setdefaultparameters() 39 # }}}39 # }}} 40 40 41 def __repr__(self): #{{{41 def __repr__(self): # {{{ 42 42 # TODO: 43 43 # - Correct display to match MATLAB … … 78 78 79 79 return s 80 # }}}80 # }}} 81 81 82 def setdefaultparameters(self): #{{{82 def setdefaultparameters(self): # {{{ 83 83 # We setup an elastic love number computation by default 84 84 self.nfreq = 1 … … 104 104 self.core_mantle_boundary = 2 105 105 self.complex_computation = 0 106 # }}}106 # }}} 107 107 108 def checkconsistency(self, md, solution, analyses): #{{{108 def checkconsistency(self, md, solution, analyses): # {{{ 109 109 if 'LoveAnalysis' not in analyses: 110 110 return md … … 149 149 150 150 return md 151 # }}}151 # }}} 152 152 153 def marshall(self, prefix, md, fid): #{{{153 def marshall(self, prefix, md, fid): # {{{ 154 154 WriteData(fid, prefix, 'object', self, 'fieldname', 'nfreq', 'format', 'Integer') 155 155 WriteData(fid, prefix, 'object', self, 'fieldname', 'frequencies', 'format', 'DoubleMat', 'mattype',3) … … 173 173 WriteData(fid, prefix, 'object', self, 'fieldname', 'inner_core_boundary', 'format', 'Integer') 174 174 WriteData(fid, prefix, 'object', self, 'fieldname', 'core_mantle_boundary', 'format', 'Integer') 175 # }}}175 # }}} 176 176 177 def extrude(self, md): #{{{177 def extrude(self, md): # {{{ 178 178 return self 179 # }}}179 # }}} 180 180 181 def build_frequencies_from_time(self): #{{{181 def build_frequencies_from_time(self): # {{{ 182 182 if not self.istemporal: 183 183 raise RuntimeError('cannot build frequencies for temporal love numbers if love.istemporal==0') … … 192 192 self.frequencies[(i - 1) * 2 * self.n_temporal_iterations + j] = j * np.log(2) / self.time[i] / 2 / np.pi 193 193 return self 194 # }}}194 # }}} -
issm/trunk-jpl/src/m/classes/friction.py
r26187 r27458 22 22 self.effective_pressure_limit = 0 23 23 self.setdefaultparameters() 24 # }}}24 # }}} 25 25 def __repr__(self): # {{{ 26 26 s = 'Basal shear stress parameters: Sigma_b = coefficient^2 * Neff ^r * |u_b|^(s - 1) * u_b,\n' … … 33 33 s += '{}\n'.format(fielddisplay(self, 'effective_pressure_limit', 'Neff do not allow to fall below a certain limit: effective_pressure_limit * rho_ice * g * thickness (default 0)')) 34 34 return s 35 # }}}35 # }}} 36 36 def setdefaultparameters(self): # {{{ 37 37 self.effective_pressure_limit = 0 38 38 return self 39 # }}}39 # }}} 40 40 def extrude(self, md): # {{{ 41 41 self.coefficient = project3d(md, 'vector', self.coefficient, 'type', 'node', 'layer', 1) … … 45 45 self.effective_pressure = project3d(md, 'vector', self.effective_pressure, 'type', 'node', 'layer', 1) 46 46 return self 47 # }}}47 # }}} 48 48 def defaultoutputs(self, md): # {{{ 49 49 list = [] 50 50 return list 51 # }}}51 # }}} 52 52 def checkconsistency(self, md, solution, analyses): # {{{ 53 53 # Early return -
issm/trunk-jpl/src/m/classes/frictioncoulomb.py
r27164 r27458 24 24 25 25 self.setdefaultparameters() 26 # }}}26 # }}} 27 27 28 28 def __repr__(self): # {{{ … … 37 37 s += '{}\n'.format(fielddisplay(self, 'effective_pressure_limit', 'Neff do not allow to fall below a certain limit: effective_pressure_limit * rho_ice * g * thickness (default 0)')) 38 38 return s 39 # }}}39 # }}} 40 40 41 41 def setdefaultparameters(self): # {{{ 42 42 self.effective_pressure_limit = 0 43 43 return self 44 # }}}44 # }}} 45 45 46 46 def extrude(self, md): # {{{ … … 56 56 raise ValueError('not supported yet') 57 57 return self 58 # }}}58 # }}} 59 59 def checkconsistency(self, md, solution, analyses): # {{{ 60 60 # Early return -
issm/trunk-jpl/src/m/classes/frictionhydro.py
r24668 r27458 81 81 elif self.coupling > 4: 82 82 raise ValueError('md.friction.coupling larger than 4, not supported yet') 83 # }}}83 # }}} -
issm/trunk-jpl/src/m/classes/frictionjosh.py
r25688 r27458 22 22 self.setdefaultparameters() 23 23 #self.requested_outputs = [] 24 # }}}24 # }}} 25 25 26 26 def __repr__(self): # {{{ … … 33 33 #s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 34 34 return s 35 # }}}35 # }}} 36 36 37 37 def extrude(self, md): # {{{ … … 39 39 self.pressure_adjusted_temperature = project3d(md, 'vector', self.pressure_adjusted_temperature, 'type', 'node', 'layer', 1) 40 40 return self 41 # }}}41 # }}} 42 42 43 43 def setdefaultparameters(self): # {{{ … … 46 46 self.effective_pressure_limit = 0 47 47 return self 48 # }}}48 # }}} 49 49 50 50 def defaultoutputs(self, md): # {{{ 51 51 list = [] 52 52 return list 53 # }}}53 # }}} 54 54 55 55 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/frictionpism.py
r25688 r27458 24 24 self.setdefaultparameters() 25 25 self.requested_outputs = [] 26 # }}}26 # }}} 27 27 28 28 def extrude(self, md): # {{{ -
issm/trunk-jpl/src/m/classes/frictionschoof.py
r27173 r27458 29 29 else: 30 30 raise Exception('constructor not supported') 31 # }}}31 # }}} 32 32 def __repr__(self): # {{{ 33 33 # See Brondex et al. 2019 https://www.the-cryosphere.net/13/177/2019/ … … 45 45 s += "{}\n".format(fielddisplay(self, 'effective_pressure_limit', 'fNeff do not allow to fall below a certain limit: effective_pressure_limit*rho_ice*g*thickness (default 0)')) 46 46 return s 47 # }}}47 # }}} 48 48 def setdefaultparameters(self): # {{{ 49 49 self.effective_pressure_limit = 0 50 50 return self 51 # }}}51 # }}} 52 52 def extrude(self, md): # {{{ 53 53 self.C = project3d(md, 'vector', self.C, 'type', 'node') … … 57 57 self.effective_pressure = project3d(md, 'vector', self.effective_pressure, 'type', 'node', 'layer', 1) 58 58 return self 59 # }}}59 # }}} 60 60 def checkconsistency(self, md, solution, analyses): # {{{ 61 61 # Early return -
issm/trunk-jpl/src/m/classes/frictionshakti.py
r25806 r27458 23 23 elif nargs == 1: 24 24 self = structtoobj(self, args[0]) 25 # }}}25 # }}} 26 26 27 27 def __repr__(self): # {{{ … … 30 30 s += '{}\n'.format(fielddisplay(self, 'coefficient', 'friction coefficient [SI]')) 31 31 return s 32 # }}}32 # }}} 33 33 34 34 def setdefaultparameters(self): # {{{ 35 35 return self 36 # }}}36 # }}} 37 37 38 38 def extrude(self, md): # {{{ 39 39 self.coefficient = project3d(md, 'vector', self.coefficient, 'type', 'node', 'layer', 1) 40 40 return self 41 # }}}41 # }}} 42 42 43 43 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/frictionwaterlayer.py
r25688 r27458 27 27 elif nargs == 1: 28 28 self = structtoobj(self, args[0]) 29 # }}}29 # }}} 30 30 31 31 def __repr__(self): # {{{ … … 37 37 s = "{}\n".format(fielddisplay(self, 'water_layer', 'water thickness at the base of the ice (m)')) 38 38 return s 39 # }}}39 # }}} 40 40 41 41 def setdefaultparameters(self): # {{{ 42 42 return self 43 # }}}43 # }}} 44 44 45 45 def checkconsistency(self, md, solution, analyses): #{{{ … … 70 70 WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'q', 'format', 'DoubleMat', 'mattype', 2) 71 71 WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'water_layer', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts) 72 # }}}72 # }}} -
issm/trunk-jpl/src/m/classes/frictionweertman.py
r24668 r27458 19 19 self.setdefaultparameters() 20 20 21 # }}}21 # }}} 22 22 23 23 def __repr__(self): # {{{ … … 27 27 string = "%s\n%s" % (string, fielddisplay(self, "m", "m exponent")) 28 28 return string 29 # }}}29 # }}} 30 30 31 31 def setdefaultparameters(self): # {{{ 32 32 return self 33 # }}}33 # }}} 34 34 35 35 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/frontalforcings.py
r27453 r27458 26 26 else: 27 27 raise Exception('constructor not supported') 28 # }}}28 # }}} 29 29 30 30 def __repr__(self): # {{{ … … 34 34 35 35 return s 36 # }}}36 # }}} 37 37 38 38 def extrude(self, md): # {{{ … … 40 40 self.ablationrate = project3d(md, 'vector', self.ablationrate, 'type', 'node') 41 41 return self 42 # }}}42 # }}} 43 43 44 44 def setdefaultparameters(self): # {{{ … … 46 46 self.ablationrate = np.nan 47 47 return self 48 # }}}48 # }}} 49 49 50 50 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/frontalforcingsrignot.py
r26905 r27458 26 26 error('constructor not supported') 27 27 28 # }}}28 # }}} 29 29 30 30 def __repr__(self): # {{{ … … 35 35 s += '{}\n'.format(fielddisplay(self, 'thermalforcing', 'thermal forcing [∘C]')) 36 36 return s 37 # }}}37 # }}} 38 38 39 def setdefaultparameters(self): # {{{39 def setdefaultparameters(self): # {{{ 40 40 self.basin_id = np.nan 41 41 self.num_basins = 0 … … 44 44 45 45 return self 46 # }}}46 # }}} 47 47 48 48 def extrude(self, md): # {{{ 49 49 return self 50 # }}}50 # }}} 51 51 52 52 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/frontalforcingsrignotarma.py
r27354 r27458 74 74 s += '{}\n'.format(fielddisplay(self, 'sd_polynomialparams','coefficients for the sd_polynomial (const,trend,quadratic,etc.),dim1 for basins,dim2 for periods,dim3 for orders')) 75 75 return s 76 # }}}76 # }}} 77 77 78 78 def setdefaultparameters(self): # {{{ … … 83 83 self.ma_order = 0.0 # Moving-average model of order 0 84 84 return self 85 # }}}85 # }}} 86 86 87 87 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/giacaron.py
r25455 r27458 16 16 """ 17 17 18 def __init__(self, *args): #{{{18 def __init__(self, *args): # {{{ 19 19 #Physical constants 20 20 self.gravitational_constant = np.nan … … 51 51 else: 52 52 raise Exception('constructor not supported') 53 # }}}53 # }}} -
issm/trunk-jpl/src/m/classes/groundingline.py
r26826 r27458 37 37 return ['Surface', 'Base','MaskOceanLevelset'] 38 38 39 # }}}39 # }}} 40 40 41 41 def setdefaultparameters(self): # {{{ -
issm/trunk-jpl/src/m/classes/hydrologyglads.py
r27393 r27458 7 7 8 8 class hydrologyglads(object): 9 """ HYDROLOGYGLADSclass definition9 """hydrologyglads class definition 10 10 11 11 Usage: … … 13 13 """ 14 14 15 def __init__(self ): # {{{16 # Sheet15 def __init__(self, *args): # {{{ 16 # Sheet 17 17 self.pressure_melt_coefficient = 0. 18 18 self.sheet_conductivity = np.nan … … 20 20 self.bump_height = np.nan 21 21 22 # Channels22 # Channels 23 23 self.ischannels = 0 24 24 self.channel_conductivity = np.nan 25 25 self.channel_sheet_width = 0. 26 26 27 # Other27 # Other 28 28 self.spcphi = np.nan 29 29 self.moulin_input = np.nan … … 33 33 self.melt_flag = 0 34 34 35 # set defaults 36 self.setdefaultparameters() 35 nargs = len(args) 36 if nargs == 0: 37 self.setdefaultparameters() 38 elif nargs == 1: 39 # TODO: Replace the following with constructor 40 self.setdefaultparameters() 41 else: 42 raise Exception('constructor not supported') 37 43 # }}} 38 44 -
issm/trunk-jpl/src/m/classes/hydrologyshakti.py
r24213 r27458 29 29 self.setdefaultparameters() 30 30 31 # }}}31 # }}} 32 32 def __repr__(self): # {{{ 33 33 string = ' hydrologyshakti solution parameters:' … … 45 45 string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 46 46 return string 47 # }}}47 # }}} 48 48 49 49 def extrude(self, md): # {{{ 50 50 return self 51 # }}}51 # }}} 52 52 53 53 def setdefaultparameters(self): # {{{ … … 57 57 self.requested_outputs = ['default'] 58 58 return self 59 # }}}59 # }}} 60 60 61 61 def defaultoutputs(self, md): # {{{ 62 62 list = ['HydrologyHead', 'HydrologyGapHeight', 'EffectivePressure', 'HydrologyBasalFlux', 'DegreeOfChannelization'] 63 63 return list 64 # }}}64 # }}} 65 65 66 66 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/hydrologyshreve.py
r26301 r27458 13 13 """ 14 14 15 def __init__(self, *args): #{{{15 def __init__(self, *args): # {{{ 16 16 self.spcwatercolumn = np.nan 17 17 self.stabilization = 0 … … 25 25 else: 26 26 raise RuntimeError('constructor not supported') 27 # }}}27 # }}} 28 28 29 def __repr__(self): #{{{29 def __repr__(self): # {{{ 30 30 s = ' hydrologyshreve solution parameters:\n' 31 31 s += '{}\n'.format(fielddisplay(self, 'spcwatercolumn', 'water thickness constraints (NaN means no constraint) [m]')) … … 33 33 s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 34 34 return s 35 # }}}35 # }}} 36 36 37 def setdefaultparameters(self): #{{{37 def setdefaultparameters(self): # {{{ 38 38 # Type of stabilization to use 0:nothing 1:artificial_diffusivity 39 39 self.stabilization = 1 40 40 self.requested_outputs = ['default'] 41 # }}}41 # }}} 42 42 43 def checkconsistency(self, md, solution, analyses): #{{{43 def checkconsistency(self, md, solution, analyses): # {{{ 44 44 #Early return 45 45 if 'HydrologyShreveAnalysis' not in analyses or (solution == 'TransientSolution' and not md.transient.ishydrology): … … 51 51 # }}} 52 52 53 def defaultoutputs(self, md): #{{{53 def defaultoutputs(self, md): # {{{ 54 54 return ['Watercolumn', 'HydrologyWaterVx', 'HydrologyWaterVy'] 55 # }}}55 # }}} 56 56 57 def marshall(self, prefix, md, fid): #{{{57 def marshall(self, prefix, md, fid): # {{{ 58 58 WriteData(fid, prefix, 'name', 'md.hydrology.model', 'data', 2, 'format', 'Integer') 59 59 WriteData(fid, prefix, 'object', self, 'fieldname', 'spcwatercolumn', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts) … … 67 67 # }}} 68 68 69 def extrude(self, md): #{{{69 def extrude(self, md): # {{{ 70 70 return self 71 # }}}71 # }}} -
issm/trunk-jpl/src/m/classes/hydrologytws.py
r26840 r27458 21 21 else: 22 22 raise RuntimeError('constructor not supported') 23 # }}}23 # }}} 24 24 25 25 def __repr__(self): # {{{ … … 28 28 s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 29 29 return s 30 # }}}30 # }}} 31 31 32 def defaultoutputs(self, md): # {{{32 def defaultoutputs(self, md): # {{{ 33 33 return [''] 34 # }}}34 # }}} 35 35 36 36 def setdefaultparameters(self): # {{{ 37 37 self.requested_outputs = ['defualt'] 38 38 return self 39 # }}}39 # }}} 40 40 41 41 def extrude(self, md): # {{{ 42 42 return self 43 # }}}43 # }}} 44 44 45 45 def checkconsistency(self, md, solution, analyses): # {{{ … … 48 48 return 49 49 md = checkfield(md, 'fieldname', 'hydrology.spcwatercolumn', 'Inf', 1, 'timeseries', 1) 50 # }}}50 # }}} 51 51 52 52 def marshall(self, prefix, md, fid): # {{{ -
issm/trunk-jpl/src/m/classes/initialization.py
r27434 r27458 37 37 38 38 self.setdefaultparameters() 39 # }}}39 # }}} 40 40 41 41 def __repr__(self): #{{{ … … 58 58 s += '{}\n'.format(fielddisplay(self, 'debris', 'Surface debris layer [m]')) 59 59 return s 60 # }}}60 # }}} 61 61 62 62 def setdefaultparameters(self): #{{{ 63 63 return 64 # }}}64 # }}} 65 65 66 66 def checkconsistency(self, md, solution, analyses): #{{{ … … 128 128 md = checkfield(md, 'fieldname', 'initialization.debris', 'NaN', 1,'Inf', 1, 'size', [md.mesh.numberofvertices]) 129 129 return md 130 # }}}130 # }}} 131 131 132 def marshall(self, prefix, md, fid): #{{{132 def marshall(self, prefix, md, fid): # {{{ 133 133 yts = md.constants.yts 134 134 … … 161 161 162 162 WriteData(fid, prefix, 'data', self.enthalpy, 'format', 'DoubleMat', 'mattype', 1, 'name', 'md.initialization.enthalpy') 163 # }}}163 # }}} 164 164 165 def extrude(self, md): #{{{165 def extrude(self, md): # {{{ 166 166 self.vx = project3d(md, 'vector', self.vx, 'type', 'node') 167 167 self.vy = project3d(md, 'vector', self.vy, 'type', 'node') … … 189 189 190 190 return self 191 # }}}191 # }}} -
issm/trunk-jpl/src/m/classes/inversion.py
r27031 r27458 38 38 39 39 self.setdefaultparameters() 40 # }}}40 # }}} 41 41 42 42 def __repr__(self): # {{{ … … 70 70 s += '{}\n'.format(' 503: ThicknessAbsGradient') 71 71 return s 72 # }}}72 # }}} 73 73 74 74 def setdefaultparameters(self): # {{{ … … 100 100 self.cost_function_threshold = np.nan #not activated 101 101 return self 102 # }}}102 # }}} 103 103 104 104 def extrude(self, md): # {{{ … … 114 114 self.max_parameters = project3d(md, 'vector', self.max_parameters, 'type', 'node') 115 115 return self 116 # }}}116 # }}} 117 117 118 118 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/issmsettings.py
r26358 r27458 23 23 # Set defaults 24 24 self.setdefaultparameters() 25 # }}}25 # }}} 26 26 27 27 def __repr__(self): # {{{ … … 36 36 s += '{}\n'.format(fielddisplay(self, "solver_residue_threshold", "throw an error if solver residue exceeds this value (NaN to deactivate)")) 37 37 return s 38 # }}}38 # }}} 39 39 40 40 def setdefaultparameters(self): # {{{ … … 58 58 59 59 return self 60 # }}}60 # }}} 61 61 62 62 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/levelset.py
r27417 r27458 24 24 # Set defaults 25 25 self.setdefaultparameters() 26 # }}}26 # }}} 27 27 def __repr__(self): # {{{ 28 28 s = ' Level-set parameters:\n' … … 35 35 36 36 return s 37 # }}}37 # }}} 38 38 39 39 def setdefaultparameters(self): # {{{ … … 48 48 49 49 return self 50 # }}}50 # }}} 51 51 52 52 def checkconsistency(self, md, solution, analyses): # {{{ … … 67 67 self.spclevelset = project3d(md, 'vector', self.spclevelset, 'type', 'node') 68 68 return self 69 # }}}69 # }}} 70 70 71 71 def marshall(self, prefix, md, fid): # {{{ -
issm/trunk-jpl/src/m/classes/linearbasalforcings.py
r25688 r27458 14 14 """ 15 15 16 def __init__(self, *args): #{{{16 def __init__(self, *args): # {{{ 17 17 nargs = len(args) 18 18 if nargs == 0: … … 43 43 else: 44 44 raise Exception('constructor not supported') 45 # }}}45 # }}} 46 46 47 def __repr__(self): #{{{47 def __repr__(self): # {{{ 48 48 s = ' linear basal forcings parameters:\n' 49 49 s += '{}\n'.format(fielddisplay(self, "deepwater_melting_rate", "basal melting rate (positive if melting applied for floating ice whith base < deepwater_elevation) [m/yr]")) … … 55 55 s += '{}\n'.format(fielddisplay(self, "geothermalflux", "geothermal heat flux [W/m^2]")) 56 56 return s 57 # }}}57 # }}} 58 58 59 def extrude(self, md): #{{{59 def extrude(self, md): # {{{ 60 60 self.perturbation_melting_rate = project3d(md, 'vector', self.perturbation_melting_rate, 'type', 'node', 'layer', 1) 61 61 self.groundedice_melting_rate = project3d(md, 'vector', self.groundedice_melting_rate, 'type', 'node', 'layer', 1) 62 62 self.geothermalflux = project3d(md, 'vector', self.geothermalflux, 'type', 'node', 'layer', 1) # Bedrock only gets geothermal flux 63 63 return self 64 # }}}64 # }}} 65 65 66 def initialize(self, md): #{{{66 def initialize(self, md): # {{{ 67 67 if np.all(np.isnan(self.groundedice_melting_rate)): 68 68 self.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices)) 69 69 print(" no basalforcings.groundedice_melting_rate specified: values set as zero") 70 70 return self 71 # }}}71 # }}} 72 72 73 73 def setdefaultparameters(self): # {{{ … … 77 77 self.upperwater_elevation = -400.0 78 78 return self 79 # }}}79 # }}} 80 80 81 def checkconsistency(self, md, solution, analyses): #{{{81 def checkconsistency(self, md, solution, analyses): # {{{ 82 82 if not np.all(np.isnan(self.perturbation_melting_rate)): 83 83 md = checkfield(md, 'fieldname', 'basalforcings.perturbation_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1) … … 103 103 104 104 return md 105 # }}}105 # }}} 106 106 107 def marshall(self, prefix, md, fid): #{{{107 def marshall(self, prefix, md, fid): # {{{ 108 108 yts = md.constants.yts 109 109 … … 116 116 WriteData(fid, prefix, 'object', self, 'fieldname', 'upperwater_melting_rate', 'format', 'DoubleMat', 'mattype', 3, 'timeserieslength', 2, 'name', 'md.basalforcings.upperwater_melting_rate', 'scale', 1. / yts, 'yts', yts) 117 117 WriteData(fid, prefix, 'object', self, 'fieldname', 'upperwater_elevation', 'format', 'DoubleMat', 'mattype', 3, 'name', 'md.basalforcings.upperwater_elevation', 'yts', yts) 118 # }}}118 # }}} -
issm/trunk-jpl/src/m/classes/linearbasalforcingsarma.py
r27417 r27458 59 59 # }}} 60 60 61 def setdefaultparameters(self): #{{{61 def setdefaultparameters(self): # {{{ 62 62 self.ar_order = 0.0 # Autoregression model of order 0 63 63 self.ma_order = 0.0 # Moving-average model of order 0 -
issm/trunk-jpl/src/m/classes/love.py
r27333 r27458 12 12 """ 13 13 14 def __init__(self): #{{{14 def __init__(self): # {{{ 15 15 self.nfreq = 0 16 16 self.frequencies = 0 … … 44 44 45 45 self.setdefaultparameters() 46 # }}}47 48 def __repr__(self): #{{{46 # }}} 47 48 def __repr__(self): # {{{ 49 49 s = '{}\n'.format(fielddisplay(self, 'nfreq', 'number of frequencies sampled (default: 1, elastic) [Hz]')) 50 50 s += '{}\n'.format(fielddisplay(self, 'frequencies', 'frequencies sampled (convention defaults to 0 for the elastic case) [Hz]')) … … 90 90 91 91 return s 92 # }}}93 94 def setdefaultparameters(self): #{{{92 # }}} 93 94 def setdefaultparameters(self): # {{{ 95 95 # We setup an elastic love number computation by default 96 96 self.nfreq = 1 … … 125 125 self.hypergeom_nz = 1 126 126 self.hypergeom_z = 0 127 # }}}128 129 def checkconsistency(self, md, solution, analyses): #{{{127 # }}} 128 129 def checkconsistency(self, md, solution, analyses): # {{{ 130 130 if 'LoveAnalysis' not in analyses: 131 131 return md … … 178 178 179 179 return md 180 # }}}181 182 def marshall(self, prefix, md, fid): #{{{180 # }}} 181 182 def marshall(self, prefix, md, fid): # {{{ 183 183 WriteData(fid, prefix, 'object', self, 'fieldname', 'nfreq', 'format', 'Integer') 184 184 WriteData(fid, prefix, 'object', self, 'fieldname', 'frequencies', 'format', 'DoubleMat', 'mattype',3) … … 211 211 WriteData(fid, prefix, 'object', self, 'fieldname', 'hypergeom_nz', 'format', 'Integer') 212 212 WriteData(fid, prefix, 'object', self, 'fieldname', 'hypergeom_z', 'format', 'DoubleMat', 'mattype', 3) 213 # }}}214 215 def extrude(self, md): #{{{213 # }}} 214 215 def extrude(self, md): # {{{ 216 216 return self 217 # }}}218 219 def build_frequencies_from_time(self): #{{{217 # }}} 218 219 def build_frequencies_from_time(self): # {{{ 220 220 if not self.istemporal: 221 221 raise RuntimeError('cannot build frequencies for temporal love numbers if love.istemporal==0') … … 230 230 self.frequencies[(i - 1) * 2 * self.n_temporal_iterations + j] = j * np.log(2) / self.time[i] / 2 / np.pi 231 231 return self 232 # }}}232 # }}} -
issm/trunk-jpl/src/m/classes/lovenumbers.py
r27453 r27458 40 40 referenceframe = options.getfieldvalue('referenceframe', 'CM') 41 41 self.setdefaultparameters(maxdeg, referenceframe) 42 # }}}42 # }}} 43 43 44 44 def __repr__(self): #{{{ … … 58 58 s += '{}\n'.format(fielddisplay(self, 'pmtf_ortho', 'Orthogonal component of the Polar Motion Transfer Function (couples x and y components, only used for Chandler Wobble)')) 59 59 return s 60 # }}}60 # }}} 61 61 62 62 def setdefaultparameters(self, maxdeg, referenceframe): #{{{ … … 81 81 self.timefreq = np.zeros(1) # Elastic case by default 82 82 return self 83 # }}}83 # }}} 84 84 85 85 def checkconsistency(self, md, solution, analyses): #{{{ … … 110 110 raise ValueError('temporal love numbers must start with elastic response, i.e. timefreq[0] = 0') 111 111 return md 112 # }}}112 # }}} 113 113 114 114 def defaultoutputs(self, md): #{{{ 115 115 return[] 116 # }}}116 # }}} 117 117 118 118 def marshall(self, prefix, md, fid): #{{{ … … 134 134 WriteData(fid, prefix, 'object', self, 'fieldname', 'istime', 'name', 'md.solidearth.lovenumbers.istime', 'format', 'Boolean') 135 135 WriteData(fid, prefix, 'object', self, 'fieldname', 'timefreq', 'name', 'md.solidearth.lovenumbers.timefreq', 'format', 'DoubleMat', 'mattype', 1, 'scale', scale); 136 # }}}136 # }}} 137 137 138 138 def extrude(self, md): #{{{ 139 139 return 140 # }}}140 # }}} -
issm/trunk-jpl/src/m/classes/m1qn3inversion.py
r26904 r27458 60 60 else: 61 61 raise Exception('constructor not supported') 62 # }}}62 # }}} 63 63 64 64 def __repr__(self): # {{{ … … 91 91 s += '{}\n'.format(' 503: ThicknessAbsGradient') 92 92 return s 93 # }}}93 # }}} 94 94 95 95 def setdefaultparameters(self): # {{{ … … 111 111 112 112 return self 113 # }}}113 # }}} 114 114 115 115 def extrude(self, md): # {{{ … … 125 125 self.max_parameters = project3d(md, 'vector', self.max_parameters, 'type', 'node') 126 126 return self 127 # }}}127 # }}} 128 128 129 129 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/massfluxatgate.py
r26904 r27458 32 32 self = options.AssignObjectFields(self) 33 33 34 # }}}34 # }}} 35 35 36 36 def __repr__(self): # {{{ … … 41 41 string = "%s\n%s" % (string, fielddisplay(self, 'profilename', 'name of file (shapefile or argus file) defining a profile (or gate)')) 42 42 return string 43 # }}}43 # }}} 44 44 45 45 def extrude(self, md): # {{{ 46 46 return self 47 # }}}47 # }}} 48 48 49 49 def setdefaultparameters(self): # {{{ 50 50 return self 51 # }}}51 # }}} 52 52 53 53 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/masstransport.py
r27424 r27458 27 27 self.setdefaultparameters() 28 28 29 # }}}29 # }}} 30 30 31 31 def __repr__(self): # {{{ … … 38 38 s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 39 39 return s 40 # }}}40 # }}} 41 41 42 42 def extrude(self, md): # {{{ 43 43 self.spcthickness = project3d(md, 'vector', self.spcthickness, 'type', 'node') 44 44 return self 45 # }}}45 # }}} 46 46 47 47 def defaultoutputs(self, md): # {{{ 48 48 return ['Thickness', 'Surface', 'Base'] 49 49 50 # }}}50 # }}} 51 51 52 52 def setdefaultparameters(self): # {{{ … … 62 62 self.requested_outputs = ['default'] 63 63 return self 64 # }}}64 # }}} 65 65 66 66 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/matdamageice.py
r26928 r27458 36 36 37 37 self.setdefaultparameters() 38 # }}}38 # }}} 39 39 40 40 def __repr__(self): # {{{ … … 58 58 s += '{}\n'.format(fielddisplay(self, 'earth_density', 'Mantle density [kg m^-3]')) 59 59 return s 60 # }}}60 # }}} 61 61 62 62 def extrude(self, md): # {{{ … … 64 64 self.rheology_n = project3d(md, 'vector', self.rheology_n, 'type', 'element') 65 65 return self 66 # }}}66 # }}} 67 67 68 68 def setdefaultparameters(self): # {{{ … … 100 100 self.earth_density = 5512 # average density of the Earth (kg/m^3) 101 101 return self 102 # }}}102 # }}} 103 103 104 104 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/materials.py
r26928 r27458 13 13 """ 14 14 15 def __init__(self, *args): #{{{15 def __init__(self, *args): # {{{ 16 16 self.nature = [] 17 17 if len(args) == 0: … … 68 68 69 69 self.setdefaultparameters() 70 # }}}71 72 def __repr__(self): #{{{70 # }}} 71 72 def __repr__(self): # {{{ 73 73 s = ' Materials:\n' 74 74 for i in range(len(self.nature)): … … 119 119 raise RuntimeError('materials constructor error message: nature of the material not supported yet! (\'ice\' or \'litho\' or \'hydro\')') 120 120 return s 121 # }}}122 123 def setdefaultparameters(self): #{{{121 # }}} 122 123 def setdefaultparameters(self): # {{{ 124 124 for i in range(len(self.nature)): 125 125 nat = self.nature[i] … … 208 208 # Average density of the Earth (kg/m^3) 209 209 self.earth_density = 5512 210 # }}}211 212 def checkconsistency(self, md, solution, analyses): #{{{210 # }}} 211 212 def checkconsistency(self, md, solution, analyses): # {{{ 213 213 for i in range(len(self.nature)): 214 214 nat = self.nature[i] … … 261 261 262 262 return md 263 # }}}264 265 def marshall(self, prefix, md, fid): #{{{263 # }}} 264 265 def marshall(self, prefix, md, fid): # {{{ 266 266 #1: MatdamageiceEnum 2: MatestarEnum 3: MaticeEnum 4: MatenhancediceEnum 5: MaterialsEnum 267 267 WriteData(fid, prefix, 'name', 'md.materials.nature', 'data', naturetointeger(self.nature), 'format', 'IntMat', 'mattype', 3) … … 314 314 raise RuntimeError('materials constructor error message: nature of the material not supported yet! (\'ice\' or \'litho\' or \'hydro\')') 315 315 WriteData(fid, prefix, 'data', self.earth_density, 'name', 'md.materials.earth_density', 'format', 'Double') 316 # }}}317 318 def extrude(self, md): #{{{316 # }}} 317 318 def extrude(self, md): # {{{ 319 319 for i in range(len(self.nature)): 320 320 nat = self.nature[i] … … 323 323 self.rheology_n = project3d(md, 'vector', self.rheology_n, 'type', 'element') 324 324 return self 325 # }}}326 # }}}327 328 def naturetointeger(strnat): #{{{325 # }}} 326 # }}} 327 328 def naturetointeger(strnat): # {{{ 329 329 intnat = np.zeros(len(strnat)) 330 330 … … 349 349 350 350 return intnat 351 # }}}351 # }}} -
issm/trunk-jpl/src/m/classes/mesh2d.py
r24213 r27458 41 41 self.setdefaultparameters() 42 42 43 # }}}43 # }}} 44 44 45 45 def __repr__(self): # {{{ … … 73 73 string = "%s\n%s" % (string, fielddisplay(self, "scale_factor", "Projection correction for volume, area, etc. computation")) 74 74 return string 75 # }}}75 # }}} 76 76 77 77 def setdefaultparameters(self): # {{{ … … 84 84 85 85 return self 86 # }}}86 # }}} 87 87 88 88 def checkconsistency(self, md, solution, analyses): # {{{ … … 111 111 def domaintype(self): # {{{ 112 112 return "2Dhorizontal" 113 # }}}113 # }}} 114 114 115 115 def dimension(self): # {{{ 116 116 return 2 117 # }}}117 # }}} 118 118 119 119 def elementtype(self): # {{{ 120 120 return "Tria" 121 # }}}121 # }}} 122 122 123 123 def marshall(self, prefix, md, fid): # {{{ -
issm/trunk-jpl/src/m/classes/mesh2dvertical.py
r24213 r27458 41 41 self.setdefaultparameters() 42 42 43 # }}}43 # }}} 44 44 def __repr__(self): # {{{ 45 45 string = " 2D tria Mesh (vertical):" … … 70 70 string = "%s\n%s" % (string, fielddisplay(self, "scale_factor", "Projection correction for volume, area, etc. computation")) 71 71 return string 72 # }}}72 # }}} 73 73 74 74 def setdefaultparameters(self): # {{{ … … 81 81 82 82 return self 83 # }}}83 # }}} 84 84 85 85 def checkconsistency(self, md, solution, analyses): # {{{ … … 109 109 def domaintype(self): # {{{ 110 110 return "2Dvertical" 111 # }}}111 # }}} 112 112 113 113 def dimension(self): # {{{ 114 114 return 2 115 # }}}115 # }}} 116 116 117 117 def elementtype(self): # {{{ 118 118 return "Tria" 119 # }}}119 # }}} 120 120 121 121 def vertexflags(self, value): # {{{ … … 124 124 flags[pos] = 1 125 125 return flags 126 # }}}126 # }}} 127 127 128 128 def marshall(self, prefix, md, fid): # {{{ -
issm/trunk-jpl/src/m/classes/mesh3dprisms.py
r24213 r27458 51 51 #set defaults 52 52 self.setdefaultparameters() 53 # }}}53 # }}} 54 54 55 55 def __repr__(self): # {{{ … … 95 95 string = "%s\n%s" % (string, fielddisplay(self, "scale_factor", "Projection correction for volume, area, etc. computation")) 96 96 return string 97 # }}}97 # }}} 98 98 99 99 def setdefaultparameters(self): # {{{ … … 106 106 107 107 return self 108 # }}}108 # }}} 109 109 110 110 def checkconsistency(self, md, solution, analyses): # {{{ … … 130 130 def domaintype(self): # {{{ 131 131 return "3D" 132 # }}}132 # }}} 133 133 134 134 def dimension(self): # {{{ 135 135 return 3 136 # }}}136 # }}} 137 137 138 138 def elementtype(self): # {{{ 139 139 return "Penta" 140 # }}}140 # }}} 141 141 142 142 def marshall(self, prefix, md, fid): # {{{ -
issm/trunk-jpl/src/m/classes/mesh3dsurface.py
r27417 r27458 15 15 """ 16 16 17 def __init__(self, *args): #{{{17 def __init__(self, *args): # {{{ 18 18 self.x = np.nan 19 19 self.y = np.nan … … 52 52 else: 53 53 raise RuntimeError('constructor not supported') 54 # }}}55 56 def __repr__(self): #{{{54 # }}} 55 56 def __repr__(self): # {{{ 57 57 s = ' 2D tria Mesh (surface):' 58 58 … … 84 84 85 85 return s 86 # }}}87 88 def setdefaultparameters(self): #{{{86 # }}} 87 88 def setdefaultparameters(self): # {{{ 89 89 #The connectivity is the average number of nodes linked to a given node 90 90 #through an edge. This connectivity is used to initially allocate … … 93 93 #test/NightlyRun/runme.py. 94 94 self.average_vertex_connectivity = 25 95 # }}}96 97 def checkconsistency(self, md, solution, analyses): #{{{95 # }}} 96 97 def checkconsistency(self, md, solution, analyses): # {{{ 98 98 md = checkfield(md, 'fieldname', 'mesh.x', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices]) 99 99 md = checkfield(md, 'fieldname', 'mesh.y', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices]) … … 115 115 116 116 return md 117 # }}}118 119 def marshall(self, prefix, md, fid): #{{{117 # }}} 118 119 def marshall(self, prefix, md, fid): # {{{ 120 120 WriteData(fid, prefix, 'name', 'md.mesh.domain_type', 'data', 'Domain' + self.domaintype(), 'format', 'String') 121 121 WriteData(fid, prefix, 'name', 'md.mesh.domain_dimension', 'data', self.dimension(), 'format', 'Integer') … … 133 133 WriteData(fid, prefix, 'object', self, 'fieldname', 'average_vertex_connectivity', 'format', 'Integer') 134 134 WriteData(fid, prefix, 'object', self, 'fieldname', 'vertexonboundary', 'format', 'DoubleMat', 'mattype', 1) 135 # }}}136 137 def domaintype(self): #{{{135 # }}} 136 137 def domaintype(self): # {{{ 138 138 return '3Dsurface' 139 # }}}140 141 def dimension(self): #{{{139 # }}} 140 141 def dimension(self): # {{{ 142 142 return 2 143 # }}}144 145 def elementtype(self): #{{{143 # }}} 144 145 def elementtype(self): # {{{ 146 146 return 'Tria' 147 # }}}148 149 def processmesh(self, options): #{{{147 # }}} 148 149 def processmesh(self, options): # {{{ 150 150 isplanet = 1 151 151 is2d = 0 … … 157 157 158 158 return x, y, z, elements, is2d, isplanet 159 # }}}160 161 def savemodeljs(self, fid, modelname): #{{{159 # }}} 160 161 def savemodeljs(self, fid, modelname): # {{{ 162 162 fid.write(' #s.mesh = new mesh3dsurface()\n' % modelname) 163 163 writejs1Darray(fid, [modelname, '.mesh.x'], self.x) … … 180 180 writejs1Darray(fid, [modelname, '.mesh.extractedvertices'], self.extractedvertices) 181 181 writejs1Darray(fid, [modelname, '.mesh.extractedelements'], self.extractedelements) 182 # }}}183 184 def export(self, *args): #{{{182 # }}} 183 184 def export(self, *args): # {{{ 185 185 options = pairoptions(*args) 186 186 … … 269 269 #write style file: 270 270 applyqgisstyle(filename, 'mesh') 271 # }}}271 # }}} -
issm/trunk-jpl/src/m/classes/miscellaneous.py
r24213 r27458 21 21 self.setdefaultparameters() 22 22 23 # }}}23 # }}} 24 24 def __repr__(self): # {{{ 25 25 string = ' miscellaneous parameters:' … … 29 29 string = "%s\n%s" % (string, fielddisplay(self, 'dummy', 'empty field to store some data')) 30 30 return string 31 # }}}31 # }}} 32 32 33 33 def setdefaultparameters(self): # {{{ 34 34 return self 35 # }}}35 # }}} 36 36 37 37 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/misfit.py
r24213 r27458 41 41 #do we cumulate misfit through time? 42 42 self.cumulated = cumulated if cumulated is not None else float('NaN') 43 # }}}43 # }}} 44 44 45 45 def __repr__(self): # {{{ … … 56 56 string = "%s\n%s" % (string, fielddisplay(self, 'weights_string', 'string for weights for identification purposes')) 57 57 return string 58 # }}}58 # }}} 59 59 60 60 def extrude(self, md): # {{{ … … 64 64 self.observation = project3d(md, 'vector', self.observation, 'type', 'node') 65 65 return self 66 # }}}66 # }}} 67 67 68 68 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/mismipbasalforcings.py
r25775 r27458 21 21 self.geothermalflux = np.nan 22 22 self.setdefaultparameters() 23 # }}}23 # }}} 24 24 def __repr__(self): # {{{ 25 25 s = ' MISMIP + basal melt parameterization\n' … … 30 30 s += '{}\n'.format(fielddisplay(self, "geothermalflux", "Geothermal heat flux [W / m^2]")) 31 31 return s 32 # }}}32 # }}} 33 33 def extrude(self, md): # {{{ 34 34 self.groundedice_melting_rate = project3d(md, 'vector', self.groundedice_melting_rate, 'type', 'node', 'layer', 1) 35 35 self.geothermalflux = project3d(md, 'vector', self.geothermalflux, 'type', 'node', 'layer', 1) #bedrock only gets geothermal flux 36 36 return self 37 # }}}37 # }}} 38 38 def initialize(self, md): # {{{ 39 39 if np.all(np.isnan(self.groundedice_melting_rate)): … … 44 44 print(" no basalforcings.geothermalflux specified: values set as zero") 45 45 return self 46 # }}}46 # }}} 47 47 def setdefaultparameters(self): # {{{ 48 48 # default values for melting parameterization … … 51 51 self.upperdepth_melt = -100. 52 52 return self 53 # }}}53 # }}} 54 54 def checkconsistency(self, md, solution, analyses): # {{{ 55 55 # Early return -
issm/trunk-jpl/src/m/classes/model.py
r27453 r27458 71 71 from sampling import sampling 72 72 from stochasticforcing import stochasticforcing 73 # }}}73 # }}} 74 74 75 75 … … 135 135 planet = options.getfieldvalue('planet', 'earth') 136 136 self.setdefaultparameters(planet) 137 # }}}137 # }}} 138 138 139 139 def __repr__(obj): #{{{ … … 186 186 s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('stochasticforcing', '[%s %s]' % ('1x1', obj.stochasticforcing.__class__.__name__), 'stochasticity applied to model forcings')) 187 187 return s 188 # }}}188 # }}} 189 189 190 190 def properties(self): #{{{ … … 237 237 'stochasticforcing' 238 238 ] 239 # }}}239 # }}} 240 240 241 241 def setdefaultparameters(self, planet): #{{{ … … 285 285 self.private = private() 286 286 self.stochasticforcing = stochasticforcing() 287 # }}}287 # }}} 288 288 289 289 def checkmessage(self, string): #{{{ … … 291 291 self.private.isconsistent = False 292 292 return self 293 # }}}293 # }}} 294 294 #@staticmethod 295 295 … … 571 571 572 572 return md2 573 # }}}573 # }}} 574 574 575 575 def extrude(md, *args): #{{{ … … 760 760 761 761 return md 762 # }}}762 # }}} 763 763 764 764 def collapse(md): #{{{ … … 990 990 991 991 return md 992 # }}}992 # }}} -
issm/trunk-jpl/src/m/classes/nodalvalue.py
r26317 r27458 33 33 self.model_string = options.getfieldvalue('model_string', '') 34 34 self.node = options.getfieldvalue('node', '') 35 # }}}35 # }}} 36 36 37 37 def __repr__(self): # {{{ … … 42 42 s += '{}\n'.format(fielddisplay(self, 'node', 'vertex index at which we retrieve the value')) 43 43 return s 44 # }}}44 # }}} 45 45 46 46 def setdefaultparameters(self): # {{{ 47 47 return self 48 # }}}48 # }}} 49 49 50 50 def checkconsistency(self, md, solution, analyses): # {{{ … … 57 57 md = checkfield(md, 'fieldname', 'self.node', 'field', self.node, 'values', range(md.mesh.numberofvertices)) 58 58 return md 59 # }}}59 # }}} 60 60 61 61 def marshall(self, prefix, md, fid): #{{{ … … 64 64 WriteData(fid, prefix, 'data', self.model_string, 'name', 'md.nodalvalue.model_enum', 'format', 'String') 65 65 WriteData(fid, prefix, 'data', self.node, 'name', 'md.nodalvalue.node', 'format', 'Integer') 66 # }}}66 # }}} -
issm/trunk-jpl/src/m/classes/offlinesolidearthsolution.py
r26352 r27458 13 13 """ 14 14 15 def __init__(self, *args): #{{{15 def __init__(self, *args): # {{{ 16 16 self.displacementeast = None 17 17 self.displacementnorth = None … … 23 23 else: 24 24 raise RuntimeError('constructor not supported') 25 # }}}25 # }}} 26 26 27 def __repr__(self): #{{{27 def __repr__(self): # {{{ 28 28 s = ' units for time series is (yr)\n external: offlinesolidearth solution\n' 29 29 s += '{}\n'.format(fielddisplay(self, 'displacementeast', 'solid-Earth Eastwards bedrock displacement series (m)')) … … 33 33 34 34 return s 35 # }}}35 # }}} 36 36 37 def setdefaultparameters(self): #{{{37 def setdefaultparameters(self): # {{{ 38 38 self.displacementeast = [] 39 39 self.displacementnorth = [] 40 40 self.displacementup = [] 41 41 self.geoid = [] 42 # }}}42 # }}} 43 43 44 def checkconsistency(self, md, solution, analyses): #{{{44 def checkconsistency(self, md, solution, analyses): # {{{ 45 45 if ('SealevelchangeAnalysis' not in analyses) or ((solution=='TransientSolution') and (md.solidearth.settings.isgrd==1)): 46 46 print('offlinesolidearthsolution checkconsistency error message: trying to run GRD patterns while supplying an offline solution for those patterns!') … … 50 50 md = checkfield(md, 'fieldname', 'solidearth.external.displacementup', 'Inf', 1, 'timeseries', 1) 51 51 md = checkfield(md, 'fieldname', 'solidearth.external.geoid', 'Inf', 1, 'timeseries', 1) 52 # }}}52 # }}} 53 53 54 def marshall(self, prefix, md, fid): #{{{54 def marshall(self, prefix, md, fid): # {{{ 55 55 yts = md.constants.yts 56 56 … … 79 79 WriteData(fid, prefix, 'object', self, 'fieldname', 'displacementnorth', 'data', displacementnorth_rate,'format', 'DoubleMat', 'name', 'md.solidearth.external.displacementnorth', 'mattype', 1, 'scale', 1 / yts,'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts); 80 80 WriteData(fid, prefix, 'object', self, 'fieldname', 'geoid', 'data', geoid_rate,'format', 'DoubleMat', 'name', 'md.solidearth.external.geoid', 'mattype', 1, 'scale', 1 / yts,'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts); 81 # }}}81 # }}} 82 82 83 def extrude(self, md): #{{{83 def extrude(self, md): # {{{ 84 84 return self 85 # }}}85 # }}} -
issm/trunk-jpl/src/m/classes/organizer.py
r26390 r27458 72 72 raise TypeError("trunkprefix should not have any white space") 73 73 self.trunkprefix = trunkprefix 74 # }}}74 # }}} 75 75 76 76 def __repr__(self): # {{{ … … 83 83 for step in self.steps: 84 84 s += "%s\n" % " step #%2i: '%s'", step['id'], step['string'] 85 # }}}85 # }}} 86 86 87 87 def load(self, string): # {{{ … … 100 100 101 101 return md 102 # }}}102 # }}} 103 103 104 104 def loadmodel(self, string): # {{{ … … 128 128 else: 129 129 raise IOError("Could not find '%s'" % path1) 130 # }}}130 # }}} 131 131 132 132 def perform(self, string): # {{{ … … 165 165 166 166 return bool 167 # }}}167 # }}} 168 168 169 169 def savemodel(self, md, name='default'): # {{{ … … 188 188 #save model 189 189 savevars(name, 'md', md) 190 # }}}190 # }}} -
issm/trunk-jpl/src/m/classes/outputdefinition.py
r24213 r27458 15 15 def __init__(self): # {{{ 16 16 self.definitions = [] 17 # }}}17 # }}} 18 18 19 19 def __repr__(self): # {{{ … … 23 23 24 24 return string 25 # }}}25 # }}} 26 26 27 27 def extrude(self, md): # {{{ … … 30 30 31 31 return self 32 # }}}32 # }}} 33 33 34 34 def setdefaultparameters(self): # {{{ 35 35 return self 36 # }}}36 # }}} 37 37 38 38 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/pairoptions.py
r26909 r27458 99 99 # }}} 100 100 101 def displayunused(self): #{{{101 def displayunused(self): # {{{ 102 102 """DISPLAYUNUSED - display unused options 103 103 """ -
issm/trunk-jpl/src/m/classes/plotoptions.py
r25816 r27458 18 18 19 19 self.buildlist(*arg) 20 # }}}20 # }}} 21 21 22 22 def __repr__(self): #{{{ … … 32 32 s += " list: empty\n" 33 33 return s 34 # }}}34 # }}} 35 35 36 36 def buildlist(self, *arg): #{{{ … … 125 125 if j + 1 > numberofplots: 126 126 print(("WARNING: too many instances of '%s' in options" % rawlist[i][0])) 127 # }}}127 # }}} -
issm/trunk-jpl/src/m/classes/private.py
r24213 r27458 20 20 self.setdefaultparameters() 21 21 22 # }}}22 # }}} 23 23 24 24 def __repr__(self): # {{{ … … 30 30 string = "%s\n%s" % (string, fielddisplay(self, 'solution', 'type of solution launched')) 31 31 return string 32 # }}}32 # }}} 33 33 34 34 def setdefaultparameters(self): # {{{ 35 35 return self 36 # }}}36 # }}} 37 37 38 38 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/qmu.py
r26339 r27458 44 44 45 45 self.setdefaultparameters() 46 # }}}46 # }}} 47 47 def __repr__(self): # {{{ 48 48 s = ' qmu parameters:\n' … … 128 128 def extrude(self, md): # {{{ 129 129 return self 130 # }}}130 # }}} 131 131 132 132 def setdefaultparameters(self): # {{{ 133 133 return self 134 # }}}134 # }}} 135 135 136 136 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/qmu/histogram_bin_uncertain.py
r25097 r27458 27 27 ''' 28 28 29 def __init__(self): #{{{29 def __init__(self): # {{{ 30 30 self.descriptor = '' 31 31 self.pairs_per_variable = [] 32 32 self.abscissas = [] 33 33 self.counts = [] 34 # }}}35 36 @staticmethod 37 def histogram_bin_uncertain(*args): #{{{34 # }}} 35 36 @staticmethod 37 def histogram_bin_uncertain(*args): # {{{ 38 38 nargin = len(args) 39 39 … … 69 69 70 70 @staticmethod 71 def __repr__(hbu): #{{{71 def __repr__(hbu): # {{{ 72 72 s = "" 73 73 for i in range(len(hbu)): … … 79 79 80 80 return s 81 # }}}82 83 def checkconsistency(self, md, solution, analyses): #{{{81 # }}} 82 83 def checkconsistency(self, md, solution, analyses): # {{{ 84 84 return 85 # }}}85 # }}} 86 86 87 87 #virtual functions needed by qmu processing algorithms … … 89 89 90 90 @staticmethod 91 def prop_desc(hbu, dstr): #{{{91 def prop_desc(hbu, dstr): # {{{ 92 92 desc = ['' for i in range(np.size(hbu))] 93 93 for i in range(np.size(hbu)): … … 102 102 103 103 return desc 104 # }}}105 106 @staticmethod 107 def prop_mean(hbu): #{{{104 # }}} 105 106 @staticmethod 107 def prop_mean(hbu): # {{{ 108 108 mean = np.zeros(np.size(hbu)) 109 109 for i in range(np.size(hbu)): 110 110 mean[i] = hbu[i].mean 111 111 return mean 112 # }}}113 114 @staticmethod 115 def prop_stddev(hbu): #{{{112 # }}} 113 114 @staticmethod 115 def prop_stddev(hbu): # {{{ 116 116 stddev = np.zeros(np.size(hbu)) 117 117 for i in range(np.size(hbu)): 118 118 stddev[i] = hbu[i].stddev 119 119 return stddev 120 # }}}121 122 @staticmethod 123 def prop_lower(hbu): #{{{120 # }}} 121 122 @staticmethod 123 def prop_lower(hbu): # {{{ 124 124 lower = [] 125 125 return 126 # }}}127 128 @staticmethod 129 def prop_upper(hbu): #{{{126 # }}} 127 128 @staticmethod 129 def prop_upper(hbu): # {{{ 130 130 upper = [] 131 131 return upper 132 # }}}132 # }}} 133 133 134 134 #default 135 135 @staticmethod 136 def prop_abscissas(hbu): #{{{136 def prop_abscissas(hbu): # {{{ 137 137 abscissas = [] 138 138 for i in range(len(hbu)): … … 140 140 abscissas = allequal(abscissas, -np.inf) 141 141 return abscissas 142 # }}}143 144 @staticmethod 145 def prop_pairs_per_variable(hbu): #{{{142 # }}} 143 144 @staticmethod 145 def prop_pairs_per_variable(hbu): # {{{ 146 146 pairs_per_variable = np.zeros((1, len(hbu))) 147 147 for i in range(len(hbu)): … … 149 149 abscissas = allequal(pairs_per_variable, -np.inf) 150 150 return pairs_per_variable 151 # }}}152 153 @staticmethod 154 def prop_counts(hbu): #{{{151 # }}} 152 153 @staticmethod 154 def prop_counts(hbu): # {{{ 155 155 counts = [] 156 156 for i in range(len(hbu)): … … 158 158 counts = allequal(counts, -np.inf) 159 159 return counts 160 # }}}161 162 @staticmethod 163 def prop_initpt(hbu): #{{{160 # }}} 161 162 @staticmethod 163 def prop_initpt(hbu): # {{{ 164 164 initpt = [] 165 165 return initpt 166 # }}}167 168 @staticmethod 169 def prop_initst(hbu): #{{{166 # }}} 167 168 @staticmethod 169 def prop_initst(hbu): # {{{ 170 170 inist = [] 171 171 return inist 172 # }}}173 174 @staticmethod 175 def prop_stype(hbu): #{{{172 # }}} 173 174 @staticmethod 175 def prop_stype(hbu): # {{{ 176 176 stype = [] 177 177 return stype 178 # }}}179 180 @staticmethod 181 def prop_scale(hbu): #{{{178 # }}} 179 180 @staticmethod 181 def prop_scale(hbu): # {{{ 182 182 scale = [] 183 183 return scale 184 # }}}184 # }}} 185 185 186 186 #new methods: 187 def isscaled(self): #{{{187 def isscaled(self): # {{{ 188 188 if strncmp(self.descriptor, 'scaled_', 7): 189 189 return True 190 190 else: 191 191 return False 192 # }}}192 # }}} 193 193 194 194 @staticmethod … … 204 204 if len(hbu) > 0: 205 205 vlist_write(fidi, 'histogram_bin_uncertain', 'hbu', hbu) 206 # }}}206 # }}} -
issm/trunk-jpl/src/m/classes/qmu/normal_uncertain.py
r25688 r27458 39 39 """ 40 40 41 def __init__(self): #{{{41 def __init__(self): # {{{ 42 42 self.descriptor = '' 43 43 self.mean = np.nan … … 45 45 self.partition = [] 46 46 self.nsteps = 0 47 # }}}48 49 @staticmethod 50 def normal_uncertain(*args): #{{{47 # }}} 48 49 @staticmethod 50 def normal_uncertain(*args): # {{{ 51 51 nargin = len(args) 52 52 … … 91 91 92 92 return [nuv] # Always return a list, so we have something akin to a MATLAB single row matrix 93 # }}}94 95 def __repr__(self): #{{{93 # }}} 94 95 def __repr__(self): # {{{ 96 96 string = ' normal uncertain variable: ' 97 97 string = "%s\n%s" % (string, fielddisplay(self, 'descriptor', 'name tag')) … … 103 103 104 104 return string 105 # }}}106 107 def __len__(self): #{{{105 # }}} 106 107 def __len__(self): # {{{ 108 108 if type(self.mean) in [list, np.ndarray]: 109 109 return len(self.mean) 110 110 else: 111 111 return 1 112 # }}}113 114 def checkconsistency(self, md, solution, analyses): #{{{112 # }}} 113 114 def checkconsistency(self, md, solution, analyses): # {{{ 115 115 md = checkfield(md, 'field', self.mean, 'fieldname', 'normal_uncertain.mean', 'NaN', 1, 'Inf', 1, '>=', 0) 116 116 md = checkfield(md, 'field', self.stddev, 'fieldname', 'normal_uncertain.stddev', 'NaN', 1, 'Inf', 1, '>=', 0) … … 139 139 if partmax > nmax: 140 140 raise Exception("normal_uncertain error message: partition vector's values cannot go over the number of vertices or elements") 141 # }}}141 # }}} 142 142 143 143 #virtual functions needed by qmu processing algorithms … … 145 145 146 146 @staticmethod 147 def prop_desc(nuv, dstr): #{{{147 def prop_desc(nuv, dstr): # {{{ 148 148 desc = ['' for i in range(np.size(nuv))] 149 149 for i in range(np.size(nuv)): … … 158 158 159 159 return desc 160 # }}}161 162 @staticmethod 163 def prop_mean(nuv): #{{{160 # }}} 161 162 @staticmethod 163 def prop_mean(nuv): # {{{ 164 164 mean = np.zeros(np.size(nuv)) 165 165 for i in range(np.size(nuv)): 166 166 mean[i] = nuv[i].mean 167 167 return mean 168 # }}}169 170 @staticmethod 171 def prop_stddev(nuv): #{{{168 # }}} 169 170 @staticmethod 171 def prop_stddev(nuv): # {{{ 172 172 stddev = np.zeros(np.size(nuv)) 173 173 for i in range(np.size(nuv)): 174 174 stddev[i] = nuv[i].stddev 175 175 return stddev 176 # }}}177 178 @staticmethod 179 def prop_lower(nuv): #{{{176 # }}} 177 178 @staticmethod 179 def prop_lower(nuv): # {{{ 180 180 lower = [] 181 181 return lower 182 # }}}183 184 @staticmethod 185 def prop_upper(nuv): #{{{182 # }}} 183 184 @staticmethod 185 def prop_upper(nuv): # {{{ 186 186 upper = [] 187 187 return upper 188 # }}}188 # }}} 189 189 190 190 #default 191 191 @staticmethod 192 def prop_abscissas(hbu): #{{{192 def prop_abscissas(hbu): # {{{ 193 193 abscissas = [] 194 194 return abscissas 195 # }}}196 197 @staticmethod 198 def prop_pairs_per_variable(hbu): #{{{195 # }}} 196 197 @staticmethod 198 def prop_pairs_per_variable(hbu): # {{{ 199 199 pairs_per_variable = [] 200 200 return pairs_per_variable 201 # }}}202 203 @staticmethod 204 def prop_counts(hbu): #{{{201 # }}} 202 203 @staticmethod 204 def prop_counts(hbu): # {{{ 205 205 counts = [] 206 206 return counts 207 # }}}208 @staticmethod 209 def prop_initpt(nuv): #{{{207 # }}} 208 @staticmethod 209 def prop_initpt(nuv): # {{{ 210 210 initpt = [] 211 211 return initpt 212 # }}}213 214 @staticmethod 215 def prop_initst(nuv): #{{{212 # }}} 213 214 @staticmethod 215 def prop_initst(nuv): # {{{ 216 216 inist = [] 217 217 return inist 218 # }}}219 220 @staticmethod 221 def prop_stype(nuv): #{{{218 # }}} 219 220 @staticmethod 221 def prop_stype(nuv): # {{{ 222 222 stype = [] 223 223 return stype 224 # }}}225 226 @staticmethod 227 def prop_scale(nuv): #{{{224 # }}} 225 226 @staticmethod 227 def prop_scale(nuv): # {{{ 228 228 scale = [] 229 229 return scale 230 # }}}230 # }}} 231 231 232 232 #new methods: 233 def isdistributed(self): #{{{233 def isdistributed(self): # {{{ 234 234 if strncmp(self.descriptor, 'distributed_', 12): 235 235 return True 236 236 else: 237 237 return False 238 # }}}238 # }}} 239 239 240 def isscaled(self): #{{{240 def isscaled(self): # {{{ 241 241 if strncmp(self.descriptor, 'scaled_', 7): 242 242 return True 243 243 else: 244 244 return False 245 # }}}245 # }}} 246 246 247 247 @staticmethod … … 257 257 if len(nuv) > 0: 258 258 vlist_write(fidi, 'normal_uncertain', 'nuv', nuv) 259 # }}}260 259 # }}} 260 -
issm/trunk-jpl/src/m/classes/qmu/response_function.py
r25011 r27458 103 103 return [rf] # Always return a list, so we have something akin to a MATLAB single row matrix 104 104 105 def __repr__(rf): #{{{105 def __repr__(rf): # {{{ 106 106 # display the object 107 107 string = 'class "response_function" object = \n' … … 116 116 117 117 return string 118 # }}}119 120 def __len__(self): #{{{118 # }}} 119 120 def __len__(self): # {{{ 121 121 return max(len(self.respl), len(self.probl), len(self.rell), len(self.grell)) 122 # }}}123 124 @staticmethod 125 def prop_desc(rf, dstr): #{{{122 # }}} 123 124 @staticmethod 125 def prop_desc(rf, dstr): # {{{ 126 126 desc = ['' for i in range(np.size(rf))] 127 127 for i in range(np.size(rf)): … … 135 135 desc = allempty(desc) 136 136 return desc 137 # }}}138 139 @staticmethod 140 def prop_stype(rf): #{{{137 # }}} 138 139 @staticmethod 140 def prop_stype(rf): # {{{ 141 141 stype = [] 142 142 return stype 143 # }}}144 145 @staticmethod 146 def prop_scale(rf): #{{{143 # }}} 144 145 @staticmethod 146 def prop_scale(rf): # {{{ 147 147 scale = [] 148 148 return scale 149 # }}}150 151 @staticmethod 152 def prop_weight(rf): #{{{149 # }}} 150 151 @staticmethod 152 def prop_weight(rf): # {{{ 153 153 weight = [] 154 154 return weight 155 # }}}156 157 @staticmethod 158 def prop_lower(rf): #{{{155 # }}} 156 157 @staticmethod 158 def prop_lower(rf): # {{{ 159 159 lower = [] 160 160 return lower 161 # }}}162 163 @staticmethod 164 def prop_upper(rf): #{{{161 # }}} 162 163 @staticmethod 164 def prop_upper(rf): # {{{ 165 165 upper = [] 166 166 return upper 167 # }}}168 169 @staticmethod 170 def prop_target(rf): #{{{167 # }}} 168 169 @staticmethod 170 def prop_target(rf): # {{{ 171 171 target = [] 172 172 return target 173 # }}}173 # }}} 174 174 175 175 @staticmethod … … 191 191 192 192 #new methods: 193 def isscaled(self): #{{{193 def isscaled(self): # {{{ 194 194 if strncmpi(self.descriptor, 'scaled_', 7): 195 195 return True 196 196 else: 197 197 return False 198 # }}}198 # }}} 199 199 200 200 @staticmethod -
issm/trunk-jpl/src/m/classes/qmu/uniform_uncertain.py
r25105 r27458 39 39 ) 40 40 ''' 41 def __init__(self): #{{{41 def __init__(self): # {{{ 42 42 self.descriptor = '' 43 43 self.lower = -np.inf … … 45 45 self.partition = [] 46 46 self.nsteps = 0 47 # }}}48 49 @staticmethod 50 def uniform_uncertain(*args): #{{{47 # }}} 48 49 @staticmethod 50 def uniform_uncertain(*args): # {{{ 51 51 nargin = len(args) 52 52 … … 91 91 92 92 return [uuv] # Always return a list, so we have something akin to a MATLAB single row matrix 93 # }}}94 95 def __repr__(self): #{{{93 # }}} 94 95 def __repr__(self): # {{{ 96 96 string = ' uniform uncertain variable: ' 97 97 string = "%s\n%s" % (string, fielddisplay(self, 'descriptor', 'name tag')) … … 103 103 104 104 return string 105 # }}}106 107 def __len__(self): #{{{105 # }}} 106 107 def __len__(self): # {{{ 108 108 if type(self.lower) in [list, np.ndarray]: 109 109 return len(self.lower) 110 110 else: 111 111 return 1 112 # }}}112 # }}} 113 113 114 def checkconsistency(self, md, solution, analyses): #{{{114 def checkconsistency(self, md, solution, analyses): # {{{ 115 115 md = checkfield(md, 'field', self.upper, 'fieldname', 'uniform_uncertain.upper', 'NaN', 1, 'Inf', 1, '>', self.lower, 'numel', len(self.lower)) 116 116 md = checkfield(md, 'field', self.lower, 'fieldname', 'uniform_uncertain.upper', 'NaN', 1, 'Inf', 1, '<', self.upper, 'numel', len(self.upper)) … … 140 140 if partmax > nmax: 141 141 raise Exception("uniform_uncertain error message: partition vector's values cannot go over the number of vertices or elements") 142 # }}}142 # }}} 143 143 144 144 #virtual functions needed by qmu processing algorithms: … … 146 146 147 147 @staticmethod 148 def prop_desc(uuv, dstr): #{{{148 def prop_desc(uuv, dstr): # {{{ 149 149 desc = ['' for i in range(np.size(uuv))] 150 150 for i in range(np.size(uuv)): … … 159 159 160 160 return desc 161 # }}}162 163 @staticmethod 164 def prop_stddev(uuv): #{{{161 # }}} 162 163 @staticmethod 164 def prop_stddev(uuv): # {{{ 165 165 stddev = [] 166 166 return stddev 167 # }}}168 169 @staticmethod 170 def prop_mean(uuv): #{{{167 # }}} 168 169 @staticmethod 170 def prop_mean(uuv): # {{{ 171 171 mean = [] 172 172 return mean 173 # }}}174 175 @staticmethod 176 def prop_lower(uuv): #{{{173 # }}} 174 175 @staticmethod 176 def prop_lower(uuv): # {{{ 177 177 lower = np.zeros(np.size(uuv)) 178 178 for i in range(np.size(uuv)): … … 182 182 183 183 return lower 184 # }}}185 186 @staticmethod 187 def prop_upper(uuv): #{{{184 # }}} 185 186 @staticmethod 187 def prop_upper(uuv): # {{{ 188 188 upper = np.zeros(np.size(uuv)) 189 189 for i in range(np.size(uuv)): … … 193 193 194 194 return upper 195 # }}}196 197 @staticmethod 198 def prop_abscissas(hbu): #{{{195 # }}} 196 197 @staticmethod 198 def prop_abscissas(hbu): # {{{ 199 199 abscissas = [] 200 200 return abscissas 201 # }}}202 203 @staticmethod 204 def prop_pairs_per_variable(hbu): #{{{201 # }}} 202 203 @staticmethod 204 def prop_pairs_per_variable(hbu): # {{{ 205 205 pairs_per_variable = [] 206 206 return pairs_per_variable 207 # }}}208 209 @staticmethod 210 def prop_counts(hbu): #{{{207 # }}} 208 209 @staticmethod 210 def prop_counts(hbu): # {{{ 211 211 counts = [] 212 212 return counts 213 # }}}214 215 @staticmethod 216 def prop_initpt(uuv): #{{{213 # }}} 214 215 @staticmethod 216 def prop_initpt(uuv): # {{{ 217 217 initpt = [] 218 218 return initpt 219 # }}}220 221 @staticmethod 222 def prop_initst(uuv): #{{{219 # }}} 220 221 @staticmethod 222 def prop_initst(uuv): # {{{ 223 223 initst = [] 224 224 return initst 225 # }}}226 227 @staticmethod 228 def prop_stype(uuv): #{{{225 # }}} 226 227 @staticmethod 228 def prop_stype(uuv): # {{{ 229 229 stype = [] 230 230 return stype 231 # }}}232 233 @staticmethod 234 def prop_scale(uuv): #{{{231 # }}} 232 233 @staticmethod 234 def prop_scale(uuv): # {{{ 235 235 scale = [] 236 236 return scale 237 # }}}237 # }}} 238 238 239 239 #new methods: 240 def isscaled(self): #{{{240 def isscaled(self): # {{{ 241 241 if strncmp(self.descriptor, 'scaled_', 7): 242 242 return True 243 243 else: 244 244 return False 245 # }}}246 247 @staticmethod 248 def dakota_write(fidi, dvar): #{{{245 # }}} 246 247 @staticmethod 248 def dakota_write(fidi, dvar): # {{{ 249 249 # possible namespace pollution, the above import seems not to work 250 250 from vlist_write import vlist_write … … 257 257 if len(uuv) > 0: 258 258 vlist_write(fidi, 'uniform_uncertain', 'uuv', uuv) 259 # }}}259 # }}} -
issm/trunk-jpl/src/m/classes/qmustatistics.py
r25817 r27458 44 44 else: 45 45 raise Exception('constructor not supported') 46 # }}}46 # }}} 47 47 48 48 def __repr__(self): # {{{ … … 56 56 s += '{}\n'.format(self.method[i]) 57 57 return s 58 # }}}58 # }}} 59 59 60 60 def setdefaultparameters(self): # {{{ … … 63 63 self.ndirectories = 50 # Number of output directories; should be < numcpus 64 64 return self 65 # }}}65 # }}} 66 66 67 67 @staticmethod … … 91 91 if m['steps'][s] > md.mesh.numberofvertices: 92 92 raise Exception('qmustatistics consistency check error: qmu.statistics.method[{}][\'steps\'][{}] should be < md.mesh.numberofvertices!'.format(i, s)) 93 # }}}93 # }}} 94 94 95 def defaultoutputs(self, md): #{{{95 def defaultoutputs(self, md): # {{{ 96 96 outputs = [] 97 97 return outputs 98 # }}}98 # }}} 99 99 100 def marshall(self, prefix, md, fid): #{{{100 def marshall(self, prefix, md, fid): # {{{ 101 101 if self.method[0]['name'] == 'None': 102 102 WriteData(fid, prefix, 'name', 'md.qmu.statistics', 'data', 0, 'format', 'Boolean') … … 124 124 else: 125 125 raise Exception('qmustatistics marshall error message: unknown type ''{}'' for qmu.statistics.method[{}]'.format(m['name'], i)) 126 # }}}126 # }}} 127 127 128 def extrude(self, md): #{{{128 def extrude(self, md): # {{{ 129 129 return self 130 # }}}130 # }}} 131 131 132 def addmethod(self, *args): #{{{132 def addmethod(self, *args): # {{{ 133 133 """ADDMETHOD - Add new, empty method or passed dict to self.method 134 134 """ … … 140 140 else: 141 141 raise Exception('Number of args should be 0 (appends empty dict to methods member) or 1 (appends passed dict to methods member)') 142 # }}}142 # }}} -
issm/trunk-jpl/src/m/classes/radaroverlay.py
r24213 r27458 18 18 self.setdefaultparameters() 19 19 20 # }}}20 # }}} 21 21 22 22 def __repr__(self): # {{{ … … 26 26 string = "%s\n%s" % (string, fielddisplay(self, 'y', 'corresponding y coordinates [m]')) 27 27 return string 28 # }}}28 # }}} 29 29 30 30 def setdefaultparameters(self): # {{{ 31 31 return self 32 # }}}32 # }}} -
issm/trunk-jpl/src/m/classes/regionaloutput.py
r26904 r27458 50 50 # raise IOError('regionaloutput error message: ''mask'' field or ''maskexpstring'' and ''model'' fields should be defined!') 51 51 52 # }}}52 # }}} 53 53 54 54 def __repr__(self): # {{{ … … 60 60 string = "%s\n%s" % (string, fielddisplay(self, 'maskexpstring', 'name of Argus file that can be passed in to define the regional mask')) 61 61 return string 62 # }}}62 # }}} 63 63 64 64 def extrude(self, md): # {{{ 65 65 self.mask = project3d(md, 'vector', self.mask, 'type', 'node') 66 66 return self 67 # }}}67 # }}} 68 68 69 69 def setdefaultparameters(self): # {{{ 70 70 return self 71 # }}}71 # }}} 72 72 73 73 def setmaskfromexp(self, md): # {{{ -
issm/trunk-jpl/src/m/classes/results.py
r26840 r27458 15 15 def __init__(self): #{{{ 16 16 pass 17 # }}}17 # }}} 18 18 19 19 def __repr__(self): #{{{ … … 30 30 31 31 return s 32 # }}}32 # }}} 33 33 34 34 def setdefaultparameters(self): #{{{ 35 35 #do nothing 36 36 return self 37 # }}}38 39 def checkconsistency(self, md, solution, analyses): #{{{ 40 return md 41 # }}}42 43 def marshall(self, prefix, md, fid): #{{{ 44 pass 45 # }}}46 # }}}37 # }}} 38 39 def checkconsistency(self, md, solution, analyses): #{{{ 40 return md 41 # }}} 42 43 def marshall(self, prefix, md, fid): #{{{ 44 pass 45 # }}} 46 # }}} 47 47 48 48 … … 59 59 def __init__(self): #{{{ 60 60 pass 61 # }}}61 # }}} 62 62 63 63 def __repr__(self): #{{{ … … 71 71 s += '\n' 72 72 return s 73 # }}}73 # }}} 74 74 75 75 def __len__(self): #{{{ 76 76 return len(self.__dict__.keys()) 77 # }}}77 # }}} 78 78 79 79 def setdefaultparameters(self): #{{{ 80 80 #do nothing 81 81 return self 82 # }}}83 84 def checkconsistency(self, md, solution, analyses): #{{{ 85 return md 86 # }}}87 88 def marshall(self, prefix, md, fid): #{{{ 89 pass 90 # }}}91 # }}}82 # }}} 83 84 def checkconsistency(self, md, solution, analyses): #{{{ 85 return md 86 # }}} 87 88 def marshall(self, prefix, md, fid): #{{{ 89 pass 90 # }}} 91 # }}} 92 92 93 93 … … 117 117 else: 118 118 self.steps = [solutionstep()] 119 # }}}119 # }}} 120 120 121 121 def __deepcopy__(self, memo): #{{{ 122 122 return solution(deepcopy(self.steps, memo)) 123 # }}}123 # }}} 124 124 125 125 def __repr__(self): #{{{ … … 136 136 137 137 return s 138 # }}}138 # }}} 139 139 140 140 def __len__(self): #{{{ 141 141 return len(self.steps) 142 # }}}142 # }}} 143 143 144 144 def __getattr__(self, key): #{{{ … … 151 151 # else: 152 152 # raise Exception('<results>.<solution> error: Currently, can only get a field if we are not working with a transient solution.') 153 # }}}153 # }}} 154 154 155 155 def __getitem__(self, index): #{{{ … … 161 161 else: 162 162 raise Exception('<results>.<solution>: either request a specific result by index or make sure that there is only a single result for this solution (cannot be a transient solution)') 163 # }}}164 165 def setdefaultparameters(self): #{{{ 166 return self 167 # }}}168 169 def checkconsistency(self, md, solution, analyses): #{{{ 170 return md 171 # }}}172 173 def marshall(self, prefix, md, fid): #{{{ 174 pass 175 # }}}176 # }}}163 # }}} 164 165 def setdefaultparameters(self): #{{{ 166 return self 167 # }}} 168 169 def checkconsistency(self, md, solution, analyses): #{{{ 170 return md 171 # }}} 172 173 def marshall(self, prefix, md, fid): #{{{ 174 pass 175 # }}} 176 # }}} 177 177 178 178 … … 186 186 def __init__(self, *args): #{{{ 187 187 pass 188 # }}}188 # }}} 189 189 190 190 def __repr__(self): #{{{ … … 195 195 196 196 return s 197 # }}}197 # }}} 198 198 199 199 def getfieldnames(self): #{{{ 200 200 return self.__dict__.keys() 201 # }}}201 # }}} 202 202 203 203 def getlongestfieldname(self): #{{{ … … 209 209 210 210 return maxlength 211 # }}}212 213 def setdefaultparameters(self): #{{{ 214 return self 215 # }}}216 217 def checkconsistency(self, md, solution, analyses): #{{{ 218 return md 219 # }}}220 221 def marshall(self, prefix, md, fid): #{{{ 222 pass 223 # }}}224 # }}}211 # }}} 212 213 def setdefaultparameters(self): #{{{ 214 return self 215 # }}} 216 217 def checkconsistency(self, md, solution, analyses): #{{{ 218 return md 219 # }}} 220 221 def marshall(self, prefix, md, fid): #{{{ 222 pass 223 # }}} 224 # }}} -
issm/trunk-jpl/src/m/classes/rifts.py
r26759 r27458 22 22 self.setdefaultparameters() 23 23 24 # }}}24 # }}} 25 25 26 26 def __repr__(self): # {{{ … … 30 30 string = "%s\n%s" % (string, fielddisplay(self, 'riftproperties', '')) 31 31 return string 32 # }}}32 # }}} 33 33 34 34 def setdefaultparameters(self): # {{{ 35 35 return self 36 # }}}36 # }}} 37 37 38 38 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/rotational.py
r26358 r27458 21 21 else: 22 22 raise Exception('constructor not supported') 23 # }}}23 # }}} 24 24 25 25 def __repr__(self): # {{{ … … 29 29 s += '{}\n'.format(fielddisplay(self, 'angularvelocity', 'mean rotational velocity of earth [per second]')) 30 30 return s 31 # }}}31 # }}} 32 32 33 33 def setdefaultparameters(self): # {{{ … … 39 39 self.angularvelocity = 7.2921 * pow(10, -5) # [s^-1] 40 40 return self 41 # }}}41 # }}} 42 42 43 43 def checkconsistency(self, md, solution, analyses): # {{{ … … 48 48 md = checkfield(md, 'fieldname', 'solidearth.rotational.angularvelocity', 'NaN', 1, 'Inf', 1) 49 49 return md 50 # }}}50 # }}} 51 51 52 52 def defaultoutputs(self, md): #{{{ 53 53 return [] 54 # }}}54 # }}} 55 55 56 56 def marshall(self, prefix, md, fid): #{{{ … … 58 58 WriteData(fid, prefix, 'object', self, 'fieldname', 'polarmoi', 'name', 'md.solidearth.rotational.polarmoi', 'format', 'Double') 59 59 WriteData(fid, prefix, 'object', self, 'fieldname', 'angularvelocity', 'name', 'md.solidearth.rotational.angularvelocity', 'format', 'Double') 60 # }}}60 # }}} 61 61 62 62 def extrude(self, md): #{{{ 63 63 return self 64 # }}}64 # }}} -
issm/trunk-jpl/src/m/classes/sampling.py
r27453 r27458 16 16 """ 17 17 18 def __init__(self, *args): #{{{18 def __init__(self, *args): # {{{ 19 19 self.kappa = np.nan 20 20 self.tau = 0 … … 30 30 else: 31 31 raise RuntimeError('constructor not supported') 32 # }}}32 # }}} 33 33 34 def __repr__(self): #{{{34 def __repr__(self): # {{{ 35 35 s = ' Sampling parameters::\n' 36 36 s += ' Parameters of PDE operator (kappa^2 I-Laplacian)^(alpha/2)(tau):\n' … … 51 51 52 52 return s 53 # }}}53 # }}} 54 54 55 def setdefaultparameters(self): #{{{55 def setdefaultparameters(self): # {{{ 56 56 57 57 # Apply Robin boundary conditions … … 68 68 69 69 return self 70 # }}}70 # }}} 71 71 72 def defaultoutputs(self, md): #{{{72 def defaultoutputs(self, md): # {{{ 73 73 return [] 74 # }}}74 # }}} 75 75 76 def checkconsistency(self, md, solution, analyses): #{{{76 def checkconsistency(self, md, solution, analyses): # {{{ 77 77 if ('SamplingAnalysis' not in analyses): 78 78 return md … … 89 89 90 90 return md 91 # }}}91 # }}} 92 92 93 def marshall(self, prefix, md, fid): #{{{93 def marshall(self, prefix, md, fid): # {{{ 94 94 WriteData(fid, prefix, 'object', self, 'fieldname', 'kappa', 'format', 'DoubleMat', 'mattype', 1) 95 95 WriteData(fid, prefix, 'object', self, 'fieldname', 'tau', 'format', 'DoubleMat', 'mattype', 1) … … 107 107 outputs = outputscopy 108 108 WriteData(fid, prefix, 'data', outputs, 'name', 'md.sampling.requested_outputs', 'format', 'StringArray') 109 # }}}109 # }}} 110 110 111 def setparameters(self, md, lc, sigma): #{{{111 def setparameters(self, md, lc, sigma): # {{{ 112 112 nu = self.alpha - 1 113 113 KAPPA = pow((8 * nu), 0.5) / lc … … 117 117 118 118 return md 119 # }}}119 # }}} -
issm/trunk-jpl/src/m/classes/sealevelmodel.py
r27327 r27458 163 163 # }}} 164 164 165 def ncaps(self): #{{{165 def ncaps(self): # {{{ 166 166 return len(self.icecaps) 167 167 # }}} … … 188 188 # }}} 189 189 190 def intersections2d(self, *args): #{{{190 def intersections2d(self, *args): # {{{ 191 191 options = pairoptions(*args) 192 192 force = options.getfieldvalue('force', 0) -
issm/trunk-jpl/src/m/classes/slr.py
r26352 r27458 47 47 #set defaults 48 48 self.setdefaultparameters() 49 # }}}49 # }}} 50 50 51 51 def __repr__(self): # {{{ … … 116 116 self.planetradius = planetradius('earth') 117 117 return self 118 # }}}118 # }}} 119 119 120 120 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/spatiallinearbasalforcings.py
r26789 r27458 15 15 """ 16 16 17 def __init__(self, *args): #{{{17 def __init__(self, *args): # {{{ 18 18 nargs = len(args) 19 19 if nargs == 0: … … 43 43 else: 44 44 raise Exception('constructor not supported') 45 # }}}45 # }}} 46 46 47 def __repr__(self): #{{{47 def __repr__(self): # {{{ 48 48 s = ' spatial linear basal forcings parameters:\n' 49 49 s += '{}\n'.format(fielddisplay(self, 'groundedice_melting_rate', 'basal melting rate (positive if melting) [m/yr]')) … … 55 55 s += '{}\n'.format(fielddisplay(self, 'geothermalflux', 'geothermal heat flux [W/m^2]')) 56 56 return s 57 # }}}57 # }}} 58 58 59 def extrude(self, md): #{{{59 def extrude(self, md): # {{{ 60 60 self.groundedice_melting_rate = project3d(md, 'vector', self.groundedice_melting_rate, 'type', 'node', 'layer', 1) 61 61 self.deepwater_melting_rate = project3d(md, 'vector', self.deepwater_melting_rate, 'type', 'node', 'layer', 1) … … 66 66 self.perturbation_melting_rate = project3d(md, 'vector', self.upperwater_melting_rate, 'type', 'node', 'layer', 1) 67 67 return self 68 # }}}68 # }}} 69 69 70 def initialize(self, md): #{{{70 def initialize(self, md): # {{{ 71 71 if np.all(np.isnan(self.groundedice_melting_rate)): 72 72 self.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices)) 73 73 print(' no basalforcings.groundedice_melting_rate specified: values set as zero') 74 74 return self 75 # }}}75 # }}} 76 76 77 def setdefaultparameters(self): #{{{77 def setdefaultparameters(self): # {{{ 78 78 return self 79 # }}}79 # }}} 80 80 81 def checkconsistency(self, md, solution, analyses): #{{{81 def checkconsistency(self, md, solution, analyses): # {{{ 82 82 if not np.all(np.isnan(self.perturbation_melting_rate)): 83 83 md = checkfield(md, 'fieldname', 'basalforcings.perturbation_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1) … … 106 106 # }}} 107 107 108 def marshall(self, prefix, md, fid): #{{{108 def marshall(self, prefix, md, fid): # {{{ 109 109 yts = md.constants.yts 110 110 … … 117 117 WriteData(fid, prefix, 'object', self, 'fieldname', 'upperwater_elevation', 'format', 'DoubleMat', 'name', 'md.basalforcings.upperwater_elevation', 'mattype', 1) 118 118 WriteData(fid, prefix, 'object', self, 'fieldname', 'perturbation_melting_rate', 'format', 'DoubleMat', 'name', 'md.basalforcings.perturbation_melting_rate', 'scale', 1. / yts, 'mattype', 1) 119 # }}}119 # }}} -
issm/trunk-jpl/src/m/classes/steadystate.py
r24213 r27458 21 21 self.setdefaultparameters() 22 22 23 # }}}23 # }}} 24 24 def __repr__(self): # {{{ 25 25 string = ' steadystate solution parameters:' … … 28 28 string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional requested outputs')) 29 29 return string 30 # }}}30 # }}} 31 31 32 32 def defaultoutputs(self, md): # {{{ 33 33 return md.stressbalance.defaultoutputs(md) + md.thermal.defaultoutputs(md) 34 34 35 # }}}35 # }}} 36 36 def setdefaultparameters(self): # {{{ 37 37 #maximum of steady state iterations … … 42 42 self.requested_outputs = ['default'] 43 43 return self 44 # }}}44 # }}} 45 45 46 46 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/stochasticforcing.py
r27450 r27458 49 49 s += ' SMBforcing\n' 50 50 return s 51 # }}}51 # }}} 52 52 53 53 def setdefaultparameters(self): # {{{ … … 57 57 self.randomflag = 1 # true randomness is implemented by default 58 58 return self 59 # }}}59 # }}} 60 60 61 61 def checkconsistency(self, md, solution, analyses): # {{{ … … 256 256 list1 = list1.keys() 257 257 return list(list1) 258 # }}}258 # }}} 259 259 260 260 def structstochforcing(self): # {{{ -
issm/trunk-jpl/src/m/classes/surfaceload.py
r26358 r27458 24 24 else: 25 25 raise Exception('constructor not supported') 26 # }}}26 # }}} 27 27 28 28 def __repr__(self): #{{{ … … 32 32 s += '{}\n'.format(fielddisplay(self, 'other', 'other loads (sediments) [kg/m^2/yr]')) 33 33 return s 34 # }}}34 # }}} 35 35 36 36 def setdefaultparameters(self): # {{{ 37 37 return self 38 # }}}38 # }}} 39 39 40 40 def checkconsistency(self, md, solution, analyses): # {{{ … … 48 48 md = checkfield(md, 'fieldname', 'solidearth.surfaceload.other', 'timeseries', 1, 'NaN', 1, 'Inf', 1) 49 49 return md 50 # }}}50 # }}} 51 51 52 52 def marshall(self, prefix, md, fid): #{{{ … … 75 75 76 76 WriteData(fid, prefix, 'object', self, 'fieldname', 'otherchange', 'name', 'md.solidearth.surfaceload.otherchange', 'format', 'MatArray', 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts, 'scale', 1 / yts) 77 # }}}77 # }}} 78 78 79 79 def extrude(self, md): #{{{ 80 80 return self 81 # }}}81 # }}} -
issm/trunk-jpl/src/m/classes/taoinversion.py
r26903 r27458 10 10 11 11 12 class taoinversion(object): #{{{12 class taoinversion(object): # {{{ 13 13 """TAOINVERSION class definition 14 14 … … 41 41 42 42 self.setdefaultparameters() 43 # }}}43 # }}} 44 44 45 45 def __repr__(self): -
issm/trunk-jpl/src/m/classes/thermal.py
r25688 r27458 29 29 self.requested_outputs = [] 30 30 self.setdefaultparameters() 31 # }}}31 # }}} 32 32 33 33 def __repr__(self): # {{{ … … 45 45 s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested')) 46 46 return s 47 # }}}47 # }}} 48 48 49 49 def extrude(self, md): # {{{ … … 54 54 self.spctemperature[pos] = md.initialization.temperature[pos] #impose observed temperature on surface 55 55 return self 56 # }}}56 # }}} 57 57 58 58 def defaultoutputs(self, md): # {{{ … … 61 61 else: 62 62 return ['Temperature', 'BasalforcingsGroundediceMeltingRate'] 63 # }}}63 # }}} 64 64 65 65 def setdefaultparameters(self): # {{{ … … 87 87 self.requested_outputs = ['default'] 88 88 return self 89 # }}}89 # }}} 90 90 91 91 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/timestepping.py
r27178 r27458 24 24 else: 25 25 raise RuntimeError('constructor not supported') 26 # }}}26 # }}} 27 27 28 28 def __repr__(self): #{{{ … … 37 37 s += '{}\n'.format(fielddisplay(self, 'coupling_time', 'length of coupling time steps with ocean model [' + unit + ']')) 38 38 return s 39 # }}}39 # }}} 40 40 41 41 def setdefaultparameters(self): #{{{ … … 52 52 53 53 return self 54 # }}}54 # }}} 55 55 56 56 def checkconsistency(self, md, solution, analyses): #{{{ … … 67 67 68 68 return md 69 # }}}69 # }}} 70 70 71 71 def marshall(self, prefix, md, fid): #{{{ … … 79 79 WriteData(fid, prefix, 'object', self, 'fieldname', 'cycle_forcing', 'format', 'Boolean') 80 80 WriteData(fid, prefix, 'object', self, 'fieldname', 'coupling_time', 'format', 'Double', 'scale', scale) 81 # }}}81 # }}} -
issm/trunk-jpl/src/m/classes/timesteppingadaptive.py
r27178 r27458 40 40 else: 41 41 raise Exception('constructor not supported') 42 # }}}42 # }}} 43 43 44 44 def __repr__(self): # {{{ … … 69 69 self.cycle_forcing = 0 70 70 return self 71 # }}}71 # }}} 72 72 73 73 def checkconsistency(self, md, solution, analyses): # {{{ -
issm/trunk-jpl/src/m/classes/toolkits.m
r27420 r27458 68 68 self.DefaultAnalysis = issmgslsolver(); 69 69 else 70 disp('WARNING: Need at least M umps or Gsl to define an issmsolver type, no default solver assigned');70 disp('WARNING: Need at least MUMPS or GSL to define an ISSM solver type, no default solver assigned'); 71 71 end 72 72 end … … 124 124 %TOOLKITSFILE - build toolkits file 125 125 % 126 % Build a Petsc compatible options file, from the toolkits model field + return options string.127 % This file will also be used when the toolkit used is 'issm' instead of 'petsc' 126 % Build a Petsc compatible options file, from the toolkits model field and return options string. 127 % This file will also be used when the toolkit used is 'issm' instead of 'petsc'. 128 128 % 129 129 % Usage: ToolkitsFile(toolkits,filename); -
issm/trunk-jpl/src/m/classes/toolkits.py
r27427 r27458 1 from fielddisplay import fielddisplay 2 from iluasmoptions import iluasmoptions 1 3 from IssmConfig import IssmConfig 2 from mumpsoptions import mumpsoptions3 from iluasmoptions import iluasmoptions4 from fielddisplay import fielddisplay5 4 from issmgslsolver import issmgslsolver 6 5 from issmmumpssolver import issmmumpssolver 6 from mumpsoptions import mumpsoptions 7 7 8 8 9 9 class toolkits(object): 10 """ TOOLKITSclass definition10 """toolkits class definition 11 11 12 12 Usage: … … 14 14 """ 15 15 16 def __init__(self): #{{{ 16 def __init__(self, *args): # {{{ 17 self.DefaultAnalysis = None 18 self.RecoveryAnalysis = None 19 20 nargs = len(args) 21 if nargs == 0: 22 self.setdefaultparameters() 23 elif nargs == 1: 24 # TODO: Replace the following with constructor 25 self.setdefaultparameters() 26 else: 27 raise Exception('constructor not supported') 28 # }}} 29 30 def __repr__(self): # {{{ 31 s = "List of toolkits options per analysis:\n\n" 32 for analysis in list(vars(self).keys()): 33 s += "{}\n".format(fielddisplay(self, analysis, '')) 34 35 return s 36 # }}} 37 38 def addoptions(self, analysis, *args): # {{{ 39 """addoptions - add analysis to md.toolkits.analysis 40 41 Optional third parameter adds toolkits options to analysis. 42 43 Usage: 44 md.toolkits = addoptions(md.toolkits, 'StressbalanceAnalysis', FSoptions()) 45 md.toolkits = addoptions(md.toolkits, 'StressbalanceAnalysis') 46 """ 47 48 # Create dynamic property if property does not exist yet 49 if not hasattr(self, analysis): 50 setattr(self, analysis, None) 51 52 # Add toolkits options to analysis 53 if len(args) == 1: 54 setattr(self, analysis, args[0]) 55 56 return self 57 # }}} 58 59 def setdefaultparameters(self): # {{{ 17 60 # Default toolkits 18 61 if IssmConfig('_HAVE_PETSC_')[0]: … … 28 71 self.DefaultAnalysis = issmgslsolver() 29 72 else: 30 raise IOError( "ToolkitsFile error: need at least Mumps or Gsl to define issm solver type")73 raise IOError('ToolkitsFile error: need at least MUMPS or GSL to define ISSM solver type, no default solver assigned') 31 74 32 75 # Use same solver for Recovery mode 33 76 self.RecoveryAnalysis = self.DefaultAnalysis 34 77 35 # The other properties are dynamic36 # }}}78 return self 79 # }}} 37 80 38 def __repr__(self): #{{{ 39 s = "List of toolkits options per analysis:\n\n" 40 for analysis in list(vars(self).keys()): 41 s += "{}\n".format(fielddisplay(self, analysis, '')) 81 def checkconsistency(self, md, solution, analyses): # {{{ 82 supported_analyses = [ 83 'DefaultAnalysis', 84 'RecoveryAnalysis', 85 'StressbalanceAnalysis', 86 'GLheightadvectionAnalysis', 87 'MasstransportAnalysis', 88 'ThermalAnalysis', 89 'EnthalpyAnalysis', 90 'AdjointBalancethicknessAnalysis', 91 'BalancethicknessAnalysis', 92 'Balancethickness2Analysis', 93 'BalancethicknessSoftAnalysis', 94 'BalancevelocityAnalysis', 95 'DamageEvolutionAnalysis', 96 'LoveAnalysis', 97 'EsaAnalysis', 98 'SealevelchangeAnalysis', 99 'FreeSurfaceBaseAnalysis', 100 'FreeSurfaceTopAnalysis', 101 'LevelsetAnalysis', 102 'DebrisAnalysis', 103 'L2ProjectionBaseAnalysis', 104 'ExtrudeFromBaseAnalysis', 105 'ExtrudeFromTopAnalysis' 106 ] 107 analyses = list(vars(self).keys()) 108 for analysis in analyses: 109 if analysis not in supported_analyses: 110 md.checkmessage('md.toolkits.{} not supported yet'.format(analysis)) 42 111 43 return s44 #}}}45 46 def addoptions(self, analysis, *args): #{{{47 # Usage example:48 # md.toolkits = addoptions(md.toolkits, 'StressbalanceAnalysis', FSoptions())49 # md.toolkits = addoptions(md.toolkits, 'StressbalanceAnalysis')50 51 # Create dynamic property if property does not exist yet52 if not hasattr(self, analysis):53 setattr(self, analysis, None)54 55 # Add toolkits options to analysis56 if len(args) == 1:57 setattr(self, analysis, args[0])58 59 return self60 #}}}61 62 def checkconsistency(self, md, solution, analyses): #{{{63 # TODO:64 # - Implement something closer to a switch as in65 # src/m/classes/toolkits.m?66 #67 for analysis in list(vars(self).keys()):68 112 if not getattr(self, analysis): 69 md.checkmessage( "md.toolkits.{} is empty".format(analysis))113 md.checkmessage('md.toolkits.{} is empty'.format(analysis)) 70 114 71 115 return md 72 # }}}116 # }}} 73 117 74 def ToolkitsFile(self, filename): #{{{75 """T OOLKITSFILE- build toolkits file118 def ToolkitsFile(self, filename): # {{{ 119 """ToolkitsFile - build toolkits file 76 120 77 Build a PETSc compatible options file, from the toolkits model field +return options string.121 Build a PETSc compatible options file, from the toolkits model field and return options string. 78 122 This file will also be used when the toolkit used is 'issm' instead of 'petsc'. 79 123 … … 86 130 fid = open(filename, 'w') 87 131 except IOError as e: 88 raise IOError( "ToolkitsFile error: could not open {}' for writing due to".format(filename), e)132 raise IOError('ToolkitsFile error: could not open {} for writing due to {}'.format(filename), e) 89 133 90 134 # Write header 91 fid.write( "%s%s%s\n" %('%Toolkits options file: ', filename, ' written from Python toolkits array'))135 fid.write('{}{}{}\n'.format('%Toolkits options file: ', filename, ' written from Python toolkits array')) 92 136 93 137 # Start writing options … … 96 140 97 141 # First write analysis 98 fid.write("\n+{}\n".format(analysis)) # Append a + to recognize it's an analysis enum 142 fid.write('\n+{}\n'.format(analysis)) # Append a + to recognize it's an analysis enum 143 99 144 # Now, write options 100 145 for optionname, optionvalue in list(options.items()): … … 102 147 if not optionvalue: 103 148 # This option has only one argument 104 fid.write( "-{}\n".format(optionname))149 fid.write('-{}\n'.format(optionname)) 105 150 else: 106 151 # Option with value. Value can be string or scalar. 107 152 if isinstance(optionvalue, (bool, int, float)): 108 fid.write( "-{} {}\n".format(optionname, optionvalue))153 fid.write('-{} {}\n'.format(optionname, optionvalue)) 109 154 elif isinstance(optionvalue, str): 110 fid.write( "-{} {}\n".format(optionname, optionvalue))155 fid.write('-{} {}\n'.format(optionname, optionvalue)) 111 156 else: 112 raise TypeError( "ToolkitsFile error: option '{}' is not well formatted.".format(optionname))157 raise TypeError('ToolkitsFile error: option {} is not well formatted'.format(optionname)) 113 158 114 159 fid.close() 115 # }}}160 # }}} -
issm/trunk-jpl/src/m/coordsystems/epsg2proj.py
r27119 r27458 38 38 39 39 return outs 40 # }}}40 # }}} -
issm/trunk-jpl/src/m/coordsystems/flaglatlongradius.py
r24902 r27458 4 4 5 5 6 def flaglatlogradius(lat, long, lat0, long0, radius): # {{{6 def flaglatlogradius(lat, long, lat0, long0, radius): # {{{ 7 7 ''' 8 8 FLAGLATLONGRADIUS - given a vector of lat, long, and a circle of radius -
issm/trunk-jpl/src/m/coordsystems/flagradiuselements.py
r24902 r27458 6 6 7 7 8 def flagradiuselements(elements, x, y, z, lat0, long0, radius): # {{{8 def flagradiuselements(elements, x, y, z, lat0, long0, radius): # {{{ 9 9 # get x0,y0,z0: 10 10 R = planetradius('earth') -
issm/trunk-jpl/src/m/coordsystems/gdaltransform.py
r27119 r27458 9 9 10 10 11 def gdaltransform(x, y, proj_in, proj_out): #{{{11 def gdaltransform(x, y, proj_in, proj_out): # {{{ 12 12 """GDALTRANSFORM - switch from one projection system to another 13 13 … … 70 70 71 71 return [xout, yout] 72 # }}}72 # }}} -
issm/trunk-jpl/src/m/coordsystems/laea.py
r26661 r27458 1 def laea(lat, long): #{{{1 def laea(lat, long): # {{{ 2 2 """LAEA - Lambert Azimuthal Equal Area projection at lat, long projection 3 3 center. … … 12 12 13 13 return '+proj=laea +lat_0={} +lon_0={} +x_0=0 +y_0=0 +ellps=WGS84 +units=m +no_defs'.format(lat, long) 14 # }}}14 # }}} -
issm/trunk-jpl/src/m/geometry/AboveGround.py
r25762 r27458 1 1 import numpy as np 2 2 3 def AboveGround(lat, long, r, height): #{{{3 def AboveGround(lat, long, r, height): # {{{ 4 4 r = r + height 5 5 x = r * np.cos(np.deg2rad(lat)) * np.cos(np.deg2rad(long)) 6 6 y = r * np.cos(np.deg2rad(lat)) * np.sin(np.deg2rad(long)) 7 7 z = r * np.sin(np.deg2rad(lat)) 8 # }}}8 # }}} -
issm/trunk-jpl/src/m/geometry/inpolygon.py
r25455 r27458 2 2 import numpy as np 3 3 4 def inpolygon(xq, yq, xv, yv): #{{{4 def inpolygon(xq, yq, xv, yv): # {{{ 5 5 """ 6 6 INPOLYGON - Returns points located inside polygonal region. … … 25 25 26 26 return in_polygon 27 # }}}27 # }}} -
issm/trunk-jpl/src/m/geometry/planetradius.py
r25767 r27458 1 def planetradius(planet): # {{{1 def planetradius(planet): # {{{ 2 2 ''' 3 3 PLANETRADIUS - return planet radius according to planetary body name -
issm/trunk-jpl/src/m/geometry/polyarea.py
r25685 r27458 4 4 5 5 6 def polyarea(x, y): #{{{6 def polyarea(x, y): # {{{ 7 7 """POLYAREA - returns the area of the 2-D polygon defined by the vertices in 8 8 lists x and y … … 26 26 27 27 return 0.5 * np.abs(np.dot(x, np.roll(y, 1)) - np.dot(y, np.roll(x, 1))) 28 # }}}28 # }}} -
issm/trunk-jpl/src/m/interp/interp.py
r24256 r27458 86 86 87 87 return interpdata 88 # }}}88 # }}} 89 89 90 90 … … 182 182 183 183 return interpdata 184 # }}}184 # }}} 185 185 186 186 … … 247 247 248 248 return interpdata 249 # }}}249 # }}} -
issm/trunk-jpl/src/m/io/loadvars.py
r27264 r27458 144 144 nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]].steps.append(getattr(classtype[mod][1], 'solutionstep')()) 145 145 Tree = nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]][:] 146 # }}}146 # }}} 147 147 #elif classtype[mod][0] == 'massfluxatgate.massfluxatgate': #this is for output definitions {{{ 148 148 elif mod.startswith('outputdefinition'): #this is for output definitions {{{ … … 152 152 nvdict['md'].__dict__[classtree[mod][0]].__dict__[defname].append(getattr(classtype[mod][1], outdeftype)()) 153 153 Tree = nvdict['md'].__dict__[classtree[mod][0]].__dict__[defname][defindex - 1] 154 # }}}154 # }}} 155 155 elif classtype[mod][0] == 'collections.OrderedDict': #Treating multiple toolkits {{{ 156 156 nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]] = getattr(classtype[mod][1], 'OrderedDict') -
issm/trunk-jpl/src/m/mesh/bamg.py
r27120 r27458 534 534 #do nothing... 535 535 pass 536 # }}}536 # }}} 537 537 # Bamg mesh parameters {{{ 538 538 if not options.exist('domain') and md.mesh.numberofvertices and md.mesh.elementtype() == 'Tria': … … 549 549 if isinstance(md.rifts.riftstruct, dict): 550 550 raise TypeError("bamg error message: rifts not supported yet. Do meshprocessrift AFTER bamg") 551 # }}}551 # }}} 552 552 # Bamg options {{{ 553 553 bamg_options['Crack'] = options.getfieldvalue('Crack', 0) … … 576 576 bamg_options['splitcorners'] = options.getfieldvalue('splitcorners', 1) 577 577 bamg_options['verbose'] = options.getfieldvalue('verbose', 1) 578 # }}}578 # }}} 579 579 580 580 # Call Bamg … … 781 781 """ 782 782 return geom 783 # }}}783 # }}} -
issm/trunk-jpl/src/m/mesh/findsegments.py
r25499 r27458 6 6 from pairoptions import pairoptions 7 7 8 def findsegments(md, *args): #{{{8 def findsegments(md, *args): # {{{ 9 9 """FINDSEGMENTS - build segments model field 10 10 … … 96 96 97 97 return segments 98 # }}}98 # }}} -
issm/trunk-jpl/src/m/mesh/meshintersect3d.py
r25684 r27458 6 6 7 7 8 def meshintersect3d(x, y, z, xs, ys, zs, *args): #{{{8 def meshintersect3d(x, y, z, xs, ys, zs, *args): # {{{ 9 9 """MESHINTERSECT - returns indices (into x, y, and z) of common values 10 10 between (x, y, z) and (xs, ys, zs) (i.e. x(index) = xs; y(index) = ys). … … 68 68 69 69 return indices 70 # }}}70 # }}} -
issm/trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.py
r27174 r27458 115 115 fid.write('Physical Volume(2) = 30;\n') 116 116 fid.close() 117 # }}}117 # }}} 118 118 119 119 if options.exist('refine'): … … 133 133 fid.write('};\n') 134 134 fid.close() 135 # }}}135 # }}} 136 136 137 137 # Call gmsh … … 192 192 raise RuntimeError(['Expecting $EndElements (', A, ')']) 193 193 fid.close() 194 # }}}194 # }}} 195 195 196 196 # A little technicality here. The mesh is not exactly on the sphere. We -
issm/trunk-jpl/src/m/mesh/rifts/meshprocessoutsiderifts.py
r25455 r27458 101 101 102 102 return flag 103 # }}}103 # }}} -
issm/trunk-jpl/src/m/miscellaneous/MatlabFuncs.py
r26853 r27458 169 169 170 170 return np.intersect1d(A, B) 171 # }}}171 # }}} 172 172 173 173 def isa(A, dataType): # {{{ -
issm/trunk-jpl/src/m/miscellaneous/PythonFuncs.py
r26301 r27458 2 2 3 3 4 def logical_and_n(*arg): #{{{4 def logical_and_n(*arg): # {{{ 5 5 if len(arg): 6 6 result = arg[0] … … 10 10 else: 11 11 return None 12 # }}}12 # }}} 13 13 14 def logical_or_n(*arg): #{{{14 def logical_or_n(*arg): # {{{ 15 15 if len(arg): 16 16 result = arg[0] … … 20 20 else: 21 21 return None 22 # }}}22 # }}} -
issm/trunk-jpl/src/m/miscellaneous/fielddisplay.py
r26856 r27458 19 19 20 20 21 def parsedisplay(offset, name, field, comment): #{{{21 def parsedisplay(offset, name, field, comment): # {{{ 22 22 #string 23 23 if isinstance(field, str): … … 58 58 59 59 return string 60 # }}}60 # }}} 61 61 62 62 63 def dict_display(offset, name, field, comment): #{{{63 def dict_display(offset, name, field, comment): # {{{ 64 64 if field: 65 65 string = displayunit(offset, name, '{dictionary}', comment) + '\n' … … 76 76 77 77 return string 78 # }}}78 # }}} 79 79 80 80 81 def list_display(offset, name, field, comment): #{{{81 def list_display(offset, name, field, comment): # {{{ 82 82 #initialization 83 83 if isinstance(field, list): … … 107 107 #call displayunit 108 108 return displayunit(offset, name, string, comment) 109 # }}}109 # }}} 110 110 111 111 … … 136 136 137 137 return string 138 # }}}138 # }}} -
issm/trunk-jpl/src/m/miscellaneous/intersect.py
r25455 r27458 2 2 3 3 4 def intersect(a, b): #{{{4 def intersect(a, b): # {{{ 5 5 """INTERSECT - Python implementation of MATLAB's 'intersect' function 6 6 … … 23 23 24 24 return c, ia[np.isin(a_unique, c)], ib[np.isin(b_unique, c)] 25 # }}}25 # }}} -
issm/trunk-jpl/src/m/modules/ExpToLevelSet.py
r26661 r27458 4 4 5 5 6 def ExpToLevelSet(x, y, contourname): #{{{6 def ExpToLevelSet(x, y, contourname): # {{{ 7 7 """EXPTOLEVELSET - Determine levelset distance between a contour and a 8 8 cloud of points … … 35 35 36 36 return distance 37 # }}}37 # }}} -
issm/trunk-jpl/src/m/modules/InterpFromMesh2d.py
r25455 r27458 2 2 3 3 4 def InterpFromMesh2d(*args): #{{{4 def InterpFromMesh2d(*args): # {{{ 5 5 """INTERPFROMMESH2D 6 6 … … 39 39 40 40 return data_prime[0] # NOTE: Value returned from wrapper function is a tuple, the first element of which being the result we actually want 41 # }}}41 # }}} -
issm/trunk-jpl/src/m/parameterization/setmask.py
r24861 r27458 53 53 vertexongroundedice[md.mesh.elements[np.nonzero(elementongroundedice), :] - 1] = True 54 54 vertexonfloatingice[np.nonzero(np.logical_not(vertexongroundedice))] = True 55 # }}}55 # }}} 56 56 57 57 #level sets -
issm/trunk-jpl/src/m/plot/export_gl.py
r25011 r27458 65 65 model.contourz2 = list(map(lambda r, lat: r * math.sin(math.radians(lat)), R2, contour_lat2)) 66 66 67 # }}}67 # }}} 68 68 #Deal with mesh and results {{{ 69 69 print('getting mesh') … … 123 123 print('writing to file') 124 124 writejsfile(directory + databasename + '.js', model, databasename) 125 # }}}125 # }}} -
issm/trunk-jpl/src/m/plot/plot_coastlines.py
r25762 r27458 6 6 7 7 8 def plot_coastlines(mesh, *args): #{{{8 def plot_coastlines(mesh, *args): # {{{ 9 9 # Define coastline #{{{ 10 10 coast = np.array([ … … 9889 9889 coast[:, 1] - 360 9890 9890 ]) 9891 # }}}9891 # }}} 9892 9892 9893 9893 if len(args) == 1: … … 9920 9920 else: 9921 9921 xlim(options.getfieldvalue('xlim', [-180, 180])) 9922 # }}}9922 # }}} -
issm/trunk-jpl/src/m/qmu/helpers.py
r25726 r27458 9 9 attributes 10 10 """ 11 def __init__(self): #{{{11 def __init__(self): # {{{ 12 12 pass 13 # }}}14 15 def __repr__(self): #{{{13 # }}} 14 15 def __repr__(self): # {{{ 16 16 s = '' 17 17 for key, value in self.__dict__.items(): … … 28 28 s += '\n' 29 29 return s 30 # }}}31 32 def __len__(self): #{{{30 # }}} 31 32 def __len__(self): # {{{ 33 33 return len(self.__dict__.keys()) 34 # }}}34 # }}} 35 35 36 36 -
issm/trunk-jpl/src/m/qmu/preqmu.py
r25688 r27458 81 81 raise RuntimeError('preqmu error message: one of the expanded responses has more values than the number of partitions') 82 82 numresponses = numresponses + np.size(vars(responses)[field_name]) 83 # }}}83 # }}} 84 84 85 85 # Create in file for Dakota … … 114 114 else: 115 115 responsedescriptors.append(fieldresponses.descriptor) 116 # }}}116 # }}} 117 117 118 118 # Build a list of variable partitions -
issm/trunk-jpl/src/m/shp/shpread.py
r26969 r27458 10 10 11 11 12 def shpread(filename, *args): #{{{12 def shpread(filename, *args): # {{{ 13 13 """SHPREAD - read a shapefile and build a list of shapes 14 14 … … 140 140 141 141 return Structs 142 # }}}142 # }}} -
issm/trunk-jpl/src/m/shp/shpwrite.py
r26969 r27458 5 5 6 6 7 def shpwrite(shp, filename): #{{{7 def shpwrite(shp, filename): # {{{ 8 8 ''' 9 9 SHPREAD - write a shape file from a contour structure … … 59 59 sf.record(str(i)) 60 60 sf.close() 61 # }}}61 # }}} -
issm/trunk-jpl/src/m/solve/parseresultsfromdisk.py
r26790 r27458 12 12 #saveres = parseresultsfromdiskioserialsequential(md, filename) 13 13 return saveres 14 # }}}14 # }}} 15 15 16 16 … … 345 345 # }}} 346 346 347 def addfieldtorecord(a, descr): #{{{347 def addfieldtorecord(a, descr): # {{{ 348 348 if a.dtype.fields is None: 349 349 raise ValueError('\'a\' must be a structured numpy array') … … 353 353 354 354 return b 355 # }}}355 # }}}
Note:
See TracChangeset
for help on using the changeset viewer.