Changeset 24544
- Timestamp:
- 02/04/20 16:38:15 (5 years ago)
- Location:
- issm/trunk-jpl/src/m/classes
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/linearbasalforcings.m
r24202 r24544 11 11 upperwater_elevation = 0.; 12 12 groundedice_melting_rate = NaN; 13 perturbation_melting_rate = NaN; 13 14 geothermalflux = NaN; 14 15 end … … 25 26 end % }}} 26 27 function self = extrude(self,md) % {{{ 28 self.perturbation_melting_rate=project3d(md,'vector',self.perturbation_melting_rate,'type','node','layer',1); 27 29 self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1); 28 30 self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','node','layer',1); %bedrock only gets geothermal flux … … 46 48 end % }}} 47 49 function md = checkconsistency(self,md,solution,analyses) % {{{ 50 51 if numel(md.basalforcings.perturbation_melting_rate)>1 52 md = checkfield(md,'fieldname','basalforcings.perturbation_melting_rate','NaN',1,'Inf',1,'timeseries',1); 53 end 48 54 49 55 if ismember('MasstransportAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.ismasstransport==0), … … 78 84 fielddisplay(self,'upperwater_elevation','elevation of ocean upperwater [m]'); 79 85 fielddisplay(self,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]'); 86 fielddisplay(self,'perturbation_melting_rate','basal melting rate perturbation added to computed melting rate (positive if melting) [m/yr]'); 80 87 fielddisplay(self,'geothermalflux','geothermal heat flux [W/m^2]'); 81 88 … … 86 93 87 94 WriteData(fid,prefix,'name','md.basalforcings.model','data',2,'format','Integer'); 95 WriteData(fid,prefix,'object',self,'fieldname','perturbation_melting_rate','format','DoubleMat','name','md.basalforcings.perturbation_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts) 88 96 WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','name','md.basalforcings.groundedice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts) 89 97 WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','name','md.basalforcings.geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); -
issm/trunk-jpl/src/m/classes/linearbasalforcings.py
r24261 r24544 18 18 print('empty init') 19 19 self.groundedice_melting_rate = float('NaN') 20 self.perturbation_melting_rate = float('NaN') 20 21 self.deepwater_melting_rate = 0. 21 22 self.deepwater_elevation = 0. … … 30 31 inv = args[0] 31 32 self.groundedice_melting_rate = inv.groundedice_melting_rate 33 self.perturbation_melting_rate = inv.perturbation_melting_rate 32 34 self.geothermalflux = inv.geothermalflux 33 35 self.deepwater_melting_rate = 0. … … 41 43 raise Exception('constructor not supported') 42 44 #}}} 43 44 45 def __repr__(self): # {{{ 45 46 string = " linear basal forcings parameters:" … … 49 50 string = "%s\n%s" % (string, fielddisplay(self, "upperwater_elevation", "elevation of ocean upper water [m]")) 50 51 string = "%s\n%s" % (string, fielddisplay(self, "groundedice_melting_rate", "basal melting rate (positive if melting) [m/yr]")) 52 string = "%s\n%s" % (string, fielddisplay(self, "perturbation_melting_rate", "perturbation applied to computed melting rate (positive if melting) [m/yr]")) 51 53 string = "%s\n%s" % (string, fielddisplay(self, "geothermalflux", "geothermal heat flux [W/m^2]")) 52 54 return string 53 55 #}}} 54 55 56 def initialize(self, md): # {{{ 56 57 if np.all(np.isnan(self.groundedice_melting_rate)): … … 59 60 return self 60 61 #}}} 61 62 62 def setdefaultparameters(self): # {{{ 63 63 self.deepwater_melting_rate = 50.0 … … 68 68 return self 69 69 #}}} 70 def checkconsistency(self, md, solution, analyses): # {{{ 70 71 71 def checkconsistency(self, md, solution, analyses): # {{{ 72 if not np.all(np.isnan(self.perturbation_melting_rate)): 73 md = checkfield(md, 'fieldname', 'basalforcings.perturbation_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1) 74 72 75 if 'MasstransportAnalysis' in analyses and not (solution == 'TransientSolution' and not md.transient.ismasstransport): 73 76 md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1) … … 94 97 return md 95 98 # }}} 96 97 99 def marshall(self, prefix, md, fid): # {{{ 98 100 yts = md.constants.yts 99 101 100 102 WriteData(fid, prefix, 'name', 'md.basalforcings.model', 'data', 2, 'format', 'Integer') 103 WriteData(fid, prefix, 'object', self, 'fieldname', 'perturbation_melting_rate', 'name', 'md.basalforcings.perturbation_melting_rate', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts) 101 104 WriteData(fid, prefix, 'object', self, 'fieldname', 'groundedice_melting_rate', 'name', 'md.basalforcings.groundedice_melting_rate', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts) 102 105 WriteData(fid, prefix, 'object', self, 'fieldname', 'geothermalflux', 'name', 'md.basalforcings.geothermalflux', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
Note:
See TracChangeset
for help on using the changeset viewer.