Changeset 27035 for issm/trunk/src/m/classes/spatiallinearbasalforcings.m
- Timestamp:
- 06/01/22 05:01:48 (3 years ago)
- Location:
- issm/trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk
- Property svn:mergeinfo changed
/issm/trunk-jpl merged: 26745-26955,26957-27031
- Property svn:mergeinfo changed
-
issm/trunk/src
- Property svn:mergeinfo changed
-
issm/trunk/src/m/classes/spatiallinearbasalforcings.m
r25836 r27035 9 9 deepwater_melting_rate = NaN; 10 10 deepwater_elevation = NaN; 11 upperwater_melting_rate = NaN; 11 12 upperwater_elevation = NaN; 13 perturbation_melting_rate = NaN; 12 14 geothermalflux = NaN; 13 15 end … … 25 27 self.deepwater_elevation=lb.deepwater_elevation*ones(nvertices,1); 26 28 self.deepwater_melting_rate=lb.deepwater_melting_rate*ones(nvertices,1); 29 self.upperwater_melting_rate=lb.upperwater_melting_rate*ones(nvertices,1); 27 30 self.upperwater_elevation=lb.upperwater_elevation*ones(nvertices,1); 31 self.perturbation_melting_rate=lb.perturbation_melting_rate*ones(nvertices,1); 28 32 else 29 33 self=structtoobj(spatiallinearbasalforcings(),varargin{1}); … … 37 41 self.deepwater_melting_rate=project3d(md,'vector',self.deepwater_melting_rate,'type','node','layer',1); 38 42 self.deepwater_elevation=project3d(md,'vector',self.deepwater_elevation,'type','node','layer',1); 43 self.upperwater_melting_rate=project3d(md,'vector',self.upperwater_melting_rate,'type','node','layer',1); 39 44 self.upperwater_elevation=project3d(md,'vector',self.upperwater_elevation,'type','node','layer',1); 40 45 self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','node','layer',1); %bedrock only gets geothermal flux 46 self.perturbation_melting_rate=project3d(md,'vector',self.perturbation_melting_rate,'type','node','layer',1); 41 47 end % }}} 42 48 function self = initialize(self,md) % {{{ … … 58 64 function md = checkconsistency(self,md,solution,analyses) % {{{ 59 65 66 if numel(md.basalforcings.perturbation_melting_rate)>1 67 md = checkfield(md,'fieldname','basalforcings.perturbation_melting_rate','NaN',1,'Inf',1,'timeseries',1); 68 end 69 60 70 if ismember('MasstransportAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.ismasstransport==0), 61 71 md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1); 62 72 md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','NaN',1,'Inf',1,'timeseries',1,'>=',0); 63 73 md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','NaN',1,'Inf',1,'timeseries',1); 64 md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','NaN',1,'Inf',1,'timeseries',1,'<',0); 74 md = checkfield(md,'fieldname','basalforcings.upperwater_melting_rate','NaN',1,'Inf',1,'timeseries',1,'>=',0); 75 md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','NaN',1,'Inf',1,'timeseries',1,'<=',0); 65 76 end 66 77 if ismember('BalancethicknessAnalysis',analyses), … … 69 80 md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0,'numel',1); 70 81 md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<','basalforcings.upperwater_elevation','numel',1); 82 md = checkfield(md,'fieldname','basalforcings.upperwater_melting_rate','>=',0,'numel',1); 71 83 md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<=',0,'numel',1); 72 84 end … … 76 88 md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0,'numel',1); 77 89 md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<','basalforcings.upperwater_elevation','numel',1); 78 md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0,'numel',1); 90 md = checkfield(md,'fieldname','basalforcings.upperwater_melting_rate','>=',0,'numel',1); 91 md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<=',0,'numel',1); 79 92 md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0); 80 93 end … … 86 99 fielddisplay(self,'deepwater_melting_rate','basal melting rate (positive if melting applied for floating ice whith base < deepwater_elevation) [m/yr]'); 87 100 fielddisplay(self,'deepwater_elevation','elevation of ocean deepwater [m]'); 101 fielddisplay(self,'upperwater_melting_rate','basal melting rate (positive if melting applied for floating ice whith base >= upperwater_elevation) [m/yr]'); 88 102 fielddisplay(self,'upperwater_elevation','elevation of ocean upperwater [m]'); 103 fielddisplay(self,'perturbation_melting_rate','basal melting rate perturbation added to computed melting rate (positive if melting) [m/yr]'); 89 104 fielddisplay(self,'geothermalflux','geothermal heat flux [W/m^2]'); 90 105 … … 94 109 yts=md.constants.yts; 95 110 96 floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);97 pos=find(md.geometry.base<=md.basalforcings.deepwater_elevation);98 floatingice_melting_rate(pos)=md.basalforcings.deepwater_melting_rate(pos);99 pos=find(md.geometry.base>md.basalforcings.deepwater_elevation & md.geometry.base<md.basalforcings.upperwater_elevation);100 floatingice_melting_rate(pos)=md.basalforcings.deepwater_melting_rate(pos).*(md.geometry.base(pos)-md.basalforcings.upperwater_elevation(pos))./(md.basalforcings.deepwater_elevation(pos)-md.basalforcings.upperwater_elevation(pos));101 111 WriteData(fid,prefix,'name','md.basalforcings.model','data',6,'format','Integer'); 102 WriteData(fid,prefix,'data',floatingice_melting_rate,'format','DoubleMat','name','md.basalforcings.floatingice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);103 112 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); 104 113 WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','name','md.basalforcings.geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 105 114 WriteData(fid,prefix,'object',self,'fieldname','deepwater_melting_rate','format','DoubleMat','name','md.basalforcings.deepwater_melting_rate','scale',1./yts,'mattype',1); 106 115 WriteData(fid,prefix,'object',self,'fieldname','deepwater_elevation','format','DoubleMat','name','md.basalforcings.deepwater_elevation','mattype',1); 116 WriteData(fid,prefix,'object',self,'fieldname','upperwater_melting_rate','format','DoubleMat','name','md.basalforcings.upperwater_melting_rate','scale',1./yts,'mattype',1); 107 117 WriteData(fid,prefix,'object',self,'fieldname','upperwater_elevation','format','DoubleMat','name','md.basalforcings.upperwater_elevation','mattype',1); 118 WriteData(fid,prefix,'object',self,'fieldname','perturbation_melting_rate','format','DoubleMat','name','md.basalforcings.perturbation_melting_rate','scale',1./yts,'mattype',1); 108 119 end % }}} 109 120 end
Note:
See TracChangeset
for help on using the changeset viewer.