Ignore:
Timestamp:
07/01/22 15:15:14 (3 years ago)
Author:
caronlam
Message:

CHG: Memory and runtime optimization of sealevelchange core.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified issm/trunk-jpl/src/m/classes/solidearthsettings.m

    r26358 r27131  
    2020                compute_bp_grd         = 0; %will GRD patterns for bottom pressures be computed?
    2121                degacc                 = 0; %degree increment for resolution of Green tables.
    22                 timeacc                = 0; %time step accuracy required to compute Green tables
     22                timeacc                = 1; %time step accuracy required to compute Green tables
    2323                horiz                  = 0; %compute horizontal deformation
    24                 grdmodel               = 0; %grd model (0 by default, 1 for (visco-)elastic, 2 for Ivins)
     24                grdmodel               = 1; %grd model (0 by default, 1 for (visco-)elastic, 2 for Ivins)
    2525                cross_section_shape    = 0; %cross section only used when grd model is Ivins
    2626        end
     
    8989
    9090                        %no grd model by default:
    91                         self.grdmodel=0;
     91                        self.grdmodel=1;
    9292
    9393                end % }}}
    9494                function disp(self) % {{{
    9595                        disp(sprintf('   solidearth settings:'));
    96 
    97                         fielddisplay(self,'reltol','sea level change relative convergence criterion (default, NaN: not applied)');
    98                         fielddisplay(self,'abstol','sea level change absolute convergence criterion(default, NaN: not applied)');
    99                         fielddisplay(self,'maxiter','maximum number of nonlinear iterations');
    100                         fielddisplay(self,'grdocean','does this planet have an ocean, if set to 1: global water mass is conserved in GRD module (default: 1)');
    101                         fielddisplay(self,'ocean_area_scaling','correction for model representation of ocean area (default: No correction)');
    102                         fielddisplay(self,'sealevelloading','enables surface loading from sea-level change (default: 1)');
     96                        disp(sprintf('      core:'));
    10397                        fielddisplay(self,'isgrd','compute GRD patterns (default: 1)');
    104                         fielddisplay(self,'compute_bp_grd','compute GRD patterns for bottom pressure loads (default: 1)');
    105                         fielddisplay(self,'runfrequency','how many time steps we skip before we run solidearthsettings solver during transient (default: 1)');
     98                        fielddisplay(self,'grdmodel','type of deformation model, 0 for no GRD, 1 for spherical GRD model (SESAW model), 2 for half-space planar GRD (visco-elastic model from Ivins)');
     99                        fielddisplay(self,'runfrequency','How many time steps we let masstransport core accumulate changes before each run of the sealevelchange core (default: 1, i.e run slc every time step)');
     100                        disp(sprintf('      computational flags:'));
    106101                        fielddisplay(self,'selfattraction','enables surface mass load to perturb the gravity field');
    107102                        fielddisplay(self,'elastic','enables elastic deformation from surface loading');
    108103                        fielddisplay(self,'viscous','enables viscous deformation from surface loading');
    109104                        fielddisplay(self,'rotation','enables polar motion to feedback on the GRD fields');
    110                         fielddisplay(self,'degacc','accuracy (default: .01 deg) for numerical discretization of the Green''s functions');
     105                        fielddisplay(self,'compute_bp_grd','compute GRD patterns for bottom pressure loads (default: 1)');
     106                        fielddisplay(self,'cross_section_shape','1: square-edged (default). 2: elliptical. See iedge in GiaDeflectionCore. Used only for grdmodel=2 only');
     107                        disp(sprintf('      resolution:'));
     108                        fielddisplay(self,'degacc','spatial accuracy (default: .01 deg) for numerical discretization of the Green''s functions');
    111109                        fielddisplay(self,'timeacc','time accuracy (default: 1 yr) for numerical discretization of the Green''s functions');
    112                         fielddisplay(self,'grdmodel','type of deformation model, 0 for no GRD, 1 for spherical GRD model (SESAW model), 2 for half-space planar GRD (visco-elastic model from Ivins)');
    113                         fielddisplay(self,'cross_section_shape','1: square-edged (default). 2: elliptical. See iedge in GiaDeflectionCore');
     110                        disp(sprintf('      sea-level equation:'));
     111                        fielddisplay(self,'grdocean','does this planet have an ocean, if set to 1: global water mass is conserved in GRD module (default: 1)');
     112                        fielddisplay(self,'sealevelloading','enables surface loading from sea-level change (default: 1)');
     113                        fielddisplay(self,'maxiter','maximum number of nonlinear iterations');
     114                        fielddisplay(self,'reltol','sea level change relative convergence criterion (default, NaN: not applied)');
     115                        fielddisplay(self,'abstol','sea level change absolute convergence criterion(default, NaN: not applied)');
     116                        fielddisplay(self,'ocean_area_scaling','correction for model representation of ocean area (default: No correction)');
     117
    114118                end % }}}
    115119                function md = checkconsistency(self,md,solution,analyses) % {{{
     
    133137                        if self.viscous==1 & self.elastic==0,
    134138                                error('solidearthsettings checkconsistency error message: need elastic on if viscous flag is set');
     139                        end
     140                        if self.rotation==1 & self.elastic==0,
     141                                error('solidearthsettings checkconsistency error message: need elastic on if rotation flag is set');
    135142                        end
    136143
     
    164171                        WriteData(fid,prefix,'object',self,'fieldname','viscous','name','md.solidearth.settings.viscous','format','Boolean');
    165172                        WriteData(fid,prefix,'object',self,'fieldname','rotation','name','md.solidearth.settings.rotation','format','Boolean');
     173                        WriteData(fid,prefix,'object',self,'fieldname','rotation','name','md.solidearth.settings.satellitegravity','format','Boolean');
    166174                        WriteData(fid,prefix,'object',self,'fieldname','grdocean','name','md.solidearth.settings.grdocean','format','Boolean');
    167175                        WriteData(fid,prefix,'object',self,'fieldname','ocean_area_scaling','name','md.solidearth.settings.ocean_area_scaling','format','Boolean');
     
    187195                        writejsdouble(fid,[modelname '.solidearth.settings.viscous'],self.viscous);
    188196                        writejsdouble(fid,[modelname '.solidearth.settings.rotation'],self.rotation);
    189                         writejsdouble(fid,[modelname '.solidearth.settings.grdocean'],self.rotation);
     197                        writejsdouble(fid,[modelname '.solidearth.settings.grdocean'],self.grdocean);
    190198                        writejsdouble(fid,[modelname '.solidearth.settings.ocean_area_scaling'],self.ocean_area_scaling);
    191199                        writejsdouble(fid,[modelname '.solidearth.settings.run_frequency'],self.run_frequency);
Note: See TracChangeset for help on using the changeset viewer.