Ignore:
Timestamp:
06/01/22 05:01:48 (3 years ago)
Author:
Mathieu Morlighem
Message:

merged trunk-jpl and trunk for revision 27033

Location:
issm/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk

  • issm/trunk/src

  • issm/trunk/src/m/classes/spatiallinearbasalforcings.m

    r25836 r27035  
    99                deepwater_melting_rate    = NaN;
    1010                deepwater_elevation       = NaN;
     11                upperwater_melting_rate   = NaN;
    1112                upperwater_elevation      = NaN;
     13                perturbation_melting_rate = NaN;
    1214                geothermalflux            = NaN;
    1315        end
     
    2527                                                self.deepwater_elevation=lb.deepwater_elevation*ones(nvertices,1);
    2628                                                self.deepwater_melting_rate=lb.deepwater_melting_rate*ones(nvertices,1);
     29                                                self.upperwater_melting_rate=lb.upperwater_melting_rate*ones(nvertices,1);
    2730                                                self.upperwater_elevation=lb.upperwater_elevation*ones(nvertices,1);
     31                                                self.perturbation_melting_rate=lb.perturbation_melting_rate*ones(nvertices,1);
    2832                                        else
    2933                                                self=structtoobj(spatiallinearbasalforcings(),varargin{1});
     
    3741                        self.deepwater_melting_rate=project3d(md,'vector',self.deepwater_melting_rate,'type','node','layer',1);
    3842                        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);
    3944                        self.upperwater_elevation=project3d(md,'vector',self.upperwater_elevation,'type','node','layer',1);
    4045                        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);
    4147                end % }}}
    4248                function self = initialize(self,md) % {{{
     
    5864                function md = checkconsistency(self,md,solution,analyses) % {{{
    5965
     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
    6070                        if ismember('MasstransportAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.ismasstransport==0),
    6171                                md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
    6272                                md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','NaN',1,'Inf',1,'timeseries',1,'>=',0);
    6373                                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);
    6576                        end
    6677                        if ismember('BalancethicknessAnalysis',analyses),
     
    6980                                md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0,'numel',1);
    7081                                md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<','basalforcings.upperwater_elevation','numel',1);
     82                                md = checkfield(md,'fieldname','basalforcings.upperwater_melting_rate','>=',0,'numel',1);
    7183                                md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<=',0,'numel',1);
    7284                        end
     
    7688                                md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0,'numel',1);
    7789                                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);
    7992                                md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0);
    8093                        end
     
    8699                        fielddisplay(self,'deepwater_melting_rate','basal melting rate (positive if melting applied for floating ice whith base < deepwater_elevation) [m/yr]');
    87100                        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]');
    88102                        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]');
    89104                        fielddisplay(self,'geothermalflux','geothermal heat flux [W/m^2]');
    90105
     
    94109                        yts=md.constants.yts;
    95110
    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));
    101111                        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);
    103112                        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);
    104113                        WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','name','md.basalforcings.geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
    105114                        WriteData(fid,prefix,'object',self,'fieldname','deepwater_melting_rate','format','DoubleMat','name','md.basalforcings.deepwater_melting_rate','scale',1./yts,'mattype',1);
    106115                        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);
    107117                        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);
    108119                end % }}}
    109120        end
Note: See TracChangeset for help on using the changeset viewer.