Changeset 19040


Ignore:
Timestamp:
01/26/15 18:40:38 (10 years ago)
Author:
Mathieu Morlighem
Message:

CHG: renmaned obj -> self to look like python

Location:
issm/trunk-jpl/src/m/classes
Files:
76 edited

Legend:

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

    r19027 r19040  
    99        end
    1010        methods
    11         function createxml(obj,fid) % {{{
     11        function createxml(self,fid) % {{{
    1212            fprintf(fid, '\n\n');
    1313            fprintf(fid, '%s\n', '<!-- surfaceforcings(SMB) -->');
    14                          fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="mass_balance" type="',class(obj.mass_balance),'" default="',obj.mass_balance,'">','     <section name="surfaceforcings(SMB)" />','     <help> surface mass balance [m/yr ice eq] </help>','</parameter>');
     14                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="mass_balance" type="',class(self.mass_balance),'" default="',self.mass_balance,'">','     <section name="surfaceforcings(SMB)" />','     <help> surface mass balance [m/yr ice eq] </help>','</parameter>');
    1515           
    1616        end % }}}
    17                 function obj = SMB(varargin) % {{{
     17                function self = SMB(varargin) % {{{
    1818                        switch nargin
    1919                                case 0
     
    3535
    3636                end % }}}
    37                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     37                function md = checkconsistency(self,md,solution,analyses) % {{{
    3838
    3939                        if ismember(MasstransportAnalysisEnum(),analyses),
     
    4444                        end
    4545                end % }}}
    46                 function disp(obj) % {{{
     46                function disp(self) % {{{
    4747                        disp(sprintf('   surface forcings parameters:'));
    48                         fielddisplay(obj,'mass_balance','surface mass balance [m/yr ice eq]');
     48                        fielddisplay(self,'mass_balance','surface mass balance [m/yr ice eq]');
    4949                end % }}}
    50                 function marshall(obj,md,fid) % {{{
     50                function marshall(self,md,fid) % {{{
    5151
    5252                        yts=365.0*24.0*3600.0;
    5353
    5454                        WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBEnum(),'format','Integer');
    55                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
     55                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
    5656                end % }}}
    5757        end
  • issm/trunk-jpl/src/m/classes/SMBcomponents.m

    r19027 r19040  
    1111        end
    1212        methods
    13                 function obj = SMBcomponents(varargin) % {{{
     13                function self = SMBcomponents(varargin) % {{{
    1414                        switch nargin
    1515                                case 0
     
    4141
    4242                end % }}}
    43                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     43                function md = checkconsistency(self,md,solution,analyses) % {{{
    4444
    4545                        if ismember(MasstransportAnalysisEnum(),analyses),
     
    6262                        end
    6363                end % }}}
    64                 function disp(obj) % {{{
     64                function disp(self) % {{{
    6565                        disp(sprintf('   surface forcings parameters (SMB=accumulation-runoff-evaporation) :'));
    66                         fielddisplay(obj,'accumulation','accumulated snow [m/yr ice eq]');
    67                         fielddisplay(obj,'runoff','amount of ice melt lost from the ice column [m/yr ice eq]');
    68                         fielddisplay(obj,'evaporation','amount of ice lost to evaporative processes [m/yr ice eq]');
     66                        fielddisplay(self,'accumulation','accumulated snow [m/yr ice eq]');
     67                        fielddisplay(self,'runoff','amount of ice melt lost from the ice column [m/yr ice eq]');
     68                        fielddisplay(self,'evaporation','amount of ice lost to evaporative processes [m/yr ice eq]');
    6969                end % }}}
    70                 function marshall(obj,md,fid) % {{{
     70                function marshall(self,md,fid) % {{{
    7171
    7272                        yts=365.0*24.0*3600.0;
    7373
    7474                        WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBcomponentsEnum(),'format','Integer');
    75                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
    76                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
    77                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
     75                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
     76                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
     77                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
    7878                end % }}}
    7979        end
  • issm/trunk-jpl/src/m/classes/SMBgradients.m

    r19027 r19040  
    1212        end
    1313        methods
    14                 function obj = SMBgradients(varargin) % {{{
     14                function self = SMBgradients(varargin) % {{{
    1515                        switch nargin
    1616                                case 0
    17                                         obj=setdefaultparameters(obj);
     17                                        self=setdefaultparameters(self);
    1818                                otherwise
    1919                                        error('constructor not supported');
     
    3030
    3131                end % }}}
    32                 function obj = setdefaultparameters(obj) % {{{
     32                function self = setdefaultparameters(self) % {{{
    3333
    3434                        %Nothing for now
    3535
    3636                end % }}}
    37                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     37                function md = checkconsistency(self,md,solution,analyses) % {{{
    3838
    3939                        if ismember(MasstransportAnalysisEnum(),analyses),
     
    4444                        end
    4545                end % }}}
    46                 function disp(obj) % {{{
     46                function disp(self) % {{{
    4747                        disp(sprintf('   surface forcings parameters:'));
    4848
    4949                        disp(sprintf('\n   SMB gradients parameters:'));
    50                         fielddisplay(obj,'href',' reference elevation from which deviation is used to calculate SMB adjustment in smb gradients method [m]');
    51                         fielddisplay(obj,'smbref',' reference smb from which deviation is calculated in smb gradients method [mm/yr water equiv]');
    52                         fielddisplay(obj,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated');
    53                         fielddisplay(obj,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated');
     50                        fielddisplay(self,'href',' reference elevation from which deviation is used to calculate SMB adjustment in smb gradients method [m]');
     51                        fielddisplay(self,'smbref',' reference smb from which deviation is calculated in smb gradients method [mm/yr water equiv]');
     52                        fielddisplay(self,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated');
     53                        fielddisplay(self,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated');
    5454
    5555                end % }}}
    56                 function marshall(obj,md,fid) % {{{
     56                function marshall(self,md,fid) % {{{
    5757
    5858                        yts=365.0*24.0*3600.0;
    5959
    6060                        WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBgradientsEnum(),'format','Integer');
    61                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','href','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    62                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
    63                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
    64                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
     61                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','href','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
     62                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
     63                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
     64                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
    6565
    6666                end % }}}
  • issm/trunk-jpl/src/m/classes/SMBhenning.m

    r19027 r19040  
    99        end
    1010        methods
    11                 function obj = SMBhenning(varargin) % {{{
     11                function self = SMBhenning(varargin) % {{{
    1212                        switch nargin
    1313                                case 0
     
    2929
    3030                end % }}}
    31                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     31                function md = checkconsistency(self,md,solution,analyses) % {{{
    3232
    3333                        if ismember(MasstransportAnalysisEnum(),analyses),
     
    3838                        end
    3939                end % }}}
    40                 function disp(obj) % {{{
     40                function disp(self) % {{{
    4141                        disp(sprintf('   surface forcings parameters:'));
    42                         fielddisplay(obj,'smbref','reference smb from which deviation is calculated [m/yr ice eq]');
     42                        fielddisplay(self,'smbref','reference smb from which deviation is calculated [m/yr ice eq]');
    4343                end % }}}
    44                 function marshall(obj,md,fid) % {{{
     44                function marshall(self,md,fid) % {{{
    4545
    4646                        yts=365.0*24.0*3600.0;
    4747
    4848                        WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBhenningEnum(),'format','Integer');
    49                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
     49                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
    5050                end % }}}
    5151        end
  • issm/trunk-jpl/src/m/classes/SMBmeltcomponents.m

    r19027 r19040  
    1212        end
    1313        methods
    14                 function obj = SMBmeltcomponents(varargin) % {{{
     14                function self = SMBmeltcomponents(varargin) % {{{
    1515                        switch nargin
    1616                                case 0
     
    4747
    4848                end % }}}
    49                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     49                function md = checkconsistency(self,md,solution,analyses) % {{{
    5050
    5151                        if ismember(MasstransportAnalysisEnum(),analyses),
     
    7474                        end
    7575                end % }}}
    76                 function disp(obj) % {{{
     76                function disp(self) % {{{
    7777                        disp(sprintf('   surface forcings parameters with melt (SMB=accumulation-evaporation-melt+refreeze) :'));
    78                         fielddisplay(obj,'accumulation','accumulated snow [m/yr ice eq]');
    79                         fielddisplay(obj,'evaporation','amount of ice lost to evaporative processes [m/yr ice eq]');
    80                         fielddisplay(obj,'melt','amount of ice melt in ice column [m/yr ice eq]');
    81                         fielddisplay(obj,'refreeze','amount of ice melt refrozen in ice column [m/yr ice eq]');
     78                        fielddisplay(self,'accumulation','accumulated snow [m/yr ice eq]');
     79                        fielddisplay(self,'evaporation','amount of ice lost to evaporative processes [m/yr ice eq]');
     80                        fielddisplay(self,'melt','amount of ice melt in ice column [m/yr ice eq]');
     81                        fielddisplay(self,'refreeze','amount of ice melt refrozen in ice column [m/yr ice eq]');
    8282                end % }}}
    83                 function marshall(obj,md,fid) % {{{
     83                function marshall(self,md,fid) % {{{
    8484
    8585                        yts=365.0*24.0*3600.0;
    8686
    8787                        WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBmeltcomponentsEnum(),'format','Integer');
    88                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
    89                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
    90                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','melt','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
    91                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','refreeze','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
     88                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
     89                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
     90                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','melt','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
     91                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','refreeze','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
    9292                end % }}}
    9393        end
  • issm/trunk-jpl/src/m/classes/SMBpdd.m

    r19027 r19040  
    2626        end
    2727        methods
    28                 function obj = SMBpdd(varargin) % {{{
     28                function self = SMBpdd(varargin) % {{{
    2929                        switch nargin
    3030                                case 0
    31                                         obj=setdefaultparameters(obj);
     31                                        self=setdefaultparameters(self);
    3232                                otherwise
    3333                                        error('constructor not supported');
     
    5555
    5656                end % }}}
    57                 function obj = setdefaultparameters(obj) % {{{
     57                function self = setdefaultparameters(self) % {{{
    5858
    59                   obj.isdelta18o = 0;
    60                   obj.ismungsm   = 0;
    61                   obj.desfac     = 0.5;
    62                   obj.s0p        = 0;
    63                   obj.s0t        = 0;
    64                   obj.rlaps      = 6.5;
    65                   obj.rlapslgm   = 6.5;
     59                  self.isdelta18o = 0;
     60                  self.ismungsm   = 0;
     61                  self.desfac     = 0.5;
     62                  self.s0p        = 0;
     63                  self.s0t        = 0;
     64                  self.rlaps      = 6.5;
     65                  self.rlapslgm   = 6.5;
    6666                 
    6767                end % }}}
    68                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     68                function md = checkconsistency(self,md,solution,analyses) % {{{
    6969
    7070                        if ismember(MasstransportAnalysisEnum(),analyses),
     
    7474                                md = checkfield(md,'fieldname','surfaceforcings.rlaps','>=',0,'numel',1);
    7575                                md = checkfield(md,'fieldname','surfaceforcings.rlapslgm','>=',0,'numel',1);
    76                                 if(obj.isdelta18o==0 & obj.ismungsm==0)
     76                                if(self.isdelta18o==0 & self.ismungsm==0)
    7777                                        md = checkfield(md,'fieldname','surfaceforcings.monthlytemperatures','timeseries',1,'NaN',1);
    7878                                        md = checkfield(md,'fieldname','surfaceforcings.precipitation','timeseries',1,'NaN',1);
    79                                 elseif(obj.isdelta18o==1)
     79                                elseif(self.isdelta18o==1)
    8080                                        md = checkfield(md,'fieldname','surfaceforcings.delta18o','NaN',1);
    8181                                        md = checkfield(md,'fieldname','surfaceforcings.delta18o_surface','NaN',1);
     
    8686                                        md = checkfield(md,'fieldname','surfaceforcings.Tdiff','NaN',1);
    8787                                        md = checkfield(md,'fieldname','surfaceforcings.sealev','NaN',1);
    88                                 elseif(obj.ismungsm==1)
     88                                elseif(self.ismungsm==1)
    8989                                        md = checkfield(md,'fieldname','surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1);
    9090                                        md = checkfield(md,'fieldname','surfaceforcings.temperatures_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1);
     
    9797                        end
    9898                end % }}}
    99                 function disp(obj) % {{{
     99                function disp(self) % {{{
    100100                        disp(sprintf('   surface forcings parameters:'));
    101101
    102102                        disp(sprintf('\n   PDD and deltaO18 parameters:'));
    103                         fielddisplay(obj,'isdelta18o','is temperature and precipitation delta18o parametrisation activated (0 or 1, default is 0)');
    104                         fielddisplay(obj,'ismungsm','is temperature and precipitation mungsm parametrisation activated (0 or 1, default is 0)');
    105                         fielddisplay(obj,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]');
    106                         fielddisplay(obj,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]');
    107                         fielddisplay(obj,'s0t','should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]');
    108                         fielddisplay(obj,'rlaps','present day lapse rate [degree/km]');
    109                         fielddisplay(obj,'rlapslgm','LGM lapse rate [degree/km]');
    110                         if(obj.isdelta18o==0 & obj.ismungsm==0)
    111                             fielddisplay(obj,'monthlytemperatures',['monthly surface temperatures [K], required if pdd is activated and delta18o not activated']);
    112                             fielddisplay(obj,'precipitation',['monthly surface precipitation [m/yr water eq], required if pdd is activated and delta18o or mungsm not activated']);
    113                         elseif(obj.isdelta18o==1)
    114                             fielddisplay(obj,'delta18o','delta18o, required if pdd is activated and delta18o activated');
    115                             fielddisplay(obj,'delta18o_surface','surface elevation of the delta18o site, required if pdd is activated and delta18o activated');
    116                             fielddisplay(obj,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated');
    117                             fielddisplay(obj,'temperatures_lgm','monthly LGM surface temperatures [K], required if delta18o or mungsm is activated');
    118                             fielddisplay(obj,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated');
    119                             fielddisplay(obj,'precipitations_lgm','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated');
    120                             fielddisplay(obj,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated');
    121                             fielddisplay(obj,'sealev','sea level [m], 1D(year), required if mungsm is activated');
    122                         elseif(obj.ismungsm==1)
    123                             fielddisplay(obj,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated');
    124                             fielddisplay(obj,'temperatures_lgm','monthly LGM surface temperatures [K], required if delta18o or mungsm is activated');
    125                             fielddisplay(obj,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated');
    126                             fielddisplay(obj,'precipitations_lgm','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated');
    127                             fielddisplay(obj,'Pfac','time interpolation parameter for precipitation, 1D(year), required if mungsm is activated');
    128                             fielddisplay(obj,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated');
    129                             fielddisplay(obj,'sealev','sea level [m], 1D(year), required if mungsm is activated');
     103                        fielddisplay(self,'isdelta18o','is temperature and precipitation delta18o parametrisation activated (0 or 1, default is 0)');
     104                        fielddisplay(self,'ismungsm','is temperature and precipitation mungsm parametrisation activated (0 or 1, default is 0)');
     105                        fielddisplay(self,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]');
     106                        fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]');
     107                        fielddisplay(self,'s0t','should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]');
     108                        fielddisplay(self,'rlaps','present day lapse rate [degree/km]');
     109                        fielddisplay(self,'rlapslgm','LGM lapse rate [degree/km]');
     110                        if(self.isdelta18o==0 & self.ismungsm==0)
     111                            fielddisplay(self,'monthlytemperatures',['monthly surface temperatures [K], required if pdd is activated and delta18o not activated']);
     112                            fielddisplay(self,'precipitation',['monthly surface precipitation [m/yr water eq], required if pdd is activated and delta18o or mungsm not activated']);
     113                        elseif(self.isdelta18o==1)
     114                            fielddisplay(self,'delta18o','delta18o, required if pdd is activated and delta18o activated');
     115                            fielddisplay(self,'delta18o_surface','surface elevation of the delta18o site, required if pdd is activated and delta18o activated');
     116                            fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated');
     117                            fielddisplay(self,'temperatures_lgm','monthly LGM surface temperatures [K], required if delta18o or mungsm is activated');
     118                            fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated');
     119                            fielddisplay(self,'precipitations_lgm','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated');
     120                            fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated');
     121                            fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated');
     122                        elseif(self.ismungsm==1)
     123                            fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated');
     124                            fielddisplay(self,'temperatures_lgm','monthly LGM surface temperatures [K], required if delta18o or mungsm is activated');
     125                            fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated');
     126                            fielddisplay(self,'precipitations_lgm','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated');
     127                            fielddisplay(self,'Pfac','time interpolation parameter for precipitation, 1D(year), required if mungsm is activated');
     128                            fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated');
     129                            fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated');
    130130                        end
    131131                end % }}}
    132                 function marshall(obj,md,fid) % {{{
     132                function marshall(self,md,fid) % {{{
    133133
    134134                        yts=365.0*24.0*3600.0;
     
    136136                        WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBpddEnum(),'format','Integer');
    137137
    138                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','isdelta18o','format','Boolean');
    139                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','ismungsm','format','Boolean');
    140                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','desfac','format','Double');
    141                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','s0p','format','Double');
    142                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','s0t','format','Double');
    143                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','rlaps','format','Double');
    144                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','rlapslgm','format','Double');
     138                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','isdelta18o','format','Boolean');
     139                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','ismungsm','format','Boolean');
     140                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','desfac','format','Double');
     141                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0p','format','Double');
     142                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0t','format','Double');
     143                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlaps','format','Double');
     144                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlapslgm','format','Double');
    145145
    146                         if(obj.isdelta18o==0 & obj.ismungsm==0)
    147                                 %WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','monthlytemperatures','format','DoubleMat','mattype',1);
    148                                 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    149                                 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
    150                         elseif obj.isdelta18o
    151                                 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','temperatures_presentday','format','DoubleMat','mattype',1);
    152                                 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','temperatures_lgm','format','DoubleMat','mattype',1);
    153                                 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','precipitations_presentday','format','DoubleMat','mattype',1);
    154                                 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','precipitations_lgm','format','DoubleMat','mattype',1);
    155                                 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','delta18o_surface','format','DoubleMat','mattype',1);
    156                                 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','delta18o','format','DoubleMat','mattype',1);
    157                                 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','Tdiff','format','DoubleMat','mattype',1);
    158                                 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','sealev','format','DoubleMat','mattype',1);
    159                         elseif obj.ismungsm
    160                                 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','temperatures_presentday','format','DoubleMat','mattype',1);
    161                                 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','temperatures_lgm','format','DoubleMat','mattype',1);
    162                                 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','precipitations_presentday','format','DoubleMat','mattype',1);
    163                                 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','precipitations_lgm','format','DoubleMat','mattype',1);
    164                                 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','Pfac','format','DoubleMat','mattype',1);
    165                                 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','Tdiff','format','DoubleMat','mattype',1);
    166                                 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','sealev','format','DoubleMat','mattype',1);
     146                        if(self.isdelta18o==0 & self.ismungsm==0)
     147                                %WriteData(fid,'object',self,'class','surfaceforcings','fieldname','monthlytemperatures','format','DoubleMat','mattype',1);
     148                                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
     149                                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
     150                        elseif self.isdelta18o
     151                                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_presentday','format','DoubleMat','mattype',1);
     152                                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_lgm','format','DoubleMat','mattype',1);
     153                                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_presentday','format','DoubleMat','mattype',1);
     154                                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_lgm','format','DoubleMat','mattype',1);
     155                                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','delta18o_surface','format','DoubleMat','mattype',1);
     156                                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','delta18o','format','DoubleMat','mattype',1);
     157                                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','Tdiff','format','DoubleMat','mattype',1);
     158                                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','sealev','format','DoubleMat','mattype',1);
     159                        elseif self.ismungsm
     160                                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_presentday','format','DoubleMat','mattype',1);
     161                                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_lgm','format','DoubleMat','mattype',1);
     162                                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_presentday','format','DoubleMat','mattype',1);
     163                                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_lgm','format','DoubleMat','mattype',1);
     164                                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','Pfac','format','DoubleMat','mattype',1);
     165                                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','Tdiff','format','DoubleMat','mattype',1);
     166                                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','sealev','format','DoubleMat','mattype',1);
    167167                        end
    168168                end % }}}
  • issm/trunk-jpl/src/m/classes/adinversion.m

    r18875 r19040  
    2626        end
    2727        methods
    28                 function obj = adinversion(varargin) % {{{
     28                function self = adinversion(varargin) % {{{
    2929                        switch nargin
    3030                                case 0
    31                                         obj=setdefaultparameters(obj);
     31                                        self=setdefaultparameters(self);
    3232                                case 1
    3333                                        obj=structtoobj(adinversion(),varargin{1});
     
    5757
    5858                end % }}}
    59                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     59                function md = checkconsistency(self,md,solution,analyses) % {{{
    6060
    6161                        %Early return
    62                         if ~obj.iscontrol, return; end
     62                        if ~self.iscontrol, return; end
    6363
    6464                        if ~IssmConfig('_HAVE_M1QN3_'),
     
    9595                        end
    9696                end % }}}
    97                 function disp(obj) % {{{
     97                function disp(self) % {{{
    9898                        disp(sprintf('   adinversion parameters:'));
    99                         fielddisplay(obj,'iscontrol','is inversion activated?');
    100                         fielddisplay(obj,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
    101                         fielddisplay(obj,'control_scaling_factors','order of magnitude of each control (useful for multi-parameter optimization)');
    102                         fielddisplay(obj,'maxsteps','maximum number of iterations (gradient computation)');
    103                         fielddisplay(obj,'maxiter','maximum number of Function evaluation (forward run)');
    104                         fielddisplay(obj,'dxmin','convergence criterion: two points less than dxmin from eachother (sup-norm) are considered identical');
    105                         fielddisplay(obj,'gttol','convergence criterion: ||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)');
    106                         fielddisplay(obj,'cost_functions','indicate the type of response for each optimization step');
    107                         fielddisplay(obj,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
    108                         fielddisplay(obj,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
    109                         fielddisplay(obj,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
    110                         fielddisplay(obj,'vx_obs','observed velocity x component [m/yr]');
    111                         fielddisplay(obj,'vy_obs','observed velocity y component [m/yr]');
    112                         fielddisplay(obj,'vel_obs','observed velocity magnitude [m/yr]');
    113                         fielddisplay(obj,'thickness_obs','observed thickness [m]');
    114                         fielddisplay(obj,'surface_obs','observed surface elevation [m]');
     99                        fielddisplay(self,'iscontrol','is inversion activated?');
     100                        fielddisplay(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
     101                        fielddisplay(self,'control_scaling_factors','order of magnitude of each control (useful for multi-parameter optimization)');
     102                        fielddisplay(self,'maxsteps','maximum number of iterations (gradient computation)');
     103                        fielddisplay(self,'maxiter','maximum number of Function evaluation (forward run)');
     104                        fielddisplay(self,'dxmin','convergence criterion: two points less than dxmin from eachother (sup-norm) are considered identical');
     105                        fielddisplay(self,'gttol','convergence criterion: ||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)');
     106                        fielddisplay(self,'cost_functions','indicate the type of response for each optimization step');
     107                        fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
     108                        fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
     109                        fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
     110                        fielddisplay(self,'vx_obs','observed velocity x component [m/yr]');
     111                        fielddisplay(self,'vy_obs','observed velocity y component [m/yr]');
     112                        fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]');
     113                        fielddisplay(self,'thickness_obs','observed thickness [m]');
     114                        fielddisplay(self,'surface_obs','observed surface elevation [m]');
    115115                       
    116116                        disp('Available cost functions:');
     
    125125                        disp('   503: ThicknessAbsGradient');
    126126                end % }}}
    127                 function marshall(obj,md,fid) % {{{
     127                function marshall(self,md,fid) % {{{
    128128
    129129                        yts=365.0*24.0*3600.0;
    130130
    131                         WriteData(fid,'object',obj,'class','inversion','fieldname','iscontrol','format','Boolean');
     131                        WriteData(fid,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean');
    132132                        WriteData(fid,'enum',InversionTypeEnum(),'data',4,'format','Integer');
    133                         if ~obj.iscontrol, return; end
    134                         WriteData(fid,'object',obj,'class','inversion','fieldname','control_scaling_factors','format','DoubleMat','mattype',3);
    135                         WriteData(fid,'object',obj,'class','inversion','fieldname','maxsteps','format','Integer');
    136                         WriteData(fid,'object',obj,'class','inversion','fieldname','maxiter','format','Integer');
    137                         WriteData(fid,'object',obj,'class','inversion','fieldname','dxmin','format','Double');
    138                         WriteData(fid,'object',obj,'class','inversion','fieldname','gttol','format','Double');
    139                         WriteData(fid,'object',obj,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
    140                         WriteData(fid,'object',obj,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3);
    141                         WriteData(fid,'object',obj,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3);
    142                         WriteData(fid,'object',obj,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
    143                         WriteData(fid,'object',obj,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
    144                         WriteData(fid,'object',obj,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
    145                         if(numel(obj.thickness_obs)==md.mesh.numberofelements),
     133                        if ~self.iscontrol, return; end
     134                        WriteData(fid,'object',self,'class','inversion','fieldname','control_scaling_factors','format','DoubleMat','mattype',3);
     135                        WriteData(fid,'object',self,'class','inversion','fieldname','maxsteps','format','Integer');
     136                        WriteData(fid,'object',self,'class','inversion','fieldname','maxiter','format','Integer');
     137                        WriteData(fid,'object',self,'class','inversion','fieldname','dxmin','format','Double');
     138                        WriteData(fid,'object',self,'class','inversion','fieldname','gttol','format','Double');
     139                        WriteData(fid,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
     140                        WriteData(fid,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3);
     141                        WriteData(fid,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3);
     142                        WriteData(fid,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
     143                        WriteData(fid,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
     144                        WriteData(fid,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
     145                        if(numel(self.thickness_obs)==md.mesh.numberofelements),
    146146                                mattype=2;
    147147                        else
    148148                                mattype=1;
    149149                        end
    150                         WriteData(fid,'object',obj,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
    151                         WriteData(fid,'object',obj,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
     150                        WriteData(fid,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
     151                        WriteData(fid,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
    152152
    153153                        %process control parameters
    154                         num_control_parameters=numel(obj.control_parameters);
     154                        num_control_parameters=numel(self.control_parameters);
    155155                        data=zeros(1,num_control_parameters);
    156156                        for i=1:num_control_parameters,
    157                                 data(i)=StringToEnum(obj.control_parameters{i});
     157                                data(i)=StringToEnum(self.control_parameters{i});
    158158                        end
    159159                        WriteData(fid,'data',data,'enum',InversionControlParametersEnum(),'format','DoubleMat','mattype',3);
     
    161161
    162162                        %process cost functions
    163                         num_cost_functions=size(obj.cost_functions,2);
    164                         data=obj.cost_functions;
    165                         pos=find(obj.cost_functions==101); data(pos)=SurfaceAbsVelMisfitEnum();
    166                         pos=find(obj.cost_functions==102); data(pos)=SurfaceRelVelMisfitEnum();
    167                         pos=find(obj.cost_functions==103); data(pos)=SurfaceLogVelMisfitEnum();
    168                         pos=find(obj.cost_functions==104); data(pos)=SurfaceLogVxVyMisfitEnum();
    169                         pos=find(obj.cost_functions==105); data(pos)=SurfaceAverageVelMisfitEnum();
    170                         pos=find(obj.cost_functions==201); data(pos)=ThicknessAbsMisfitEnum();
    171                         pos=find(obj.cost_functions==501); data(pos)=DragCoefficientAbsGradientEnum();
    172                         pos=find(obj.cost_functions==502); data(pos)=RheologyBbarAbsGradientEnum();
    173                         pos=find(obj.cost_functions==503); data(pos)=ThicknessAbsGradientEnum();
    174                         pos=find(obj.cost_functions==504); data(pos)=ThicknessAlongGradientEnum();
    175                         pos=find(obj.cost_functions==505); data(pos)=ThicknessAcrossGradientEnum();
    176                         pos=find(obj.cost_functions==506); data(pos)=BalancethicknessMisfitEnum();
    177                         pos=find(obj.cost_functions==601); data(pos)=SurfaceAbsMisfitEnum();
    178                         pos=find(obj.cost_functions==1001); data(pos)=Outputdefinition1Enum();
    179                         pos=find(obj.cost_functions==1002); data(pos)=Outputdefinition2Enum();
    180                         pos=find(obj.cost_functions==1003); data(pos)=Outputdefinition3Enum();
    181                         pos=find(obj.cost_functions==1004); data(pos)=Outputdefinition4Enum();
    182                         pos=find(obj.cost_functions==1005); data(pos)=Outputdefinition5Enum();
    183                         pos=find(obj.cost_functions==1006); data(pos)=Outputdefinition6Enum();
    184                         pos=find(obj.cost_functions==1007); data(pos)=Outputdefinition7Enum();
    185                         pos=find(obj.cost_functions==1008); data(pos)=Outputdefinition8Enum();
    186                         pos=find(obj.cost_functions==1009); data(pos)=Outputdefinition8Enum();
    187                         pos=find(obj.cost_functions==1010); data(pos)=Outputdefinition10Enum();
     163                        num_cost_functions=size(self.cost_functions,2);
     164                        data=self.cost_functions;
     165                        pos=find(self.cost_functions==101); data(pos)=SurfaceAbsVelMisfitEnum();
     166                        pos=find(self.cost_functions==102); data(pos)=SurfaceRelVelMisfitEnum();
     167                        pos=find(self.cost_functions==103); data(pos)=SurfaceLogVelMisfitEnum();
     168                        pos=find(self.cost_functions==104); data(pos)=SurfaceLogVxVyMisfitEnum();
     169                        pos=find(self.cost_functions==105); data(pos)=SurfaceAverageVelMisfitEnum();
     170                        pos=find(self.cost_functions==201); data(pos)=ThicknessAbsMisfitEnum();
     171                        pos=find(self.cost_functions==501); data(pos)=DragCoefficientAbsGradientEnum();
     172                        pos=find(self.cost_functions==502); data(pos)=RheologyBbarAbsGradientEnum();
     173                        pos=find(self.cost_functions==503); data(pos)=ThicknessAbsGradientEnum();
     174                        pos=find(self.cost_functions==504); data(pos)=ThicknessAlongGradientEnum();
     175                        pos=find(self.cost_functions==505); data(pos)=ThicknessAcrossGradientEnum();
     176                        pos=find(self.cost_functions==506); data(pos)=BalancethicknessMisfitEnum();
     177                        pos=find(self.cost_functions==601); data(pos)=SurfaceAbsMisfitEnum();
     178                        pos=find(self.cost_functions==1001); data(pos)=Outputdefinition1Enum();
     179                        pos=find(self.cost_functions==1002); data(pos)=Outputdefinition2Enum();
     180                        pos=find(self.cost_functions==1003); data(pos)=Outputdefinition3Enum();
     181                        pos=find(self.cost_functions==1004); data(pos)=Outputdefinition4Enum();
     182                        pos=find(self.cost_functions==1005); data(pos)=Outputdefinition5Enum();
     183                        pos=find(self.cost_functions==1006); data(pos)=Outputdefinition6Enum();
     184                        pos=find(self.cost_functions==1007); data(pos)=Outputdefinition7Enum();
     185                        pos=find(self.cost_functions==1008); data(pos)=Outputdefinition8Enum();
     186                        pos=find(self.cost_functions==1009); data(pos)=Outputdefinition8Enum();
     187                        pos=find(self.cost_functions==1010); data(pos)=Outputdefinition10Enum();
    188188                        WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3);
    189189                        WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer');
  • issm/trunk-jpl/src/m/classes/autodiff.m

    r17720 r19040  
    2020                %}}}
    2121        methods
    22         function createxml(obj,fid) % {{{
     22        function createxml(self,fid) % {{{
    2323            fprintf(fid, '<!-- autodiff -->\n');           
    2424                   
    2525            % automatic differentiation parameters
    2626            fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="automatic differentiation parameters">','<section name="autodiff" />');                   
    27                 fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n','  <parameter key ="isautodiff" type="',class(obj.isautodiff),'" optional="false">','     <section name="autodiff" />','         <option value="',convert2str(obj.isautodiff),'" type="string" default="true"></option>','     <help> indicates if the automatic differentiation is activated </help>','  </parameter>');
     27                fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n','  <parameter key ="isautodiff" type="',class(self.isautodiff),'" optional="false">','     <section name="autodiff" />','         <option value="',convert2str(self.isautodiff),'" type="string" default="true"></option>','     <help> indicates if the automatic differentiation is activated </help>','  </parameter>');
    2828             
    29                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="dependents" type="',class(obj.dependents),'" default="',convert2str(obj.dependents),'">','     <section name="autodiff" />','     <help> list of dependent variables </help>','  </parameter>');
    30                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="independents" type="',class(obj.independents),'" default="',convert2str(obj.independents),'">','     <section name="autodiff" />','     <help> list of independent variables </help>','  </parameter>');
    31                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="driver" type="',class(obj.driver),'" default="',convert2str(obj.driver),'">','     <section name="autodiff" />','     <help> ADOLC driver (''fos_forward'' or ''fov_forward'') </help>','  </parameter>');
    32                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="obufsize" type="',class(obj.obufsize),'" default="',convert2str(obj.obufsize),'">','     <section name="autodiff" />','     <help> Number of operations per buffer (==OBUFSIZE in usrparms.h)  </help>','  </parameter>');
    33                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lbufsize" type="',class(obj.lbufsize),'" default="',convert2str(obj.lbufsize),'">','     <section name="autodiff" />','     <help> Number of locations per buffer (==LBUFSIZE in usrparms.h) </help>','  </parameter>');
    34                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="cbufsize" type="',class(obj.cbufsize),'" default="',convert2str(obj.cbufsize),'">','     <section name="autodiff" />','     <help> Number of values per buffer (==CBUFSIZE in usrparms.h) </help>','  </parameter>');
    35                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="tbufsize" type="',class(obj.tbufsize),'" default="',convert2str(obj.tbufsize),'">','     <section name="autodiff" />','     <help> Number of taylors per buffer (&amp;lt;=TBUFSIZE in usrparms.h) </help>','  </parameter>');
    36                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="gcTriggerRatio" type="',class(obj.gcTriggerRatio),'" default="',convert2str(obj.gcTriggerRatio),'">','     <section name="autodiff" />','     <help> free location block sorting/consolidation triggered if the ratio between allocated and used locations exceeds gcTriggerRatio </help>','  </parameter>');
    37                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="gcTriggerRatio" type="',class(obj.gcTriggerRatio),'" default="',convert2str(obj.gcTriggerRatio),'">','     <section name="autodiff" />','     <help> free location block sorting/consolidation triggered if the allocated locations exceed gcTriggerMaxSize </help>','  </parameter>');
     29                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="dependents" type="',class(self.dependents),'" default="',convert2str(self.dependents),'">','     <section name="autodiff" />','     <help> list of dependent variables </help>','  </parameter>');
     30                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="independents" type="',class(self.independents),'" default="',convert2str(self.independents),'">','     <section name="autodiff" />','     <help> list of independent variables </help>','  </parameter>');
     31                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="driver" type="',class(self.driver),'" default="',convert2str(self.driver),'">','     <section name="autodiff" />','     <help> ADOLC driver (''fos_forward'' or ''fov_forward'') </help>','  </parameter>');
     32                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="obufsize" type="',class(self.obufsize),'" default="',convert2str(self.obufsize),'">','     <section name="autodiff" />','     <help> Number of operations per buffer (==OBUFSIZE in usrparms.h)  </help>','  </parameter>');
     33                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lbufsize" type="',class(self.lbufsize),'" default="',convert2str(self.lbufsize),'">','     <section name="autodiff" />','     <help> Number of locations per buffer (==LBUFSIZE in usrparms.h) </help>','  </parameter>');
     34                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="cbufsize" type="',class(self.cbufsize),'" default="',convert2str(self.cbufsize),'">','     <section name="autodiff" />','     <help> Number of values per buffer (==CBUFSIZE in usrparms.h) </help>','  </parameter>');
     35                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="tbufsize" type="',class(self.tbufsize),'" default="',convert2str(self.tbufsize),'">','     <section name="autodiff" />','     <help> Number of taylors per buffer (&amp;lt;=TBUFSIZE in usrparms.h) </help>','  </parameter>');
     36                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="gcTriggerRatio" type="',class(self.gcTriggerRatio),'" default="',convert2str(self.gcTriggerRatio),'">','     <section name="autodiff" />','     <help> free location block sorting/consolidation triggered if the ratio between allocated and used locations exceeds gcTriggerRatio </help>','  </parameter>');
     37                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="gcTriggerRatio" type="',class(self.gcTriggerRatio),'" default="',convert2str(self.gcTriggerRatio),'">','     <section name="autodiff" />','     <help> free location block sorting/consolidation triggered if the allocated locations exceed gcTriggerMaxSize </help>','  </parameter>');
    3838           
    3939            fprintf(fid,'%s\n%s\n','</frame>');   
    4040       
    4141        end % }}}
    42                 function obj = autodiff(varargin) % {{{
     42                function self = autodiff(varargin) % {{{
    4343                        switch nargin
    4444                                case 0
    45                                         obj=setdefaultparameters(obj);
     45                                        self=setdefaultparameters(self);
    4646                                otherwise
    4747                                        error('constructor not supported');
    4848                        end
    4949                end % }}}
    50                 function obj = setdefaultparameters(obj) % {{{
    51                 obj.obufsize     = 524288;
    52                 obj.lbufsize     = 524288;
    53                 obj.cbufsize     = 524288;
    54                 obj.tbufsize     = 524288;
    55                 obj.gcTriggerRatio=2.0;
    56                 obj.gcTriggerMaxSize=65536;
    57                 end % }}}
    58                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     50                function self = setdefaultparameters(self) % {{{
     51                self.obufsize     = 524288;
     52                self.lbufsize     = 524288;
     53                self.cbufsize     = 524288;
     54                self.tbufsize     = 524288;
     55                self.gcTriggerRatio=2.0;
     56                self.gcTriggerMaxSize=65536;
     57                end % }}}
     58                function md = checkconsistency(self,md,solution,analyses) % {{{
    5959
    6060                        %Early return
    61                         if ~obj.isautodiff, return; end
     61                        if ~self.isautodiff, return; end
    6262
    6363                        %Driver value:
     
    7373
    7474                        %go through our dependents and independents and check consistency:
    75                         for i=1:numel(obj.dependents),
    76                                 dep=obj.dependents{i};
     75                        for i=1:numel(self.dependents),
     76                                dep=self.dependents{i};
    7777                                md=checkconsistency(dep,md,solution,analyses);
    7878                        end
    79                         for i=1:numel(obj.independents),
    80                                 indep=obj.independents{i};
    81                                 md=checkconsistency(indep,md,i,solution,analyses,obj.driver);
    82                         end
    83 
    84                 end % }}}
    85                 function disp(obj) % {{{
     79                        for i=1:numel(self.independents),
     80                                indep=self.independents{i};
     81                                md=checkconsistency(indep,md,i,solution,analyses,self.driver);
     82                        end
     83
     84                end % }}}
     85                function disp(self) % {{{
    8686                        disp(sprintf('   automatic differentiation parameters:'));
    87                         fielddisplay(obj,'isautodiff','indicates if the automatic differentiation is activated');
    88                         fielddisplay(obj,'dependents','list of dependent variables');
    89                         fielddisplay(obj,'independents','list of independent variables');
    90                         fielddisplay(obj,'driver','ADOLC driver (''fos_forward'' or ''fov_forward'')');
    91                         fielddisplay(obj,'obufsize','Number of operations per buffer (==OBUFSIZE in usrparms.h)');
    92                         fielddisplay(obj,'lbufsize','Number of locations per buffer (==LBUFSIZE in usrparms.h)');
    93                         fielddisplay(obj,'cbufsize','Number of values per buffer (==CBUFSIZE in usrparms.h)');
    94                         fielddisplay(obj,'tbufsize','Number of taylors per buffer (<=TBUFSIZE in usrparms.h)');
    95                         fielddisplay(obj,'gcTriggerRatio','free location block sorting/consolidation triggered if the ratio between allocated and used locations exceeds gcTriggerRatio');
    96                         fielddisplay(obj,'gcTriggerMaxSize','free location block sorting/consolidation triggered if the allocated locations exceed gcTriggerMaxSize');
    97                 end % }}}
    98                 function marshall(obj,md,fid) % {{{
    99 
    100                         WriteData(fid,'object',obj,'fieldname','isautodiff','format','Boolean');
    101                         WriteData(fid,'object',obj,'fieldname','driver','format','String');
     87                        fielddisplay(self,'isautodiff','indicates if the automatic differentiation is activated');
     88                        fielddisplay(self,'dependents','list of dependent variables');
     89                        fielddisplay(self,'independents','list of independent variables');
     90                        fielddisplay(self,'driver','ADOLC driver (''fos_forward'' or ''fov_forward'')');
     91                        fielddisplay(self,'obufsize','Number of operations per buffer (==OBUFSIZE in usrparms.h)');
     92                        fielddisplay(self,'lbufsize','Number of locations per buffer (==LBUFSIZE in usrparms.h)');
     93                        fielddisplay(self,'cbufsize','Number of values per buffer (==CBUFSIZE in usrparms.h)');
     94                        fielddisplay(self,'tbufsize','Number of taylors per buffer (<=TBUFSIZE in usrparms.h)');
     95                        fielddisplay(self,'gcTriggerRatio','free location block sorting/consolidation triggered if the ratio between allocated and used locations exceeds gcTriggerRatio');
     96                        fielddisplay(self,'gcTriggerMaxSize','free location block sorting/consolidation triggered if the allocated locations exceed gcTriggerMaxSize');
     97                end % }}}
     98                function marshall(self,md,fid) % {{{
     99
     100                        WriteData(fid,'object',self,'fieldname','isautodiff','format','Boolean');
     101                        WriteData(fid,'object',self,'fieldname','driver','format','String');
    102102
    103103                        %early return
    104                         if ~obj.isautodiff,
     104                        if ~self.isautodiff,
    105105                                WriteData(fid,'data',false,'enum',AutodiffMassFluxSegmentsPresentEnum(),'format','Boolean');
    106106                                WriteData(fid,'data',false,'enum',AutodiffKeepEnum(),'format','Boolean');
     
    109109
    110110                        %buffer sizes {{{
    111                         WriteData(fid,'object',obj,'fieldname','obufsize','format','Double');
    112                         WriteData(fid,'object',obj,'fieldname','lbufsize','format','Double');
    113                         WriteData(fid,'object',obj,'fieldname','cbufsize','format','Double');
    114                         WriteData(fid,'object',obj,'fieldname','tbufsize','format','Double');
    115                         WriteData(fid,'object',obj,'fieldname','gcTriggerRatio','format','Double');
    116                         WriteData(fid,'object',obj,'fieldname','gcTriggerMaxSize','format','Double');
     111                        WriteData(fid,'object',self,'fieldname','obufsize','format','Double');
     112                        WriteData(fid,'object',self,'fieldname','lbufsize','format','Double');
     113                        WriteData(fid,'object',self,'fieldname','cbufsize','format','Double');
     114                        WriteData(fid,'object',self,'fieldname','tbufsize','format','Double');
     115                        WriteData(fid,'object',self,'fieldname','gcTriggerRatio','format','Double');
     116                        WriteData(fid,'object',self,'fieldname','gcTriggerMaxSize','format','Double');
    117117                        %}}}
    118118                        %process dependent variables {{{
    119                         num_dependent_objects=numel(obj.dependents);
     119                        num_dependent_objects=numel(self.dependents);
    120120                        WriteData(fid,'data',num_dependent_objects,'enum',AutodiffNumDependentObjectsEnum(),'format','Integer');
    121121
     
    126126
    127127                                for i=1:num_dependent_objects,
    128                                         dep=obj.dependents{i};
     128                                        dep=self.dependents{i};
    129129
    130130                                        names{i}=dep.name;
     
    138138                        %}}}
    139139                        %process independent variables {{{
    140                         num_independent_objects=numel(obj.independents);
     140                        num_independent_objects=numel(self.independents);
    141141                        WriteData(fid,'data',num_independent_objects,'enum',AutodiffNumIndependentObjectsEnum(),'format','Integer');
    142142
     
    146146
    147147                                for i=1:num_independent_objects,
    148                                         indep=obj.independents{i};
     148                                        indep=self.independents{i};
    149149
    150150                                        names(i)=StringToEnum(indep.name);
     
    156156                        %}}}
    157157                        %if driver is fos_forward, build index:  {{{
    158                         if strcmpi(obj.driver,'fos_forward'),
     158                        if strcmpi(self.driver,'fos_forward'),
    159159                                index=0;
    160160
    161161                                for i=1:num_independent_objects,
    162                                         indep=obj.independents{i};
     162                                        indep=self.independents{i};
    163163                                        if ~isnan(indep.fos_forward_index),
    164164                                                index=index+indep.fos_forward_index;
     
    177177                        %}}}
    178178                        %if driver is fos_reverse, build index:  {{{
    179                         if strcmpi(obj.driver,'fos_reverse'),
     179                        if strcmpi(self.driver,'fos_reverse'),
    180180                                index=0;
    181181
    182182                                for i=1:num_dependent_objects,
    183                                         dep=obj.dependents{i};
     183                                        dep=self.dependents{i};
    184184                                        if ~isnan(dep.fos_reverse_index),
    185185                                                index=index+dep.fos_reverse_index;
     
    198198                        %}}}
    199199                        %if driver is fov_forward, build indices:  {{{
    200                         if strcmpi(obj.driver,'fov_forward'),
     200                        if strcmpi(self.driver,'fov_forward'),
    201201                                indices=0;
    202202
    203203                                for i=1:num_independent_objects,
    204                                         indep=obj.independents{i};
     204                                        indep=self.independents{i};
    205205                                        if ~isempty(indep.fos_forward_index),
    206206                                                indices=indices+indep.fov_forward_indices;
     
    221221                        mass_flux_segments=cell(0,1);
    222222                        for i=1:num_dependent_objects,
    223                                 dep=obj.dependents{i};
     223                                dep=self.dependents{i};
    224224                                if strcmpi(dep.name,'MassFlux'),
    225225                                        mass_flux_segments{end+1,1}=dep.segments;
     
    244244                        %
    245245
    246                         if length(obj.driver)<=3,
     246                        if length(self.driver)<=3,
    247247                                keep=false; %there is no "_reverse" string within the driver string:
    248248                        else
    249                                 if strncmpi(obj.driver(4:end),'_reverse',8),
     249                                if strncmpi(self.driver(4:end),'_reverse',8),
    250250                                        keep=true;
    251251                                else
  • issm/trunk-jpl/src/m/classes/balancethickness.m

    r18565 r19040  
    1313        end
    1414        methods
    15                 function obj = balancethickness(varargin) % {{{
     15                function self = balancethickness(varargin) % {{{
    1616                        switch nargin
    1717                                case 0
    18                                         obj=setdefaultparameters(obj);
     18                                        self=setdefaultparameters(self);
    1919                                otherwise
    2020                                        error('constructor not supported');
    2121                        end
    2222                end % }}}
    23                 function obj = setdefaultparameters(obj) % {{{
     23                function self = setdefaultparameters(self) % {{{
    2424
    2525                        %Type of stabilization used
    26                         obj.stabilization=1;
     26                        self.stabilization=1;
    2727
    2828                end % }}}
    29                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     29                function md = checkconsistency(self,md,solution,analyses) % {{{
    3030                        %Early return
    3131                        if solution~=BalancethicknessSolutionEnum(), return; end
     
    3737                        %md = checkfield(md,'fieldname','balancethickness.omega','size',[md.mesh.numberofvertices 1],'NaN',1,'>=',0);
    3838                end % }}}
    39                 function disp(obj) % {{{
     39                function disp(self) % {{{
    4040                        disp(sprintf('   balance thickness solution parameters:'));
    4141
    42                         fielddisplay(obj,'spcthickness','thickness constraints (NaN means no constraint) [m]');
    43                         fielddisplay(obj,'thickening_rate','ice thickening rate used in the mass conservation (dh/dt) [m/yr]');
    44                         fielddisplay(obj,'stabilization','0: None, 1: SU, 2: SSA''s artificial diffusivity, 3:DG');
     42                        fielddisplay(self,'spcthickness','thickness constraints (NaN means no constraint) [m]');
     43                        fielddisplay(self,'thickening_rate','ice thickening rate used in the mass conservation (dh/dt) [m/yr]');
     44                        fielddisplay(self,'stabilization','0: None, 1: SU, 2: SSA''s artificial diffusivity, 3:DG');
    4545
    4646                end % }}}
    47                 function marshall(obj,md,fid) % {{{
     47                function marshall(self,md,fid) % {{{
    4848
    4949                        yts=365.0*24.0*3600.0;
    5050
    51                         WriteData(fid,'object',obj,'fieldname','spcthickness','format','DoubleMat','mattype',1);
    52                         WriteData(fid,'object',obj,'fieldname','thickening_rate','format','DoubleMat','mattype',1,'scale',1./yts);
    53                         WriteData(fid,'object',obj,'fieldname','stabilization','format','Integer');
     51                        WriteData(fid,'object',self,'fieldname','spcthickness','format','DoubleMat','mattype',1);
     52                        WriteData(fid,'object',self,'fieldname','thickening_rate','format','DoubleMat','mattype',1,'scale',1./yts);
     53                        WriteData(fid,'object',self,'fieldname','stabilization','format','Integer');
    5454
    55                         WriteData(fid,'object',obj,'fieldname','omega','format','DoubleMat','mattype',1);
     55                        WriteData(fid,'object',self,'fieldname','omega','format','DoubleMat','mattype',1);
    5656                end % }}}
    5757        end
  • issm/trunk-jpl/src/m/classes/basalforcings.m

    r19027 r19040  
    1111        end
    1212        methods
    13         function createxml(obj,fid) % {{{
     13        function createxml(self,fid) % {{{
    1414            fprintf(fid, '\n\n');
    1515            fprintf(fid, '%s\n', '<!-- basalforcings -->');
    16                          fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="melting_rate" type="',            class(obj.melting_rate),'" default="',              num2str(obj.melting_rate),'">',              '     <section name="basalforcings" />','     <help> basal melting rate (positive if melting) [m/yr] </help>','</parameter>');
    17              fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',        '<parameter key ="geothermalflux" type="',          class(obj.geothermalflux),'" default="',            num2str(obj.geothermalflux),'">',            '     <section name="basalforcings" />','     <help> geothermal heat flux [W/m^2] </help>','</parameter>');
     16                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="melting_rate" type="',            class(self.melting_rate),'" default="',              num2str(self.melting_rate),'">',              '     <section name="basalforcings" />','     <help> basal melting rate (positive if melting) [m/yr] </help>','</parameter>');
     17             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',        '<parameter key ="geothermalflux" type="',          class(self.geothermalflux),'" default="',            num2str(self.geothermalflux),'">',            '     <section name="basalforcings" />','     <help> geothermal heat flux [W/m^2] </help>','</parameter>');
    1818             
    1919        end % }}}
    20                 function obj = basalforcings(varargin) % {{{
     20                function self = basalforcings(varargin) % {{{
    2121                        switch nargin
    2222                                case 0
    23                                         obj=setdefaultparameters(obj);
     23                                        self=setdefaultparameters(self);
    2424                                otherwise
    2525                                        error('constructor not supported');
     
    3939
    4040                end % }}}
    41                 function obj = setdefaultparameters(obj) % {{{
     41                function self = setdefaultparameters(self) % {{{
    4242
    4343                end % }}}
    44                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     44                function md = checkconsistency(self,md,solution,analyses) % {{{
    4545
    4646                        if ismember(MasstransportAnalysisEnum(),analyses) & ~(solution==TransientSolutionEnum() & md.transient.ismasstransport==0),
     
    5858                        end
    5959                end % }}}
    60                 function disp(obj) % {{{
     60                function disp(self) % {{{
    6161                        disp(sprintf('   basal forcings parameters:'));
    6262
    63                         fielddisplay(obj,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]');
    64                         fielddisplay(obj,'floatingice_melting_rate','basal melting rate (positive if melting) [m/yr]');
    65                         fielddisplay(obj,'geothermalflux','geothermal heat flux [W/m^2]');
     63                        fielddisplay(self,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]');
     64                        fielddisplay(self,'floatingice_melting_rate','basal melting rate (positive if melting) [m/yr]');
     65                        fielddisplay(self,'geothermalflux','geothermal heat flux [W/m^2]');
    6666
    6767                end % }}}
    68                 function marshall(obj,md,fid) % {{{
     68                function marshall(self,md,fid) % {{{
    6969
    7070                        yts=365.0*24.0*3600.0;
    7171
    7272                        WriteData(fid,'enum',BasalforcingsEnum(),'data',FloatingMeltRateEnum(),'format','Integer');
    73                         WriteData(fid,'object',obj,'fieldname','groundedice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
    74                         WriteData(fid,'object',obj,'fieldname','floatingice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
    75                         WriteData(fid,'object',obj,'fieldname','geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
     73                        WriteData(fid,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
     74                        WriteData(fid,'object',self,'fieldname','floatingice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
     75                        WriteData(fid,'object',self,'fieldname','geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    7676                end % }}}
    7777        end
  • issm/trunk-jpl/src/m/classes/calving.m

    r19027 r19040  
    1111        end
    1212        methods
    13                 function obj = calving(varargin) % {{{
     13                function self = calving(varargin) % {{{
    1414                        switch nargin
    1515                                case 0
    16                                         obj=setdefaultparameters(obj);
     16                                        self=setdefaultparameters(self);
    1717                                case 1
    1818                                        inputstruct=varargin{1};
     
    2222                                                fieldname = list1{i};
    2323                                                if ismember(fieldname,list2),
    24                                                         obj.(fieldname) = inputstruct.(fieldname);
     24                                                        self.(fieldname) = inputstruct.(fieldname);
    2525                                                end
    2626                                        end
     
    2929                        end
    3030                end % }}}
    31                 function obj = setdefaultparameters(obj) % {{{
     31                function self = setdefaultparameters(self) % {{{
    3232
    3333                        %stabilization = 2 by default
    34                         obj.stabilization = 2;
     34                        self.stabilization = 2;
    3535
    3636                end % }}}
    37                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     37                function md = checkconsistency(self,md,solution,analyses) % {{{
    3838                        %Early return
    3939                        if (solution~=TransientSolutionEnum() | md.transient.iscalving==0), return; end
     
    4343                        md = checkfield(md,'fieldname','calving.meltingrate(1:md.mesh.numberofvertices,:)','>=',0,'timeseries',1,'NaN',1);
    4444                end % }}}
    45                 function disp(obj) % {{{
     45                function disp(self) % {{{
    4646                        disp(sprintf('   Calving parameters:'));
    47                         fielddisplay(obj,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
    48                         fielddisplay(obj,'calvingrate','calving rate at given location [m/a]');
    49                         fielddisplay(obj,'meltingrate','melting rate at given location [m/a]');
     47                        fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
     48                        fielddisplay(self,'calvingrate','calving rate at given location [m/a]');
     49                        fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
    5050                end % }}}
    51                 function marshall(obj,md,fid) % {{{
     51                function marshall(self,md,fid) % {{{
    5252                        yts=365.0*24.0*3600.0;
    5353                        WriteData(fid,'enum',CalvingLawEnum(),'data',DefaultCalvingEnum(),'format','Integer');
    54                         WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',obj.stabilization,'format','Integer');
    55                         WriteData(fid,'object',obj,'fieldname','calvingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts);
    56                         WriteData(fid,'object',obj,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts);
     54                        WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',self.stabilization,'format','Integer');
     55                        WriteData(fid,'object',self,'fieldname','calvingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts);
     56                        WriteData(fid,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts);
    5757                end % }}}
    5858        end
  • issm/trunk-jpl/src/m/classes/calvingdev.m

    r19034 r19040  
    1111        end
    1212        methods
    13                 function obj = calvingdev(varargin) % {{{
     13                function self = calvingdev(varargin) % {{{
    1414                        switch nargin
    1515                                case 0
    16                                         obj=setdefaultparameters(obj);
     16                                        self=setdefaultparameters(self);
    1717                                case 1
    1818                                        inputstruct=varargin{1};
     
    2222                                                fieldname = list1{i};
    2323                                                if ismember(fieldname,list2),
    24                                                         obj.(fieldname) = inputstruct.(fieldname);
     24                                                        self.(fieldname) = inputstruct.(fieldname);
    2525                                                end
    2626                                        end
     
    2929                        end
    3030                end % }}}
    31                 function obj = setdefaultparameters(obj) % {{{
     31                function self = setdefaultparameters(self) % {{{
    3232
    3333                        %stabilization = 2 by default
    34                         obj.stabilization = 2;
     34                        self.stabilization = 2;
    3535
    3636                        %Proportionality coefficient in Pi model
    37                         obj.coeff=2e13;
     37                        self.coeff=2e13;
    3838                end % }}}
    39                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     39                function md = checkconsistency(self,md,solution,analyses) % {{{
    4040                        %Early return
    4141                        if (solution~=TransientSolutionEnum() | md.transient.iscalving==0), return; end
     
    4545                        md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'size',[md.mesh.numberofvertices 1],'>=',0);
    4646                end % }}}
    47                 function disp(obj) % {{{
     47                function disp(self) % {{{
    4848                        disp(sprintf('   Calving Pi parameters:'));
    49                         fielddisplay(obj,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
    50                         fielddisplay(obj,'coeff','proportionality coefficient in Pi model');
    51                         fielddisplay(obj,'meltingrate','melting rate at given location [m/a]');
     49                        fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
     50                        fielddisplay(self,'coeff','proportionality coefficient in Pi model');
     51                        fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
    5252
    5353                end % }}}
    54                 function marshall(obj,md,fid) % {{{
     54                function marshall(self,md,fid) % {{{
    5555                        yts=365.0*24.0*3600.0;
    5656                        WriteData(fid,'enum',CalvingLawEnum(),'data',CalvingDevEnum(),'format','Integer');
    57                         WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',obj.stabilization,'format','Integer');
    58                         WriteData(fid,'enum',CalvingpiCoeffEnum(),'data',obj.coeff,'format','DoubleMat','mattype',1);
    59                         WriteData(fid,'class','calving','object',obj,'fieldname','meltingrate','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1,'scale',1./yts);
     57                        WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',self.stabilization,'format','Integer');
     58                        WriteData(fid,'enum',CalvingpiCoeffEnum(),'data',self.coeff,'format','DoubleMat','mattype',1);
     59                        WriteData(fid,'class','calving','object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1,'scale',1./yts);
    6060                end % }}}
    6161        end
  • issm/trunk-jpl/src/m/classes/calvinglevermann.m

    r19027 r19040  
    1111        end
    1212        methods
    13                 function obj = calvinglevermann(varargin) % {{{
     13                function self = calvinglevermann(varargin) % {{{
    1414                        switch nargin
    1515                                case 0
    16                                         obj=setdefaultparameters(obj);
     16                                        self=setdefaultparameters(self);
    1717                                case 1
    1818                                        inputstruct=varargin{1};
     
    2222                                                fieldname = list1{i};
    2323                                                if ismember(fieldname,list2),
    24                                                         obj.(fieldname) = inputstruct.(fieldname);
     24                                                        self.(fieldname) = inputstruct.(fieldname);
    2525                                                end
    2626                                        end
     
    2929                        end
    3030                end % }}}
    31                 function obj = setdefaultparameters(obj) % {{{
     31                function self = setdefaultparameters(self) % {{{
    3232
    3333                        %stabilization = 2 by default
    34                         obj.stabilization = 2;
     34                        self.stabilization = 2;
    3535
    3636                        %Proportionality coefficient in Levermann model
    37                         obj.coeff=2e13;
     37                        self.coeff=2e13;
    3838                end % }}}
    39                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     39                function md = checkconsistency(self,md,solution,analyses) % {{{
    4040                        %Early return
    4141                        if (solution~=TransientSolutionEnum() | md.transient.iscalving==0), return; end
     
    4545                        md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'size',[md.mesh.numberofvertices 1],'>=',0);
    4646                end % }}}
    47                 function disp(obj) % {{{
     47                function disp(self) % {{{
    4848                        disp(sprintf('   Calving Levermann parameters:'));
    49                         fielddisplay(obj,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
    50                         fielddisplay(obj,'coeff','proportionality coefficient in Levermann model');
    51                         fielddisplay(obj,'meltingrate','melting rate at given location [m/a]');
     49                        fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
     50                        fielddisplay(self,'coeff','proportionality coefficient in Levermann model');
     51                        fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
    5252
    5353                end % }}}
    54                 function marshall(obj,md,fid) % {{{
     54                function marshall(self,md,fid) % {{{
    5555                        yts=365.0*24.0*3600.0;
    5656                        WriteData(fid,'enum',CalvingLawEnum(),'data',CalvingLevermannEnum(),'format','Integer');
    57                         WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',obj.stabilization,'format','Integer');
    58                         WriteData(fid,'enum',CalvinglevermannCoeffEnum(),'data',obj.coeff,'format','DoubleMat','mattype',1);
    59                         WriteData(fid,'object',obj,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts);
     57                        WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',self.stabilization,'format','Integer');
     58                        WriteData(fid,'enum',CalvinglevermannCoeffEnum(),'data',self.coeff,'format','DoubleMat','mattype',1);
     59                        WriteData(fid,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts);
    6060                end % }}}
    6161        end
  • issm/trunk-jpl/src/m/classes/calvingpi.m

    r19027 r19040  
    1111        end
    1212        methods
    13                 function obj = calvingpi(varargin) % {{{
     13                function self = calvingpi(varargin) % {{{
    1414                        switch nargin
    1515                                case 0
    16                                         obj=setdefaultparameters(obj);
     16                                        self=setdefaultparameters(self);
    1717                                case 1
    1818                                        inputstruct=varargin{1};
     
    2222                                                fieldname = list1{i};
    2323                                                if ismember(fieldname,list2),
    24                                                         obj.(fieldname) = inputstruct.(fieldname);
     24                                                        self.(fieldname) = inputstruct.(fieldname);
    2525                                                end
    2626                                        end
     
    2929                        end
    3030                end % }}}
    31                 function obj = setdefaultparameters(obj) % {{{
     31                function self = setdefaultparameters(self) % {{{
    3232
    3333                        %stabilization = 2 by default
    34                         obj.stabilization = 2;
     34                        self.stabilization = 2;
    3535
    3636                        %Proportionality coefficient in Pi model
    37                         obj.coeff=2e13;
     37                        self.coeff=2e13;
    3838                end % }}}
    39                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     39                function md = checkconsistency(self,md,solution,analyses) % {{{
    4040                        %Early return
    4141                        if (solution~=TransientSolutionEnum() | md.transient.iscalving==0), return; end
     
    4545                        md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'size',[md.mesh.numberofvertices 1],'>=',0);
    4646                end % }}}
    47                 function disp(obj) % {{{
     47                function disp(self) % {{{
    4848                        disp(sprintf('   Calving Pi parameters:'));
    49                         fielddisplay(obj,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
    50                         fielddisplay(obj,'coeff','proportionality coefficient in Pi model');
    51                         fielddisplay(obj,'meltingrate','melting rate at given location [m/a]');
     49                        fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
     50                        fielddisplay(self,'coeff','proportionality coefficient in Pi model');
     51                        fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
    5252
    5353                end % }}}
    54                 function marshall(obj,md,fid) % {{{
     54                function marshall(self,md,fid) % {{{
    5555                        yts=365.0*24.0*3600.0;
    5656                        WriteData(fid,'enum',CalvingLawEnum(),'data',CalvingPiEnum(),'format','Integer');
    57                         WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',obj.stabilization,'format','Integer');
    58                         WriteData(fid,'enum',CalvingpiCoeffEnum(),'data',obj.coeff,'format','DoubleMat','mattype',1);
    59                         WriteData(fid,'object',obj,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts);
     57                        WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',self.stabilization,'format','Integer');
     58                        WriteData(fid,'enum',CalvingpiCoeffEnum(),'data',self.coeff,'format','DoubleMat','mattype',1);
     59                        WriteData(fid,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts);
    6060                end % }}}
    6161        end
  • issm/trunk-jpl/src/m/classes/clusters/generic.m

    r18089 r19040  
    2424        end
    2525        methods
    26         function createxml(obj,fid) % {{{
     26        function createxml(self,fid) % {{{
    2727            fprintf(fid, '\n\n');
    2828            fprintf(fid, '%s\n', '<!-- generic -->');
    2929           
    30                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="name" type="',class(obj.name),'" default="',convert2str(obj.name),'">',    '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
    31             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="login" type="',class(obj.login),'" default="',convert2str(obj.login),'">',     '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
    32             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',     '<parameter key ="np" type="',class(obj.np),'" default="',convert2str(obj.np),'">',     '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
    33             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="port" type="',class(obj.port),'" default="',convert2str(obj.port),'">',        '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
    34             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="codepath" type="',class(obj.codepath),'" default="',convert2str(obj.codepath),'">',     '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
     30                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="name" type="',class(self.name),'" default="',convert2str(self.name),'">',  '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
     31            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="login" type="',class(self.login),'" default="',convert2str(self.login),'">',     '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
     32            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',     '<parameter key ="np" type="',class(self.np),'" default="',convert2str(self.np),'">',   '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
     33            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="port" type="',class(self.port),'" default="',convert2str(self.port),'">',      '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
     34            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="codepath" type="',class(self.codepath),'" default="',convert2str(self.codepath),'">',     '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
    3535             
    36             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="executionpath" type="',class(obj.executionpath),'" default="',convert2str(obj.executionpath),'">',     '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
    37             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="etcpath" type="',class(obj.etcpath),'" default="',convert2str(obj.etcpath),'">',     '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
    38             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="valgrind" type="',class(obj.valgrind),'" default="',convert2str(obj.valgrind),'">',    '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
    39             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="valgrindlib" type="',class(obj.valgrindlib),'" default="',convert2str(obj.valgrindlib),'">',     '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
    40             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="valgrindsup" type="',class(obj.valgrindsup),'" default="',convert2str(obj.valgrindsup),'">',     '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
    41             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',         '<parameter key ="verbose" type="',class(obj.verbose),'" default="',convert2str(obj.verbose),'">',      '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
     36            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="executionpath" type="',class(self.executionpath),'" default="',convert2str(self.executionpath),'">',   '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
     37            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="etcpath" type="',class(self.etcpath),'" default="',convert2str(self.etcpath),'">',     '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
     38            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="valgrind" type="',class(self.valgrind),'" default="',convert2str(self.valgrind),'">',  '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
     39            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="valgrindlib" type="',class(self.valgrindlib),'" default="',convert2str(self.valgrindlib),'">',     '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
     40            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="valgrindsup" type="',class(self.valgrindsup),'" default="',convert2str(self.valgrindsup),'">',     '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
     41            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',         '<parameter key ="verbose" type="',class(self.verbose),'" default="',convert2str(self.verbose),'">',    '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
    4242             
    4343        end % }}}
  • issm/trunk-jpl/src/m/classes/constants.m

    r18503 r19040  
    1212        end
    1313        methods
    14         function createxml(obj,fid) % {{{
     14        function createxml(self,fid) % {{{
    1515            fprintf(fid, '\n\n');
    1616            fprintf(fid, '%s\n', '<!-- constants -->');
    17                          fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="g" type="',class(obj.g),'" default="',num2str(obj.g),'">','     <section name="constants" />','     <help> gravitational acceleration [m/s^2] </help>','</parameter>');
    18              fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="yts" type="',class(obj.yts),'" default="',num2str(obj.yts),'">','     <section name="constants" />','     <help> number of seconds in a year [s/yr] </help>','</parameter>');
    19              fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="referencetemperature" type="',class(obj.referencetemperature),'" default="',num2str(obj.referencetemperature),'">','     <section name="constants" />','     <help> reference temperature used in the enthalpy model [K] </help>','</parameter>');
     17                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="g" type="',class(self.g),'" default="',num2str(self.g),'">','     <section name="constants" />','     <help> gravitational acceleration [m/s^2] </help>','</parameter>');
     18             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="yts" type="',class(self.yts),'" default="',num2str(self.yts),'">','     <section name="constants" />','     <help> number of seconds in a year [s/yr] </help>','</parameter>');
     19             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="referencetemperature" type="',class(self.referencetemperature),'" default="',num2str(self.referencetemperature),'">','     <section name="constants" />','     <help> reference temperature used in the enthalpy model [K] </help>','</parameter>');
    2020                end % }}}
    21                 function obj = constants(varargin) % {{{
     21                function self = constants(varargin) % {{{
    2222                        switch nargin
    2323                                case 0
    24                                         obj=setdefaultparameters(obj);
     24                                        self=setdefaultparameters(self);
    2525                                otherwise
    2626                                        error('constructor not supported');
    2727                        end
    2828                end % }}}
    29                 function obj = setdefaultparameters(obj) % {{{
     29                function self = setdefaultparameters(self) % {{{
    3030
    3131                        %acceleration due to gravity (m/s^2)
    32                         obj.g=9.81;
     32                        self.g=9.81;
    3333
    3434                        %Earth's rotation speed
    35                         obj.omega = 7.292*1e-5;
     35                        self.omega = 7.292*1e-5;
    3636
    3737                        %converstion from year to seconds
    38                         obj.yts=365*24*3600;
     38                        self.yts=365*24*3600;
    3939
    4040                        %the reference temperature for enthalpy model (cf Aschwanden)
    41                         obj.referencetemperature=223.15;
     41                        self.referencetemperature=223.15;
    4242
    4343                end % }}}
    44                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     44                function md = checkconsistency(self,md,solution,analyses) % {{{
    4545
    4646                        md = checkfield(md,'fieldname','constants.g','>=',0,'size',[1 1]); %We allow 0 for validation tests
     
    5050
    5151                end % }}}
    52                 function disp(obj) % {{{
     52                function disp(self) % {{{
    5353                        disp(sprintf('   constants parameters:'));
    5454
    55                         fielddisplay(obj,'g','gravitational acceleration [m/s^2]');
    56                         fielddisplay(obj,'omega','angular velocity of Earth [rad/s]');
    57                         fielddisplay(obj,'yts','number of seconds in a year [s/yr]');
    58                         fielddisplay(obj,'referencetemperature','reference temperature used in the enthalpy model [K]');
     55                        fielddisplay(self,'g','gravitational acceleration [m/s^2]');
     56                        fielddisplay(self,'omega','angular velocity of Earth [rad/s]');
     57                        fielddisplay(self,'yts','number of seconds in a year [s/yr]');
     58                        fielddisplay(self,'referencetemperature','reference temperature used in the enthalpy model [K]');
    5959
    6060                end % }}}
    61                 function marshall(obj,md,fid) % {{{
    62                         WriteData(fid,'object',obj,'fieldname','g','format','Double');
    63                         WriteData(fid,'object',obj,'fieldname','omega','format','Double');
    64                         WriteData(fid,'object',obj,'fieldname','yts','format','Double');
    65                         WriteData(fid,'object',obj,'fieldname','referencetemperature','format','Double');
     61                function marshall(self,md,fid) % {{{
     62                        WriteData(fid,'object',self,'fieldname','g','format','Double');
     63                        WriteData(fid,'object',self,'fieldname','omega','format','Double');
     64                        WriteData(fid,'object',self,'fieldname','yts','format','Double');
     65                        WriteData(fid,'object',self,'fieldname','referencetemperature','format','Double');
    6666                end % }}}
    6767        end
  • issm/trunk-jpl/src/m/classes/damage.m

    r19027 r19040  
    3232        end
    3333        methods
    34                 function createxml(obj,fid) % {{{
     34                function createxml(self,fid) % {{{
    3535                        fprintf(fid, '\n\n');
    3636                        fprintf(fid, '%s\n', '<!-- damage -->');
    3737                        fprintf(fid, '%s\n', '<!-- Note: this class depends on different input of law -->');
    3838
    39                         %fprintf(fid,'%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="law" type="logical"',           '" default="',                num2str(obj.law),'">',   '     <section name="damage" />','     <help> damage law (string) from {"undamaged","pralong"} </help>','</parameter>');
     39                        %fprintf(fid,'%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="law" type="logical"',           '" default="',                num2str(self.law),'">',   '     <section name="damage" />','     <help> damage law (string) from {"undamaged","pralong"} </help>','</parameter>');
    4040                        % drop-down
    4141                        fprintf(fid,'%s%s%s%s%s\n\t%s\n','<parameter key ="law" type="','alternative','" optional="','false','">','<section name="damage" />');
     
    4949                        fprintf(fid,'\t%s%s%s%s%s\n\t\t%s\n','<option value="pralong" type="','string','" default="','false','">','<help> law = pralong </help>');
    5050
    51                         fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',   '<parameter key ="stress_threshold" type="',class(obj.stress_threshold),'" default="',num2str(obj.stress_threshold),'">','<help> damage stress threshold [Pa] </help>','</parameter>');
    52                         fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',       '<parameter key ="c1" type="', class(obj.c1),'" default="',   num2str(obj.c1),'">',   '<help> damage parameter 1 </help>','</parameter>');
    53                         fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',       '<parameter key ="c2" type="',          class(obj.c2),'" default="',            num2str(obj.c2),'">','<help> damage parameter 2 </help>','</parameter>');
    54                         fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',       '<parameter key ="c3" type="',          class(obj.c3),'" default="',            num2str(obj.c3),'">','<help> damage parameter 3 [W/m^2] </help>','</parameter>');
    55                         fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',       '<parameter key ="c4" type="',            class(obj.c4),'" default="',              num2str(obj.c4),'">','<help> damage parameter 4 </help>','</parameter>');
    56                         fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',       '<parameter key ="healing" type="', class(obj.healing),'" default="',   num2str(obj.healing),'">','<help> damage healing parameter 1 </help>','</parameter>');
    57                         fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',       '<parameter key ="equiv_stress" type="',          class(obj.equiv_stress),'" default="',convert2str(obj.equiv_stress),'">','<help> 0: von Mises </help>','</parameter>');
    58                         fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',       '<parameter key ="requested_outputs" type="',          class(obj.requested_outputs),'" default="',convert2str(obj.requested_outputs),'">','<help> additional outputs requested </help>','</parameter>');
     51                        fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',   '<parameter key ="stress_threshold" type="',class(self.stress_threshold),'" default="',num2str(self.stress_threshold),'">','<help> damage stress threshold [Pa] </help>','</parameter>');
     52                        fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',       '<parameter key ="c1" type="', class(self.c1),'" default="',   num2str(self.c1),'">',   '<help> damage parameter 1 </help>','</parameter>');
     53                        fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',       '<parameter key ="c2" type="',          class(self.c2),'" default="',            num2str(self.c2),'">','<help> damage parameter 2 </help>','</parameter>');
     54                        fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',       '<parameter key ="c3" type="',          class(self.c3),'" default="',            num2str(self.c3),'">','<help> damage parameter 3 [W/m^2] </help>','</parameter>');
     55                        fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',       '<parameter key ="c4" type="',            class(self.c4),'" default="',              num2str(self.c4),'">','<help> damage parameter 4 </help>','</parameter>');
     56                        fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',       '<parameter key ="healing" type="', class(self.healing),'" default="',   num2str(self.healing),'">','<help> damage healing parameter 1 </help>','</parameter>');
     57                        fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',       '<parameter key ="equiv_stress" type="',          class(self.equiv_stress),'" default="',convert2str(self.equiv_stress),'">','<help> 0: von Mises </help>','</parameter>');
     58                        fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',       '<parameter key ="requested_outputs" type="',          class(self.requested_outputs),'" default="',convert2str(self.requested_outputs),'">','<help> additional outputs requested </help>','</parameter>');
    5959
    6060
     
    6767
    6868
    69                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="D" type="',              class(obj.D),'" default="',                  num2str(obj.D),'">',              '     <section name="damage" />','     <help> damage tensor (scalar) </help>','</parameter>');
    70                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="law" type="',            class(obj.law),'" default="',                num2str(obj.law),'">',   '     <section name="damage" />','     <help> damage law (string) from {"undamaged","pralong"} </help>','</parameter>');
    71                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="spcdamage" type="',      class(obj.spcdamage),'" default="',          num2str(obj.spcdamage),'">',            '     <section name="damage" />','     <help> damage constraints (NaN means no constraint) </help>','</parameter>');
    72                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="max_damage" type="',     class(obj.max_damage),'" default="',         num2str(obj.max_damage),'">',            '     <section name="damage" />','     <help> maximum possible damage (0&amp;lt;=max_damage&amp;lt;1) </help>','</parameter>');
     69                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="D" type="',              class(self.D),'" default="',                  num2str(self.D),'">',              '     <section name="damage" />','     <help> damage tensor (scalar) </help>','</parameter>');
     70                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="law" type="',            class(self.law),'" default="',                num2str(self.law),'">',   '     <section name="damage" />','     <help> damage law (string) from {"undamaged","pralong"} </help>','</parameter>');
     71                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="spcdamage" type="',      class(self.spcdamage),'" default="',          num2str(self.spcdamage),'">',            '     <section name="damage" />','     <help> damage constraints (NaN means no constraint) </help>','</parameter>');
     72                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="max_damage" type="',     class(self.max_damage),'" default="',         num2str(self.max_damage),'">',            '     <section name="damage" />','     <help> maximum possible damage (0&amp;lt;=max_damage&amp;lt;1) </help>','</parameter>');
    7373
    7474                        % stabilization (0,1, or 2) drop-down
     
    7979                        fprintf(fid, '%s\n','</parameter>');
    8080
    81                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="maxiter" type="',             class(obj.maxiter),'" default="',   num2str(obj.maxiter),'">',   '     <section name="damage" />','     <help> maximum number of non linear iterations </help>','</parameter>');
    82                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="penalty_lock" type="',        class(obj.penalty_lock),'" default="',            num2str(obj.penalty_lock),'">',            '     <section name="damage" />','     <help> stabilize unstable damage constraints that keep zigzagging after n iteration (default is 0, no stabilization) </help>','</parameter>');
    83                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="penalty_threshold" type="',   class(obj.penalty_threshold),'" default="',            num2str(obj.penalty_threshold),'">',            '     <section name="damage" />','     <help> threshold to declare convergence of damage evolution solution (default is 0) </help>','</parameter>');
    84                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="penalty_factor" type="',      class(obj.penalty_factor),'" default="',            num2str(obj.penalty_factor),'">',            '     <section name="damage" />','     <help> scaling exponent (default is 3) </help>','</parameter>');
     81                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="maxiter" type="',             class(self.maxiter),'" default="',   num2str(self.maxiter),'">',   '     <section name="damage" />','     <help> maximum number of non linear iterations </help>','</parameter>');
     82                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="penalty_lock" type="',        class(self.penalty_lock),'" default="',            num2str(self.penalty_lock),'">',            '     <section name="damage" />','     <help> stabilize unstable damage constraints that keep zigzagging after n iteration (default is 0, no stabilization) </help>','</parameter>');
     83                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="penalty_threshold" type="',   class(self.penalty_threshold),'" default="',            num2str(self.penalty_threshold),'">',            '     <section name="damage" />','     <help> threshold to declare convergence of damage evolution solution (default is 0) </help>','</parameter>');
     84                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="penalty_factor" type="',      class(self.penalty_factor),'" default="',            num2str(self.penalty_factor),'">',            '     <section name="damage" />','     <help> scaling exponent (default is 3) </help>','</parameter>');
    8585
    8686                end % }}}
    8787       
    88                 function obj = damage(varargin) % {{{
     88                function self = damage(varargin) % {{{
    8989                        switch nargin
    9090                                case 0
    91                                         obj=setdefaultparameters(obj);
     91                                        self=setdefaultparameters(self);
    9292                                case 1
    9393                                        inputstruct=varargin{1};
     
    9797                                                fieldname = list1{i};
    9898                                                if ismember(fieldname,list2),
    99                                                         obj.(fieldname) = inputstruct.(fieldname);
     99                                                        self.(fieldname) = inputstruct.(fieldname);
    100100                                                end
    101101                                        end
     
    104104                        end
    105105                end % }}}
    106                 function obj = setdefaultparameters(obj) % {{{
     106                function self = setdefaultparameters(self) % {{{
    107107
    108108                        %damage parameters:
    109                         obj.isdamage=0;
    110                         obj.D=0;
    111                         obj.law=0;
    112                        
    113                         obj.max_damage=1-1e-5; %if damage reaches 1, solve becomes singular, as viscosity becomes nil
     109                        self.isdamage=0;
     110                        self.D=0;
     111                        self.law=0;
     112                       
     113                        self.max_damage=1-1e-5; %if damage reaches 1, solve becomes singular, as viscosity becomes nil
    114114               
    115115                        %Type of stabilization used
    116                         obj.stabilization=2;
     116                        self.stabilization=2;
    117117                       
    118118                        %Maximum number of iterations
    119                         obj.maxiter=100;
     119                        self.maxiter=100;
    120120
    121121                        %finite element interpolation
    122                         obj.elementinterp='P1';
     122                        self.elementinterp='P1';
    123123
    124124                        %factor used to compute the values of the penalties: kappa=max(stiffness matrix)*10^penalty_factor
    125                         obj.penalty_factor=3;
     125                        self.penalty_factor=3;
    126126                       
    127127                        %stabilize unstable damage constraints that keep zigzagging after n iteration (default is 0, no stabilization)
    128                         obj.penalty_lock=0;
     128                        self.penalty_lock=0;
    129129                       
    130130                        %threshold to declare convergence of thermal solution (default is 0)
    131                         obj.penalty_threshold=0;
     131                        self.penalty_threshold=0;
    132132               
    133133                        %damage evolution parameters
    134                         obj.stress_threshold=0;
    135                         obj.healing=0;
    136                         obj.c1=0;
    137                         obj.c2=0;
    138                         obj.c3=0;
    139                         obj.c4=0;
    140                         obj.equiv_stress=0;
     134                        self.stress_threshold=0;
     135                        self.healing=0;
     136                        self.c1=0;
     137                        self.c2=0;
     138                        self.c3=0;
     139                        self.c4=0;
     140                        self.equiv_stress=0;
    141141
    142142                         %output default:
    143                          obj.requested_outputs={'default'};
    144 
    145                 end % }}}
    146                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     143                         self.requested_outputs={'default'};
     144
     145                end % }}}
     146                function md = checkconsistency(self,md,solution,analyses) % {{{
    147147                       
    148148                        md = checkfield(md,'fieldname','damage.isdamage','values',[1,0]);
    149                         if obj.isdamage,
     149                        if self.isdamage,
    150150                                md = checkfield(md,'fieldname','damage.law','numel',[1],'values',[0,1,2]);
    151                                 md = checkfield(md,'fieldname','damage.D','>=',0,'<=',obj.max_damage,'size',[md.mesh.numberofvertices 1]);
     151                                md = checkfield(md,'fieldname','damage.D','>=',0,'<=',self.max_damage,'size',[md.mesh.numberofvertices 1]);
    152152                                md = checkfield(md,'fieldname','damage.spcdamage','timeseries',1);
    153153                                md = checkfield(md,'fieldname','damage.max_damage','<',1,'>=',0);
     
    166166                                md = checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0 1]);
    167167                                md = checkfield(md,'fieldname','damage.requested_outputs','stringrow',1);
    168                         elseif (obj.law~=0),
     168                        elseif (self.law~=0),
    169169                                if (solution==DamageEvolutionSolutionEnum),
    170170                                        error('Invalid evolution law (md.damage.law) for a damage solution');
     
    180180                        end
    181181                end % }}}
    182                 function disp(obj) % {{{
     182                function disp(self) % {{{
    183183                        disp(sprintf('   Damage:\n'));
    184184
    185                         fielddisplay(obj,'isdamage','is damage mechanics being used? {true,false}');
    186                         if obj.isdamage,
    187                                 fielddisplay(obj,'law','damage law {''0: undamaged'',''1: pralong''}');
    188                                 fielddisplay(obj,'D','damage tensor (scalar)');
    189                                 fielddisplay(obj,'spcdamage','damage constraints (NaN means no constraint)');
    190                                 fielddisplay(obj,'max_damage','maximum possible damage (0<=max_damage<1)');
     185                        fielddisplay(self,'isdamage','is damage mechanics being used? {true,false}');
     186                        if self.isdamage,
     187                                fielddisplay(self,'law','damage law {''0: undamaged'',''1: pralong''}');
     188                                fielddisplay(self,'D','damage tensor (scalar)');
     189                                fielddisplay(self,'spcdamage','damage constraints (NaN means no constraint)');
     190                                fielddisplay(self,'max_damage','maximum possible damage (0<=max_damage<1)');
    191191                               
    192                                 fielddisplay(obj,'stabilization','0: no, 1: artificial_diffusivity, 2: SUPG');
    193                                 fielddisplay(obj,'maxiter','maximum number of non linear iterations');
    194                                 fielddisplay(obj,'elementinterp','interpolation scheme for finite elements {''P1'',''P2''}');
    195                                 fielddisplay(obj,'penalty_lock','stabilize unstable damage constraints that keep zigzagging after n iteration (default is 0, no stabilization)');
    196                                 fielddisplay(obj,'penalty_threshold','threshold to declare convergence of damage evolution solution (default is 0)');
    197                                 fielddisplay(obj,'penalty_factor','scaling exponent (default is 3)');
    198                                 fielddisplay(obj,'c1','damage parameter 1');
    199                                 fielddisplay(obj,'c2','damage parameter 2');
    200                                 fielddisplay(obj,'c3','damage parameter 3');
    201                                 fielddisplay(obj,'c4','damage parameter 4');
    202                                 fielddisplay(obj,'healing','damage healing parameter');
    203                                 fielddisplay(obj,'stress_threshold','damage stress threshold [Pa]');
    204                                 fielddisplay(obj,'equiv_stress','0: von Mises, 1: max principal');
    205                                 fielddisplay(obj,'requested_outputs','additional outputs requested');
    206                         end
    207 
    208                 end % }}}
    209                 function marshall(obj,md,fid) % {{{
    210                
    211                         WriteData(fid,'object',obj,'fieldname','isdamage','format','Boolean');
    212                         if obj.isdamage,
    213                                 WriteData(fid,'object',obj,'fieldname','law','format','Integer');
    214                                 WriteData(fid,'object',obj,'fieldname','D','format','DoubleMat','mattype',1);
    215                                 WriteData(fid,'object',obj,'fieldname','spcdamage','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    216                                 WriteData(fid,'object',obj,'fieldname','max_damage','format','Double');
    217 
    218                                 WriteData(fid,'object',obj,'fieldname','stabilization','format','Integer');
    219                                 WriteData(fid,'object',obj,'fieldname','maxiter','format','Integer');
    220                                 WriteData(fid,'enum',DamageElementinterpEnum(),'data',StringToEnum(obj.elementinterp),'format','Integer');
    221                                 WriteData(fid,'object',obj,'fieldname','penalty_threshold','format','Integer');
    222                                 WriteData(fid,'object',obj,'fieldname','penalty_lock','format','Integer');
    223                                 WriteData(fid,'object',obj,'fieldname','penalty_factor','format','Double');
    224                                 WriteData(fid,'object',obj,'fieldname','c1','format','Double');
    225                                 WriteData(fid,'object',obj,'fieldname','c2','format','Double');
    226                                 WriteData(fid,'object',obj,'fieldname','c3','format','Double');
    227                                 WriteData(fid,'object',obj,'fieldname','c4','format','Double');
    228                                 WriteData(fid,'object',obj,'fieldname','stress_threshold','format','Double');
    229                                 WriteData(fid,'object',obj,'fieldname','healing','format','Double');
    230                                 WriteData(fid,'object',obj,'fieldname','equiv_stress','format','Integer');
     192                                fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: SUPG');
     193                                fielddisplay(self,'maxiter','maximum number of non linear iterations');
     194                                fielddisplay(self,'elementinterp','interpolation scheme for finite elements {''P1'',''P2''}');
     195                                fielddisplay(self,'penalty_lock','stabilize unstable damage constraints that keep zigzagging after n iteration (default is 0, no stabilization)');
     196                                fielddisplay(self,'penalty_threshold','threshold to declare convergence of damage evolution solution (default is 0)');
     197                                fielddisplay(self,'penalty_factor','scaling exponent (default is 3)');
     198                                fielddisplay(self,'c1','damage parameter 1');
     199                                fielddisplay(self,'c2','damage parameter 2');
     200                                fielddisplay(self,'c3','damage parameter 3');
     201                                fielddisplay(self,'c4','damage parameter 4');
     202                                fielddisplay(self,'healing','damage healing parameter');
     203                                fielddisplay(self,'stress_threshold','damage stress threshold [Pa]');
     204                                fielddisplay(self,'equiv_stress','0: von Mises, 1: max principal');
     205                                fielddisplay(self,'requested_outputs','additional outputs requested');
     206                        end
     207
     208                end % }}}
     209                function marshall(self,md,fid) % {{{
     210               
     211                        WriteData(fid,'object',self,'fieldname','isdamage','format','Boolean');
     212                        if self.isdamage,
     213                                WriteData(fid,'object',self,'fieldname','law','format','Integer');
     214                                WriteData(fid,'object',self,'fieldname','D','format','DoubleMat','mattype',1);
     215                                WriteData(fid,'object',self,'fieldname','spcdamage','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
     216                                WriteData(fid,'object',self,'fieldname','max_damage','format','Double');
     217
     218                                WriteData(fid,'object',self,'fieldname','stabilization','format','Integer');
     219                                WriteData(fid,'object',self,'fieldname','maxiter','format','Integer');
     220                                WriteData(fid,'enum',DamageElementinterpEnum(),'data',StringToEnum(self.elementinterp),'format','Integer');
     221                                WriteData(fid,'object',self,'fieldname','penalty_threshold','format','Integer');
     222                                WriteData(fid,'object',self,'fieldname','penalty_lock','format','Integer');
     223                                WriteData(fid,'object',self,'fieldname','penalty_factor','format','Double');
     224                                WriteData(fid,'object',self,'fieldname','c1','format','Double');
     225                                WriteData(fid,'object',self,'fieldname','c2','format','Double');
     226                                WriteData(fid,'object',self,'fieldname','c3','format','Double');
     227                                WriteData(fid,'object',self,'fieldname','c4','format','Double');
     228                                WriteData(fid,'object',self,'fieldname','stress_threshold','format','Double');
     229                                WriteData(fid,'object',self,'fieldname','healing','format','Double');
     230                                WriteData(fid,'object',self,'fieldname','equiv_stress','format','Integer');
    231231                        end
    232232
    233233                        %process requested outputs
    234                         outputs = obj.requested_outputs;
     234                        outputs = self.requested_outputs;
    235235                        pos = find(ismember(outputs,'default'));
    236236                        if ~isempty(pos),
    237237                                outputs(pos) = [];                         %remove 'default' from outputs
    238                                 outputs      = [outputs defaultoutputs(obj,md)]; %add defaults
    239                         end
    240                         if obj.isdamage,
     238                                outputs      = [outputs defaultoutputs(self,md)]; %add defaults
     239                        end
     240                        if self.isdamage,
    241241                                WriteData(fid,'data',outputs,'enum',DamageEvolutionRequestedOutputsEnum,'format','StringArray');
    242242                        end
  • issm/trunk-jpl/src/m/classes/debug.m

    r17931 r19040  
    1111        end
    1212        methods
    13         function createxml(obj,fid) % {{{
     13        function createxml(self,fid) % {{{
    1414            fprintf(fid, '\n\n');
    1515            fprintf(fid, '%s\n', '<!-- Debug -->');
     
    2020            fprintf(fid,'%s\n%s\n','       <option value="1" type="string" default="false"> </option>','</parameter>');
    2121         
    22             fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="gprof" type="',              class(obj.gprof),'" optional="false">',              '     <section name="debug" />','        <option value="',convert2str(obj.gprof),'" type="string" default="true"></option>','     <help> use gnu-profiler to find out where the time is spent </help>','</parameter>');
    23             fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n',    '<parameter key ="profiling" type="',              class(obj.profiling),'" optional="false">',              '     <section name="debug" />','        <option value="',convert2str(obj.profiling),'" type="string" default="true"></option>','     <help> enables profiling (memory, flops, time) </help>','</parameter>');
     22            fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="gprof" type="',              class(self.gprof),'" optional="false">',              '     <section name="debug" />','        <option value="',convert2str(self.gprof),'" type="string" default="true"></option>','     <help> use gnu-profiler to find out where the time is spent </help>','</parameter>');
     23            fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n',    '<parameter key ="profiling" type="',              class(self.profiling),'" optional="false">',              '     <section name="debug" />','        <option value="',convert2str(self.profiling),'" type="string" default="true"></option>','     <help> enables profiling (memory, flops, time) </help>','</parameter>');
    2424        end % }}}
    25                 function obj = debug(varargin) % {{{
     25                function self = debug(varargin) % {{{
    2626                        switch nargin
    2727                                case 0
    28                                         obj=setdefaultparameters(obj);
     28                                        self=setdefaultparameters(self);
    2929                                otherwise
    3030                                        error('constructor not supported');
    3131                                end
    3232                        end % }}}
    33                 function obj = setdefaultparameters(obj) % {{{
     33                function self = setdefaultparameters(self) % {{{
    3434
    3535                end % }}}
    36                 function disp(obj) % {{{
     36                function disp(self) % {{{
    3737                        disp(sprintf('   debug parameters:'));
    3838
    39                         fielddisplay(obj,'valgrind','use Valgrind to debug (0 or 1)');
    40                         fielddisplay(obj,'gprof','use gnu-profiler to find out where the time is spent');
    41                         fielddisplay(obj,'profiling','enables profiling (memory, flops, time)');
     39                        fielddisplay(self,'valgrind','use Valgrind to debug (0 or 1)');
     40                        fielddisplay(self,'gprof','use gnu-profiler to find out where the time is spent');
     41                        fielddisplay(self,'profiling','enables profiling (memory, flops, time)');
    4242
    4343                end % }}}
    44                 function marshall(obj,md,fid) % {{{
    45                         WriteData(fid,'object',obj,'fieldname','profiling','format','Boolean');
     44                function marshall(self,md,fid) % {{{
     45                        WriteData(fid,'object',self,'fieldname','profiling','format','Boolean');
    4646                end % }}}
    4747        end
  • issm/trunk-jpl/src/m/classes/dependent.m

    r13862 r19040  
    1515        end
    1616        methods
    17                 function obj = dependent(varargin) % {{{
     17                function self = dependent(varargin) % {{{
    1818
    1919                        %use provided options to change fields
    2020                        options=pairoptions(varargin{:});
    2121
    22                         obj.name=getfieldvalue(options,'name','');
    23                         obj.type=getfieldvalue(options,'type','');
    24                         obj.exp=getfieldvalue(options,'exp','');
    25                         obj.segments=getfieldvalue(options,'segments',[]);
    26                         obj.index=getfieldvalue(options,'index',-1);
    27                         obj.nods=getfieldvalue(options,'nods',0);
     22                        self.name=getfieldvalue(options,'name','');
     23                        self.type=getfieldvalue(options,'type','');
     24                        self.exp=getfieldvalue(options,'exp','');
     25                        self.segments=getfieldvalue(options,'segments',[]);
     26                        self.index=getfieldvalue(options,'index',-1);
     27                        self.nods=getfieldvalue(options,'nods',0);
    2828
    2929                        %if name is mass flux:
    30                         if strcmpi(obj.name,'MassFlux'),
     30                        if strcmpi(self.name,'MassFlux'),
    3131                                %make sure that we supplied a file and that it exists!
    32                                 if exist(obj.exp)~=2,
     32                                if exist(self.exp)~=2,
    3333                                        error('dependent checkconsistency: specified ''exp'' file does not exist!');
    3434                                end
    3535                                %process the file and retrieve segments
    3636                                mesh=getfieldvalue(options,'mesh');
    37                                 obj.segments=MeshProfileIntersection(mesh.elements,mesh.x,mesh.y,obj.exp);
     37                                self.segments=MeshProfileIntersection(mesh.elements,mesh.x,mesh.y,self.exp);
    3838                        end
    3939                end
    4040                %}}}
    41                 function obj = setdefaultparameters(obj) % {{{
     41                function self = setdefaultparameters(self) % {{{
    4242                        %do nothing
    4343                end % }}}
    44                 function md = checkconsistency(obj,md,solution,analyses) % {{{
    45                         if strcmpi(obj.name,'MassFlux'),
    46                                 if isempty(obj.segments),
     44                function md = checkconsistency(self,md,solution,analyses) % {{{
     45                        if strcmpi(self.name,'MassFlux'),
     46                                if isempty(self.segments),
    4747                                        error('dependent checkconsistency error: need segments to compute this dependent response');
    4848                                end
    49                                 if obj.index<=0,
     49                                if self.index<=0,
    5050                                        error('dependent checkconsistency error: index for segments should be >=1');
    5151                                end
    5252                        end
    53                         if ~isnan(obj.fos_reverse_index),
     53                        if ~isnan(self.fos_reverse_index),
    5454                                if ~strcmpi(driver,'fos_reverse'),
    5555                                        error('cannot declare a dependent with a fos_reverse_index when the driver is not fos_reverse!');
    5656                                end
    57                                 if obj.nods==0,
     57                                if self.nods==0,
    5858                                        error('dependent checkconsistency error: nods should be set to the size of the independent variable');
    5959                                end
     
    6161
    6262                end % }}}
    63                 function disp(obj) % {{{
     63                function disp(self) % {{{
    6464                        disp(sprintf('   dependent variable:'));
    6565
    66                         fielddisplay(obj,'name','variable name (must match corresponding Enum)');
    67                         fielddisplay(obj,'type','type of variable (''vertex'' or ''scalar'')');
     66                        fielddisplay(self,'name','variable name (must match corresponding Enum)');
     67                        fielddisplay(self,'type','type of variable (''vertex'' or ''scalar'')');
    6868
    69                         if ~isnan(obj.fos_reverse_index),
    70                                 fielddisplay(obj,'fos_reverse_index','index for fos_reverse driver of ADOLC');
     69                        if ~isnan(self.fos_reverse_index),
     70                                fielddisplay(self,'fos_reverse_index','index for fos_reverse driver of ADOLC');
    7171                        end
    72                         if ~isempty(obj.exp),
    73                                 fielddisplay(obj,'exp','file needed to compute dependent variable');
    74                                 fielddisplay(obj,'segments','mass flux segments');
     72                        if ~isempty(self.exp),
     73                                fielddisplay(self,'exp','file needed to compute dependent variable');
     74                                fielddisplay(self,'segments','mass flux segments');
    7575                        end
    7676
    7777                end % }}}
    78                 function scalar=typetoscalar(obj) % {{{
    79                         if strcmpi(obj.type,'scalar'),
     78                function scalar=typetoscalar(self) % {{{
     79                        if strcmpi(self.type,'scalar'),
    8080                                scalar=0;
    81                         elseif strcmpi(obj.type,'vertex'),
     81                        elseif strcmpi(self.type,'vertex'),
    8282                                scalar=1;
    8383                        end
  • issm/trunk-jpl/src/m/classes/flaim.m

    r17720 r19040  
    2121        end
    2222        methods
    23                 function createxml(obj,fid) % {{{
     23                function createxml(self,fid) % {{{
    2424            fprintf(fid, '<!-- flaim -->\n');           
    2525                   
    2626            % Input
    2727            fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Input:">','<section name="flaim" />');                   
    28             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="targets" type="',class(obj.targets),'" default="',convert2str(obj.targets),'">','     <section name="flaim" />','     <help> name of kml output targets file </help>','  </parameter>');
    29             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="tracks" type="',class(obj.tracks),'" default="',convert2str(obj.tracks),'">','     <section name="flaim" />','     <help> name of kml input tracks file </help>','  </parameter>');
    30             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="flightreqs" type="',class(obj.flightreqs),'" default="',convert2str(obj.flightreqs),'">','     <section name="flaim" />','     <help> structure of kml flight requirements (not used yet) </help>','  </parameter>');
    31             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="criterion" type="',class(obj.criterion),'" default="',convert2str(obj.criterion),'">','     <section name="flaim" />','     <help> element or nodal criterion for flight path evaluation (metric) </help>','  </parameter>');
     28            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="targets" type="',class(self.targets),'" default="',convert2str(self.targets),'">','     <section name="flaim" />','     <help> name of kml output targets file </help>','  </parameter>');
     29            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="tracks" type="',class(self.tracks),'" default="',convert2str(self.tracks),'">','     <section name="flaim" />','     <help> name of kml input tracks file </help>','  </parameter>');
     30            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="flightreqs" type="',class(self.flightreqs),'" default="',convert2str(self.flightreqs),'">','     <section name="flaim" />','     <help> structure of kml flight requirements (not used yet) </help>','  </parameter>');
     31            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="criterion" type="',class(self.criterion),'" default="',convert2str(self.criterion),'">','     <section name="flaim" />','     <help> element or nodal criterion for flight path evaluation (metric) </help>','  </parameter>');
    3232                fprintf(fid,'%s\n%s\n','</frame>');   
    3333           
    3434            % Arguments
    3535            fprintf(fid,'%s\n%s\n%s\n','<frame key="2" label="Arguments:">','<section name="flaim" />');                   
    36             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="gridsatequator" type="',class(obj.gridsatequator),'" default="',convert2str(obj.gridsatequator),'">','     <section name="flaim" />','     <help> number of grids at equator (determines resolution) </help>','  </parameter>');
    37             fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n','  <parameter key ="usevalueordering" type="',class(obj.usevalueordering),'" optional="false">','     <section name="flaim" />','         <option value="',convert2str(obj.usevalueordering),'" type="string" default="true"></option>','     <help> flag to consider target values for flight path evaluation </help>','  </parameter>');
    38             fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n','  <parameter key ="split_antimeridian" type="',class(obj.split_antimeridian),'" optional="false">','     <section name="flaim" />','         <option value="',convert2str(obj.split_antimeridian),'" type="string" default="true"></option>','     <help> flag to split polygons on the antimeridian </help>','  </parameter>');
     36            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="gridsatequator" type="',class(self.gridsatequator),'" default="',convert2str(self.gridsatequator),'">','     <section name="flaim" />','     <help> number of grids at equator (determines resolution) </help>','  </parameter>');
     37            fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n','  <parameter key ="usevalueordering" type="',class(self.usevalueordering),'" optional="false">','     <section name="flaim" />','         <option value="',convert2str(self.usevalueordering),'" type="string" default="true"></option>','     <help> flag to consider target values for flight path evaluation </help>','  </parameter>');
     38            fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n','  <parameter key ="split_antimeridian" type="',class(self.split_antimeridian),'" optional="false">','     <section name="flaim" />','         <option value="',convert2str(self.split_antimeridian),'" type="string" default="true"></option>','     <help> flag to split polygons on the antimeridian </help>','  </parameter>');
    3939            fprintf(fid,'%s\n%s\n','</frame>');   
    4040           
    4141            % Optimization
    4242            fprintf(fid,'%s\n%s\n%s\n','<frame key="3" label="Optimization:">','<section name="flaim" />');                   
    43             fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n','  <parameter key ="path_optimize" type="',class(obj.path_optimize),'" optional="false">','     <section name="flaim" />','         <option value="',convert2str(obj.path_optimize),'" type="string" default="true"></option>','     <help> optimize? (default false) </help>','  </parameter>');
    44             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="opt_ndir" type="',class(obj.opt_ndir),'" default="',convert2str(obj.opt_ndir),'">','     <section name="flaim" />','     <help> number of directions to test when moving a point.  If this value = 1, a random direction is tested. A value > 1 results in directions equally spaced from [0, 2*PI] being tested. For example, 4 would result in directions [0, PI/2, PI, 3PI/2] </help>','  </parameter>');
    45             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="opt_dist" type="',class(obj.opt_dist),'" default="',convert2str(obj.opt_dist),'">','     <section name="flaim" />','     <help> specifies the distance in km (default 25) to move a randomly selected path point on each iteration </help>','  </parameter>');
    46             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="opt_niter" type="',class(obj.opt_niter),'" default="',convert2str(obj.opt_niter),'">','     <section name="flaim" />','     <help> number of iterations (default 30,000) to run for flightplan optimization, i.e. the number of times to randomly select a point and move it. </help>','  </parameter>');
     43            fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n','  <parameter key ="path_optimize" type="',class(self.path_optimize),'" optional="false">','     <section name="flaim" />','         <option value="',convert2str(self.path_optimize),'" type="string" default="true"></option>','     <help> optimize? (default false) </help>','  </parameter>');
     44            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="opt_ndir" type="',class(self.opt_ndir),'" default="',convert2str(self.opt_ndir),'">','     <section name="flaim" />','     <help> number of directions to test when moving a point.  If this value = 1, a random direction is tested. A value > 1 results in directions equally spaced from [0, 2*PI] being tested. For example, 4 would result in directions [0, PI/2, PI, 3PI/2] </help>','  </parameter>');
     45            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="opt_dist" type="',class(self.opt_dist),'" default="',convert2str(self.opt_dist),'">','     <section name="flaim" />','     <help> specifies the distance in km (default 25) to move a randomly selected path point on each iteration </help>','  </parameter>');
     46            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="opt_niter" type="',class(self.opt_niter),'" default="',convert2str(self.opt_niter),'">','     <section name="flaim" />','     <help> number of iterations (default 30,000) to run for flightplan optimization, i.e. the number of times to randomly select a point and move it. </help>','  </parameter>');
    4747                fprintf(fid,'%s\n%s\n','</frame>');     
    4848           
    4949            % Output
    5050            fprintf(fid,'%s\n%s\n%s\n','<frame key="4" label="Output:">','<section name="flaim" />');                   
    51             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="solution" type="',class(obj.solution),'" default="',convert2str(obj.solution),'">','     <section name="flaim" />','     <help> name of kml solution file </help>','  </parameter>');
    52             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="quality" type="',class(obj.quality),'" default="',convert2str(obj.quality),'">','     <section name="flaim" />','     <help> quality of kml solution </help>','  </parameter>');
     51            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="solution" type="',class(self.solution),'" default="',convert2str(self.solution),'">','     <section name="flaim" />','     <help> name of kml solution file </help>','  </parameter>');
     52            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="quality" type="',class(self.quality),'" default="',convert2str(self.quality),'">','     <section name="flaim" />','     <help> quality of kml solution </help>','  </parameter>');
    5353            fprintf(fid,'%s\n%s\n','</frame>');             
    5454       
    5555        end % }}}
    56                 function obj = flaim(varargin) % {{{
     56                function self = flaim(varargin) % {{{
    5757                        switch nargin
    5858                                case 0
    59                                         obj=setdefaultparameters(obj);
     59                                        self=setdefaultparameters(self);
    6060                                otherwise
    6161                                        error('constructor not supported');
    6262                        end
    6363                end % }}}
    64                 function obj = setdefaultparameters(obj) % {{{
     64                function self = setdefaultparameters(self) % {{{
    6565
    6666                end % }}}
    67                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     67                function md = checkconsistency(self,md,solution,analyses) % {{{
    6868
    6969                        %Early return
     
    7878
    7979                end % }}}
    80                 function disp(obj) % {{{
     80                function disp(self) % {{{
    8181
    8282                        disp(sprintf('   FLAIM - Flight Line Adaptation using Ice sheet Modeling:'));
    8383
    8484                        disp(sprintf('\n      Input:'));
    85                         fielddisplay(obj,'targets'            ,'name of kml output targets file ');
    86                         fielddisplay(obj,'tracks'             ,'name of kml input tracks file ');
    87                         fielddisplay(obj,'flightreqs'         ,'structure of kml flight requirements (not used yet)');
    88                         fielddisplay(obj,'criterion'          ,'element or nodal criterion for flight path evaluation (metric)');
     85                        fielddisplay(self,'targets'            ,'name of kml output targets file ');
     86                        fielddisplay(self,'tracks'             ,'name of kml input tracks file ');
     87                        fielddisplay(self,'flightreqs'         ,'structure of kml flight requirements (not used yet)');
     88                        fielddisplay(self,'criterion'          ,'element or nodal criterion for flight path evaluation (metric)');
    8989
    9090                        disp(sprintf('\n      Arguments:'));
    91                         fielddisplay(obj,'gridsatequator'     ,'number of grids at equator (determines resolution)');
    92                         fielddisplay(obj,'usevalueordering'   ,'flag to consider target values for flight path evaluation');
    93                         fielddisplay(obj,'split_antimeridian' ,'flag to split polygons on the antimeridian');
     91                        fielddisplay(self,'gridsatequator'     ,'number of grids at equator (determines resolution)');
     92                        fielddisplay(self,'usevalueordering'   ,'flag to consider target values for flight path evaluation');
     93                        fielddisplay(self,'split_antimeridian' ,'flag to split polygons on the antimeridian');
    9494
    9595                        disp(sprintf('\n      Optimization:'));
    96                         fielddisplay(obj,'path_optimize'     ,'optimize? (default false)');
    97                         fielddisplay(obj,'opt_ndir'     ,{'number of directions to test when moving a point.  If this value = 1, a random direction is tested.',...
     96                        fielddisplay(self,'path_optimize'     ,'optimize? (default false)');
     97                        fielddisplay(self,'opt_ndir'     ,{'number of directions to test when moving a point.  If this value = 1, a random direction is tested.',...
    9898                                                                                          'A value > 1 results in directions equally spaced from [0, 2*PI] being tested.',...
    9999                                                                                          'For example, 4 would result in directions [0, PI/2, PI, 3PI/2].'});
    100                         fielddisplay(obj,'opt_dist'     ,'specifies the distance in km (default 25) to move a randomly selected path point on each iteration');
    101                         fielddisplay(obj,'opt_niter'     ,{'number of iterations (default 30,000) to run for flightplan optimization',...
     100                        fielddisplay(self,'opt_dist'     ,'specifies the distance in km (default 25) to move a randomly selected path point on each iteration');
     101                        fielddisplay(self,'opt_niter'     ,{'number of iterations (default 30,000) to run for flightplan optimization',...
    102102                                                                                           'i.e. the number of times to randomly select a point and move it.'});
    103103
    104104                        disp(sprintf('\n      Output:'));
    105                         fielddisplay(obj,'solution'           ,'name of kml solution file');
    106                         fielddisplay(obj,'quality'            ,'quality of kml solution');
     105                        fielddisplay(self,'solution'           ,'name of kml solution file');
     106                        fielddisplay(self,'quality'            ,'quality of kml solution');
    107107                end % }}}
    108108        end
  • issm/trunk-jpl/src/m/classes/flowequation.m

    r18475 r19040  
    2626        end
    2727        methods (Static)
    28                 function obj = loadobj(obj) % {{{
     28                function self = loadobj(self) % {{{
    2929                        % This function is directly called by matlab when a model object is
    3030                        % loaded. If the input is a struct it is an old version of this class and
     
    4444                        end
    4545
    46                         if isstruct(obj)
     46                        if isstruct(self)
    4747                                disp('Recovering flowequation from older version');
    48                                 objstruct = obj;
    49                                 obj = structtoobj(flowequation(),objstruct);
     48                                objstruct = self;
     49                                self = structtoobj(flowequation(),objstruct);
    5050
    5151                                %2013 July 23rd
    52                                 if isfield(objstruct,'ishutter'),      obj.isSIA     = objstruct.ishutter;       end;
    53                                 if isfield(objstruct,'ismacayeal'),    obj.isSSA     = objstruct.ismacayeal;     end;
    54                                 if isfield(objstruct,'ispattyn'),      obj.isHO      = objstruct.ispattyn;       end;
    55                                 if isfield(objstruct,'isstokes'),      obj.isFS      = objstruct.isstokes;       end;
    56                                 if isfield(objstruct,'bordermacayeal'),obj.borderSSA = objstruct.bordermacayeal; end;
    57                                 if isfield(objstruct,'borderpattyn'),  obj.borderHO  = objstruct.borderpattyn;   end;
    58                                 if isfield(objstruct,'borderstokes'),  obj.borderFS  = objstruct.borderstokes;   end;
     52                                if isfield(objstruct,'ishutter'),      self.isSIA     = objstruct.ishutter;       end;
     53                                if isfield(objstruct,'ismacayeal'),    self.isSSA     = objstruct.ismacayeal;     end;
     54                                if isfield(objstruct,'ispattyn'),      self.isHO      = objstruct.ispattyn;       end;
     55                                if isfield(objstruct,'isstokes'),      self.isFS      = objstruct.isstokes;       end;
     56                                if isfield(objstruct,'bordermacayeal'),self.borderSSA = objstruct.bordermacayeal; end;
     57                                if isfield(objstruct,'borderpattyn'),  self.borderHO  = objstruct.borderpattyn;   end;
     58                                if isfield(objstruct,'borderstokes'),  self.borderFS  = objstruct.borderstokes;   end;
    5959                        end
    6060
     
    6262        end
    6363        methods
    64                 function createxml(obj,fid) % {{{
     64                function createxml(self,fid) % {{{
    6565                        fprintf(fid, '\n\n');
    6666                        fprintf(fid, '%s\n', '<!-- flowequation -->');
    6767                        fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Flow equation parameters">','<section name="flowequation" />');                   
    6868
    69                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="isSIA" type="',              class(obj.isSIA),'" default="',                  convert2str(obj.isSIA),'">',              '     <section name="flowequation" />','     <help> is the Shallow Ice Approximation (SIA) used ? </help>','</parameter>');
    70                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="isSSA" type="',            class(obj.isSSA),'" default="',                convert2str(obj.isSSA),'">',   '     <section name="flowequation" />','     <help> is the Shelfy-Stream Approximation (SSA) used ? </help>','</parameter>');
    71                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="isL1L2" type="',      class(obj.isL1L2),'" default="',          convert2str(obj.isL1L2),'">',            '     <section name="flowequation" />','     <help> is the L1L2 approximation used ? </help>','</parameter>');
    72                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="isHO" type="',     class(obj.isHO),'" default="',         convert2str(obj.isHO),'">',            '     <section name="flowequation" />','     <help> is the Higher-Order (HO) approximation used ? </help>','</parameter>');
    73 
    74                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="isFS" type="',       class(obj.isFS),'" default="',              convert2str(obj.isFS),'">',              '     <section name="flowequation" />','     <help> are the Full-FS (FS) equations used ? </help>','</parameter>');
     69                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="isSIA" type="',              class(self.isSIA),'" default="',                  convert2str(self.isSIA),'">',              '     <section name="flowequation" />','     <help> is the Shallow Ice Approximation (SIA) used ? </help>','</parameter>');
     70                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="isSSA" type="',            class(self.isSSA),'" default="',                convert2str(self.isSSA),'">',   '     <section name="flowequation" />','     <help> is the Shelfy-Stream Approximation (SSA) used ? </help>','</parameter>');
     71                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="isL1L2" type="',      class(self.isL1L2),'" default="',          convert2str(self.isL1L2),'">',            '     <section name="flowequation" />','     <help> is the L1L2 approximation used ? </help>','</parameter>');
     72                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="isHO" type="',     class(self.isHO),'" default="',         convert2str(self.isHO),'">',            '     <section name="flowequation" />','     <help> is the Higher-Order (HO) approximation used ? </help>','</parameter>');
     73
     74                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="isFS" type="',       class(self.isFS),'" default="',              convert2str(self.isFS),'">',              '     <section name="flowequation" />','     <help> are the Full-FS (FS) equations used ? </help>','</parameter>');
    7575
    7676                        % fe_SSA drop-down (P1, P1bubble, P1bubblecondensed, P2)
     
    9898                        fprintf(fid,'%s\n%s\n','       <option value="TaylorHood" type="string" default="false"> </option>','</parameter>');
    9999
    100                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="vertex_equation" type="',      class(obj.vertex_equation),'" default="',            convert2str(obj.vertex_equation),'">',            '     <section name="flowequation" />','     <help> flow equation for each vertex </help>','</parameter>');
    101 
    102                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="element_equation" type="',            class(obj.element_equation),'" default="',              convert2str(obj.element_equation),'">',              '     <section name="flowequation" />','     <help> flow equation for each element </help>','</parameter>');
    103                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="borderSSA" type="', class(obj.borderSSA),'" default="',   convert2str(obj.borderSSA),'">',   '     <section name="flowequation" />','     <help> vertices on SSAs border (for tiling) </help>','</parameter>');
    104                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="borderHO" type="',          class(obj.borderHO),'" default="',            convert2str(obj.borderHO),'">',            '     <section name="flowequation" />','     <help> vertices on HOs border (for tiling) </help>','</parameter>');
    105                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',        '<parameter key ="borderFS" type="',          class(obj.borderFS),'" default="',            convert2str(obj.borderFS),'">',            '     <section name="flowequation" />','     <help> vertices on FS border (for tiling) </help>','</parameter>');
     100                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="vertex_equation" type="',      class(self.vertex_equation),'" default="',            convert2str(self.vertex_equation),'">',            '     <section name="flowequation" />','     <help> flow equation for each vertex </help>','</parameter>');
     101
     102                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="element_equation" type="',            class(self.element_equation),'" default="',              convert2str(self.element_equation),'">',              '     <section name="flowequation" />','     <help> flow equation for each element </help>','</parameter>');
     103                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="borderSSA" type="', class(self.borderSSA),'" default="',   convert2str(self.borderSSA),'">',   '     <section name="flowequation" />','     <help> vertices on SSAs border (for tiling) </help>','</parameter>');
     104                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="borderHO" type="',          class(self.borderHO),'" default="',            convert2str(self.borderHO),'">',            '     <section name="flowequation" />','     <help> vertices on HOs border (for tiling) </help>','</parameter>');
     105                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',        '<parameter key ="borderFS" type="',          class(self.borderFS),'" default="',            convert2str(self.borderFS),'">',            '     <section name="flowequation" />','     <help> vertices on FS border (for tiling) </help>','</parameter>');
    106106
    107107                        fprintf(fid,'%s\n%s\n','</frame>');
    108108                end % }}}
    109                 function obj = flowequation(varargin) % {{{
     109                function self = flowequation(varargin) % {{{
    110110                        switch nargin
    111111                                case 0
    112                                         obj=setdefaultparameters(obj);
     112                                        self=setdefaultparameters(self);
    113113                                otherwise
    114114                                        error('constructor not supported');
    115115                        end
    116116                end % }}}
    117                 function obj = setdefaultparameters(obj) % {{{
     117                function self = setdefaultparameters(self) % {{{
    118118
    119119                        %P1 for SSA
    120                         obj.fe_SSA= 'P1';
     120                        self.fe_SSA= 'P1';
    121121
    122122                        %P1 for HO
    123                         obj.fe_HO= 'P1';
     123                        self.fe_HO= 'P1';
    124124
    125125                        %MINI condensed element for FS by default
    126                         obj.fe_FS = 'MINIcondensed';
    127                 end % }}}
    128                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     126                        self.fe_FS = 'MINIcondensed';
     127                end % }}}
     128                function md = checkconsistency(self,md,solution,analyses) % {{{
    129129
    130130
     
    160160                                error('Case not supported yet');
    161161                        end
    162                         if ~(obj.isSIA || obj.isSSA || obj.isL1L2 || obj.isHO || obj.isFS),
     162                        if ~(self.isSIA || self.isSSA || self.isL1L2 || self.isHO || self.isFS),
    163163                                md = checkmessage(md,['no element types set for this model']);
    164164                        end
    165165                        if ismember(StressbalanceSIAAnalysisEnum(),analyses),
    166                                 if any(obj.element_equation==1),
    167                                         if(obj.vertex_equation & md.mask.groundedice_levelset<0.),
     166                                if any(self.element_equation==1),
     167                                        if(self.vertex_equation & md.mask.groundedice_levelset<0.),
    168168                                                disp(sprintf('\n !!! Warning: SIA''s model is not consistent on ice shelves !!!\n'));
    169169                                        end
     
    172172
    173173                end % }}}
    174                 function disp(obj) % {{{
     174                function disp(self) % {{{
    175175                        disp(sprintf('   flow equation parameters:'));
    176176
    177                         fielddisplay(obj,'isSIA','is the Shallow Ice Approximation (SIA) used ?');
    178                         fielddisplay(obj,'isSSA','is the Shelfy-Stream Approximation (SSA) used ?');
    179                         fielddisplay(obj,'isL1L2','is the L1L2 approximation used ?');
    180                         fielddisplay(obj,'isHO','is the Higher-Order (HO) approximation used ?');
    181                         fielddisplay(obj,'isFS','are the Full-FS (FS) equations used ?');
    182                         fielddisplay(obj,'fe_SSA','Finite Element for SSA  ''P1'', ''P1bubble'' ''P1bubblecondensed'' ''P2''');
    183                         fielddisplay(obj,'fe_HO', 'Finite Element for HO   ''P1'' ''P1bubble'' ''P1bubblecondensed'' ''P1xP2'' ''P2xP1'' ''P2''');
    184                         fielddisplay(obj,'fe_FS', 'Finite Element for FS   ''P1P1'' (debugging only) ''P1P1GLS'' ''MINIcondensed'' ''MINI'' ''TaylorHood'' ''XTaylorHood''');
    185                         fielddisplay(obj,'vertex_equation','flow equation for each vertex');
    186                         fielddisplay(obj,'element_equation','flow equation for each element');
    187                         fielddisplay(obj,'borderSSA','vertices on SSA''s border (for tiling)');
    188                         fielddisplay(obj,'borderHO','vertices on HO''s border (for tiling)');
    189                         fielddisplay(obj,'borderFS','vertices on FS'' border (for tiling)');
    190 
    191                 end % }}}
    192                 function marshall(obj,md,fid) % {{{
    193                         WriteData(fid,'object',obj,'fieldname','isSIA','format','Boolean');
    194                         WriteData(fid,'object',obj,'fieldname','isSSA','format','Boolean');
    195                         WriteData(fid,'object',obj,'fieldname','isL1L2','format','Boolean');
    196                         WriteData(fid,'object',obj,'fieldname','isHO','format','Boolean');
    197                         WriteData(fid,'object',obj,'fieldname','isFS','format','Boolean');
    198                         WriteData(fid,'enum',FlowequationFeSSAEnum(),'data',StringToEnum(obj.fe_SSA),'format','Integer');
    199                         WriteData(fid,'enum',FlowequationFeHOEnum() ,'data',StringToEnum(obj.fe_HO) ,'format','Integer');
    200                         WriteData(fid,'enum',FlowequationFeFSEnum() ,'data',StringToEnum(obj.fe_FS) ,'format','Integer');
    201                         WriteData(fid,'enum',AugmentedLagrangianREnum(),'data',obj.augmented_lagrangian_r ,'format','Double');
    202                         WriteData(fid,'enum',AugmentedLagrangianRhopEnum(),'data',obj.augmented_lagrangian_rhop ,'format','Double');
    203                         WriteData(fid,'enum',AugmentedLagrangianRlambdaEnum(),'data',obj.augmented_lagrangian_rlambda ,'format','Double');
    204                         WriteData(fid,'enum',AugmentedLagrangianRholambdaEnum(),'data',obj.augmented_lagrangian_rholambda ,'format','Double');
    205                         WriteData(fid,'enum',AugmentedLagrangianThetaEnum() ,'data',obj.XTH_theta ,'format','Double');
    206                         WriteData(fid,'object',obj,'fieldname','borderSSA','format','DoubleMat','mattype',1);
    207                         WriteData(fid,'object',obj,'fieldname','borderHO','format','DoubleMat','mattype',1);
    208                         WriteData(fid,'object',obj,'fieldname','borderFS','format','DoubleMat','mattype',1);
     177                        fielddisplay(self,'isSIA','is the Shallow Ice Approximation (SIA) used ?');
     178                        fielddisplay(self,'isSSA','is the Shelfy-Stream Approximation (SSA) used ?');
     179                        fielddisplay(self,'isL1L2','is the L1L2 approximation used ?');
     180                        fielddisplay(self,'isHO','is the Higher-Order (HO) approximation used ?');
     181                        fielddisplay(self,'isFS','are the Full-FS (FS) equations used ?');
     182                        fielddisplay(self,'fe_SSA','Finite Element for SSA  ''P1'', ''P1bubble'' ''P1bubblecondensed'' ''P2''');
     183                        fielddisplay(self,'fe_HO', 'Finite Element for HO   ''P1'' ''P1bubble'' ''P1bubblecondensed'' ''P1xP2'' ''P2xP1'' ''P2''');
     184                        fielddisplay(self,'fe_FS', 'Finite Element for FS   ''P1P1'' (debugging only) ''P1P1GLS'' ''MINIcondensed'' ''MINI'' ''TaylorHood'' ''XTaylorHood''');
     185                        fielddisplay(self,'vertex_equation','flow equation for each vertex');
     186                        fielddisplay(self,'element_equation','flow equation for each element');
     187                        fielddisplay(self,'borderSSA','vertices on SSA''s border (for tiling)');
     188                        fielddisplay(self,'borderHO','vertices on HO''s border (for tiling)');
     189                        fielddisplay(self,'borderFS','vertices on FS'' border (for tiling)');
     190
     191                end % }}}
     192                function marshall(self,md,fid) % {{{
     193                        WriteData(fid,'object',self,'fieldname','isSIA','format','Boolean');
     194                        WriteData(fid,'object',self,'fieldname','isSSA','format','Boolean');
     195                        WriteData(fid,'object',self,'fieldname','isL1L2','format','Boolean');
     196                        WriteData(fid,'object',self,'fieldname','isHO','format','Boolean');
     197                        WriteData(fid,'object',self,'fieldname','isFS','format','Boolean');
     198                        WriteData(fid,'enum',FlowequationFeSSAEnum(),'data',StringToEnum(self.fe_SSA),'format','Integer');
     199                        WriteData(fid,'enum',FlowequationFeHOEnum() ,'data',StringToEnum(self.fe_HO) ,'format','Integer');
     200                        WriteData(fid,'enum',FlowequationFeFSEnum() ,'data',StringToEnum(self.fe_FS) ,'format','Integer');
     201                        WriteData(fid,'enum',AugmentedLagrangianREnum(),'data',self.augmented_lagrangian_r ,'format','Double');
     202                        WriteData(fid,'enum',AugmentedLagrangianRhopEnum(),'data',self.augmented_lagrangian_rhop ,'format','Double');
     203                        WriteData(fid,'enum',AugmentedLagrangianRlambdaEnum(),'data',self.augmented_lagrangian_rlambda ,'format','Double');
     204                        WriteData(fid,'enum',AugmentedLagrangianRholambdaEnum(),'data',self.augmented_lagrangian_rholambda ,'format','Double');
     205                        WriteData(fid,'enum',AugmentedLagrangianThetaEnum() ,'data',self.XTH_theta ,'format','Double');
     206                        WriteData(fid,'object',self,'fieldname','borderSSA','format','DoubleMat','mattype',1);
     207                        WriteData(fid,'object',self,'fieldname','borderHO','format','DoubleMat','mattype',1);
     208                        WriteData(fid,'object',self,'fieldname','borderFS','format','DoubleMat','mattype',1);
    209209                        %convert approximations to enums
    210                         data=obj.vertex_equation;
     210                        data=self.vertex_equation;
    211211                        pos=find(data==0); data(pos,end)=NoneApproximationEnum();
    212212                        pos=find(data==1); data(pos,end)=SIAApproximationEnum();
     
    220220                        pos=find(data==8); data(pos,end)=SSAFSApproximationEnum();
    221221                        WriteData(fid,'data',data,'enum',FlowequationVertexEquationEnum(),'format','DoubleMat','mattype',1);
    222                         data=obj.element_equation;
     222                        data=self.element_equation;
    223223                        pos=find(data==0); data(pos,end)=NoneApproximationEnum();
    224224                        pos=find(data==1); data(pos,end)=SIAApproximationEnum();
  • issm/trunk-jpl/src/m/classes/friction.m

    r19027 r19040  
    1111        end
    1212        methods
    13         function createxml(obj,fid) % {{{
     13        function createxml(self,fid) % {{{
    1414            fprintf(fid, '\n\n');
    1515            fprintf(fid, '%s\n', '<!-- Friction: Sigma= drag^2 * Neff ^r * u ^s, with Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p -->');
    1616            fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Friction: Sigma= drag^2 * Neff ^r * u ^s, with Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p">','<section name="friction" />');   
    17             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="coefficient" type="',          class(obj.coefficient),'" default="',           convert2str(obj.coefficient),'">',              '     <section name="friction" />','     <help> friction coefficient [SI] </help>','</parameter>');
    18             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="p" type="',               class(obj.p),'" default="',                 convert2str(obj.p),'">',   '     <section name="friction" />','     <help> p exponent </help>','</parameter>');
    19             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',        '<parameter key ="q" type="',               class(obj.q),'" default="',                 convert2str(obj.q),'">',            '     <section name="friction" />','     <help> q exponent </help>','</parameter>');
     17            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="coefficient" type="',          class(self.coefficient),'" default="',          convert2str(self.coefficient),'">',              '     <section name="friction" />','     <help> friction coefficient [SI] </help>','</parameter>');
     18            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="p" type="',               class(self.p),'" default="',                 convert2str(self.p),'">',   '     <section name="friction" />','     <help> p exponent </help>','</parameter>');
     19            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',        '<parameter key ="q" type="',               class(self.q),'" default="',                 convert2str(self.q),'">',            '     <section name="friction" />','     <help> q exponent </help>','</parameter>');
    2020            fprintf(fid,'%s\n%s\n','</frame>');
    2121        end % }}}
    22                 function obj = friction(varargin) % {{{
     22                function self = friction(varargin) % {{{
    2323                        switch nargin
    2424                                case 0
    25                                         obj=setdefaultparameters(obj);
     25                                        self=setdefaultparameters(self);
    2626                                otherwise
    2727                                        error('constructor not supported');
    2828                        end
    2929                end % }}}
    30                 function obj = setdefaultparameters(obj) % {{{
     30                function self = setdefaultparameters(self) % {{{
    3131
    3232                end % }}}
    33                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     33                function md = checkconsistency(self,md,solution,analyses) % {{{
    3434
    3535                        %Early return
     
    3939                        md = checkfield(md,'fieldname','friction.p','NaN',1,'size',[md.mesh.numberofelements 1]);
    4040                end % }}}
    41                 function disp(obj) % {{{
     41                function disp(self) % {{{
    4242                        disp(sprintf('Basal shear stress parameters: Sigma_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p)'));
    43                         fielddisplay(obj,'coefficient','friction coefficient [SI]');
    44                         fielddisplay(obj,'p','p exponent');
    45                         fielddisplay(obj,'q','q exponent');
     43                        fielddisplay(self,'coefficient','friction coefficient [SI]');
     44                        fielddisplay(self,'p','p exponent');
     45                        fielddisplay(self,'q','q exponent');
    4646                end % }}}
    47                 function marshall(obj,md,fid) % {{{
     47                function marshall(self,md,fid) % {{{
    4848                        yts=365.0*24.0*3600.0;
    4949
    5050                        WriteData(fid,'enum',FrictionLawEnum,'data',1,'format','Integer');
    51                         WriteData(fid,'object',obj,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    52                         %WriteData(fid,'object',obj,'fieldname','coefficient','format','DoubleMat','mattype',1);
    53                         WriteData(fid,'object',obj,'fieldname','p','format','DoubleMat','mattype',2);
    54                         WriteData(fid,'object',obj,'fieldname','q','format','DoubleMat','mattype',2);
     51                        WriteData(fid,'object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
     52                        %WriteData(fid,'object',self,'fieldname','coefficient','format','DoubleMat','mattype',1);
     53                        WriteData(fid,'object',self,'fieldname','p','format','DoubleMat','mattype',2);
     54                        WriteData(fid,'object',self,'fieldname','q','format','DoubleMat','mattype',2);
    5555                       
    5656
  • issm/trunk-jpl/src/m/classes/frictionhydro.m

    r19027 r19040  
    1212        end
    1313        methods
    14                 function obj = frictionhydro(varargin) % {{{
     14                function self = frictionhydro(varargin) % {{{
    1515                        switch nargin
    1616                                case 0
    17                                         obj=setdefaultparameters(obj);
     17                                        self=setdefaultparameters(self);
    1818                                otherwise
    1919                                        error('constructor not supported');
    2020                        end
    2121                end % }}}
    22                 function obj = setdefaultparameters(obj) % {{{
     22                function self = setdefaultparameters(self) % {{{
    2323
    2424                end % }}}
    25                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     25                function md = checkconsistency(self,md,solution,analyses) % {{{
    2626
    2727                        %Early return
     
    3131                        md = checkfield(md,'fieldname','friction.As','NaN',1,'size',[md.mesh.numberofelements 1]);
    3232                end % }}}
    33                 function disp(obj) % {{{
     33                function disp(self) % {{{
    3434                        disp(sprintf('Effective Pressure based friction law described in Gagliardini 2007'));
    35                         fielddisplay(obj,'q','friction law exponent q>=1');
    36                         fielddisplay(obj,'C','friction law max value [SI]');
    37                         fielddisplay(obj,'As','Sliding Parameter without cavitation [m Pa^-n s^-1]');
    38                         fielddisplay(obj,'effective_pressure','Effective Pressure [Pa]');
     35                        fielddisplay(self,'q','friction law exponent q>=1');
     36                        fielddisplay(self,'C','friction law max value [SI]');
     37                        fielddisplay(self,'As','Sliding Parameter without cavitation [m Pa^-n s^-1]');
     38                        fielddisplay(self,'effective_pressure','Effective Pressure [Pa]');
    3939                end % }}}
    40                 function marshall(obj,md,fid) % {{{
     40                function marshall(self,md,fid) % {{{
    4141                        WriteData(fid,'enum',FrictionLawEnum,'data',3,'format','Integer');
    42                         WriteData(fid,'class','friction','object',obj,'fieldname','q','format','DoubleMat','mattype',2);
    43                         WriteData(fid,'class','friction','object',obj,'fieldname','C','format','DoubleMat','mattype',2);
    44                         WriteData(fid,'class','friction','object',obj,'fieldname','As','format','DoubleMat','mattype',2);
    45                         WriteData(fid,'class','friction','object',obj,'fieldname','effective_pressure','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
     42                        WriteData(fid,'class','friction','object',self,'fieldname','q','format','DoubleMat','mattype',2);
     43                        WriteData(fid,'class','friction','object',self,'fieldname','C','format','DoubleMat','mattype',2);
     44                        WriteData(fid,'class','friction','object',self,'fieldname','As','format','DoubleMat','mattype',2);
     45                        WriteData(fid,'class','friction','object',self,'fieldname','effective_pressure','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    4646                end % }}}
    4747        end
  • issm/trunk-jpl/src/m/classes/frictiontemp.m

    r19027 r19040  
    1212        end
    1313        methods
    14                 function obj = frictiontemp(varargin) % {{{
     14                function self = frictiontemp(varargin) % {{{
    1515                        switch nargin
    1616                                case 0
    17                                         obj=setdefaultparameters(obj);
     17                                        self=setdefaultparameters(self);
    1818                                case 1
    1919                                        obj=structtoobj(frictiontemp(),varargin{1});
     
    2222                        end
    2323                end % }}}
    24                 function obj = setdefaultparameters(obj) % {{{
     24                function self = setdefaultparameters(self) % {{{
    2525
    2626                        %By default gamma = 1;
    27                         obj.gamma = 1;
     27                        self.gamma = 1;
    2828
    2929
    3030                end % }}}
    31                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     31                function md = checkconsistency(self,md,solution,analyses) % {{{
    3232
    3333                        %Early return
     
    4242                        md = checkfield(md,'fieldname','initialization.temperature','NaN',1,'size',[md.mesh.numberofvertices 1]);
    4343                end % }}}
    44                 function disp(obj) % {{{
     44                function disp(self) % {{{
    4545                        disp(sprintf('Basal shear stress parameters: tau_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b * 1/f(T)\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p)'));
    46                         fielddisplay(obj,'gamma','submelt sliding parameter f(T) = exp((T-Tpmp)/gamma)');
    47                         fielddisplay(obj,'coefficient','frictiontemp coefficient [SI]');
    48                         fielddisplay(obj,'p','p exponent');
    49                         fielddisplay(obj,'q','q exponent');
     46                        fielddisplay(self,'gamma','submelt sliding parameter f(T) = exp((T-Tpmp)/gamma)');
     47                        fielddisplay(self,'coefficient','frictiontemp coefficient [SI]');
     48                        fielddisplay(self,'p','p exponent');
     49                        fielddisplay(self,'q','q exponent');
    5050                end % }}}
    51                 function marshall(obj,md,fid) % {{{
     51                function marshall(self,md,fid) % {{{
    5252
    5353                        WriteData(fid,'enum',FrictionLawEnum,'data',4,'format','Integer');
    54                         WriteData(fid,'class','friction','object',obj,'fieldname','gamma','format','Double');
    55                         WriteData(fid,'class','friction','object',obj,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    56                         WriteData(fid,'class','friction','object',obj,'fieldname','p','format','DoubleMat','mattype',2);
    57                         WriteData(fid,'class','friction','object',obj,'fieldname','q','format','DoubleMat','mattype',2);
     54                        WriteData(fid,'class','friction','object',self,'fieldname','gamma','format','Double');
     55                        WriteData(fid,'class','friction','object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
     56                        WriteData(fid,'class','friction','object',self,'fieldname','p','format','DoubleMat','mattype',2);
     57                        WriteData(fid,'class','friction','object',self,'fieldname','q','format','DoubleMat','mattype',2);
    5858                end % }}}
    5959        end
  • issm/trunk-jpl/src/m/classes/frictionwaterlayer.m

    r19027 r19040  
    1212        end
    1313        methods
    14                 function obj = frictionwaterlayer(varargin) % {{{
     14                function self = frictionwaterlayer(varargin) % {{{
    1515                        switch nargin
    1616                                case 0
    17                                         obj=setdefaultparameters(obj);
     17                                        self=setdefaultparameters(self);
    1818                                case 1
    1919                                        obj=structtoobj(frictionwaterlayer(),varargin{1});
     
    2222                        end
    2323                end % }}}
    24                 function obj = setdefaultparameters(obj) % {{{
     24                function self = setdefaultparameters(self) % {{{
    2525
    2626                end % }}}
    27                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     27                function md = checkconsistency(self,md,solution,analyses) % {{{
    2828
    2929                        %Early return
     
    3636
    3737                end % }}}
    38                 function disp(obj) % {{{
     38                function disp(self) % {{{
    3939                        disp(sprintf('Basal shear stress parameters: tau_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b * 1/f(T)\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*(bed+water_layer), r=q/p and s=1/p)'));
    40                         fielddisplay(obj,'coefficient','frictiontemp coefficient [SI]');
    41                         fielddisplay(obj,'p','p exponent');
    42                         fielddisplay(obj,'q','q exponent');
    43                         fielddisplay(obj,'water_layer','water thickness at the base of the ice (m)');
     40                        fielddisplay(self,'coefficient','frictiontemp coefficient [SI]');
     41                        fielddisplay(self,'p','p exponent');
     42                        fielddisplay(self,'q','q exponent');
     43                        fielddisplay(self,'water_layer','water thickness at the base of the ice (m)');
    4444                end % }}}
    45                 function marshall(obj,md,fid) % {{{
     45                function marshall(self,md,fid) % {{{
    4646
    4747                        WriteData(fid,'enum',FrictionLawEnum,'data',5,'format','Integer');
    48                         WriteData(fid,'class','friction','object',obj,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    49                         WriteData(fid,'class','friction','object',obj,'fieldname','p','format','DoubleMat','mattype',2);
    50                         WriteData(fid,'class','friction','object',obj,'fieldname','q','format','DoubleMat','mattype',2);
    51                         WriteData(fid,'class','friction','object',obj,'fieldname','water_layer','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
     48                        WriteData(fid,'class','friction','object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
     49                        WriteData(fid,'class','friction','object',self,'fieldname','p','format','DoubleMat','mattype',2);
     50                        WriteData(fid,'class','friction','object',self,'fieldname','q','format','DoubleMat','mattype',2);
     51                        WriteData(fid,'class','friction','object',self,'fieldname','water_layer','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    5252                end % }}}
    5353        end
  • issm/trunk-jpl/src/m/classes/frictionweertman.m

    r19027 r19040  
    1010        end
    1111        methods
    12         function createxml(obj,fid) % {{{
     12        function createxml(self,fid) % {{{
    1313            fprintf(fid, '\n\n');
    1414            fprintf(fid, '%s\n', '<!-- Friction: Sigma= drag^2 * Neff ^r * u ^s, with Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p -->');
    1515            fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Friction: Sigma= drag^2 * Neff ^r * u ^s, with Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p">','<section name="frictionweertman" />');   
    16             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="coefficient" type="',          class(obj.coefficient),'" default="',           convert2str(obj.coefficient),'">',              '     <section name="frictionweertman" />','     <help> frictionweertman coefficient [SI] </help>','</parameter>');
    17             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="p" type="',               class(obj.p),'" default="',                 convert2str(obj.p),'">',   '     <section name="frictionweertman" />','     <help> p exponent </help>','</parameter>');
    18             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',        '<parameter key ="q" type="',               class(obj.q),'" default="',                 convert2str(obj.q),'">',            '     <section name="frictionweertman" />','     <help> q exponent </help>','</parameter>');
     16            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="coefficient" type="',          class(self.coefficient),'" default="',          convert2str(self.coefficient),'">',              '     <section name="frictionweertman" />','     <help> frictionweertman coefficient [SI] </help>','</parameter>');
     17            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="p" type="',               class(self.p),'" default="',                 convert2str(self.p),'">',   '     <section name="frictionweertman" />','     <help> p exponent </help>','</parameter>');
     18            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',        '<parameter key ="q" type="',               class(self.q),'" default="',                 convert2str(self.q),'">',            '     <section name="frictionweertman" />','     <help> q exponent </help>','</parameter>');
    1919            fprintf(fid,'%s\n%s\n','</frame>');
    2020        end % }}}
    21                 function obj = frictionweertman(varargin) % {{{
     21                function self = frictionweertman(varargin) % {{{
    2222                        switch nargin
    2323                                case 0
    24                                         obj=setdefaultparameters(obj);
     24                                        self=setdefaultparameters(self);
    2525                                otherwise
    2626                                        error('constructor not supported');
    2727                        end
    2828                end % }}}
    29                 function obj = setdefaultparameters(obj) % {{{
     29                function self = setdefaultparameters(self) % {{{
    3030
    3131                end % }}}
    32                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     32                function md = checkconsistency(self,md,solution,analyses) % {{{
    3333
    3434                        %Early return
     
    3737                        md = checkfield(md,'fieldname','friction.m','NaN',1,'size',[md.mesh.numberofelements 1]);
    3838                end % }}}
    39                 function disp(obj) % {{{
     39                function disp(self) % {{{
    4040                        disp('Weertman sliding law parameters:');
    4141                        disp('   Weertman''s sliding law reads:');
     
    4444                        disp('      Sigma_b = C^(-1/m) * |u_b|^(1/m-1)  u_b');
    4545                        disp(' ');
    46                         fielddisplay(obj,'C','friction coefficient [SI]');
    47                         fielddisplay(obj,'m','m exponent');
     46                        fielddisplay(self,'C','friction coefficient [SI]');
     47                        fielddisplay(self,'m','m exponent');
    4848                end % }}}
    49                 function marshall(obj,md,fid) % {{{
     49                function marshall(self,md,fid) % {{{
    5050                        yts=365.0*24.0*3600.0;
    5151
    5252                        WriteData(fid,'enum',FrictionLawEnum,'data',2,'format','Integer');
    53                         WriteData(fid,'class','friction','object',obj,'fieldname','C','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    54                         WriteData(fid,'class','friction','object',obj,'fieldname','m','format','DoubleMat','mattype',2);
     53                        WriteData(fid,'class','friction','object',self,'fieldname','C','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
     54                        WriteData(fid,'class','friction','object',self,'fieldname','m','format','DoubleMat','mattype',2);
    5555                       
    5656
  • issm/trunk-jpl/src/m/classes/frictionweertmantemp.m

    r19027 r19040  
    1111        end
    1212        methods
    13                 function obj = frictionweertmantemp(varargin) % {{{
     13                function self = frictionweertmantemp(varargin) % {{{
    1414                        switch nargin
    1515                                case 0
    16                                         obj=setdefaultparameters(obj);
     16                                        self=setdefaultparameters(self);
    1717                                otherwise
    1818                                        error('constructor not supported');
    1919                        end
    2020                end % }}}
    21                 function obj = setdefaultparameters(obj) % {{{
     21                function self = setdefaultparameters(self) % {{{
    2222
    2323                end % }}}
    24                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     24                function md = checkconsistency(self,md,solution,analyses) % {{{
    2525
    2626                        %Early return
     
    2929                        md = checkfield(md,'fieldname','friction.m','NaN',1,'size',[md.mesh.numberofelements 1]);
    3030                end % }}}
    31                 function disp(obj) % {{{
     31                function disp(self) % {{{
    3232                        disp('Weertman sliding law parameters:');
    3333                        disp('      Sigma_b = C^(-1/m) * |u_b|^(1/m-1)  u_b * 1/f(T)');
    3434                        disp(' ');
    35                         fielddisplay(obj,'gamma','submelt sliding parameter f(T) = exp((T-Tpmp)/gamma)');
    36                         fielddisplay(obj,'C','friction coefficient [SI]');
    37                         fielddisplay(obj,'m','m exponent');
     35                        fielddisplay(self,'gamma','submelt sliding parameter f(T) = exp((T-Tpmp)/gamma)');
     36                        fielddisplay(self,'C','friction coefficient [SI]');
     37                        fielddisplay(self,'m','m exponent');
    3838                end % }}}
    39                 function marshall(obj,md,fid) % {{{
     39                function marshall(self,md,fid) % {{{
    4040                        yts=365.0*24.0*3600.0;
    4141
    4242                        WriteData(fid,'enum',FrictionLawEnum,'data',6,'format','Integer');
    43                         WriteData(fid,'class','friction','object',obj,'fieldname','gamma','format','Double');
    44                         WriteData(fid,'class','friction','object',obj,'fieldname','C','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    45                         WriteData(fid,'class','friction','object',obj,'fieldname','m','format','DoubleMat','mattype',2);
     43                        WriteData(fid,'class','friction','object',self,'fieldname','gamma','format','Double');
     44                        WriteData(fid,'class','friction','object',self,'fieldname','C','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
     45                        WriteData(fid,'class','friction','object',self,'fieldname','m','format','DoubleMat','mattype',2);
    4646                       
    4747
  • issm/trunk-jpl/src/m/classes/geometry.m

    r19027 r19040  
    1313        end
    1414        methods (Static)
    15                 function obj = loadobj(obj) % {{{
     15                function self = loadobj(self) % {{{
    1616                        % This function is directly called by matlab when a model object is
    1717                        % loaded. Update old properties here
    1818
    1919                        %2014 March 26th
    20                         if isstruct(obj),
     20                        if isstruct(self),
    2121                                disp('WARNING: updating geometry');
    2222                                disp('         md.geometry.bed        is now md.geometry.base');
    2323                                disp('         md.geometry.bathymetry is now md.geometry.bed');
    24                                 obj2=obj;
    25                                 obj=geometry();
    26                                 obj.surface    = obj2.surface;
    27                                 obj.thickness  = obj2.thickness;
    28                                 obj.base       = obj2.bed;
    29                                 obj.bed        = obj2.bathymetry;
     24                                obj2 = self;
     25                                self = geometry();
     26                                self.surface    = obj2.surface;
     27                                self.thickness  = obj2.thickness;
     28                                self.base       = obj2.bed;
     29                                self.bed        = obj2.bathymetry;
    3030                        end
    3131
     
    3333        end
    3434        methods
    35         %function createxml(obj,fid)
    36         function createxml(obj, fid)% {{{
     35        %function createxml(self,fid)
     36        function createxml(self, fid)% {{{
    3737            fprintf(fid, '\n\n');
    3838            fprintf(fid, '%s\n', '<!-- geometry -->');
     
    4141            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="thickness" type="','path','" optional="','false','">','     <section name="geometry" />','     <help> ice thickness [m] </help>','</parameter>');
    4242            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="bed" type="','path','" optional="','false','">','     <section name="geometry" />','     <help> bed elevation [m] </help>','</parameter>');
    43             %fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="bathymetry" type="',class(obj.bathymetry),'" default="',convert2str(obj.bathymetry),'">','     <section name="geometry" />','     <help> bathymetry elevation [m] </help>','</parameter>');
    44             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="hydrostatic_ratio" type="',class(obj.hydrostatic_ratio),'" default="',convert2str(obj.hydrostatic_ratio),'">','     <section name="geometry" />','     <help> coefficient for ice shelves; thickness correction: hydrostatic_ratio H_obs+ (1-hydrostatic_ratio) H_hydro </help>','</parameter>');
     43            %fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="bathymetry" type="',class(self.bathymetry),'" default="',convert2str(self.bathymetry),'">','     <section name="geometry" />','     <help> bathymetry elevation [m] </help>','</parameter>');
     44            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="hydrostatic_ratio" type="',class(self.hydrostatic_ratio),'" default="',convert2str(self.hydrostatic_ratio),'">','     <section name="geometry" />','     <help> coefficient for ice shelves; thickness correction: hydrostatic_ratio H_obs+ (1-hydrostatic_ratio) H_hydro </help>','</parameter>');
    4545            fprintf(fid,'%s\n%s\n','</frame>');
    4646        end % }}}
    47                 function obj = geometry(varargin) % {{{
     47                function self = geometry(varargin) % {{{
    4848                        switch nargin
    4949                                case 0
    50                                         obj=setdefaultparameters(obj);
     50                                        self=setdefaultparameters(self);
    5151                                otherwise
    5252                                        error('constructor not supported');
    5353                        end
    5454                end % }}}
    55                 function obj = setdefaultparameters(obj) % {{{
     55                function self = setdefaultparameters(self) % {{{
    5656
    5757                end % }}}
    58                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     58                function md = checkconsistency(self,md,solution,analyses) % {{{
    5959
    6060                        if (solution==SeaiceSolutionEnum()),
     
    6868                                md = checkfield(md,'fieldname','geometry.base'      ,'NaN',1,'size',[md.mesh.numberofvertices 1]);
    6969                                md = checkfield(md,'fieldname','geometry.thickness','NaN',1,'size',[md.mesh.numberofvertices 1],'>',0);
    70                                 if any((obj.thickness-obj.surface+obj.base)>10^-9),
     70                                if any((self.thickness-self.surface+self.base)>10^-9),
    7171                                        md = checkmessage(md,['equality thickness=surface-base violated']);
    7272                                end
     
    7676                        end
    7777                end % }}}
    78                 function disp(obj) % {{{
     78                function disp(self) % {{{
    7979                        disp(sprintf('   geometry parameters:'));
    8080
    81                         fielddisplay(obj,'surface','ice upper surface elevation [m]');
    82                         fielddisplay(obj,'thickness','ice thickness [m]');
    83                         fielddisplay(obj,'base','ice base elevation [m]');
    84                         fielddisplay(obj,'bed','bed elevation [m]');
     81                        fielddisplay(self,'surface','ice upper surface elevation [m]');
     82                        fielddisplay(self,'thickness','ice thickness [m]');
     83                        fielddisplay(self,'base','ice base elevation [m]');
     84                        fielddisplay(self,'bed','bed elevation [m]');
    8585
    8686                end % }}}
    87                 function marshall(obj,md,fid) % {{{
    88                         WriteData(fid,'data',obj.surface,'format','DoubleMat','mattype',1,'enum',SurfaceEnum());
    89                         WriteData(fid,'data',obj.thickness,'format','DoubleMat','mattype',1,'enum',ThicknessEnum(),'timeserieslength',md.mesh.numberofvertices+1);
    90                         WriteData(fid,'data',obj.base,'format','DoubleMat','mattype',1,'enum',BaseEnum());
    91                         WriteData(fid,'data',obj.bed,'format','DoubleMat','mattype',1,'enum',BedEnum());
    92                         WriteData(fid,'object',obj,'fieldname','hydrostatic_ratio','format','DoubleMat','mattype',1);
     87                function marshall(self,md,fid) % {{{
     88                        WriteData(fid,'data',self.surface,'format','DoubleMat','mattype',1,'enum',SurfaceEnum());
     89                        WriteData(fid,'data',self.thickness,'format','DoubleMat','mattype',1,'enum',ThicknessEnum(),'timeserieslength',md.mesh.numberofvertices+1);
     90                        WriteData(fid,'data',self.base,'format','DoubleMat','mattype',1,'enum',BaseEnum());
     91                        WriteData(fid,'data',self.bed,'format','DoubleMat','mattype',1,'enum',BedEnum());
     92                        WriteData(fid,'object',self,'fieldname','hydrostatic_ratio','format','DoubleMat','mattype',1);
    9393                end % }}}
    9494        end
  • issm/trunk-jpl/src/m/classes/gia.m

    r17931 r19040  
    1111        end
    1212        methods
    13          function createxml(obj,fid) % {{{
     13         function createxml(self,fid) % {{{
    1414            fprintf(fid, '<!-- gia -->\n');           
    1515                   
    1616            % gia solution parameters
    1717            fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="gia parameters">','<section name="gia" />');                   
    18             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="mantle_viscosity" type="',class(obj.mantle_viscosity),'" default="',convert2str(obj.mantle_viscosity),'">','     <section name="gia" />','     <help> mantle viscosity[Pa s] </help>','  </parameter>');
    19             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lithosphere_thickness" type="',class(obj.lithosphere_thickness),'" default="',convert2str(obj.lithosphere_thickness),'">','     <section name="gia" />','     <help> lithosphere thickness (km) </help>','  </parameter>');
     18            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="mantle_viscosity" type="',class(self.mantle_viscosity),'" default="',convert2str(self.mantle_viscosity),'">','     <section name="gia" />','     <help> mantle viscosity[Pa s] </help>','  </parameter>');
     19            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lithosphere_thickness" type="',class(self.lithosphere_thickness),'" default="',convert2str(self.lithosphere_thickness),'">','     <section name="gia" />','     <help> lithosphere thickness (km) </help>','  </parameter>');
    2020            %cross_section_shape drop-down (1 o r 2)
    2121            fprintf(fid,'%s\n%s\n%s\n%s\n','  <parameter key ="cross_section_shape" type="alternative" optional="false">','     <section name="gia" />','     <help> 1: square-edged (default). 2: elliptical.  See iedge in GiaDeflectionCore </help>');
     
    2626       
    2727        end % }}}
    28                 function obj = gia(varargin) % {{{
     28                function self = gia(varargin) % {{{
    2929                        switch nargin
    3030                                case 0
    31                                         obj=setdefaultparameters(obj);
     31                                        self=setdefaultparameters(self);
    3232                                otherwise
    3333                                        error('constructor not supported');
    3434                        end
    3535                end % }}}
    36                 function obj = setdefaultparameters(obj) % {{{
    37                 obj.cross_section_shape=1; %square as default (see iedge in GiaDeflectionCorex)
     36                function self = setdefaultparameters(self) % {{{
     37                self.cross_section_shape=1; %square as default (see iedge in GiaDeflectionCorex)
    3838                end % }}}
    39                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     39                function md = checkconsistency(self,md,solution,analyses) % {{{
    4040
    4141                        if ~ismember(GiaAnalysisEnum(),analyses), return; end
     
    6060
    6161                end % }}}
    62                 function disp(obj) % {{{
     62                function disp(self) % {{{
    6363                        disp(sprintf('   gia parameters:'));
    6464
    65                         fielddisplay(obj,'mantle_viscosity','mantle viscosity[Pa s]');
    66                         fielddisplay(obj,'lithosphere_thickness','lithosphere thickness (km)');
    67                         fielddisplay(obj,'cross_section_shape','1: square-edged (default). 2: elliptical.  See iedge in GiaDeflectionCore');
     65                        fielddisplay(self,'mantle_viscosity','mantle viscosity[Pa s]');
     66                        fielddisplay(self,'lithosphere_thickness','lithosphere thickness (km)');
     67                        fielddisplay(self,'cross_section_shape','1: square-edged (default). 2: elliptical.  See iedge in GiaDeflectionCore');
    6868
    6969                end % }}}
    70                 function marshall(obj,md,fid) % {{{
    71                         WriteData(fid,'object',obj,'fieldname','mantle_viscosity','format','DoubleMat','mattype',1);
    72                         WriteData(fid,'object',obj,'fieldname','lithosphere_thickness','format','DoubleMat','mattype',1,'scale',10^3); %from km to m
    73                         WriteData(fid,'object',obj,'fieldname','cross_section_shape','format','Integer');
     70                function marshall(self,md,fid) % {{{
     71                        WriteData(fid,'object',self,'fieldname','mantle_viscosity','format','DoubleMat','mattype',1);
     72                        WriteData(fid,'object',self,'fieldname','lithosphere_thickness','format','DoubleMat','mattype',1,'scale',10^3); %from km to m
     73                        WriteData(fid,'object',self,'fieldname','cross_section_shape','format','Integer');
    7474                end % }}}
    7575        end
  • issm/trunk-jpl/src/m/classes/groundingline.m

    r18861 r19040  
    99        end
    1010        methods
    11                 function createxml(obj,fid) % {{{
     11                function createxml(self,fid) % {{{
    1212                        fprintf(fid, '\n\n');
    1313                        fprintf(fid, '%s\n', '<!-- groundingline -->');
     
    2424                        fprintf(fid,'%s\n%s\n','</frame>');
    2525                end % }}}
    26                 function obj = groundingline(varargin) % {{{
     26                function self = groundingline(varargin) % {{{
    2727                        switch nargin
    2828                                case 0
    29                                         obj=setdefaultparameters(obj);
     29                                        self=setdefaultparameters(self);
    3030                                otherwise
    3131                                        error('constructor not supported');
    3232                        end
    3333                end % }}}
    34                 function obj = setdefaultparameters(obj) % {{{
     34                function self = setdefaultparameters(self) % {{{
    3535
    3636                        %Type of migration
    37                         obj.migration='None';
     37                        self.migration='None';
    3838
    3939                end % }}}
    40                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     40                function md = checkconsistency(self,md,solution,analyses) % {{{
    4141
    4242                        md = checkfield(md,'fieldname','groundingline.migration','values',{'None' 'AggressiveMigration' 'SoftMigration' 'SubelementMigration' 'SubelementMigration2' 'Contact' 'None' 'GroundingOnly'});
    4343
    44                         if ~strcmp(obj.migration,'None'),
     44                        if ~strcmp(self.migration,'None'),
    4545                                if isnan(md.geometry.bed),
    4646                                        md = checkmessage(md,['requesting grounding line migration, but bathymetry is absent!']);
     
    5656
    5757                end % }}}
    58                 function disp(obj) % {{{
     58                function disp(self) % {{{
    5959                        disp(sprintf('   grounding line migration parameters:'));
    60                         fielddisplay(obj,'migration','type of grounding line migration: ''SoftMigration'',''AggressiveMigration'',''SubelementMigration'',''SubelementMigration2'' or ''None''');
     60                        fielddisplay(self,'migration','type of grounding line migration: ''SoftMigration'',''AggressiveMigration'',''SubelementMigration'',''SubelementMigration2'' or ''None''');
    6161
    6262                end % }}}
    63                 function marshall(obj,md,fid) % {{{
    64                         WriteData(fid,'data',StringToEnum(obj.migration),'enum',GroundinglineMigrationEnum(),'format','Integer');
     63                function marshall(self,md,fid) % {{{
     64                        WriteData(fid,'data',StringToEnum(self.migration),'enum',GroundinglineMigrationEnum(),'format','Integer');
    6565                end % }}}
    6666        end
  • issm/trunk-jpl/src/m/classes/hydrologydc.m

    r19027 r19040  
    3737  end
    3838        methods
    39                 % {{{ function obj = hydrologydc(varargin)
    40                 function obj = hydrologydc(varargin)
     39                % {{{ function self = hydrologydc(varargin)
     40                function self = hydrologydc(varargin)
    4141                        switch nargin
    4242                                case 0
    43                                         obj=setdefaultparameters(obj);
     43                                        self=setdefaultparameters(self);
    4444                                otherwise
    4545                                        error('constructor not supported');
     
    5454
    5555                end % }}}
    56                 % {{{ function obj = setdefaultparameters(obj)
    57                 function obj = setdefaultparameters(obj)
     56                % {{{ function self = setdefaultparameters(self)
     57                function self = setdefaultparameters(self)
    5858
    5959                %Parameters from de Fleurian 2014
    60                         obj.water_compressibility    = 5.04e-10;
    61                         obj.isefficientlayer         = 1;
    62                         obj.penalty_factor           = 3;
    63                         obj.penalty_lock             = 0;
    64                         obj.rel_tol                  = 1.0e-06;
    65                         obj.max_iter                 = 100;
    66                         obj.sedimentlimit_flag       = 0;
    67                         obj.sedimentlimit            = 0;
    68                         obj.transfer_flag            = 0;
    69                         obj.leakage_factor           = 10.0;
    70 
    71                         obj.sediment_compressibility = 1.0e-08;
    72                         obj.sediment_porosity        = 0.4;
    73                         obj.sediment_thickness       = 20.0;
    74                         obj.sediment_transmitivity   = 8.0e-04;
    75 
    76                         obj.epl_compressibility      = 1.0e-08;
    77                         obj.epl_porosity             = 0.4;
    78                         obj.epl_initial_thickness    = 1.0;
    79                         obj.epl_colapse_thickness    = 1.0e-3;
    80                         obj.epl_thick_comp           = 1;
    81                         obj.epl_max_thickness        = 5.0;
    82                         obj.epl_conductivity         = 8.0e-02;
    83                         obj.eplflip_lock             = 0;
    84                 end
    85                 % }}}
    86                 % {{{ function md = checkconsistency(obj,md,solution,analyses)
    87                 function md = checkconsistency(obj,md,solution,analyses)
     60                        self.water_compressibility    = 5.04e-10;
     61                        self.isefficientlayer         = 1;
     62                        self.penalty_factor           = 3;
     63                        self.penalty_lock             = 0;
     64                        self.rel_tol                  = 1.0e-06;
     65                        self.max_iter                 = 100;
     66                        self.sedimentlimit_flag       = 0;
     67                        self.sedimentlimit            = 0;
     68                        self.transfer_flag            = 0;
     69                        self.leakage_factor           = 10.0;
     70
     71                        self.sediment_compressibility = 1.0e-08;
     72                        self.sediment_porosity        = 0.4;
     73                        self.sediment_thickness       = 20.0;
     74                        self.sediment_transmitivity   = 8.0e-04;
     75
     76                        self.epl_compressibility      = 1.0e-08;
     77                        self.epl_porosity             = 0.4;
     78                        self.epl_initial_thickness    = 1.0;
     79                        self.epl_colapse_thickness    = 1.0e-3;
     80                        self.epl_thick_comp           = 1;
     81                        self.epl_max_thickness        = 5.0;
     82                        self.epl_conductivity         = 8.0e-02;
     83                        self.eplflip_lock             = 0;
     84                end
     85                % }}}
     86                % {{{ function md = checkconsistency(self,md,solution,analyses)
     87                function md = checkconsistency(self,md,solution,analyses)
    8888                %Early return
    8989                        if ~ismember(HydrologyDCInefficientAnalysisEnum(),analyses) & ~ismember(HydrologyDCEfficientAnalysisEnum(),analyses),
     
    9999                        md = checkfield(md,'fieldname','hydrology.sedimentlimit_flag','numel',[1],'values',[0 1 2 3]);
    100100                        md = checkfield(md,'fieldname','hydrology.transfer_flag','numel',[1],'values',[0 1]);
    101                         if obj.sedimentlimit_flag==1,
     101                        if self.sedimentlimit_flag==1,
    102102                                md = checkfield(md,'fieldname','hydrology.sedimentlimit','>',0,'numel',1);
    103103            end
    104                         if obj.transfer_flag==1,
     104                        if self.transfer_flag==1,
    105105                                md = checkfield(md,'fieldname','hydrology.leakage_factor','>',0,'numel',1);
    106106            end
     
    113113                        md = checkfield(md,'fieldname','hydrology.sediment_transmitivity','>=',0,'size',[md.mesh.numberofvertices 1]);
    114114
    115                         if obj.isefficientlayer==1,
     115                        if self.isefficientlayer==1,
    116116                                md = checkfield(md,'fieldname','hydrology.spcepl_head','timeseries',1);
    117117                                md = checkfield(md,'fieldname','hydrology.mask_eplactive_node','size',[md.mesh.numberofvertices 1],'values',[0 1]);
     
    124124                                md = checkfield(md,'fieldname','hydrology.epl_conductivity','>',0,'numel',1);
    125125                                md = checkfield(md,'fieldname','hydrology.eplflip_lock','>=',0,'numel',1);
    126                                 if (obj.epl_colapse_thickness>obj.epl_initial_thickness),
     126                                if (self.epl_colapse_thickness>self.epl_initial_thickness),
    127127                                        md = checkmessage(md,'Colapsing thickness for EPL larger than initial thickness');
    128128                                end
     
    130130                end
    131131                % }}}
    132                 % {{{ function disp(obj)
    133                 function disp(obj)
     132                % {{{ function disp(self)
     133                function disp(self)
    134134                        disp(sprintf('   hydrology Dual Porous Continuum Equivalent parameters:'));
    135135                        disp(sprintf('   - general parameters'));
    136                         fielddisplay(obj,'water_compressibility','compressibility of water [Pa^-1]');
    137                         fielddisplay(obj,'isefficientlayer','do we use an efficient drainage system [1: true; 0: false]');
    138                         fielddisplay(obj,'penalty_factor','exponent of the value used in the penalisation method [dimensionless]');
    139                         fielddisplay(obj,'penalty_lock','stabilize unstable constraints that keep zigzagging after n iteration (default is 0, no stabilization)');
    140                         fielddisplay(obj,'rel_tol','tolerance of the nonlinear iteration for the transfer between layers [dimensionless]');
    141                         fielddisplay(obj,'max_iter','maximum number of nonlinear iteration');
    142                         fielddisplay(obj,'sedimentlimit_flag','what kind of upper limit is applied for the inefficient layer');
     136                        fielddisplay(self,'water_compressibility','compressibility of water [Pa^-1]');
     137                        fielddisplay(self,'isefficientlayer','do we use an efficient drainage system [1: true; 0: false]');
     138                        fielddisplay(self,'penalty_factor','exponent of the value used in the penalisation method [dimensionless]');
     139                        fielddisplay(self,'penalty_lock','stabilize unstable constraints that keep zigzagging after n iteration (default is 0, no stabilization)');
     140                        fielddisplay(self,'rel_tol','tolerance of the nonlinear iteration for the transfer between layers [dimensionless]');
     141                        fielddisplay(self,'max_iter','maximum number of nonlinear iteration');
     142                        fielddisplay(self,'sedimentlimit_flag','what kind of upper limit is applied for the inefficient layer');
    143143                        disp(sprintf('%55s  0: no limit',' '));
    144144                        disp(sprintf('%55s  1: user defined: %s',' ','sedimentlimit'));
    145145                        disp(sprintf('%55s  2: hydrostatic pressure',' '));
    146146                        disp(sprintf('%55s  3: normal stress',' '));
    147                         if obj.sedimentlimit_flag==1,
    148                                 fielddisplay(obj,'sedimentlimit','user defined upper limit for the inefficient layer [m]');
    149             end
    150                         fielddisplay(obj,'transfer_flag',['what kind of transfer method is applied between the layers']);
     147                        if self.sedimentlimit_flag==1,
     148                                fielddisplay(self,'sedimentlimit','user defined upper limit for the inefficient layer [m]');
     149            end
     150                        fielddisplay(self,'transfer_flag',['what kind of transfer method is applied between the layers']);
    151151                        disp(sprintf('%55s  0: no transfer',' '));
    152152                        disp(sprintf('%55s  1: constant leakage factor: %s',' ','leakage_factor'));
    153                         if obj.transfer_flag==1,
    154                                 fielddisplay(obj,'leakage_factor','user defined leakage factor [m]');
    155             end
    156                         fielddisplay(obj,'basal_moulin_input','water flux at a given point [m3 s-1]');
     153                        if self.transfer_flag==1,
     154                                fielddisplay(self,'leakage_factor','user defined leakage factor [m]');
     155            end
     156                        fielddisplay(self,'basal_moulin_input','water flux at a given point [m3 s-1]');
    157157                        disp(sprintf('   - for the sediment layer'));
    158                         fielddisplay(obj,'spcsediment_head','sediment water head constraints (NaN means no constraint) [m above MSL]');
    159                         fielddisplay(obj,'sediment_compressibility','sediment compressibility [Pa^-1]');
    160                         fielddisplay(obj,'sediment_porosity','sediment [dimensionless]');
    161                         fielddisplay(obj,'sediment_thickness','sediment thickness [m]');
    162                         fielddisplay(obj,'sediment_transmitivity','sediment transmitivity [m^2/s]');
    163 
    164                         if obj.isefficientlayer==1,
     158                        fielddisplay(self,'spcsediment_head','sediment water head constraints (NaN means no constraint) [m above MSL]');
     159                        fielddisplay(self,'sediment_compressibility','sediment compressibility [Pa^-1]');
     160                        fielddisplay(self,'sediment_porosity','sediment [dimensionless]');
     161                        fielddisplay(self,'sediment_thickness','sediment thickness [m]');
     162                        fielddisplay(self,'sediment_transmitivity','sediment transmitivity [m^2/s]');
     163
     164                        if self.isefficientlayer==1,
    165165                                disp(sprintf('   - for the epl layer'));
    166                                 fielddisplay(obj,'spcepl_head','epl water head constraints (NaN means no constraint) [m above MSL]');
    167                                 fielddisplay(obj,'mask_eplactive_node','active (1) or not (0) EPL');
    168                                 fielddisplay(obj,'epl_compressibility','epl compressibility [Pa^-1]');
    169                                 fielddisplay(obj,'epl_porosity','epl [dimensionless]');
    170                                 fielddisplay(obj,'epl_initial_thickness','epl initial thickness [m]');
    171                                 fielddisplay(obj,'epl_colapse_thickness','epl colapsing thickness [m]');
    172                                 fielddisplay(obj,'epl_thick_comp','epl thickness computation flag');
    173                                 fielddisplay(obj,'epl_max_thickness','epl maximal thickness [m]');
    174                                 fielddisplay(obj,'epl_conductivity','epl conductivity [m^2/s]');
    175                                 fielddisplay(obj,'eplflip_lock','lock the epl activation to avoid fli-floping (default is 0, no stabilization)');
    176             end
    177 
    178                 end
    179                 % }}}
    180                 % {{{ function marshall(obj,md,fid)
    181                 function marshall(obj,md,fid)
     166                                fielddisplay(self,'spcepl_head','epl water head constraints (NaN means no constraint) [m above MSL]');
     167                                fielddisplay(self,'mask_eplactive_node','active (1) or not (0) EPL');
     168                                fielddisplay(self,'epl_compressibility','epl compressibility [Pa^-1]');
     169                                fielddisplay(self,'epl_porosity','epl [dimensionless]');
     170                                fielddisplay(self,'epl_initial_thickness','epl initial thickness [m]');
     171                                fielddisplay(self,'epl_colapse_thickness','epl colapsing thickness [m]');
     172                                fielddisplay(self,'epl_thick_comp','epl thickness computation flag');
     173                                fielddisplay(self,'epl_max_thickness','epl maximal thickness [m]');
     174                                fielddisplay(self,'epl_conductivity','epl conductivity [m^2/s]');
     175                                fielddisplay(self,'eplflip_lock','lock the epl activation to avoid fli-floping (default is 0, no stabilization)');
     176            end
     177
     178                end
     179                % }}}
     180                % {{{ function marshall(self,md,fid)
     181                function marshall(self,md,fid)
    182182                        WriteData(fid,'enum',HydrologyModelEnum(),'data',HydrologydcEnum(),'format','Integer');
    183                         WriteData(fid,'object',obj,'fieldname','water_compressibility','format','Double');
    184                         WriteData(fid,'object',obj,'fieldname','isefficientlayer','format','Boolean');
    185                         WriteData(fid,'object',obj,'fieldname','penalty_factor','format','Double');
    186                         WriteData(fid,'object',obj,'fieldname','penalty_lock','format','Integer');
    187                         WriteData(fid,'object',obj,'fieldname','rel_tol','format','Double');
    188                         WriteData(fid,'object',obj,'fieldname','max_iter','format','Integer');
    189                         WriteData(fid,'object',obj,'fieldname','sedimentlimit_flag','format','Integer');
    190                         WriteData(fid,'object',obj,'fieldname','transfer_flag','format','Integer');
    191                         if obj.sedimentlimit_flag==1,
    192                                 WriteData(fid,'object',obj,'fieldname','sedimentlimit','format','Double');
    193             end
    194                         if obj.transfer_flag==1,
    195                                 WriteData(fid,'object',obj,'fieldname','leakage_factor','format','Double');
    196             end
    197                         WriteData(fid,'object',obj,'fieldname','basal_moulin_input','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
    198 
    199                         WriteData(fid,'object',obj,'fieldname','spcsediment_head','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    200                         WriteData(fid,'object',obj,'fieldname','sediment_compressibility','format','Double');                   
    201                         WriteData(fid,'object',obj,'fieldname','sediment_porosity','format','Double');                 
    202                         WriteData(fid,'object',obj,'fieldname','sediment_thickness','format','Double');
    203                         WriteData(fid,'object',obj,'fieldname','sediment_transmitivity','format','DoubleMat','mattype',1');             
    204 
    205                         if obj.isefficientlayer==1,     
    206                                 WriteData(fid,'object',obj,'fieldname','spcepl_head','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);   
    207                                 WriteData(fid,'object',obj,'fieldname','mask_eplactive_node','format','DoubleMat','mattype',1);
    208                                 WriteData(fid,'object',obj,'fieldname','epl_compressibility','format','Double');                       
    209                                 WriteData(fid,'object',obj,'fieldname','epl_porosity','format','Double');                       
    210                                 WriteData(fid,'object',obj,'fieldname','epl_initial_thickness','format','Double');
    211                                 WriteData(fid,'object',obj,'fieldname','epl_colapse_thickness','format','Double');
    212                                 WriteData(fid,'object',obj,'fieldname','epl_thick_comp','format','Integer');
    213                                 WriteData(fid,'object',obj,'fieldname','epl_max_thickness','format','Double');
    214                                 WriteData(fid,'object',obj,'fieldname','epl_conductivity','format','Double');
    215                                 WriteData(fid,'object',obj,'fieldname','eplflip_lock','format','Integer');
     183                        WriteData(fid,'object',self,'fieldname','water_compressibility','format','Double');
     184                        WriteData(fid,'object',self,'fieldname','isefficientlayer','format','Boolean');
     185                        WriteData(fid,'object',self,'fieldname','penalty_factor','format','Double');
     186                        WriteData(fid,'object',self,'fieldname','penalty_lock','format','Integer');
     187                        WriteData(fid,'object',self,'fieldname','rel_tol','format','Double');
     188                        WriteData(fid,'object',self,'fieldname','max_iter','format','Integer');
     189                        WriteData(fid,'object',self,'fieldname','sedimentlimit_flag','format','Integer');
     190                        WriteData(fid,'object',self,'fieldname','transfer_flag','format','Integer');
     191                        if self.sedimentlimit_flag==1,
     192                                WriteData(fid,'object',self,'fieldname','sedimentlimit','format','Double');
     193            end
     194                        if self.transfer_flag==1,
     195                                WriteData(fid,'object',self,'fieldname','leakage_factor','format','Double');
     196            end
     197                        WriteData(fid,'object',self,'fieldname','basal_moulin_input','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
     198
     199                        WriteData(fid,'object',self,'fieldname','spcsediment_head','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
     200                        WriteData(fid,'object',self,'fieldname','sediment_compressibility','format','Double');                 
     201                        WriteData(fid,'object',self,'fieldname','sediment_porosity','format','Double');                 
     202                        WriteData(fid,'object',self,'fieldname','sediment_thickness','format','Double');
     203                        WriteData(fid,'object',self,'fieldname','sediment_transmitivity','format','DoubleMat','mattype',1');           
     204
     205                        if self.isefficientlayer==1,   
     206                                WriteData(fid,'object',self,'fieldname','spcepl_head','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1); 
     207                                WriteData(fid,'object',self,'fieldname','mask_eplactive_node','format','DoubleMat','mattype',1);
     208                                WriteData(fid,'object',self,'fieldname','epl_compressibility','format','Double');                       
     209                                WriteData(fid,'object',self,'fieldname','epl_porosity','format','Double');                     
     210                                WriteData(fid,'object',self,'fieldname','epl_initial_thickness','format','Double');
     211                                WriteData(fid,'object',self,'fieldname','epl_colapse_thickness','format','Double');
     212                                WriteData(fid,'object',self,'fieldname','epl_thick_comp','format','Integer');
     213                                WriteData(fid,'object',self,'fieldname','epl_max_thickness','format','Double');
     214                                WriteData(fid,'object',self,'fieldname','epl_conductivity','format','Double');
     215                                WriteData(fid,'object',self,'fieldname','eplflip_lock','format','Integer');
    216216            end
    217217                end
  • issm/trunk-jpl/src/m/classes/hydrologyshreve.m

    r19027 r19040  
    1010        end
    1111        methods
    12         function createxml(obj,fid) % {{{
     12        function createxml(self,fid) % {{{
    1313            fprintf(fid, '\n\n');
    1414            fprintf(fid, '%s\n', '<!-- Hydrology -->');
     
    1717            fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Hydrologyshreve solution parameters">','<section name="hydrologyshreve" />');                   
    1818           
    19                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="spcwatercolumn" type="',      class(obj.spcwatercolumn),'" default="',        convert2str(obj.spcwatercolumn),'">',        '     <section name="hydrologyshreve" />','     <help> water thickness constraints (NaN means no constraint) [m] </help>','</parameter>');
    20             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="stabilization" type="',         class(obj.stabilization),'" default="',           convert2str(obj.stabilization),'">', '     <section name="hydrologyshreve" />','     <help> artificial diffusivity (default is 1). can be more than 1 to increase diffusivity. </help>','</parameter>');
     19                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="spcwatercolumn" type="',      class(self.spcwatercolumn),'" default="',        convert2str(self.spcwatercolumn),'">',      '     <section name="hydrologyshreve" />','     <help> water thickness constraints (NaN means no constraint) [m] </help>','</parameter>');
     20            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="stabilization" type="',         class(self.stabilization),'" default="',           convert2str(self.stabilization),'">',       '     <section name="hydrologyshreve" />','     <help> artificial diffusivity (default is 1). can be more than 1 to increase diffusivity. </help>','</parameter>');
    2121            fprintf(fid,'%s\n%s\n','</frame>');
    2222        end % }}}
    23                 function obj = hydrologyshreve(varargin) % {{{
     23                function self = hydrologyshreve(varargin) % {{{
    2424                        switch nargin
    2525                                case 0
    26                                         obj=setdefaultparameters(obj);
     26                                        self=setdefaultparameters(self);
    2727                                case 1
    28                                         obj=structtoobj(obj,varargin{1});
     28                                        obj=structtoobj(self,varargin{1});
    2929                                otherwise
    3030                                        error('constructor not supported');
    3131                        end
    3232                end % }}}
    33                 function obj = setdefaultparameters(obj) % {{{
     33                function self = setdefaultparameters(self) % {{{
    3434
    3535                        %Type of stabilization to use 0:nothing 1:artificial_diffusivity
    36                         obj.stabilization=1;
     36                        self.stabilization=1;
    3737                end % }}}
    38                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     38                function md = checkconsistency(self,md,solution,analyses) % {{{
    3939
    4040                        %Early return
     
    4646                        md = checkfield(md,'fieldname','hydrology.stabilization','>=',0);
    4747                end % }}}
    48                 function disp(obj) % {{{
     48                function disp(self) % {{{
    4949                        disp(sprintf('   hydrologyshreve solution parameters:'));
    50                         fielddisplay(obj,'spcwatercolumn','water thickness constraints (NaN means no constraint) [m]');
    51                         fielddisplay(obj,'stabilization','artificial diffusivity (default is 1). can be more than 1 to increase diffusivity.');
     50                        fielddisplay(self,'spcwatercolumn','water thickness constraints (NaN means no constraint) [m]');
     51                        fielddisplay(self,'stabilization','artificial diffusivity (default is 1). can be more than 1 to increase diffusivity.');
    5252
    5353                end % }}}
    54                 function marshall(obj,md,fid) % {{{
     54                function marshall(self,md,fid) % {{{
    5555                        WriteData(fid,'enum',HydrologyModelEnum(),'data',HydrologyshreveEnum(),'format','Integer');
    56                         WriteData(fid,'object',obj,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    57                         WriteData(fid,'object',obj,'fieldname','stabilization','format','Double');
     56                        WriteData(fid,'object',self,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
     57                        WriteData(fid,'object',self,'fieldname','stabilization','format','Double');
    5858                end % }}}
    5959        end
  • issm/trunk-jpl/src/m/classes/independent.m

    r16815 r19040  
    1313        end
    1414        methods
    15                 function obj = independent(varargin) % {{{
     15                function self = independent(varargin) % {{{
    1616
    1717                        %use provided options to change fields
     
    1919
    2020                        %OK get other fields
    21                         obj=AssignObjectFields(pairoptions(varargin{:}),obj);
     21                        self=AssignObjectFields(pairoptions(varargin{:}),self);
    2222
    2323                end
    2424                %}}}
    25                 function obj = setdefaultparameters(obj) % {{{
     25                function self = setdefaultparameters(self) % {{{
    2626                        %do nothing
    2727
    2828                end % }}}
    29                 function md = checkconsistency(obj,md,i,solution,analyses,driver) % {{{
    30                         if ~isnan(obj.fos_forward_index),
     29                function md = checkconsistency(self,md,i,solution,analyses,driver) % {{{
     30                        if ~isnan(self.fos_forward_index),
    3131                                if ~strcmpi(driver,'fos_forward'),
    3232                                        error('cannot declare an independent with a fos_forward_index when the driver is not fos_forward!');
    3333                                end
    34                                 if obj.nods==0,
     34                                if self.nods==0,
    3535                                        error('independent checkconsistency error: nods should be set to the size of the independent variable');
    3636                                end
    3737                        end
    3838
    39                         if ~isempty(obj.fov_forward_indices),
     39                        if ~isempty(self.fov_forward_indices),
    4040                                if ~strcmpi(driver,'fov_forward'),
    4141                                        error('cannot declare an independent with fov_forward_indices when the driver is not fov_forward!');
    4242                                end
    43                                 if obj.nods==0,
     43                                if self.nods==0,
    4444                                        error('independent checkconsistency error: nods should be set to the size of the independent variable');
    4545                                end
    46                                 md = checkfield(md,'fieldname',['autodiff.independents{' num2str(i) '}.fov_forward_indices'],'>=',1,'<=',obj.nods,'size',[NaN 1]);
     46                                md = checkfield(md,'fieldname',['autodiff.independents{' num2str(i) '}.fov_forward_indices'],'>=',1,'<=',self.nods,'size',[NaN 1]);
    4747                        end
    4848
    4949                end % }}}
    50                 function disp(obj) % {{{
     50                function disp(self) % {{{
    5151                        disp(sprintf('   independent variable:'));
    5252
    53                         fielddisplay(obj,'name','variable name (must match corresponding Enum)');
    54                         fielddisplay(obj,'type','type of variable (''vertex'' or ''scalar'')');
    55                         if ~isnan(obj.fos_forward_index),
    56                                 fielddisplay(obj,'fos_forward_index','index for fos_foward driver of ADOLC');
     53                        fielddisplay(self,'name','variable name (must match corresponding Enum)');
     54                        fielddisplay(self,'type','type of variable (''vertex'' or ''scalar'')');
     55                        if ~isnan(self.fos_forward_index),
     56                                fielddisplay(self,'fos_forward_index','index for fos_foward driver of ADOLC');
    5757                        end
    58                         if ~isnan(obj.fov_forward_indices),
    59                                 fielddisplay(obj,'fov_forward_indices','indices for fov_foward driver of ADOLC');
     58                        if ~isnan(self.fov_forward_indices),
     59                                fielddisplay(self,'fov_forward_indices','indices for fov_foward driver of ADOLC');
    6060                        end
    6161                end % }}}
    62                 function scalartype=typetoscalar(obj) % {{{
    63                         if strcmpi(obj.type,'scalar'),
     62                function scalartype=typetoscalar(self) % {{{
     63                        if strcmpi(self.type,'scalar'),
    6464                                scalartype=0;
    65                         elseif strcmpi(obj.type,'vertex'),
     65                        elseif strcmpi(self.type,'vertex'),
    6666                                scalartype=1;
    67                         elseif strcmpi(obj.type,'matrix'),
     67                        elseif strcmpi(self.type,'matrix'),
    6868                                scalartype=1;
    69                         else error([obj.type ' not supported yet!']);
     69                        else error([self.type ' not supported yet!']);
    7070                        end
    7171                end % }}}
  • issm/trunk-jpl/src/m/classes/initialization.m

    r18732 r19040  
    1919        end
    2020        methods
    21                 function createxml(obj,fid) % {{{
     21                function createxml(self,fid) % {{{
    2222                        fprintf(fid, '\n\n');
    2323                        fprintf(fid, '%s\n', '<!-- initialization -->');
    2424                        fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Initial field values">','<section name="initialization" />');                   
    2525
    26                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="vx" type="',class(obj.vx),'" default="',obj.vx,'">','     <section name="initialization" />','     <help> x component of velocity [m/yr] </help>','</parameter>');
    27                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="vy" type="',class(obj.vy),'" default="',obj.vy,'">','     <section name="initialization" />','     <help> y component of velocity [m/yr] </help>','</parameter>');
    28                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="vz" type="',class(obj.vz),'" default="',obj.vz,'">','     <section name="initialization" />','     <help> z component of velocity [m/yr] </help>','</parameter>');
    29                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="vel" type="',class(obj.vel),'" default="',obj.vel,'">','     <section name="initialization" />','     <help> velocity norm [m/yr] </help>','</parameter>');
    30                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="pressure" type="',class(obj.pressure),'" default="',obj.pressure,'">','     <section name="initialization" />','     <help> pressure field [Pa] </help>','</parameter>');
    31                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="temperature" type="',class(obj.temperature),'" default="',obj.temperature,'">','     <section name="initialization" />','     <help> fraction of water in the ice </help>','</parameter>');
    32                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="waterfraction" type="',class(obj.waterfraction),'" default="',obj.waterfraction,'">','     <section name="initialization" />','     <help> ice thickness [m] </help>','</parameter>');
    33                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="sediment_head" type="',class(obj.sediment_head),'" default="',obj.sediment_head,'">','     <section name="initialization" />','     <help> sediment water head of subglacial system [m] </help>','</parameter>');
    34                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="epl_head" type="',class(obj.epl_head),'" default="',obj.epl_head,'">','     <section name="initialization" />','     <help> epl water head of subglacial system [m] </help>','</parameter>');
    35                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="watercolumn" type="',class(obj.watercolumn),'" default="',obj.watercolumn,'">','     <section name="initialization" />','     <help> thickness of subglacial water [m] </help>','</parameter>');
     26                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="vx" type="',class(self.vx),'" default="',self.vx,'">','     <section name="initialization" />','     <help> x component of velocity [m/yr] </help>','</parameter>');
     27                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="vy" type="',class(self.vy),'" default="',self.vy,'">','     <section name="initialization" />','     <help> y component of velocity [m/yr] </help>','</parameter>');
     28                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="vz" type="',class(self.vz),'" default="',self.vz,'">','     <section name="initialization" />','     <help> z component of velocity [m/yr] </help>','</parameter>');
     29                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="vel" type="',class(self.vel),'" default="',self.vel,'">','     <section name="initialization" />','     <help> velocity norm [m/yr] </help>','</parameter>');
     30                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="pressure" type="',class(self.pressure),'" default="',self.pressure,'">','     <section name="initialization" />','     <help> pressure field [Pa] </help>','</parameter>');
     31                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="temperature" type="',class(self.temperature),'" default="',self.temperature,'">','     <section name="initialization" />','     <help> fraction of water in the ice </help>','</parameter>');
     32                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="waterfraction" type="',class(self.waterfraction),'" default="',self.waterfraction,'">','     <section name="initialization" />','     <help> ice thickness [m] </help>','</parameter>');
     33                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="sediment_head" type="',class(self.sediment_head),'" default="',self.sediment_head,'">','     <section name="initialization" />','     <help> sediment water head of subglacial system [m] </help>','</parameter>');
     34                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="epl_head" type="',class(self.epl_head),'" default="',self.epl_head,'">','     <section name="initialization" />','     <help> epl water head of subglacial system [m] </help>','</parameter>');
     35                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="watercolumn" type="',class(self.watercolumn),'" default="',self.watercolumn,'">','     <section name="initialization" />','     <help> thickness of subglacial water [m] </help>','</parameter>');
    3636                        fprintf(fid,'%s\n%s\n','</frame>');
    3737                end % }}}
    38                 function obj = initialization(varargin) % {{{
     38                function self = initialization(varargin) % {{{
    3939                        switch nargin
    4040                                case 0
    41                                         obj=setdefaultparameters(obj);
     41                                        self=setdefaultparameters(self);
    4242                                otherwise
    4343                                        error('constructor not supported');
    4444                        end
    4545                end % }}}
    46                 function obj = setdefaultparameters(obj) % {{{
     46                function self = setdefaultparameters(self) % {{{
    4747
    4848                end % }}}
    49                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     49                function md = checkconsistency(self,md,solution,analyses) % {{{
    5050                        if ismember(StressbalanceAnalysisEnum(),analyses)
    5151                                if ~(isnan(md.initialization.vx) | isnan(md.initialization.vy)),
     
    9898                        end
    9999                end % }}}
    100                 function disp(obj) % {{{
     100                function disp(self) % {{{
    101101                        disp(sprintf('   initial field values:'));
    102102
    103                         fielddisplay(obj,'vx','x component of velocity [m/yr]');
    104                         fielddisplay(obj,'vy','y component of velocity [m/yr]');
    105                         fielddisplay(obj,'vz','z component of velocity [m/yr]');
    106                         fielddisplay(obj,'vel','velocity norm [m/yr]');
    107                         fielddisplay(obj,'pressure','pressure field [Pa]');
    108                         fielddisplay(obj,'temperature','temperature [K]');
    109                         fielddisplay(obj,'waterfraction','fraction of water in the ice');
    110                         fielddisplay(obj,'sediment_head','sediment water head of subglacial system [m]');
    111                         fielddisplay(obj,'epl_head','epl water head of subglacial system [m]');
    112                         fielddisplay(obj,'epl_thickness','epl layer thickness [m]');
    113                         fielddisplay(obj,'watercolumn','thickness of subglacial water [m]');
     103                        fielddisplay(self,'vx','x component of velocity [m/yr]');
     104                        fielddisplay(self,'vy','y component of velocity [m/yr]');
     105                        fielddisplay(self,'vz','z component of velocity [m/yr]');
     106                        fielddisplay(self,'vel','velocity norm [m/yr]');
     107                        fielddisplay(self,'pressure','pressure field [Pa]');
     108                        fielddisplay(self,'temperature','temperature [K]');
     109                        fielddisplay(self,'waterfraction','fraction of water in the ice');
     110                        fielddisplay(self,'sediment_head','sediment water head of subglacial system [m]');
     111                        fielddisplay(self,'epl_head','epl water head of subglacial system [m]');
     112                        fielddisplay(self,'epl_thickness','epl layer thickness [m]');
     113                        fielddisplay(self,'watercolumn','thickness of subglacial water [m]');
    114114
    115115                end % }}}
    116                 function marshall(obj,md,fid) % {{{
     116                function marshall(self,md,fid) % {{{
    117117
    118118                        yts=365.0*24.0*3600.0;
    119119
    120                         WriteData(fid,'data',obj.vx,'format','DoubleMat','mattype',1,'enum',VxEnum,'scale',1./yts);
    121                         WriteData(fid,'data',obj.vy,'format','DoubleMat','mattype',1,'enum',VyEnum,'scale',1./yts);
    122                         WriteData(fid,'data',obj.vz,'format','DoubleMat','mattype',1,'enum',VzEnum,'scale',1./yts);
    123                         WriteData(fid,'data',obj.pressure,'format','DoubleMat','mattype',1,'enum',PressureEnum);
    124                         WriteData(fid,'data',obj.temperature,'format','DoubleMat','mattype',1,'enum',TemperatureEnum);
    125                         WriteData(fid,'data',obj.waterfraction,'format','DoubleMat','mattype',1,'enum',WaterfractionEnum);
    126                         WriteData(fid,'data',obj.sediment_head,'format','DoubleMat','mattype',1,'enum',SedimentHeadEnum);
    127                         WriteData(fid,'data',obj.epl_head,'format','DoubleMat','mattype',1,'enum',EplHeadEnum);
    128                         WriteData(fid,'data',obj.epl_thickness,'format','DoubleMat','mattype',1,'enum',HydrologydcEplThicknessEnum);
    129                         WriteData(fid,'data',obj.watercolumn,'format','DoubleMat','mattype',1,'enum',WatercolumnEnum);
     120                        WriteData(fid,'data',self.vx,'format','DoubleMat','mattype',1,'enum',VxEnum,'scale',1./yts);
     121                        WriteData(fid,'data',self.vy,'format','DoubleMat','mattype',1,'enum',VyEnum,'scale',1./yts);
     122                        WriteData(fid,'data',self.vz,'format','DoubleMat','mattype',1,'enum',VzEnum,'scale',1./yts);
     123                        WriteData(fid,'data',self.pressure,'format','DoubleMat','mattype',1,'enum',PressureEnum);
     124                        WriteData(fid,'data',self.temperature,'format','DoubleMat','mattype',1,'enum',TemperatureEnum);
     125                        WriteData(fid,'data',self.waterfraction,'format','DoubleMat','mattype',1,'enum',WaterfractionEnum);
     126                        WriteData(fid,'data',self.sediment_head,'format','DoubleMat','mattype',1,'enum',SedimentHeadEnum);
     127                        WriteData(fid,'data',self.epl_head,'format','DoubleMat','mattype',1,'enum',EplHeadEnum);
     128                        WriteData(fid,'data',self.epl_thickness,'format','DoubleMat','mattype',1,'enum',HydrologydcEplThicknessEnum);
     129                        WriteData(fid,'data',self.watercolumn,'format','DoubleMat','mattype',1,'enum',WatercolumnEnum);
    130130
    131131                        if md.thermal.isenthalpy,
  • issm/trunk-jpl/src/m/classes/inversion.m

    r18994 r19040  
    2626        end
    2727        methods
    28                 function createxml(obj,fid) % {{{
     28                function createxml(self,fid) % {{{
    2929                        fprintf(fid, '<!-- inversion -->\n');           
    3030
    3131                        % inversion parameters
    3232                        fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="inversion parameters">','<section name="inversion" />');                   
    33                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="iscontrol" type="',class(obj.iscontrol),'" default="',convert2str(obj.iscontrol),'">','     <section name="inversion" />','     <help> is inversion activated? </help>','  </parameter>');
     33                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="iscontrol" type="',class(self.iscontrol),'" default="',convert2str(self.iscontrol),'">','     <section name="inversion" />','     <help> is inversion activated? </help>','  </parameter>');
    3434
    3535                        % incompleteadjoing drop-down (0 or 1)
     
    3838                        fprintf(fid,'%s\n%s\n','       <option value="1" type="string" default="false"> </option>','</parameter>');
    3939
    40                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="control_parameters" type="',class(obj.control_parameters),'" default="',convert2str(obj.control_parameters),'">','     <section name="inversion" />','     <help> ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''} </help>','  </parameter>');
    41 
    42                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="nsteps" type="',class(obj.nsteps),'" default="',convert2str(obj.nsteps),'">','     <section name="inversion" />','     <help> number of optimization searches </help>','  </parameter>');
    43                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="cost_functions" type="',class(obj.cost_functions),'" default="',convert2str(obj.cost_functions),'">','     <section name="inversion" />','     <help> indicate the type of response for each optimization step  </help>','  </parameter>');
    44                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="cost_functions_coefficients" type="',class(obj.cost_functions_coefficients),'" default="',convert2str(obj.cost_functions_coefficients),'">','     <section name="inversion" />','     <help> cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter </help>','  </parameter>');
    45 
    46                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="cost_function_threshold" type="',class(obj.cost_function_threshold),'" default="',convert2str(obj.cost_function_threshold),'">','     <section name="inversion" />','     <help> misfit convergence criterion. Default is 1%, NaN if not applied </help>','  </parameter>');
    47                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="maxiter_per_step" type="',class(obj.maxiter_per_step),'" default="',convert2str(obj.maxiter_per_step),'">','     <section name="inversion" />','     <help> maximum iterations during each optimization step  </help>','  </parameter>');
    48                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="gradient_scaling" type="',class(obj.gradient_scaling),'" default="',convert2str(obj.gradient_scaling),'">','     <section name="inversion" />','     <help> scaling factor on gradient direction during optimization, for each optimization step </help>','  </parameter>');
    49 
    50                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="step_threshold" type="',class(obj.step_threshold),'" default="',convert2str(obj.step_threshold),'">','     <section name="inversion" />','     <help> decrease threshold for misfit, default is 30% </help>','  </parameter>');
    51                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="min_parameters" type="',class(obj.min_parameters),'" default="',convert2str(obj.min_parameters),'">','     <section name="inversion" />','     <help> absolute minimum acceptable value of the inversed parameter on each vertex </help>','  </parameter>');
    52                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="max_parameters" type="',class(obj.max_parameters),'" default="',convert2str(obj.max_parameters),'">','     <section name="inversion" />','     <help> absolute maximum acceptable value of the inversed parameter on each vertex </help>','  </parameter>');
    53 
    54                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vx_obs" type="',class(obj.vx_obs),'" default="',convert2str(obj.vx_obs),'">','     <section name="inversion" />','     <help> observed velocity x component [m/yr] </help>','  </parameter>');
    55                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vy_obs" type="',class(obj.vy_obs),'" default="',convert2str(obj.vy_obs),'">','     <section name="inversion" />','     <help> observed velocity y component [m/yr]  </help>','  </parameter>');
    56                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vel_obs" type="',class(obj.vel_obs),'" default="',convert2str(obj.vel_obs),'">','     <section name="inversion" />','     <help> observed velocity magnitude [m/yr] </help>','  </parameter>');
    57                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="thickness_obs" type="',class(obj.thickness_obs),'" default="',convert2str(obj.thickness_obs),'">','     <section name="inversion" />','     <help> observed thickness [m]) </help>','  </parameter>');
     40                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="control_parameters" type="',class(self.control_parameters),'" default="',convert2str(self.control_parameters),'">','     <section name="inversion" />','     <help> ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''} </help>','  </parameter>');
     41
     42                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="nsteps" type="',class(self.nsteps),'" default="',convert2str(self.nsteps),'">','     <section name="inversion" />','     <help> number of optimization searches </help>','  </parameter>');
     43                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="cost_functions" type="',class(self.cost_functions),'" default="',convert2str(self.cost_functions),'">','     <section name="inversion" />','     <help> indicate the type of response for each optimization step  </help>','  </parameter>');
     44                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="cost_functions_coefficients" type="',class(self.cost_functions_coefficients),'" default="',convert2str(self.cost_functions_coefficients),'">','     <section name="inversion" />','     <help> cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter </help>','  </parameter>');
     45
     46                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="cost_function_threshold" type="',class(self.cost_function_threshold),'" default="',convert2str(self.cost_function_threshold),'">','     <section name="inversion" />','     <help> misfit convergence criterion. Default is 1%, NaN if not applied </help>','  </parameter>');
     47                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="maxiter_per_step" type="',class(self.maxiter_per_step),'" default="',convert2str(self.maxiter_per_step),'">','     <section name="inversion" />','     <help> maximum iterations during each optimization step  </help>','  </parameter>');
     48                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="gradient_scaling" type="',class(self.gradient_scaling),'" default="',convert2str(self.gradient_scaling),'">','     <section name="inversion" />','     <help> scaling factor on gradient direction during optimization, for each optimization step </help>','  </parameter>');
     49
     50                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="step_threshold" type="',class(self.step_threshold),'" default="',convert2str(self.step_threshold),'">','     <section name="inversion" />','     <help> decrease threshold for misfit, default is 30% </help>','  </parameter>');
     51                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="min_parameters" type="',class(self.min_parameters),'" default="',convert2str(self.min_parameters),'">','     <section name="inversion" />','     <help> absolute minimum acceptable value of the inversed parameter on each vertex </help>','  </parameter>');
     52                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="max_parameters" type="',class(self.max_parameters),'" default="',convert2str(self.max_parameters),'">','     <section name="inversion" />','     <help> absolute maximum acceptable value of the inversed parameter on each vertex </help>','  </parameter>');
     53
     54                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vx_obs" type="',class(self.vx_obs),'" default="',convert2str(self.vx_obs),'">','     <section name="inversion" />','     <help> observed velocity x component [m/yr] </help>','  </parameter>');
     55                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vy_obs" type="',class(self.vy_obs),'" default="',convert2str(self.vy_obs),'">','     <section name="inversion" />','     <help> observed velocity y component [m/yr]  </help>','  </parameter>');
     56                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vel_obs" type="',class(self.vel_obs),'" default="',convert2str(self.vel_obs),'">','     <section name="inversion" />','     <help> observed velocity magnitude [m/yr] </help>','  </parameter>');
     57                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="thickness_obs" type="',class(self.thickness_obs),'" default="',convert2str(self.thickness_obs),'">','     <section name="inversion" />','     <help> observed thickness [m]) </help>','  </parameter>');
    5858
    5959                        fprintf(fid,'%s\n%s\n','</frame>');   
     
    7575
    7676                end % }}}       
    77                 function obj = inversion(varargin) % {{{
     77                function self = inversion(varargin) % {{{
    7878                        switch nargin
    7979                                case 0
    80                                         obj=setdefaultparameters(obj);
     80                                        self=setdefaultparameters(self);
    8181                                case 1
    82                                         obj=structtoobj(inversion(),varargin{1});
     82                                        self =structtoobj(inversion(),varargin{1});
    8383                                otherwise
    8484                                        error('constructor not supported');
    8585                        end
    8686                end % }}}
    87                 function obj = setdefaultparameters(obj) % {{{
     87                function self = setdefaultparameters(self) % {{{
    8888
    8989                        %default is incomplete adjoint for now
    90                         obj.incomplete_adjoint=1;
     90                        self.incomplete_adjoint=1;
    9191
    9292                        %parameter to be inferred by control methods (only
    9393                        %drag and B are supported yet)
    94                         obj.control_parameters={'FrictionCoefficient'};
     94                        self.control_parameters={'FrictionCoefficient'};
    9595
    9696                        %number of steps in the control methods
    97                         obj.nsteps=20;
     97                        self.nsteps=20;
    9898
    9999                        %maximum number of iteration in the optimization algorithm for
    100100                        %each step
    101                         obj.maxiter_per_step=20*ones(obj.nsteps,1);
     101                        self.maxiter_per_step=20*ones(self.nsteps,1);
    102102
    103103                        %the inversed parameter is updated as follows:
     
    106106                        %inversed parameter (10^8 for B, 50 for drag) and can be decreased
    107107                        %after the first iterations
    108                         obj.gradient_scaling=50*ones(obj.nsteps,1);
     108                        self.gradient_scaling=50*ones(self.nsteps,1);
    109109
    110110                        %several responses can be used:
    111                         obj.cost_functions=101;
     111                        self.cost_functions=101;
    112112
    113113                        %step_threshold is used to speed up control method. When
    114                         %misfit(1)/misfit(0) < obj.step_threshold, we go directly to
     114                        %misfit(1)/misfit(0) < self.step_threshold, we go directly to
    115115                        %the next step
    116                         obj.step_threshold=.7*ones(obj.nsteps,1); %30 per cent decrement.
     116                        self.step_threshold=.7*ones(self.nsteps,1); %30 per cent decrement.
    117117
    118118                        %cost_function_threshold is a criteria to stop the control methods.
    119119                        %if J[n]-J[n-1]/J[n] < criteria, the control run stops
    120120                        %NaN if not applied
    121                         obj.cost_function_threshold=NaN; %not activated
    122 
    123                 end % }}}
    124                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     121                        self.cost_function_threshold=NaN; %not activated
     122
     123                end % }}}
     124                function md = checkconsistency(self,md,solution,analyses) % {{{
    125125
    126126                        %Early return
    127                         if ~obj.iscontrol, return; end
     127                        if ~self.iscontrol, return; end
    128128
    129129                        num_controls=numel(md.inversion.control_parameters);
     
    158158                        end
    159159                end % }}}
    160                 function disp(obj) % {{{
     160                function disp(self) % {{{
    161161                        disp(sprintf('   inversion parameters:'));
    162                         fielddisplay(obj,'iscontrol','is inversion activated?');
    163                         fielddisplay(obj,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity');
    164                         fielddisplay(obj,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
    165                         fielddisplay(obj,'nsteps','number of optimization searches');
    166                         fielddisplay(obj,'cost_functions','indicate the type of response for each optimization step');
    167                         fielddisplay(obj,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
    168                         fielddisplay(obj,'cost_function_threshold','misfit convergence criterion. Default is 1%, NaN if not applied');
    169                         fielddisplay(obj,'maxiter_per_step','maximum iterations during each optimization step');
    170                         fielddisplay(obj,'gradient_scaling','scaling factor on gradient direction during optimization, for each optimization step');
    171                         fielddisplay(obj,'step_threshold','decrease threshold for misfit, default is 30%');
    172                         fielddisplay(obj,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
    173                         fielddisplay(obj,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
    174                         fielddisplay(obj,'vx_obs','observed velocity x component [m/yr]');
    175                         fielddisplay(obj,'vy_obs','observed velocity y component [m/yr]');
    176                         fielddisplay(obj,'vel_obs','observed velocity magnitude [m/yr]');
    177                         fielddisplay(obj,'thickness_obs','observed thickness [m]');
    178                         fielddisplay(obj,'surface_obs','observed surface elevation [m]');
     162                        fielddisplay(self,'iscontrol','is inversion activated?');
     163                        fielddisplay(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity');
     164                        fielddisplay(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
     165                        fielddisplay(self,'nsteps','number of optimization searches');
     166                        fielddisplay(self,'cost_functions','indicate the type of response for each optimization step');
     167                        fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
     168                        fielddisplay(self,'cost_function_threshold','misfit convergence criterion. Default is 1%, NaN if not applied');
     169                        fielddisplay(self,'maxiter_per_step','maximum iterations during each optimization step');
     170                        fielddisplay(self,'gradient_scaling','scaling factor on gradient direction during optimization, for each optimization step');
     171                        fielddisplay(self,'step_threshold','decrease threshold for misfit, default is 30%');
     172                        fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
     173                        fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
     174                        fielddisplay(self,'vx_obs','observed velocity x component [m/yr]');
     175                        fielddisplay(self,'vy_obs','observed velocity y component [m/yr]');
     176                        fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]');
     177                        fielddisplay(self,'thickness_obs','observed thickness [m]');
     178                        fielddisplay(self,'surface_obs','observed surface elevation [m]');
    179179                        disp('Available cost functions:');
    180180                        disp('   101: SurfaceAbsVelMisfit');
     
    188188                        disp('   503: ThicknessAbsGradient');
    189189                end % }}}
    190                 function marshall(obj,md,fid) % {{{
     190                function marshall(self,md,fid) % {{{
    191191
    192192                        yts=365.0*24.0*3600.0;
    193193
    194194                        WriteData(fid,'enum',InversionTypeEnum(),'data',0,'format','Integer');
    195                         WriteData(fid,'object',obj,'fieldname','iscontrol','format','Boolean');
    196                         WriteData(fid,'object',obj,'fieldname','incomplete_adjoint','format','Boolean');
    197                         if ~obj.iscontrol, return; end
    198                         WriteData(fid,'object',obj,'fieldname','nsteps','format','Integer');
    199                         WriteData(fid,'object',obj,'fieldname','maxiter_per_step','format','IntMat','mattype',3);
    200                         WriteData(fid,'object',obj,'fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
    201                         WriteData(fid,'object',obj,'fieldname','gradient_scaling','format','DoubleMat','mattype',3);
    202                         WriteData(fid,'object',obj,'fieldname','cost_function_threshold','format','Double');
    203                         WriteData(fid,'object',obj,'fieldname','min_parameters','format','DoubleMat','mattype',3);
    204                         WriteData(fid,'object',obj,'fieldname','max_parameters','format','DoubleMat','mattype',3);
    205                         WriteData(fid,'object',obj,'fieldname','step_threshold','format','DoubleMat','mattype',3);
    206                         WriteData(fid,'object',obj,'fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
    207                         WriteData(fid,'object',obj,'fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
    208                         WriteData(fid,'object',obj,'fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
    209                         if(numel(obj.thickness_obs)==md.mesh.numberofelements),
     195                        WriteData(fid,'object',self,'fieldname','iscontrol','format','Boolean');
     196                        WriteData(fid,'object',self,'fieldname','incomplete_adjoint','format','Boolean');
     197                        if ~self.iscontrol, return; end
     198                        WriteData(fid,'object',self,'fieldname','nsteps','format','Integer');
     199                        WriteData(fid,'object',self,'fieldname','maxiter_per_step','format','IntMat','mattype',3);
     200                        WriteData(fid,'object',self,'fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
     201                        WriteData(fid,'object',self,'fieldname','gradient_scaling','format','DoubleMat','mattype',3);
     202                        WriteData(fid,'object',self,'fieldname','cost_function_threshold','format','Double');
     203                        WriteData(fid,'object',self,'fieldname','min_parameters','format','DoubleMat','mattype',3);
     204                        WriteData(fid,'object',self,'fieldname','max_parameters','format','DoubleMat','mattype',3);
     205                        WriteData(fid,'object',self,'fieldname','step_threshold','format','DoubleMat','mattype',3);
     206                        WriteData(fid,'object',self,'fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
     207                        WriteData(fid,'object',self,'fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
     208                        WriteData(fid,'object',self,'fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
     209                        if(numel(self.thickness_obs)==md.mesh.numberofelements),
    210210                                mattype=2;
    211211                        else
    212212                                mattype=1;
    213213                        end
    214                         WriteData(fid,'object',obj,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
    215                         WriteData(fid,'object',obj,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
     214                        WriteData(fid,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
     215                        WriteData(fid,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
    216216
    217217
    218218                        %process control parameters
    219                         num_control_parameters=numel(obj.control_parameters);
     219                        num_control_parameters=numel(self.control_parameters);
    220220                        data=zeros(1,num_control_parameters);
    221221                        for i=1:num_control_parameters,
    222                                 data(i)=StringToEnum(obj.control_parameters{i});
     222                                data(i)=StringToEnum(self.control_parameters{i});
    223223                        end
    224224                        WriteData(fid,'data',data,'enum',InversionControlParametersEnum(),'format','DoubleMat','mattype',3);
     
    226226
    227227                        %process cost functions
    228                         num_cost_functions=size(obj.cost_functions,2);
    229                         data=marshallcostfunctions(obj.cost_functions);
     228                        num_cost_functions=size(self.cost_functions,2);
     229                        data=marshallcostfunctions(self.cost_functions);
    230230                        WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3);
    231231                        WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer');
  • issm/trunk-jpl/src/m/classes/inversionvalidation.m

    r18994 r19040  
    2222        end
    2323        methods
    24                 function obj = inversionvalidation(varargin) % {{{
     24                function self = inversionvalidation(varargin) % {{{
    2525                        switch nargin
    2626                                case 0
    27                                         obj=setdefaultparameters(obj);
     27                                        self=setdefaultparameters(self);
    2828                                case 1
    2929                                        obj=structtoobj(inversionvalidation(),varargin{1});
     
    4747                        self.cost_functions=101;
    4848                end % }}}
    49                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     49                function md = checkconsistency(self,md,solution,analyses) % {{{
    5050
    5151                        %Early return
    52                         if ~obj.iscontrol, return; end
     52                        if ~self.iscontrol, return; end
    5353
    5454                        num_controls=numel(md.inversion.control_parameters);
     
    7575                        end
    7676                end % }}}
    77                 function disp(obj) % {{{
     77                function disp(self) % {{{
    7878                        disp(sprintf('   inversionvalidation parameters:'));
    79                         fielddisplay(obj,'iscontrol','is inversion activated?');
    80                         fielddisplay(obj,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity');
    81                         fielddisplay(obj,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
    82                         fielddisplay(obj,'control_scaling_factors','order of magnitude of each control (useful for multi-parameter optimization)');
    83                         fielddisplay(obj,'cost_functions','indicate the type of response for each optimization step');
    84                         fielddisplay(obj,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
    85                         fielddisplay(obj,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
    86                         fielddisplay(obj,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
    87                         fielddisplay(obj,'vx_obs','observed velocity x component [m/yr]');
    88                         fielddisplay(obj,'vy_obs','observed velocity y component [m/yr]');
    89                         fielddisplay(obj,'vel_obs','observed velocity magnitude [m/yr]');
    90                         fielddisplay(obj,'thickness_obs','observed thickness [m]');
    91                         fielddisplay(obj,'surface_obs','observed surface elevation [m]');
     79                        fielddisplay(self,'iscontrol','is inversion activated?');
     80                        fielddisplay(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity');
     81                        fielddisplay(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
     82                        fielddisplay(self,'control_scaling_factors','order of magnitude of each control (useful for multi-parameter optimization)');
     83                        fielddisplay(self,'cost_functions','indicate the type of response for each optimization step');
     84                        fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
     85                        fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
     86                        fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
     87                        fielddisplay(self,'vx_obs','observed velocity x component [m/yr]');
     88                        fielddisplay(self,'vy_obs','observed velocity y component [m/yr]');
     89                        fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]');
     90                        fielddisplay(self,'thickness_obs','observed thickness [m]');
     91                        fielddisplay(self,'surface_obs','observed surface elevation [m]');
    9292                        disp('Available cost functions:');
    9393                        disp('   101: SurfaceAbsVelMisfit');
     
    101101                        disp('   503: ThicknessAbsGradient');
    102102                end % }}}
    103                 function marshall(obj,md,fid) % {{{
     103                function marshall(self,md,fid) % {{{
    104104
    105105                        yts=365.0*24.0*3600.0;
    106106
    107                         WriteData(fid,'object',obj,'class','inversion','fieldname','iscontrol','format','Boolean');
     107                        WriteData(fid,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean');
    108108                        WriteData(fid,'enum',InversionTypeEnum(),'data',3,'format','Integer');
    109                         if ~obj.iscontrol, return; end
    110                         WriteData(fid,'object',obj,'class','inversion','fieldname','incomplete_adjoint','format','Boolean');
    111                         WriteData(fid,'object',obj,'class','inversion','fieldname','control_scaling_factors','format','DoubleMat','mattype',3);
    112                         WriteData(fid,'object',obj,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
    113                         WriteData(fid,'object',obj,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3);
    114                         WriteData(fid,'object',obj,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3);
    115                         WriteData(fid,'object',obj,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
    116                         WriteData(fid,'object',obj,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
    117                         WriteData(fid,'object',obj,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
    118                         if(numel(obj.thickness_obs)==md.mesh.numberofelements),
     109                        if ~self.iscontrol, return; end
     110                        WriteData(fid,'object',self,'class','inversion','fieldname','incomplete_adjoint','format','Boolean');
     111                        WriteData(fid,'object',self,'class','inversion','fieldname','control_scaling_factors','format','DoubleMat','mattype',3);
     112                        WriteData(fid,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
     113                        WriteData(fid,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3);
     114                        WriteData(fid,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3);
     115                        WriteData(fid,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
     116                        WriteData(fid,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
     117                        WriteData(fid,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
     118                        if(numel(self.thickness_obs)==md.mesh.numberofelements),
    119119                                mattype=2;
    120120                        else
    121121                                mattype=1;
    122122                        end
    123                         WriteData(fid,'object',obj,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
    124                         WriteData(fid,'object',obj,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
     123                        WriteData(fid,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
     124                        WriteData(fid,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
    125125
    126126                        %process control parameters
    127                         num_control_parameters=numel(obj.control_parameters);
     127                        num_control_parameters=numel(self.control_parameters);
    128128                        data=zeros(1,num_control_parameters);
    129129                        for i=1:num_control_parameters,
    130                                 data(i)=StringToEnum(obj.control_parameters{i});
     130                                data(i)=StringToEnum(self.control_parameters{i});
    131131                        end
    132132                        WriteData(fid,'data',data,'enum',InversionControlParametersEnum(),'format','DoubleMat','mattype',3);
     
    134134
    135135                        %process cost functions
    136                         num_cost_functions=size(obj.cost_functions,2);
    137                         data=marshallcostfunctions(obj.cost_functions);
     136                        num_cost_functions=size(self.cost_functions,2);
     137                        data=marshallcostfunctions(self.cost_functions);
    138138                        WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3);
    139139                        WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer');
  • issm/trunk-jpl/src/m/classes/linearbasalforcings.m

    r19027 r19040  
    1313        end
    1414        methods
    15      function createxml(obj,fid) % {{{
     15     function createxml(self,fid) % {{{
    1616            fprintf(fid, '\n\n');
    1717            fprintf(fid, '%s\n', '<!-- basalforcings -->');
    18                          fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="melting_rate" type="',            class(obj.melting_rate),'" default="',              num2str(obj.melting_rate),'">',              '     <section name="basalforcings" />','     <help> basal melting rate (positive if melting) [m/yr] </help>','</parameter>');
    19              fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',        '<parameter key ="geothermalflux" type="',          class(obj.geothermalflux),'" default="',            num2str(obj.geothermalflux),'">',            '     <section name="basalforcings" />','     <help> geothermal heat flux [W/m^2] </help>','</parameter>');
     18                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="melting_rate" type="',            class(self.melting_rate),'" default="',              num2str(self.melting_rate),'">',              '     <section name="basalforcings" />','     <help> basal melting rate (positive if melting) [m/yr] </help>','</parameter>');
     19             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',        '<parameter key ="geothermalflux" type="',          class(self.geothermalflux),'" default="',            num2str(self.geothermalflux),'">',            '     <section name="basalforcings" />','     <help> geothermal heat flux [W/m^2] </help>','</parameter>');
    2020             
    2121        end % }}}
    22                 function obj = linearbasalforcings(varargin) % {{{
     22                function self = linearbasalforcings(varargin) % {{{
    2323                        switch nargin
    2424                                case 0
    25                                         obj=setdefaultparameters(obj);
     25                                        self=setdefaultparameters(self);
    2626                                case 1
    2727                                        obj=structtoobj(linearbasalforcings(),varargin{1});
     
    3838
    3939                end % }}}
    40                 function obj = setdefaultparameters(obj) % {{{
     40                function self = setdefaultparameters(self) % {{{
    4141
    4242                        %default values for melting parameterization
    43                         obj.deepwater_melting_rate = 50;
    44                         obj.deepwater_elevation    = -800;
    45                         obj.upperwater_elevation   = -400;
     43                        self.deepwater_melting_rate = 50;
     44                        self.deepwater_elevation    = -800;
     45                        self.upperwater_elevation   = -400;
    4646
    4747                end % }}}
    48                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     48                function md = checkconsistency(self,md,solution,analyses) % {{{
    4949
    5050                        if ismember(MasstransportAnalysisEnum(),analyses) & ~(solution==TransientSolutionEnum() & md.transient.ismasstransport==0),
     
    6868                        end
    6969                end % }}}
    70                 function disp(obj) % {{{
     70                function disp(self) % {{{
    7171                        disp(sprintf('   basal forcings parameters:'));
    7272
    73                         fielddisplay(obj,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]');
    74                         fielddisplay(obj,'deepwater_melting_rate','basal melting rate (positive if melting applied for floating ice whith base < deepwater_elevation) [m/yr]');
    75                         fielddisplay(obj,'deepwater_elevation','elevation of ocean deepwater [m]');
    76                         fielddisplay(obj,'upperwater_elevation','elevation of ocean upperwater [m]');
    77                         fielddisplay(obj,'geothermalflux','geothermal heat flux [W/m^2]');
     73                        fielddisplay(self,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]');
     74                        fielddisplay(self,'deepwater_melting_rate','basal melting rate (positive if melting applied for floating ice whith base < deepwater_elevation) [m/yr]');
     75                        fielddisplay(self,'deepwater_elevation','elevation of ocean deepwater [m]');
     76                        fielddisplay(self,'upperwater_elevation','elevation of ocean upperwater [m]');
     77                        fielddisplay(self,'geothermalflux','geothermal heat flux [W/m^2]');
    7878
    7979                end % }}}
    80                 function marshall(obj,md,fid) % {{{
     80                function marshall(self,md,fid) % {{{
    8181
    8282                        yts=365.0*24.0*3600.0;
     
    8888                        WriteData(fid,'enum',BasalforcingsEnum(),'data',LinearFloatingMeltRateEnum(),'format','Integer');
    8989                        WriteData(fid,'data',floatingice_melting_rate,'format','DoubleMat','enum',BasalforcingsFloatingiceMeltingRateEnum(),'mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
    90                         WriteData(fid,'object',obj,'fieldname','groundedice_melting_rate','format','DoubleMat','enum',BasalforcingsGroundediceMeltingRateEnum(),'mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
    91                         WriteData(fid,'object',obj,'fieldname','geothermalflux','enum',BasalforcingsGeothermalfluxEnum(),'format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    92                         WriteData(fid,'object',obj,'fieldname','deepwater_melting_rate','format','Double','enum',BasalforcingsDeepwaterMeltingRateEnum(),'scale',1./yts)
    93                         WriteData(fid,'object',obj,'fieldname','deepwater_elevation','format','Double','enum',BasalforcingsDeepwaterElevationEnum())
    94                         WriteData(fid,'object',obj,'fieldname','upperwater_elevation','format','Double','enum',BasalforcingsUpperwaterElevationEnum())
     90                        WriteData(fid,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','enum',BasalforcingsGroundediceMeltingRateEnum(),'mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
     91                        WriteData(fid,'object',self,'fieldname','geothermalflux','enum',BasalforcingsGeothermalfluxEnum(),'format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
     92                        WriteData(fid,'object',self,'fieldname','deepwater_melting_rate','format','Double','enum',BasalforcingsDeepwaterMeltingRateEnum(),'scale',1./yts)
     93                        WriteData(fid,'object',self,'fieldname','deepwater_elevation','format','Double','enum',BasalforcingsDeepwaterElevationEnum())
     94                        WriteData(fid,'object',self,'fieldname','upperwater_elevation','format','Double','enum',BasalforcingsUpperwaterElevationEnum())
    9595                end % }}}
    9696        end
  • issm/trunk-jpl/src/m/classes/m1qn3inversion.m

    r18994 r19040  
    2727        end
    2828        methods
    29                 function obj = m1qn3inversion(varargin) % {{{
     29                function self = m1qn3inversion(varargin) % {{{
    3030                        switch nargin
    3131                                case 0
    32                                         obj=setdefaultparameters(obj);
     32                                        self=setdefaultparameters(self);
    3333                                case 1
    34                                         obj=structtoobj(m1qn3inversion(),varargin{1});
     34                                        self=structtoobj(m1qn3inversion(),varargin{1});
    3535                                otherwise
    3636                                        error('constructor not supported');
     
    6161
    6262                end % }}}
    63                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     63                function md = checkconsistency(self,md,solution,analyses) % {{{
    6464
    6565                        %Early return
    66                         if ~obj.iscontrol, return; end
     66                        if ~self.iscontrol, return; end
    6767
    6868                        if ~IssmConfig('_HAVE_M1QN3_'),
     
    9797                        end
    9898                end % }}}
    99                 function disp(obj) % {{{
     99                function disp(self) % {{{
    100100                        disp(sprintf('   m1qn3inversion parameters:'));
    101                         fielddisplay(obj,'iscontrol','is inversion activated?');
    102                         fielddisplay(obj,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity');
    103                         fielddisplay(obj,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
    104                         fielddisplay(obj,'control_scaling_factors','order of magnitude of each control (useful for multi-parameter optimization)');
    105                         fielddisplay(obj,'maxsteps','maximum number of iterations (gradient computation)');
    106                         fielddisplay(obj,'maxiter','maximum number of Function evaluation (forward run)');
    107                         fielddisplay(obj,'dxmin','convergence criterion: two points less than dxmin from eachother (sup-norm) are considered identical');
    108                         fielddisplay(obj,'gttol','convergence criterion: ||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)');
    109                         fielddisplay(obj,'cost_functions','indicate the type of response for each optimization step');
    110                         fielddisplay(obj,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
    111                         fielddisplay(obj,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
    112                         fielddisplay(obj,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
    113                         fielddisplay(obj,'vx_obs','observed velocity x component [m/yr]');
    114                         fielddisplay(obj,'vy_obs','observed velocity y component [m/yr]');
    115                         fielddisplay(obj,'vel_obs','observed velocity magnitude [m/yr]');
    116                         fielddisplay(obj,'thickness_obs','observed thickness [m]');
    117                         fielddisplay(obj,'surface_obs','observed surface elevation [m]');
     101                        fielddisplay(self,'iscontrol','is inversion activated?');
     102                        fielddisplay(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity');
     103                        fielddisplay(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
     104                        fielddisplay(self,'control_scaling_factors','order of magnitude of each control (useful for multi-parameter optimization)');
     105                        fielddisplay(self,'maxsteps','maximum number of iterations (gradient computation)');
     106                        fielddisplay(self,'maxiter','maximum number of Function evaluation (forward run)');
     107                        fielddisplay(self,'dxmin','convergence criterion: two points less than dxmin from eachother (sup-norm) are considered identical');
     108                        fielddisplay(self,'gttol','convergence criterion: ||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)');
     109                        fielddisplay(self,'cost_functions','indicate the type of response for each optimization step');
     110                        fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
     111                        fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
     112                        fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
     113                        fielddisplay(self,'vx_obs','observed velocity x component [m/yr]');
     114                        fielddisplay(self,'vy_obs','observed velocity y component [m/yr]');
     115                        fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]');
     116                        fielddisplay(self,'thickness_obs','observed thickness [m]');
     117                        fielddisplay(self,'surface_obs','observed surface elevation [m]');
    118118                        disp('Available cost functions:');
    119119                        disp('   101: SurfaceAbsVelMisfit');
     
    127127                        disp('   503: ThicknessAbsGradient');
    128128                end % }}}
    129                 function marshall(obj,md,fid) % {{{
     129                function marshall(self,md,fid) % {{{
    130130
    131131                        yts=365.0*24.0*3600.0;
    132132
    133                         WriteData(fid,'object',obj,'class','inversion','fieldname','iscontrol','format','Boolean');
     133                        WriteData(fid,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean');
    134134                        WriteData(fid,'enum',InversionTypeEnum(),'data',2,'format','Integer');
    135                         if ~obj.iscontrol, return; end
    136                         WriteData(fid,'object',obj,'class','inversion','fieldname','incomplete_adjoint','format','Boolean');
    137                         WriteData(fid,'object',obj,'class','inversion','fieldname','control_scaling_factors','format','DoubleMat','mattype',3);
    138                         WriteData(fid,'object',obj,'class','inversion','fieldname','maxsteps','format','Integer');
    139                         WriteData(fid,'object',obj,'class','inversion','fieldname','maxiter','format','Integer');
    140                         WriteData(fid,'object',obj,'class','inversion','fieldname','dxmin','format','Double');
    141                         WriteData(fid,'object',obj,'class','inversion','fieldname','gttol','format','Double');
    142                         WriteData(fid,'object',obj,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
    143                         WriteData(fid,'object',obj,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3);
    144                         WriteData(fid,'object',obj,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3);
    145                         WriteData(fid,'object',obj,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
    146                         WriteData(fid,'object',obj,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
    147                         WriteData(fid,'object',obj,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
    148                         if(numel(obj.thickness_obs)==md.mesh.numberofelements),
     135                        if ~self.iscontrol, return; end
     136                        WriteData(fid,'object',self,'class','inversion','fieldname','incomplete_adjoint','format','Boolean');
     137                        WriteData(fid,'object',self,'class','inversion','fieldname','control_scaling_factors','format','DoubleMat','mattype',3);
     138                        WriteData(fid,'object',self,'class','inversion','fieldname','maxsteps','format','Integer');
     139                        WriteData(fid,'object',self,'class','inversion','fieldname','maxiter','format','Integer');
     140                        WriteData(fid,'object',self,'class','inversion','fieldname','dxmin','format','Double');
     141                        WriteData(fid,'object',self,'class','inversion','fieldname','gttol','format','Double');
     142                        WriteData(fid,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
     143                        WriteData(fid,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3);
     144                        WriteData(fid,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3);
     145                        WriteData(fid,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
     146                        WriteData(fid,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
     147                        WriteData(fid,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
     148                        if(numel(self.thickness_obs)==md.mesh.numberofelements),
    149149                                mattype=2;
    150150                        else
    151151                                mattype=1;
    152152                        end
    153                         WriteData(fid,'object',obj,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
    154                         WriteData(fid,'object',obj,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
     153                        WriteData(fid,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
     154                        WriteData(fid,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
    155155
    156156                        %process control parameters
    157                         num_control_parameters=numel(obj.control_parameters);
     157                        num_control_parameters=numel(self.control_parameters);
    158158                        data=zeros(1,num_control_parameters);
    159159                        for i=1:num_control_parameters,
    160                                 data(i)=StringToEnum(obj.control_parameters{i});
     160                                data(i)=StringToEnum(self.control_parameters{i});
    161161                        end
    162162                        WriteData(fid,'data',data,'enum',InversionControlParametersEnum(),'format','DoubleMat','mattype',3);
     
    164164
    165165                        %process cost functions
    166                         num_cost_functions=size(obj.cost_functions,2);
    167                         data=marshallcostfunctions(obj.cost_functions);
     166                        num_cost_functions=size(self.cost_functions,2);
     167                        data=marshallcostfunctions(self.cost_functions);
    168168                        WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3);
    169169                        WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer');
  • issm/trunk-jpl/src/m/classes/mask.m

    r18649 r19040  
    1010        end
    1111        methods (Static)
    12                 function obj = loadobj(obj) % {{{
     12                function self = loadobj(self) % {{{
    1313                        % This function is directly called by matlab when a model object is
    1414                        % loaded. Update old properties here
    1515
    1616                        %2014 February 5th
    17                         if numel(obj.ice_levelset)>1 & all(obj.ice_levelset>=0),
     17                        if numel(self.ice_levelset)>1 & all(self.ice_levelset>=0),
    1818                                disp('WARNING: md.mask.ice_levelset>=0, you probably need to change the sign of this levelset');
    1919                        end
     
    2222        end
    2323        methods
    24         function createxml(obj,fid) % {{{
     24        function createxml(self,fid) % {{{
    2525            fprintf(fid, '\n\n');
    2626            fprintf(fid, '%s\n', '<!-- mask -->');
    27                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="groundedice_levelset" type="',class(obj.groundedice_levelset),'" default="',obj.groundedice_levelset,'">','     <section name="mask" />','     <help> is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if &amp;lt; 0 </help>','</parameter>');
    28             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="ice_levelset" type="',class(obj.ice_levelset),'" default="',obj.ice_levelset,'">','     <section name="mask" />','     <help> presence of ice if > 0, icefront position if = 0, no ice if &amp;lt; 0 </help>','</parameter>');
     27                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="groundedice_levelset" type="',class(self.groundedice_levelset),'" default="',self.groundedice_levelset,'">','     <section name="mask" />','     <help> is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if &amp;lt; 0 </help>','</parameter>');
     28            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="ice_levelset" type="',class(self.ice_levelset),'" default="',self.ice_levelset,'">','     <section name="mask" />','     <help> presence of ice if > 0, icefront position if = 0, no ice if &amp;lt; 0 </help>','</parameter>');
    2929                end % }}}
    30                 function obj = mask(varargin) % {{{
     30                function self = mask(varargin) % {{{
    3131                        switch nargin
    3232                                case 0
    33                                         obj=setdefaultparameters(obj);
     33                                        self=setdefaultparameters(self);
    3434                                otherwise
    3535                                        error('constructor not supported');
    3636                        end
    3737                end % }}}
    38                 function obj = setdefaultparameters(obj) % {{{
     38                function self = setdefaultparameters(self) % {{{
    3939
    4040                end % }}}
    41                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     41                function md = checkconsistency(self,md,solution,analyses) % {{{
    4242                        if (solution==SeaiceSolutionEnum()),
    4343                                return;
     
    5858                        end
    5959                end % }}}
    60                 function disp(obj) % {{{
     60                function disp(self) % {{{
    6161                        disp(sprintf('   masks:'));
    6262
    63                         fielddisplay(obj,'groundedice_levelset','is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0');
    64                         fielddisplay(obj,'ice_levelset','presence of ice if < 0, icefront position if = 0, no ice if > 0');
     63                        fielddisplay(self,'groundedice_levelset','is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0');
     64                        fielddisplay(self,'ice_levelset','presence of ice if < 0, icefront position if = 0, no ice if > 0');
    6565                end % }}}
    66                 function marshall(obj,md,fid) % {{{
    67                         WriteData(fid,'object',obj,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1);
    68                         WriteData(fid,'object',obj,'fieldname','ice_levelset','format','DoubleMat','mattype',1);
     66                function marshall(self,md,fid) % {{{
     67                        WriteData(fid,'object',self,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1);
     68                        WriteData(fid,'object',self,'fieldname','ice_levelset','format','DoubleMat','mattype',1);
    6969
    7070                        if(md.private.solution==SeaiceSolutionEnum()),
  • issm/trunk-jpl/src/m/classes/masscon.m

    r19027 r19040  
    1919       
    2020        methods
    21                 function obj = masscon(varargin) % {{{
     21                function self = masscon(varargin) % {{{
    2222                        if nargin==0,
    23                                 obj=setdefaultparameters(obj);
     23                                self=setdefaultparameters(self);
    2424                        else
    2525                                %use provided options to change fields
     
    2727
    2828                                %get name
    29                                 obj.name=getfieldvalue(options,'name','');
    30                                 obj.levelset=getfieldvalue(options,'levelset');
    31                                 obj.definitionenum=getfieldvalue(options,'definitionenum');
     29                                self.name=getfieldvalue(options,'name','');
     30                                self.levelset=getfieldvalue(options,'levelset');
     31                                self.definitionenum=getfieldvalue(options,'definitionenum');
    3232
    3333                        end
    3434                end % }}}
    35                 function obj = setdefaultparameters(obj) % {{{
     35                function self = setdefaultparameters(self) % {{{
    3636                end % }}}
    37                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     37                function md = checkconsistency(self,md,solution,analyses) % {{{
    3838
    39                         if ~ischar(obj.name),
     39                        if ~ischar(self.name),
    4040                                error('masscon error message: ''name'' field should be a string!');
    4141                        end
    4242                       
    43                         md = checkfield(md,'fieldname','obj.definitionenum','field',obj.definitionenum,'values',[Outputdefinition1Enum,Outputdefinition2Enum,Outputdefinition3Enum,Outputdefinition4Enum,Outputdefinition5Enum,Outputdefinition6Enum,Outputdefinition7Enum,Outputdefinition8Enum,Outputdefinition9Enum,Outputdefinition10Enum]);
     43                        md = checkfield(md,'fieldname','self.definitionenum','field',self.definitionenum,'values',[Outputdefinition1Enum,Outputdefinition2Enum,Outputdefinition3Enum,Outputdefinition4Enum,Outputdefinition5Enum,Outputdefinition6Enum,Outputdefinition7Enum,Outputdefinition8Enum,Outputdefinition9Enum,Outputdefinition10Enum]);
    4444
    45                         md = checkfield(md,'fieldname','obj.levelset','field',obj.levelset,'timeseries',1,'NaN',1);
     45                        md = checkfield(md,'fieldname','self.levelset','field',self.levelset,'timeseries',1,'NaN',1);
    4646
    4747                end % }}}
    48                 function md = disp(obj) % {{{
     48                function md = disp(self) % {{{
    4949               
    5050                        disp(sprintf('   Misfit:\n'));
    5151
    52                         fielddisplay(obj,'name','identifier for this masscon response');
    53                         fielddisplay(obj,'definitionenum','enum that identifies this output definition uniquely, from Outputdefinition[1-10]Enum');
    54                         fielddisplay(obj,'levelset','levelset vectorial field which identifies the boundaries of the masscon');
     52                        fielddisplay(self,'name','identifier for this masscon response');
     53                        fielddisplay(self,'definitionenum','enum that identifies this output definition uniquely, from Outputdefinition[1-10]Enum');
     54                        fielddisplay(self,'levelset','levelset vectorial field which identifies the boundaries of the masscon');
    5555
    5656                end % }}}
    57                 function md = marshall(obj,md,fid) % {{{
     57                function md = marshall(self,md,fid) % {{{
    5858
    59                 WriteData(fid,'object',obj,'fieldname','name','format','String');
    60                 WriteData(fid,'object',obj,'fieldname','definitionenum','format','Integer');
    61                 WriteData(fid,'object',obj,'fieldname','levelset','format','DoubleMat','mattype',1);
     59                WriteData(fid,'object',self,'fieldname','name','format','String');
     60                WriteData(fid,'object',self,'fieldname','definitionenum','format','Integer');
     61                WriteData(fid,'object',self,'fieldname','levelset','format','DoubleMat','mattype',1);
    6262
    6363                end % }}}
  • issm/trunk-jpl/src/m/classes/massconaxpby.m

    r18881 r19040  
    2323       
    2424        methods
    25                 function obj = massconaxpby(varargin) % {{{
     25                function self = massconaxpby(varargin) % {{{
    2626                        if nargin==0,
    27                                 obj=setdefaultparameters(obj);
     27                                self=setdefaultparameters(self);
    2828                        else
    2929                                %use provided options to change fields
     
    3131
    3232                                %get names
    33                                 obj.name=getfieldvalue(options,'name','');
    34                                 obj.definitionenum=getfieldvalue(options,'definitionenum');
    35                                 obj.namex=getfieldvalue(options,'namex');
    36                                 obj.namey=getfieldvalue(options,'namey');
     33                                self.name=getfieldvalue(options,'name','');
     34                                self.definitionenum=getfieldvalue(options,'definitionenum');
     35                                self.namex=getfieldvalue(options,'namex');
     36                                self.namey=getfieldvalue(options,'namey');
    3737
    3838                                %get multiplicators:
    39                                 obj.alpha=getfieldvalue(options,'alpha');
    40                                 obj.beta=getfieldvalue(options,'beta');
     39                                self.alpha=getfieldvalue(options,'alpha');
     40                                self.beta=getfieldvalue(options,'beta');
    4141
    4242
    4343                        end
    4444                end % }}}
    45                 function obj = setdefaultparameters(obj) % {{{
     45                function self = setdefaultparameters(self) % {{{
    4646                end % }}}
    47                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     47                function md = checkconsistency(self,md,solution,analyses) % {{{
    4848
    49                         if ~ischar(obj.name), error('masscon error message: ''name'' field should be a string!'); end
    50                         if ~ischar(obj.namex), error('masscon error message: ''namex'' field should be a string!'); end
    51                         if ~ischar(obj.namey), error('masscon error message: ''namey'' field should be a string!'); end
     49                        if ~ischar(self.name), error('masscon error message: ''name'' field should be a string!'); end
     50                        if ~ischar(self.namex), error('masscon error message: ''namex'' field should be a string!'); end
     51                        if ~ischar(self.namey), error('masscon error message: ''namey'' field should be a string!'); end
    5252                       
    53                         md = checkfield(md,'fieldname','obj.definitionenum','field',obj.definitionenum,'values',[Outputdefinition1Enum,Outputdefinition2Enum,Outputdefinition3Enum,Outputdefinition4Enum,Outputdefinition5Enum,Outputdefinition6Enum,Outputdefinition7Enum,Outputdefinition8Enum,Outputdefinition9Enum,Outputdefinition10Enum]);
     53                        md = checkfield(md,'fieldname','self.definitionenum','field',self.definitionenum,'values',[Outputdefinition1Enum,Outputdefinition2Enum,Outputdefinition3Enum,Outputdefinition4Enum,Outputdefinition5Enum,Outputdefinition6Enum,Outputdefinition7Enum,Outputdefinition8Enum,Outputdefinition9Enum,Outputdefinition10Enum]);
    5454
    55                         md = checkfield(md,'fieldname','obj.alpha','field',obj.alpha,'NaN',1,'size',[1 1]);
    56                         md = checkfield(md,'fieldname','obj.betaa','field',obj.beta,'NaN',1,'size',[1 1]);
     55                        md = checkfield(md,'fieldname','self.alpha','field',self.alpha,'NaN',1,'size',[1 1]);
     56                        md = checkfield(md,'fieldname','self.betaa','field',self.beta,'NaN',1,'size',[1 1]);
    5757
    5858                end % }}}
    59                 function md = disp(obj) % {{{
     59                function md = disp(self) % {{{
    6060               
    6161                        disp(sprintf('   Misfit:\n'));
    6262
    63                         fielddisplay(obj,'name','name');
    64                         fielddisplay(obj,'definitionenum','enum that identifies this output definition uniquely, from Outputdefinition[1-10]Enum');
    65                         fielddisplay(obj,'namex','identifier for the first masscon');
    66                         fielddisplay(obj,'alpha','first masscon multiplicator');
    67                         fielddisplay(obj,'namey','identifier for the second masscon');
    68                         fielddisplay(obj,'beta','second masscon multiplicator');
     63                        fielddisplay(self,'name','name');
     64                        fielddisplay(self,'definitionenum','enum that identifies this output definition uniquely, from Outputdefinition[1-10]Enum');
     65                        fielddisplay(self,'namex','identifier for the first masscon');
     66                        fielddisplay(self,'alpha','first masscon multiplicator');
     67                        fielddisplay(self,'namey','identifier for the second masscon');
     68                        fielddisplay(self,'beta','second masscon multiplicator');
    6969
    7070                end % }}}
    71                 function md = marshall(obj,md,fid) % {{{
     71                function md = marshall(self,md,fid) % {{{
    7272
    73                 WriteData(fid,'object',obj,'fieldname','name','format','String');
    74                 WriteData(fid,'object',obj,'fieldname','definitionenum','format','Integer');
    75                 WriteData(fid,'object',obj,'fieldname','namex','format','String');
    76                 WriteData(fid,'object',obj,'fieldname','namey','format','String');
    77                 WriteData(fid,'object',obj,'fieldname','alpha','format','Double');
    78                 WriteData(fid,'object',obj,'fieldname','beta','format','Double');
     73                WriteData(fid,'object',self,'fieldname','name','format','String');
     74                WriteData(fid,'object',self,'fieldname','definitionenum','format','Integer');
     75                WriteData(fid,'object',self,'fieldname','namex','format','String');
     76                WriteData(fid,'object',self,'fieldname','namey','format','String');
     77                WriteData(fid,'object',self,'fieldname','alpha','format','Double');
     78                WriteData(fid,'object',self,'fieldname','beta','format','Double');
    7979
    8080                end % }}}
  • issm/trunk-jpl/src/m/classes/massfluxatgate.m

    r19000 r19040  
    1616        end
    1717        methods
    18                 function obj = massfluxatgate(varargin) % {{{
     18                function self = massfluxatgate(varargin) % {{{
    1919                        if nargin==0,
    20                                 obj=setdefaultparameters(obj);
     20                                self=setdefaultparameters(self);
    2121                        else
    2222                                %use provided options to change fields
     
    2424
    2525                                %get name
    26                                 obj.name=getfieldvalue(options,'name','');
    27                                 obj.definitionenum=getfieldvalue(options,'definitionenum');
    28                                 obj.profilename=getfieldvalue(options,'profilename');
     26                                self.name=getfieldvalue(options,'name','');
     27                                self.definitionenum=getfieldvalue(options,'definitionenum');
     28                                self.profilename=getfieldvalue(options,'profilename');
    2929                        end
    3030                end % }}}
    31                 function obj = setdefaultparameters(obj) % {{{
     31                function self = setdefaultparameters(self) % {{{
    3232                end % }}}
    33                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     33                function md = checkconsistency(self,md,solution,analyses) % {{{
    3434                       
    35                         if ~ischar(obj.name),
     35                        if ~ischar(self.name),
    3636                                error('massfluxatgate error message: ''name'' field should be a string!');
    3737                        end
    38                         if ~ischar(obj.profilename),
     38                        if ~ischar(self.profilename),
    3939                                error('massfluxatgate error message: ''profilename'' field should be a string!');
    4040                        end
    4141                       
    42                         md = checkfield(md,'field',obj.definitionenum,'values',[Outputdefinition1Enum():Outputdefinition100Enum()]);
     42                        md = checkfield(md,'field',self.definitionenum,'values',[Outputdefinition1Enum():Outputdefinition100Enum()]);
    4343
    4444                        %check the profilename points to a file!:
    45                         if exist(obj.profilename,'file')~=2,
     45                        if exist(self.profilename,'file')~=2,
    4646                                error('massfluxatgate error message: file name for profile corresponding to gate does not point to a legitimate file on disk!');
    4747                        end
    4848                end % }}}
    49                 function disp(obj) % {{{
     49                function disp(self) % {{{
    5050                        disp(sprintf('   Massfluxatgate:\n'));
    5151
    52                         fielddisplay(obj,'name','identifier for this massfluxatgate response');
    53                         fielddisplay(obj,'profilename','name of file (shapefile or argus file) defining a profile (or gate)');
    54                         fielddisplay(obj,'definitionenum','enum that identifies this output definition uniquely, from Outputdefinition[1-10]Enum');
     52                        fielddisplay(self,'name','identifier for this massfluxatgate response');
     53                        fielddisplay(self,'profilename','name of file (shapefile or argus file) defining a profile (or gate)');
     54                        fielddisplay(self,'definitionenum','enum that identifies this output definition uniquely, from Outputdefinition[1-10]Enum');
    5555                       
    5656                end % }}}
    57                 function marshall(obj,md,fid) % {{{
     57                function marshall(self,md,fid) % {{{
    5858
    5959                %before marshalling, we need to create the segments out of the profilename:
    60                 obj.segments=MeshProfileIntersection(md.mesh.elements,md.mesh.x,md.mesh.y,obj.profilename);
     60                self.segments=MeshProfileIntersection(md.mesh.elements,md.mesh.x,md.mesh.y,self.profilename);
    6161
    6262                %ok, marshall name and segments:
    63                 WriteData(fid,'object',obj,'fieldname','name','format','String');
    64                 WriteData(fid,'object',obj,'fieldname','definitionenum','format','Integer');
    65                 WriteData(fid,'object',obj,'fieldname','segments','format','DoubleMat','mattype',1);
     63                WriteData(fid,'object',self,'fieldname','name','format','String');
     64                WriteData(fid,'object',self,'fieldname','definitionenum','format','Integer');
     65                WriteData(fid,'object',self,'fieldname','segments','format','DoubleMat','mattype',1);
    6666
    6767                end % }}}
  • issm/trunk-jpl/src/m/classes/masstransport.m

    r19027 r19040  
    1616        end
    1717        methods (Static)
    18                 function obj = loadobj(obj) % {{{
     18                function self = loadobj(self) % {{{
    1919                        % This function is directly called by matlab when a model object is
    2020                        % loaded. If the input is a struct it is an old version of this class and
     
    3434                        end
    3535
    36                         if isstruct(obj)
     36                        if isstruct(self)
    3737                                disp('Recovering masstransport from older version');
    38                                 objstruct = obj;
    39                                 obj = structtoobj(masstransport(),objstruct);
     38                                self = structtoobj(masstransport(),self);
    4039                        end
    4140                end% }}}
    4241        end
    4342        methods
    44                 function obj = masstransport(varargin) % {{{
     43                function self = masstransport(varargin) % {{{
    4544                        switch nargin
    4645                                case 0
    47                                         obj=setdefaultparameters(obj);
     46                                        self=setdefaultparameters(self);
    4847                                case 1
    4948                                        inputstruct=varargin{1};
     
    5352                                                fieldname = list1{i};
    5453                                                if ismember(fieldname,list2),
    55                                                         obj.(fieldname) = inputstruct.(fieldname);
     54                                                        self.(fieldname) = inputstruct.(fieldname);
    5655                                                end
    5756                                        end
     
    6564
    6665                end % }}}
    67                 function obj = setdefaultparameters(obj) % {{{
     66                function self = setdefaultparameters(self) % {{{
    6867
    6968                        %Type of stabilization to use 0:nothing 1:artificial_diffusivity 3:Discontinuous Galerkin
    70                         obj.stabilization=1;
     69                        self.stabilization=1;
    7170
    7271                        %Factor applied to compute the penalties kappa=max(stiffness matrix)*10^penalty_factor
    73                         obj.penalty_factor=3;
     72                        self.penalty_factor=3;
    7473
    7574                        %Minimum ice thickness that can be used
    76                         obj.min_thickness=1;
     75                        self.min_thickness=1;
    7776
    7877                        %Hydrostatic adjustment
    79                         obj.hydrostatic_adjustment='Absolute';
     78                        self.hydrostatic_adjustment='Absolute';
    8079
    8180                        %default output
    82                         obj.requested_outputs={'default'};
     81                        self.requested_outputs={'default'};
    8382                end % }}}
    84                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     83                function md = checkconsistency(self,md,solution,analyses) % {{{
    8584
    8685                        %Early return
     
    9594
    9695                end % }}}
    97                 function disp(obj) % {{{
     96                function disp(self) % {{{
    9897                        disp(sprintf('   Masstransport solution parameters:'));
    99                         fielddisplay(obj,'spcthickness','thickness constraints (NaN means no constraint) [m]');
    100                         fielddisplay(obj,'isfreesurface','do we use free surfaces (FS only) are mass conservation');
    101                         fielddisplay(obj,'min_thickness','minimum ice thickness allowed [m]');
    102                         fielddisplay(obj,'hydrostatic_adjustment','adjustment of ice shelves surface and bed elevations: ''Incremental'' or ''Absolute'' ');
    103                         fielddisplay(obj,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding, 3: discontinuous Galerkin, 4: Flux Correction Transport');
     98                        fielddisplay(self,'spcthickness','thickness constraints (NaN means no constraint) [m]');
     99                        fielddisplay(self,'isfreesurface','do we use free surfaces (FS only) are mass conservation');
     100                        fielddisplay(self,'min_thickness','minimum ice thickness allowed [m]');
     101                        fielddisplay(self,'hydrostatic_adjustment','adjustment of ice shelves surface and bed elevations: ''Incremental'' or ''Absolute'' ');
     102                        fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding, 3: discontinuous Galerkin, 4: Flux Correction Transport');
    104103
    105104                        disp(sprintf('\n      %s','Penalty options:'));
    106                         fielddisplay(obj,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset');
    107                         fielddisplay(obj,'vertex_pairing','pairs of vertices that are penalized');
    108                         fielddisplay(obj,'requested_outputs','additional outputs requested');
     105                        fielddisplay(self,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset');
     106                        fielddisplay(self,'vertex_pairing','pairs of vertices that are penalized');
     107                        fielddisplay(self,'requested_outputs','additional outputs requested');
    109108
    110109                end % }}}
    111                 function marshall(obj,md,fid) % {{{
     110                function marshall(self,md,fid) % {{{
    112111
    113112                        yts=365.*24.*3600.;
    114113
    115                         WriteData(fid,'object',obj,'fieldname','spcthickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    116                         WriteData(fid,'object',obj,'fieldname','isfreesurface','format','Boolean');
    117                         WriteData(fid,'object',obj,'fieldname','min_thickness','format','Double');
    118                         WriteData(fid,'data',StringToEnum(obj.hydrostatic_adjustment),'format','Integer','enum',MasstransportHydrostaticAdjustmentEnum());
    119                         WriteData(fid,'object',obj,'fieldname','stabilization','format','Integer');
    120                         WriteData(fid,'object',obj,'fieldname','vertex_pairing','format','DoubleMat','mattype',3);
    121                         WriteData(fid,'object',obj,'fieldname','penalty_factor','format','Double');
     114                        WriteData(fid,'object',self,'fieldname','spcthickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
     115                        WriteData(fid,'object',self,'fieldname','isfreesurface','format','Boolean');
     116                        WriteData(fid,'object',self,'fieldname','min_thickness','format','Double');
     117                        WriteData(fid,'data',StringToEnum(self.hydrostatic_adjustment),'format','Integer','enum',MasstransportHydrostaticAdjustmentEnum());
     118                        WriteData(fid,'object',self,'fieldname','stabilization','format','Integer');
     119                        WriteData(fid,'object',self,'fieldname','vertex_pairing','format','DoubleMat','mattype',3);
     120                        WriteData(fid,'object',self,'fieldname','penalty_factor','format','Double');
    122121                       
    123122                        %process requested outputs
    124                         outputs = obj.requested_outputs;
     123                        outputs = self.requested_outputs;
    125124                        pos  = find(ismember(outputs,'default'));
    126125                        if ~isempty(pos),
    127126                                outputs(pos) = [];                         %remove 'default' from outputs
    128                                 outputs      = [outputs defaultoutputs(obj,md)]; %add defaults
     127                                outputs      = [outputs defaultoutputs(self,md)]; %add defaults
    129128                        end
    130129                        WriteData(fid,'data',outputs,'enum',MasstransportRequestedOutputsEnum,'format','StringArray');
  • issm/trunk-jpl/src/m/classes/matdamageice.m

    r17946 r19040  
    3030        end
    3131        methods
    32                 function createxml(obj,fid) % {{{
     32                function createxml(self,fid) % {{{
    3333                        fprintf(fid, '\n\n');
    3434                        fprintf(fid, '<!-- materials -->\n');
    35                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rho_ice" type="',class(obj.rho_ice),'" default="',convert2str(obj.rho_ice),'">','     <section name="materials" />','     <help> ice density [kg/m^3] </help>','</parameter>');
    36                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rho_water" type="',class(obj.rho_water),'" default="',convert2str(obj.rho_water),'">','     <section name="materials" />','     <help> ocean water density [kg/m^3] </help>','</parameter>');
    37                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rho_freshwater" type="',class(obj.rho_freshwater),'" default="',convert2str(obj.rho_freshwater),'">','     <section name="materials" />','     <help> fresh water density [kg/m^3] </help>','</parameter>');
     35                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rho_ice" type="',class(self.rho_ice),'" default="',convert2str(self.rho_ice),'">','     <section name="materials" />','     <help> ice density [kg/m^3] </help>','</parameter>');
     36                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rho_water" type="',class(self.rho_water),'" default="',convert2str(self.rho_water),'">','     <section name="materials" />','     <help> ocean water density [kg/m^3] </help>','</parameter>');
     37                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rho_freshwater" type="',class(self.rho_freshwater),'" default="',convert2str(self.rho_freshwater),'">','     <section name="materials" />','     <help> fresh water density [kg/m^3] </help>','</parameter>');
    3838
    3939
    40                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mu_water" type="',class(obj.mu_water),'" default="',convert2str(obj.mu_water),'">','     <section name="materials" />','     <help> water viscosity [N s/m^2] </help>','</parameter>');
    41                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="heatcapacity" type="',class(obj.heatcapacity),'" default="',convert2str(obj.heatcapacity),'">','     <section name="materials" />','     <help> heat capacity [J/kg/K] </help>','</parameter>');
    42                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="latentheat" type="',class(obj.latentheat),'" default="',convert2str(obj.latentheat),'">','     <section name="materials" />','     <help> latent heat of fusion [J/kg] </help>','</parameter>');
     40                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mu_water" type="',class(self.mu_water),'" default="',convert2str(self.mu_water),'">','     <section name="materials" />','     <help> water viscosity [N s/m^2] </help>','</parameter>');
     41                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="heatcapacity" type="',class(self.heatcapacity),'" default="',convert2str(self.heatcapacity),'">','     <section name="materials" />','     <help> heat capacity [J/kg/K] </help>','</parameter>');
     42                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="latentheat" type="',class(self.latentheat),'" default="',convert2str(self.latentheat),'">','     <section name="materials" />','     <help> latent heat of fusion [J/kg] </help>','</parameter>');
    4343
    4444
    45                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="thermalconductivity" type="',class(obj.thermalconductivity),'" default="',convert2str(obj.thermalconductivity),'">','     <section name="materials" />','     <help> ice thermal conductivity [W/m/K] </help>','</parameter>');
    46                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="temperateiceconductivity" type="',class(obj.temperateiceconductivity),'" default="',convert2str(obj.temperateiceconductivity),'">','     <section name="materials" />','     <help> temperate ice thermal conductivity [W/m/K] </help>','</parameter>');
    47                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="meltingpoint" type="',class(obj.meltingpoint),'" default="',convert2str(obj.meltingpoint),'">','     <section name="materials" />','     <help> melting point of ice at 1atm in K </help>','</parameter>');
     45                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="thermalconductivity" type="',class(self.thermalconductivity),'" default="',convert2str(self.thermalconductivity),'">','     <section name="materials" />','     <help> ice thermal conductivity [W/m/K] </help>','</parameter>');
     46                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="temperateiceconductivity" type="',class(self.temperateiceconductivity),'" default="',convert2str(self.temperateiceconductivity),'">','     <section name="materials" />','     <help> temperate ice thermal conductivity [W/m/K] </help>','</parameter>');
     47                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="meltingpoint" type="',class(self.meltingpoint),'" default="',convert2str(self.meltingpoint),'">','     <section name="materials" />','     <help> melting point of ice at 1atm in K </help>','</parameter>');
    4848
    4949
    50                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="beta" type="',class(obj.beta),'" default="',convert2str(obj.beta),'">','     <section name="materials" />','     <help> rate of change of melting point with pressure [K/Pa] </help>','</parameter>');
    51                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mixed_layer_capacity" type="',class(obj.mixed_layer_capacity),'" default="',convert2str(obj.mixed_layer_capacity),'">','     <section name="materials" />','     <help> mixed layer capacity [W/kg/K] </help>','</parameter>');
    52                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="thermal_exchange_velocity" type="',class(obj.thermal_exchange_velocity),'" default="',convert2str(obj.thermal_exchange_velocity),'">','     <section name="materials" />','     <help> thermal exchange velocity [m/s] </help>','</parameter>');
     50                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="beta" type="',class(self.beta),'" default="',convert2str(self.beta),'">','     <section name="materials" />','     <help> rate of change of melting point with pressure [K/Pa] </help>','</parameter>');
     51                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mixed_layer_capacity" type="',class(self.mixed_layer_capacity),'" default="',convert2str(self.mixed_layer_capacity),'">','     <section name="materials" />','     <help> mixed layer capacity [W/kg/K] </help>','</parameter>');
     52                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="thermal_exchange_velocity" type="',class(self.thermal_exchange_velocity),'" default="',convert2str(self.thermal_exchange_velocity),'">','     <section name="materials" />','     <help> thermal exchange velocity [m/s] </help>','</parameter>');
    5353
    5454
    55                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rheology_B" type="',class(obj.rheology_B),'" default="',convert2str(obj.rheology_B),'">','     <section name="materials" />','     <help> flow law parameter [Pa/s^(1/n)] </help>','</parameter>');
    56                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rheology_n" type="',class(obj.rheology_n),'" default="',convert2str(obj.rheology_n),'">','     <section name="materials" />','     <help> Glens flow law exponent </help>','</parameter>');
    57                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rheology_law" type="',class(obj.rheology_law),'" default="',convert2str(obj.rheology_law),'">','     <section name="materials" />','     <help> law for the temperature dependance of the rheology: "None", "Paterson",  "Arrhenius" or "LliboutryDuval" </help>','</parameter>');
     55                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rheology_B" type="',class(self.rheology_B),'" default="',convert2str(self.rheology_B),'">','     <section name="materials" />','     <help> flow law parameter [Pa/s^(1/n)] </help>','</parameter>');
     56                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rheology_n" type="',class(self.rheology_n),'" default="',convert2str(self.rheology_n),'">','     <section name="materials" />','     <help> Glens flow law exponent </help>','</parameter>');
     57                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rheology_law" type="',class(self.rheology_law),'" default="',convert2str(self.rheology_law),'">','     <section name="materials" />','     <help> law for the temperature dependance of the rheology: "None", "Paterson",  "Arrhenius" or "LliboutryDuval" </help>','</parameter>');
    5858
    59                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="lithosphere_shear_modulus" type="',class(obj.lithosphere_shear_modulus),'" default="',convert2str(obj.lithosphere_shear_modulus),'">','     <section name="materials" />','     <help> Lithosphere shear modulus [Pa] </help>','</parameter>');
    60                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="lithosphere_density" type="',class(obj.lithosphere_density),'" default="',convert2str(obj.lithosphere_density),'">','     <section name="materials" />','     <help> Lithosphere density [g/cm^-3] </help>','</parameter>');
    61                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mantle_shear_modulus" type="',class(obj.mantle_shear_modulus),'" default="',convert2str(obj.mantle_shear_modulus),'">','     <section name="materials" />','     <help> Mantle shear modulus [Pa] </help>','</parameter>');
    62                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mantle_density" type="',class(obj.mantle_density),'" default="',convert2str(obj.mantle_density),'">','     <section name="materials" />','     <help> Mantle density [g/cm^-3] </help>','</parameter>');
     59                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="lithosphere_shear_modulus" type="',class(self.lithosphere_shear_modulus),'" default="',convert2str(self.lithosphere_shear_modulus),'">','     <section name="materials" />','     <help> Lithosphere shear modulus [Pa] </help>','</parameter>');
     60                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="lithosphere_density" type="',class(self.lithosphere_density),'" default="',convert2str(self.lithosphere_density),'">','     <section name="materials" />','     <help> Lithosphere density [g/cm^-3] </help>','</parameter>');
     61                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mantle_shear_modulus" type="',class(self.mantle_shear_modulus),'" default="',convert2str(self.mantle_shear_modulus),'">','     <section name="materials" />','     <help> Mantle shear modulus [Pa] </help>','</parameter>');
     62                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mantle_density" type="',class(self.mantle_density),'" default="',convert2str(self.mantle_density),'">','     <section name="materials" />','     <help> Mantle density [g/cm^-3] </help>','</parameter>');
    6363
    6464
    6565                end % }}}
    66                 function obj = matdamageice(varargin) % {{{
     66                function self = matdamageice(varargin) % {{{
    6767                        switch nargin
    6868                                case 0
    69                                         obj=setdefaultparameters(obj);
     69                                        self=setdefaultparameters(self);
    7070                                case 1
    7171                                        inputstruct=varargin{1};
     
    7575                                                fieldname = list1{i};
    7676                                                if ismember(fieldname,list2),
    77                                                         obj.(fieldname) = inputstruct.(fieldname);
     77                                                        self.(fieldname) = inputstruct.(fieldname);
    7878                                                end
    7979                                        end
     
    8282                        end
    8383                end % }}}
    84                 function obj = setdefaultparameters(obj) % {{{
     84                function self = setdefaultparameters(self) % {{{
    8585
    8686                        %ice density (kg/m^3)
    87                         obj.rho_ice=917.;
     87                        self.rho_ice=917.;
    8888
    8989                        %ocean water density (kg/m^3)
    90                         obj.rho_water=1023.;
     90                        self.rho_water=1023.;
    9191
    9292                        %fresh water density (kg/m^3)
    93                         obj.rho_freshwater=1000.;
     93                        self.rho_freshwater=1000.;
    9494
    9595                        %water viscosity (N.s/m^2)
    96                         obj.mu_water=0.001787; 
     96                        self.mu_water=0.001787; 
    9797
    9898                        %ice heat capacity cp (J/kg/K)
    99                         obj.heatcapacity=2093.;
     99                        self.heatcapacity=2093.;
    100100
    101101                        %ice latent heat of fusion L (J/kg)
    102                         obj.latentheat=3.34*10^5;
     102                        self.latentheat=3.34*10^5;
    103103
    104104                        %ice thermal conductivity (W/m/K)
    105                         obj.thermalconductivity=2.4;
     105                        self.thermalconductivity=2.4;
    106106                       
    107107                        %wet ice thermal conductivity (W/m/K)
    108                         obj.temperateiceconductivity=.24;
     108                        self.temperateiceconductivity=.24;
    109109
    110110                        %the melting point of ice at 1 atmosphere of pressure in K
    111                         obj.meltingpoint=273.15;
     111                        self.meltingpoint=273.15;
    112112
    113113                        %rate of change of melting point with pressure (K/Pa)
    114                         obj.beta=9.8*10^-8;
     114                        self.beta=9.8*10^-8;
    115115
    116116                        %mixed layer (ice-water interface) heat capacity (J/kg/K)
    117                         obj.mixed_layer_capacity=3974.;
     117                        self.mixed_layer_capacity=3974.;
    118118
    119119                        %thermal exchange velocity (ice-water interface) (m/s)
    120                         obj.thermal_exchange_velocity=1.00*10^-4;
     120                        self.thermal_exchange_velocity=1.00*10^-4;
    121121
    122122                        %Rheology law: what is the temperature dependence of B with T
    123123                        %available: none, paterson and arrhenius
    124                         obj.rheology_law='Paterson';
     124                        self.rheology_law='Paterson';
    125125
    126126                        % GIA:
    127                         obj.lithosphere_shear_modulus  = 6.7*10^10;  % (Pa)
    128                         obj.lithosphere_density        = 3.32;       % (g/cm^-3)
    129                         obj.mantle_shear_modulus       = 1.45*10^11; % (Pa)
    130                         obj.mantle_density             = 3.34;       % (g/cm^-3)
     127                        self.lithosphere_shear_modulus  = 6.7*10^10;  % (Pa)
     128                        self.lithosphere_density        = 3.32;       % (g/cm^-3)
     129                        self.mantle_shear_modulus       = 1.45*10^11; % (Pa)
     130                        self.mantle_density             = 3.34;       % (g/cm^-3)
    131131
    132132                end % }}}
    133                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     133                function md = checkconsistency(self,md,solution,analyses) % {{{
    134134                        md = checkfield(md,'fieldname','materials.rho_ice','>',0);
    135135                        md = checkfield(md,'fieldname','materials.rho_water','>',0);
     
    148148
    149149                end % }}}
    150                 function disp(obj) % {{{
     150                function disp(self) % {{{
    151151                        disp(sprintf('   Materials:'));
    152152
    153                         fielddisplay(obj,'rho_ice','ice density [kg/m^3]');
    154                         fielddisplay(obj,'rho_water','ocean water density [kg/m^3]');
    155                         fielddisplay(obj,'rho_freshwater','fresh water density [kg/m^3]');
    156                         fielddisplay(obj,'mu_water','water viscosity [N s/m^2]');
    157                         fielddisplay(obj,'heatcapacity','heat capacity [J/kg/K]');
    158                         fielddisplay(obj,'thermalconductivity',['ice thermal conductivity [W/m/K]']);
    159                         fielddisplay(obj,'temperateiceconductivity','temperate ice thermal conductivity [W/m/K]');
    160                         fielddisplay(obj,'meltingpoint','melting point of ice at 1atm in K');
    161                         fielddisplay(obj,'latentheat','latent heat of fusion [J/kg]');
    162                         fielddisplay(obj,'beta','rate of change of melting point with pressure [K/Pa]');
    163                         fielddisplay(obj,'mixed_layer_capacity','mixed layer capacity [W/kg/K]');
    164                         fielddisplay(obj,'thermal_exchange_velocity','thermal exchange velocity [m/s]');
    165                         fielddisplay(obj,'rheology_B','flow law parameter [Pa/s^(1/n)]');
    166                         fielddisplay(obj,'rheology_n','Glen''s flow law exponent');
    167                         fielddisplay(obj,'rheology_law',['law for the temperature dependance of the rheology: ''None'', ''Cuffey'', ''Paterson'', ''Arrhenius'' or ''LliboutryDuval''']);
    168                         fielddisplay(obj,'lithosphere_shear_modulus','Lithosphere shear modulus [Pa]');
    169                         fielddisplay(obj,'lithosphere_density','Lithosphere density [g/cm^-3]');
    170                         fielddisplay(obj,'mantle_shear_modulus','Mantle shear modulus [Pa]');
    171                         fielddisplay(obj,'mantle_density','Mantle density [g/cm^-3]');
     153                        fielddisplay(self,'rho_ice','ice density [kg/m^3]');
     154                        fielddisplay(self,'rho_water','ocean water density [kg/m^3]');
     155                        fielddisplay(self,'rho_freshwater','fresh water density [kg/m^3]');
     156                        fielddisplay(self,'mu_water','water viscosity [N s/m^2]');
     157                        fielddisplay(self,'heatcapacity','heat capacity [J/kg/K]');
     158                        fielddisplay(self,'thermalconductivity',['ice thermal conductivity [W/m/K]']);
     159                        fielddisplay(self,'temperateiceconductivity','temperate ice thermal conductivity [W/m/K]');
     160                        fielddisplay(self,'meltingpoint','melting point of ice at 1atm in K');
     161                        fielddisplay(self,'latentheat','latent heat of fusion [J/kg]');
     162                        fielddisplay(self,'beta','rate of change of melting point with pressure [K/Pa]');
     163                        fielddisplay(self,'mixed_layer_capacity','mixed layer capacity [W/kg/K]');
     164                        fielddisplay(self,'thermal_exchange_velocity','thermal exchange velocity [m/s]');
     165                        fielddisplay(self,'rheology_B','flow law parameter [Pa/s^(1/n)]');
     166                        fielddisplay(self,'rheology_n','Glen''s flow law exponent');
     167                        fielddisplay(self,'rheology_law',['law for the temperature dependance of the rheology: ''None'', ''Cuffey'', ''Paterson'', ''Arrhenius'' or ''LliboutryDuval''']);
     168                        fielddisplay(self,'lithosphere_shear_modulus','Lithosphere shear modulus [Pa]');
     169                        fielddisplay(self,'lithosphere_density','Lithosphere density [g/cm^-3]');
     170                        fielddisplay(self,'mantle_shear_modulus','Mantle shear modulus [Pa]');
     171                        fielddisplay(self,'mantle_density','Mantle density [g/cm^-3]');
    172172                end % }}}
    173                 function marshall(obj,md,fid) % {{{
     173                function marshall(self,md,fid) % {{{
    174174                        WriteData(fid,'enum',MaterialsEnum(),'data',MatdamageiceEnum(),'format','Integer');
    175                         WriteData(fid,'object',obj,'class','materials','fieldname','rho_ice','format','Double');
    176                         WriteData(fid,'object',obj,'class','materials','fieldname','rho_water','enum',MaterialsRhoSeawaterEnum(),'format','Double');
    177                         WriteData(fid,'object',obj,'class','materials','fieldname','rho_freshwater','format','Double');
    178                         WriteData(fid,'object',obj,'class','materials','fieldname','mu_water','format','Double');
    179                         WriteData(fid,'object',obj,'class','materials','fieldname','heatcapacity','format','Double');
    180                         WriteData(fid,'object',obj,'class','materials','fieldname','latentheat','format','Double');
    181                         WriteData(fid,'object',obj,'class','materials','fieldname','thermalconductivity','format','Double');
    182                         WriteData(fid,'object',obj,'class','materials','fieldname','temperateiceconductivity','format','Double');
    183                         WriteData(fid,'object',obj,'class','materials','fieldname','meltingpoint','format','Double');
    184                         WriteData(fid,'object',obj,'class','materials','fieldname','beta','format','Double');
    185                         WriteData(fid,'object',obj,'class','materials','fieldname','mixed_layer_capacity','format','Double');
    186                         WriteData(fid,'object',obj,'class','materials','fieldname','thermal_exchange_velocity','format','Double');
    187                         WriteData(fid,'object',obj,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1);
    188                         WriteData(fid,'object',obj,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2);
    189                         WriteData(fid,'data',StringToEnum(obj.rheology_law),'enum',MaterialsRheologyLawEnum(),'format','Integer');
     175                        WriteData(fid,'object',self,'class','materials','fieldname','rho_ice','format','Double');
     176                        WriteData(fid,'object',self,'class','materials','fieldname','rho_water','enum',MaterialsRhoSeawaterEnum(),'format','Double');
     177                        WriteData(fid,'object',self,'class','materials','fieldname','rho_freshwater','format','Double');
     178                        WriteData(fid,'object',self,'class','materials','fieldname','mu_water','format','Double');
     179                        WriteData(fid,'object',self,'class','materials','fieldname','heatcapacity','format','Double');
     180                        WriteData(fid,'object',self,'class','materials','fieldname','latentheat','format','Double');
     181                        WriteData(fid,'object',self,'class','materials','fieldname','thermalconductivity','format','Double');
     182                        WriteData(fid,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double');
     183                        WriteData(fid,'object',self,'class','materials','fieldname','meltingpoint','format','Double');
     184                        WriteData(fid,'object',self,'class','materials','fieldname','beta','format','Double');
     185                        WriteData(fid,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double');
     186                        WriteData(fid,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double');
     187                        WriteData(fid,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1);
     188                        WriteData(fid,'object',self,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2);
     189                        WriteData(fid,'data',StringToEnum(self.rheology_law),'enum',MaterialsRheologyLawEnum(),'format','Integer');
    190190
    191                         WriteData(fid,'object',obj,'class','materials','fieldname','lithosphere_shear_modulus','format','Double');
    192                         WriteData(fid,'object',obj,'class','materials','fieldname','lithosphere_density','format','Double','scale',10^3);
    193                         WriteData(fid,'object',obj,'class','materials','fieldname','mantle_shear_modulus','format','Double');
    194                         WriteData(fid,'object',obj,'class','materials','fieldname','mantle_density','format','Double','scale',10^3);
     191                        WriteData(fid,'object',self,'class','materials','fieldname','lithosphere_shear_modulus','format','Double');
     192                        WriteData(fid,'object',self,'class','materials','fieldname','lithosphere_density','format','Double','scale',10^3);
     193                        WriteData(fid,'object',self,'class','materials','fieldname','mantle_shear_modulus','format','Double');
     194                        WriteData(fid,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10^3);
    195195                end % }}}
    196196        end
  • issm/trunk-jpl/src/m/classes/matice.m

    r19027 r19040  
    3030        end
    3131        methods
    32                 function createxml(obj,fid) % {{{
     32                function createxml(self,fid) % {{{
    3333                        fprintf(fid, '\n\n');
    3434                        fprintf(fid, '<!-- materials -->\n');
    35                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rho_ice" type="',class(obj.rho_ice),'" default="',convert2str(obj.rho_ice),'">','     <section name="materials" />','     <help> ice density [kg/m^3] </help>','</parameter>');
    36                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rho_water" type="',class(obj.rho_water),'" default="',convert2str(obj.rho_water),'">','     <section name="materials" />','     <help> ocean water density [kg/m^3] </help>','</parameter>');
    37                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rho_freshwater" type="',class(obj.rho_freshwater),'" default="',convert2str(obj.rho_freshwater),'">','     <section name="materials" />','     <help> fresh water density [kg/m^3] </help>','</parameter>');
    38 
    39 
    40                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mu_water" type="',class(obj.mu_water),'" default="',convert2str(obj.mu_water),'">','     <section name="materials" />','     <help> water viscosity [N s/m^2] </help>','</parameter>');
    41                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="heatcapacity" type="',class(obj.heatcapacity),'" default="',convert2str(obj.heatcapacity),'">','     <section name="materials" />','     <help> heat capacity [J/kg/K] </help>','</parameter>');
    42                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="latentheat" type="',class(obj.latentheat),'" default="',convert2str(obj.latentheat),'">','     <section name="materials" />','     <help> latent heat of fusion [J/kg] </help>','</parameter>');
    43 
    44 
    45                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="thermalconductivity" type="',class(obj.thermalconductivity),'" default="',convert2str(obj.thermalconductivity),'">','     <section name="materials" />','     <help> ice thermal conductivity [W/m/K] </help>','</parameter>');
    46                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="temperateiceconductivity" type="',class(obj.temperateiceconductivity),'" default="',convert2str(obj.temperateiceconductivity),'">','     <section name="materials" />','     <help> temperate ice thermal conductivity [W/m/K] </help>','</parameter>');
    47                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="meltingpoint" type="',class(obj.meltingpoint),'" default="',convert2str(obj.meltingpoint),'">','     <section name="materials" />','     <help> melting point of ice at 1atm in K </help>','</parameter>');
    48 
    49 
    50                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="beta" type="',class(obj.beta),'" default="',convert2str(obj.beta),'">','     <section name="materials" />','     <help> rate of change of melting point with pressure [K/Pa] </help>','</parameter>');
    51                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mixed_layer_capacity" type="',class(obj.mixed_layer_capacity),'" default="',convert2str(obj.mixed_layer_capacity),'">','     <section name="materials" />','     <help> mixed layer capacity [W/kg/K] </help>','</parameter>');
    52                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="thermal_exchange_velocity" type="',class(obj.thermal_exchange_velocity),'" default="',convert2str(obj.thermal_exchange_velocity),'">','     <section name="materials" />','     <help> thermal exchange velocity [m/s] </help>','</parameter>');
    53 
    54 
    55                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rheology_B" type="',class(obj.rheology_B),'" default="',convert2str(obj.rheology_B),'">','     <section name="materials" />','     <help> flow law parameter [Pa/s^(1/n)] </help>','</parameter>');
    56                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rheology_n" type="',class(obj.rheology_n),'" default="',convert2str(obj.rheology_n),'">','     <section name="materials" />','     <help> Glens flow law exponent </help>','</parameter>');
     35                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rho_ice" type="',class(self.rho_ice),'" default="',convert2str(self.rho_ice),'">','     <section name="materials" />','     <help> ice density [kg/m^3] </help>','</parameter>');
     36                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rho_water" type="',class(self.rho_water),'" default="',convert2str(self.rho_water),'">','     <section name="materials" />','     <help> ocean water density [kg/m^3] </help>','</parameter>');
     37                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rho_freshwater" type="',class(self.rho_freshwater),'" default="',convert2str(self.rho_freshwater),'">','     <section name="materials" />','     <help> fresh water density [kg/m^3] </help>','</parameter>');
     38
     39
     40                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mu_water" type="',class(self.mu_water),'" default="',convert2str(self.mu_water),'">','     <section name="materials" />','     <help> water viscosity [N s/m^2] </help>','</parameter>');
     41                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="heatcapacity" type="',class(self.heatcapacity),'" default="',convert2str(self.heatcapacity),'">','     <section name="materials" />','     <help> heat capacity [J/kg/K] </help>','</parameter>');
     42                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="latentheat" type="',class(self.latentheat),'" default="',convert2str(self.latentheat),'">','     <section name="materials" />','     <help> latent heat of fusion [J/kg] </help>','</parameter>');
     43
     44
     45                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="thermalconductivity" type="',class(self.thermalconductivity),'" default="',convert2str(self.thermalconductivity),'">','     <section name="materials" />','     <help> ice thermal conductivity [W/m/K] </help>','</parameter>');
     46                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="temperateiceconductivity" type="',class(self.temperateiceconductivity),'" default="',convert2str(self.temperateiceconductivity),'">','     <section name="materials" />','     <help> temperate ice thermal conductivity [W/m/K] </help>','</parameter>');
     47                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="meltingpoint" type="',class(self.meltingpoint),'" default="',convert2str(self.meltingpoint),'">','     <section name="materials" />','     <help> melting point of ice at 1atm in K </help>','</parameter>');
     48
     49
     50                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="beta" type="',class(self.beta),'" default="',convert2str(self.beta),'">','     <section name="materials" />','     <help> rate of change of melting point with pressure [K/Pa] </help>','</parameter>');
     51                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mixed_layer_capacity" type="',class(self.mixed_layer_capacity),'" default="',convert2str(self.mixed_layer_capacity),'">','     <section name="materials" />','     <help> mixed layer capacity [W/kg/K] </help>','</parameter>');
     52                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="thermal_exchange_velocity" type="',class(self.thermal_exchange_velocity),'" default="',convert2str(self.thermal_exchange_velocity),'">','     <section name="materials" />','     <help> thermal exchange velocity [m/s] </help>','</parameter>');
     53
     54
     55                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rheology_B" type="',class(self.rheology_B),'" default="',convert2str(self.rheology_B),'">','     <section name="materials" />','     <help> flow law parameter [Pa/s^(1/n)] </help>','</parameter>');
     56                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rheology_n" type="',class(self.rheology_n),'" default="',convert2str(self.rheology_n),'">','     <section name="materials" />','     <help> Glens flow law exponent </help>','</parameter>');
    5757
    5858                        % rheology_law drop-down
     
    6464
    6565
    66                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="lithosphere_shear_modulus" type="',class(obj.lithosphere_shear_modulus),'" default="',convert2str(obj.lithosphere_shear_modulus),'">','     <section name="materials" />','     <help> Lithosphere shear modulus [Pa] </help>','</parameter>');
    67                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="lithosphere_density" type="',class(obj.lithosphere_density),'" default="',convert2str(obj.lithosphere_density),'">','     <section name="materials" />','     <help> Lithosphere density [g/cm^-3] </help>','</parameter>');
    68                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mantle_shear_modulus" type="',class(obj.mantle_shear_modulus),'" default="',convert2str(obj.mantle_shear_modulus),'">','     <section name="materials" />','     <help> Mantle shear modulus [Pa] </help>','</parameter>');
    69                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mantle_density" type="',class(obj.mantle_density),'" default="',convert2str(obj.mantle_density),'">','     <section name="materials" />','     <help> Mantle density [g/cm^-3] </help>','</parameter>');
    70 
    71 
    72                 end % }}}
    73                 function obj = matice(varargin) % {{{
     66                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="lithosphere_shear_modulus" type="',class(self.lithosphere_shear_modulus),'" default="',convert2str(self.lithosphere_shear_modulus),'">','     <section name="materials" />','     <help> Lithosphere shear modulus [Pa] </help>','</parameter>');
     67                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="lithosphere_density" type="',class(self.lithosphere_density),'" default="',convert2str(self.lithosphere_density),'">','     <section name="materials" />','     <help> Lithosphere density [g/cm^-3] </help>','</parameter>');
     68                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mantle_shear_modulus" type="',class(self.mantle_shear_modulus),'" default="',convert2str(self.mantle_shear_modulus),'">','     <section name="materials" />','     <help> Mantle shear modulus [Pa] </help>','</parameter>');
     69                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mantle_density" type="',class(self.mantle_density),'" default="',convert2str(self.mantle_density),'">','     <section name="materials" />','     <help> Mantle density [g/cm^-3] </help>','</parameter>');
     70
     71
     72                end % }}}
     73                function self = matice(varargin) % {{{
    7474                        switch nargin
    7575                                case 0
    76                                         obj=setdefaultparameters(obj);
     76                                        self=setdefaultparameters(self);
    7777                                case 1
    7878                                        inputstruct=varargin{1};
     
    8282                                                fieldname = list1{i};
    8383                                                if ismember(fieldname,list2),
    84                                                         obj.(fieldname) = inputstruct.(fieldname);
     84                                                        self.(fieldname) = inputstruct.(fieldname);
    8585                                                end
    8686                                        end
     
    8989                        end
    9090                end % }}}
    91                 function obj = setdefaultparameters(obj) % {{{
     91                function self = setdefaultparameters(self) % {{{
    9292
    9393                        %ice density (kg/m^3)
    94                         obj.rho_ice=917.;
     94                        self.rho_ice=917.;
    9595
    9696                        %ocean water density (kg/m^3)
    97                         obj.rho_water=1023.;
     97                        self.rho_water=1023.;
    9898
    9999                        %fresh water density (kg/m^3)
    100                         obj.rho_freshwater=1000.;
     100                        self.rho_freshwater=1000.;
    101101
    102102                        %water viscosity (N.s/m^2)
    103                         obj.mu_water=0.001787; 
     103                        self.mu_water=0.001787; 
    104104
    105105                        %ice heat capacity cp (J/kg/K)
    106                         obj.heatcapacity=2093.;
     106                        self.heatcapacity=2093.;
    107107
    108108                        %ice latent heat of fusion L (J/kg)
    109                         obj.latentheat=3.34*10^5;
     109                        self.latentheat=3.34*10^5;
    110110
    111111                        %ice thermal conductivity (W/m/K)
    112                         obj.thermalconductivity=2.4;
     112                        self.thermalconductivity=2.4;
    113113                       
    114114                        %wet ice thermal conductivity (W/m/K)
    115                         obj.temperateiceconductivity=.24;
     115                        self.temperateiceconductivity=.24;
    116116
    117117                        %the melting point of ice at 1 atmosphere of pressure in K
    118                         obj.meltingpoint=273.15;
     118                        self.meltingpoint=273.15;
    119119
    120120                        %rate of change of melting point with pressure (K/Pa)
    121                         obj.beta=9.8*10^-8;
     121                        self.beta=9.8*10^-8;
    122122
    123123                        %mixed layer (ice-water interface) heat capacity (J/kg/K)
    124                         obj.mixed_layer_capacity=3974.;
     124                        self.mixed_layer_capacity=3974.;
    125125
    126126                        %thermal exchange velocity (ice-water interface) (m/s)
    127                         obj.thermal_exchange_velocity=1.00*10^-4;
     127                        self.thermal_exchange_velocity=1.00*10^-4;
    128128
    129129                        %Rheology law: what is the temperature dependence of B with T
    130130                        %available: none, paterson and arrhenius
    131                         obj.rheology_law='Paterson';
     131                        self.rheology_law='Paterson';
    132132
    133133                        % GIA:
    134                         obj.lithosphere_shear_modulus  = 6.7*10^10;  % (Pa)
    135                         obj.lithosphere_density        = 3.32;       % (g/cm^-3)
    136                         obj.mantle_shear_modulus       = 1.45*10^11; % (Pa)
    137                         obj.mantle_density             = 3.34;       % (g/cm^-3)
    138 
    139                 end % }}}
    140                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     134                        self.lithosphere_shear_modulus  = 6.7*10^10;  % (Pa)
     135                        self.lithosphere_density        = 3.32;       % (g/cm^-3)
     136                        self.mantle_shear_modulus       = 1.45*10^11; % (Pa)
     137                        self.mantle_density             = 3.34;       % (g/cm^-3)
     138
     139                end % }}}
     140                function md = checkconsistency(self,md,solution,analyses) % {{{
    141141                        md = checkfield(md,'fieldname','materials.rho_ice','>',0);
    142142                        md = checkfield(md,'fieldname','materials.rho_water','>',0);
     
    155155
    156156                end % }}}
    157                 function disp(obj) % {{{
     157                function disp(self) % {{{
    158158                        disp(sprintf('   Materials:'));
    159159
    160                         fielddisplay(obj,'rho_ice','ice density [kg/m^3]');
    161                         fielddisplay(obj,'rho_water','ocean water density [kg/m^3]');
    162                         fielddisplay(obj,'rho_freshwater','fresh water density [kg/m^3]');
    163                         fielddisplay(obj,'mu_water','water viscosity [N s/m^2]');
    164                         fielddisplay(obj,'heatcapacity','heat capacity [J/kg/K]');
    165                         fielddisplay(obj,'thermalconductivity',['ice thermal conductivity [W/m/K]']);
    166                         fielddisplay(obj,'temperateiceconductivity','temperate ice thermal conductivity [W/m/K]');
    167                         fielddisplay(obj,'meltingpoint','melting point of ice at 1atm in K');
    168                         fielddisplay(obj,'latentheat','latent heat of fusion [J/kg]');
    169                         fielddisplay(obj,'beta','rate of change of melting point with pressure [K/Pa]');
    170                         fielddisplay(obj,'mixed_layer_capacity','mixed layer capacity [W/kg/K]');
    171                         fielddisplay(obj,'thermal_exchange_velocity','thermal exchange velocity [m/s]');
    172                         fielddisplay(obj,'rheology_B','flow law parameter [Pa/s^(1/n)]');
    173                         fielddisplay(obj,'rheology_n','Glen''s flow law exponent');
    174                         fielddisplay(obj,'rheology_law',['law for the temperature dependance of the rheology: ''None'', ''Cuffey'', ''Paterson'', ''Arrhenius'' or ''LliboutryDuval''']);
    175                         fielddisplay(obj,'lithosphere_shear_modulus','Lithosphere shear modulus [Pa]');
    176                         fielddisplay(obj,'lithosphere_density','Lithosphere density [g/cm^-3]');
    177                         fielddisplay(obj,'mantle_shear_modulus','Mantle shear modulus [Pa]');
    178                         fielddisplay(obj,'mantle_density','Mantle density [g/cm^-3]');
    179                 end % }}}
    180                 function marshall(obj,md,fid) % {{{
     160                        fielddisplay(self,'rho_ice','ice density [kg/m^3]');
     161                        fielddisplay(self,'rho_water','ocean water density [kg/m^3]');
     162                        fielddisplay(self,'rho_freshwater','fresh water density [kg/m^3]');
     163                        fielddisplay(self,'mu_water','water viscosity [N s/m^2]');
     164                        fielddisplay(self,'heatcapacity','heat capacity [J/kg/K]');
     165                        fielddisplay(self,'thermalconductivity',['ice thermal conductivity [W/m/K]']);
     166                        fielddisplay(self,'temperateiceconductivity','temperate ice thermal conductivity [W/m/K]');
     167                        fielddisplay(self,'meltingpoint','melting point of ice at 1atm in K');
     168                        fielddisplay(self,'latentheat','latent heat of fusion [J/kg]');
     169                        fielddisplay(self,'beta','rate of change of melting point with pressure [K/Pa]');
     170                        fielddisplay(self,'mixed_layer_capacity','mixed layer capacity [W/kg/K]');
     171                        fielddisplay(self,'thermal_exchange_velocity','thermal exchange velocity [m/s]');
     172                        fielddisplay(self,'rheology_B','flow law parameter [Pa/s^(1/n)]');
     173                        fielddisplay(self,'rheology_n','Glen''s flow law exponent');
     174                        fielddisplay(self,'rheology_law',['law for the temperature dependance of the rheology: ''None'', ''Cuffey'', ''Paterson'', ''Arrhenius'' or ''LliboutryDuval''']);
     175                        fielddisplay(self,'lithosphere_shear_modulus','Lithosphere shear modulus [Pa]');
     176                        fielddisplay(self,'lithosphere_density','Lithosphere density [g/cm^-3]');
     177                        fielddisplay(self,'mantle_shear_modulus','Mantle shear modulus [Pa]');
     178                        fielddisplay(self,'mantle_density','Mantle density [g/cm^-3]');
     179                end % }}}
     180                function marshall(self,md,fid) % {{{
    181181                        WriteData(fid,'enum',MaterialsEnum(),'data',MaticeEnum(),'format','Integer');
    182                         WriteData(fid,'object',obj,'class','materials','fieldname','rho_ice','format','Double');
    183                         WriteData(fid,'object',obj,'class','materials','fieldname','rho_water','enum',MaterialsRhoSeawaterEnum(),'format','Double');
    184                         WriteData(fid,'object',obj,'class','materials','fieldname','rho_freshwater','format','Double');
    185                         WriteData(fid,'object',obj,'class','materials','fieldname','mu_water','format','Double');
    186                         WriteData(fid,'object',obj,'class','materials','fieldname','heatcapacity','format','Double');
    187                         WriteData(fid,'object',obj,'class','materials','fieldname','latentheat','format','Double');
    188                         WriteData(fid,'object',obj,'class','materials','fieldname','thermalconductivity','format','Double');
    189                         WriteData(fid,'object',obj,'class','materials','fieldname','temperateiceconductivity','format','Double');
    190                         WriteData(fid,'object',obj,'class','materials','fieldname','meltingpoint','format','Double');
    191                         WriteData(fid,'object',obj,'class','materials','fieldname','beta','format','Double');
    192                         WriteData(fid,'object',obj,'class','materials','fieldname','mixed_layer_capacity','format','Double');
    193                         WriteData(fid,'object',obj,'class','materials','fieldname','thermal_exchange_velocity','format','Double');
    194                         WriteData(fid,'object',obj,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    195                         WriteData(fid,'object',obj,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2);
    196                         WriteData(fid,'data',StringToEnum(obj.rheology_law),'enum',MaterialsRheologyLawEnum(),'format','Integer');
    197 
    198                         WriteData(fid,'object',obj,'class','materials','fieldname','lithosphere_shear_modulus','format','Double');
    199                         WriteData(fid,'object',obj,'class','materials','fieldname','lithosphere_density','format','Double','scale',10^3);
    200                         WriteData(fid,'object',obj,'class','materials','fieldname','mantle_shear_modulus','format','Double');
    201                         WriteData(fid,'object',obj,'class','materials','fieldname','mantle_density','format','Double','scale',10^3);
     182                        WriteData(fid,'object',self,'class','materials','fieldname','rho_ice','format','Double');
     183                        WriteData(fid,'object',self,'class','materials','fieldname','rho_water','enum',MaterialsRhoSeawaterEnum(),'format','Double');
     184                        WriteData(fid,'object',self,'class','materials','fieldname','rho_freshwater','format','Double');
     185                        WriteData(fid,'object',self,'class','materials','fieldname','mu_water','format','Double');
     186                        WriteData(fid,'object',self,'class','materials','fieldname','heatcapacity','format','Double');
     187                        WriteData(fid,'object',self,'class','materials','fieldname','latentheat','format','Double');
     188                        WriteData(fid,'object',self,'class','materials','fieldname','thermalconductivity','format','Double');
     189                        WriteData(fid,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double');
     190                        WriteData(fid,'object',self,'class','materials','fieldname','meltingpoint','format','Double');
     191                        WriteData(fid,'object',self,'class','materials','fieldname','beta','format','Double');
     192                        WriteData(fid,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double');
     193                        WriteData(fid,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double');
     194                        WriteData(fid,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
     195                        WriteData(fid,'object',self,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2);
     196                        WriteData(fid,'data',StringToEnum(self.rheology_law),'enum',MaterialsRheologyLawEnum(),'format','Integer');
     197
     198                        WriteData(fid,'object',self,'class','materials','fieldname','lithosphere_shear_modulus','format','Double');
     199                        WriteData(fid,'object',self,'class','materials','fieldname','lithosphere_density','format','Double','scale',10^3);
     200                        WriteData(fid,'object',self,'class','materials','fieldname','mantle_shear_modulus','format','Double');
     201                        WriteData(fid,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10^3);
    202202                end % }}}
    203203        end
  • issm/trunk-jpl/src/m/classes/matseaice.m

    r18503 r19040  
    1818        end
    1919        methods
    20                 function obj = matseaice(varargin) % {{{
     20                function self = matseaice(varargin) % {{{
    2121                        switch nargin
    2222                                case 0
    23                                         obj=setdefaultparameters(obj);
     23                                        self=setdefaultparameters(self);
    2424                                case 1
    2525                                        inputstruct=varargin{1};
     
    2929                                                fieldname = list1{i};
    3030                                                if ismember(fieldname,list2),
    31                                                         obj.(fieldname) = inputstruct.(fieldname);
     31                                                        self.(fieldname) = inputstruct.(fieldname);
    3232                                                end
    3333                                        end
     
    3636                        end
    3737                end % }}}
    38                 function obj = setdefaultparameters(obj) % {{{
     38                function self = setdefaultparameters(self) % {{{
    3939
    4040                        %Ice density
    41                         obj.rho_ice = 917.; %kg/m^3
     41                        self.rho_ice = 917.; %kg/m^3
    4242
    4343                        %poisson modulus
    44                         obj.poisson=0.3;
     44                        self.poisson=0.3;
    4545
    4646                        %Young modulus
    47                         obj.young_modulus=9.e+9;
     47                        self.young_modulus=9.e+9;
    4848
    4949                        %ridging exponent
    50                         obj.ridging_exponent=-20.;
     50                        self.ridging_exponent=-20.;
    5151
    5252                        %Cohesion (Weiss 2007)
    53                         obj.cohesion = 40.e+3; %40 kPa
     53                        self.cohesion = 40.e+3; %40 kPa
    5454
    5555                        %internal_friction_coef
    56                         obj.internal_friction_coef=0.7;
     56                        self.internal_friction_coef=0.7;
    5757
    5858                        %compression_coef (Bouillon and Rampal 2014)
    59                         obj.compression_coef=5./2;
     59                        self.compression_coef=5./2;
    6060
    6161                        %traction_coef (Bouillon and Rampal 2014)
    62                         obj.traction_coef=5./6.;
     62                        self.traction_coef=5./6.;
    6363
    6464                        %Time relaxation stress
    6565                        %1e20 for the elastic case (perfect memory of the stress), equal to the timestep for the viscous case (no memory of the stress)
    66                         obj.time_relaxation_stress=1.e+20;
     66                        self.time_relaxation_stress=1.e+20;
    6767
    6868                        %Time relaxation damage
    6969                        %1e20 for the brittle case (perfect memory of the damage), equal to the timestep for the plastic case (no memory of the damage)
    70                         obj.time_relaxation_damage=1.e+20;
     70                        self.time_relaxation_damage=1.e+20;
    7171
    7272                end % }}}
    73                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     73                function md = checkconsistency(self,md,solution,analyses) % {{{
    7474                        md = checkfield(md,'fieldname','materials.rho_ice','NaN',1,'>',0,'numel',1);
    7575                        md = checkfield(md,'fieldname','materials.poisson','NaN',1,'>',0,'<',.5,'numel',1);
     
    8282                        md = checkfield(md,'fieldname','materials.time_relaxation_stress','NaN',1,'>',md.timestepping.time_step,'numel',1);
    8383                end % }}}
    84                 function disp(obj) % {{{
     84                function disp(self) % {{{
    8585                        disp(sprintf('   Sea Ice Material:'));
    86                         fielddisplay(obj,'rho_ice','ice density [kg/m^3]');
    87                         fielddisplay(obj,'poisson','poisson ratio for undamaged ice [no unit]');
    88                         fielddisplay(obj,'young_modulus','Young modulus for undamaged ice [Pa]');
    89                         fielddisplay(obj,'ridging_exponent','Riging exponent (c, Hibler parameter) [no unit]');
    90                         fielddisplay(obj,'cohesion','cohesion (C) [Pa]');
    91                         fielddisplay(obj,'internal_friction_coef','Mohr-Coulomb internal friction coefficient (mu=tan(phi)) [no unit]');
    92                         fielddisplay(obj,'compression_coef','Ratio between cutoff compressive strength and the cohesion [no unit]');
    93                         fielddisplay(obj,'traction_coef','Ratio between cutoff tensile strength and Mohr-Coulomb tensile strength [no unit]');
    94                         fielddisplay(obj,'time_relaxation_stress','Relaxation time for stress (1e+20: elastic, dt: viscous) [s]');
    95                         fielddisplay(obj,'time_relaxation_damage','Relaxation time for damage (1e+20: brittle, dt: plastic) [s]');
     86                        fielddisplay(self,'rho_ice','ice density [kg/m^3]');
     87                        fielddisplay(self,'poisson','poisson ratio for undamaged ice [no unit]');
     88                        fielddisplay(self,'young_modulus','Young modulus for undamaged ice [Pa]');
     89                        fielddisplay(self,'ridging_exponent','Riging exponent (c, Hibler parameter) [no unit]');
     90                        fielddisplay(self,'cohesion','cohesion (C) [Pa]');
     91                        fielddisplay(self,'internal_friction_coef','Mohr-Coulomb internal friction coefficient (mu=tan(phi)) [no unit]');
     92                        fielddisplay(self,'compression_coef','Ratio between cutoff compressive strength and the cohesion [no unit]');
     93                        fielddisplay(self,'traction_coef','Ratio between cutoff tensile strength and Mohr-Coulomb tensile strength [no unit]');
     94                        fielddisplay(self,'time_relaxation_stress','Relaxation time for stress (1e+20: elastic, dt: viscous) [s]');
     95                        fielddisplay(self,'time_relaxation_damage','Relaxation time for damage (1e+20: brittle, dt: plastic) [s]');
    9696                end % }}}
    97                 function marshall(obj,md,fid) % {{{
     97                function marshall(self,md,fid) % {{{
    9898                        WriteData(fid,'enum',MaterialsEnum(),'data',MatseaiceEnum(),'format','Integer');
    99                         WriteData(fid,'object',obj,'class','materials','fieldname','rho_ice','format','Double');
    100                         WriteData(fid,'object',obj,'class','materials','fieldname','poisson','format','Double');
    101                         WriteData(fid,'object',obj,'class','materials','fieldname','young_modulus','format','Double');
    102                         WriteData(fid,'object',obj,'class','materials','fieldname','ridging_exponent','format','Double');
    103                         WriteData(fid,'object',obj,'class','materials','fieldname','cohesion','format','Double');
    104                         WriteData(fid,'object',obj,'class','materials','fieldname','internal_friction_coef','format','Double');
    105                         WriteData(fid,'object',obj,'class','materials','fieldname','compression_coef','format','Double');
    106                         WriteData(fid,'object',obj,'class','materials','fieldname','traction_coef','format','Double');
    107                         WriteData(fid,'object',obj,'class','materials','fieldname','time_relaxation_stress','format','Double');
    108                         WriteData(fid,'object',obj,'class','materials','fieldname','time_relaxation_damage','format','Double');
     99                        WriteData(fid,'object',self,'class','materials','fieldname','rho_ice','format','Double');
     100                        WriteData(fid,'object',self,'class','materials','fieldname','poisson','format','Double');
     101                        WriteData(fid,'object',self,'class','materials','fieldname','young_modulus','format','Double');
     102                        WriteData(fid,'object',self,'class','materials','fieldname','ridging_exponent','format','Double');
     103                        WriteData(fid,'object',self,'class','materials','fieldname','cohesion','format','Double');
     104                        WriteData(fid,'object',self,'class','materials','fieldname','internal_friction_coef','format','Double');
     105                        WriteData(fid,'object',self,'class','materials','fieldname','compression_coef','format','Double');
     106                        WriteData(fid,'object',self,'class','materials','fieldname','traction_coef','format','Double');
     107                        WriteData(fid,'object',self,'class','materials','fieldname','time_relaxation_stress','format','Double');
     108                        WriteData(fid,'object',self,'class','materials','fieldname','time_relaxation_damage','format','Double');
    109109                end % }}}
    110110        end
  • issm/trunk-jpl/src/m/classes/mesh2d.m

    r18563 r19040  
    7070                        end
    7171                end % }}}
    72                 function obj = setdefaultparameters(obj) % {{{
     72                function self = setdefaultparameters(self) % {{{
    7373
    7474                        %the connectivity is the averaged number of nodes linked to a
     
    7777                        %give a good memory/time ration. This value can be checked in
    7878                        %trunk/test/Miscellaneous/runme.m
    79                         obj.average_vertex_connectivity=25;
     79                        self.average_vertex_connectivity=25;
    8080                end % }}}
    81                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     81                function md = checkconsistency(self,md,solution,analyses) % {{{
    8282
    8383                        md = checkfield(md,'fieldname','mesh.x','NaN',1,'size',[md.mesh.numberofvertices 1]);
     
    9797                        end
    9898                end % }}}
    99                 function disp(obj) % {{{
     99                function disp(self) % {{{
    100100                        disp(sprintf('   2D tria Mesh (horizontal):'));
    101101
    102102                        disp(sprintf('\n      Elements and vertices:'));
    103                         fielddisplay(obj,'numberofelements','number of elements');
    104                         fielddisplay(obj,'numberofvertices','number of vertices');
    105                         fielddisplay(obj,'elements','vertex indices of the mesh elements');
    106                         fielddisplay(obj,'x','vertices x coordinate [m]');
    107                         fielddisplay(obj,'y','vertices y coordinate [m]');
    108                         fielddisplay(obj,'edges','edges of the 2d mesh (vertex1 vertex2 element1 element2)');
    109                         fielddisplay(obj,'numberofedges','number of edges of the 2d mesh');
     103                        fielddisplay(self,'numberofelements','number of elements');
     104                        fielddisplay(self,'numberofvertices','number of vertices');
     105                        fielddisplay(self,'elements','vertex indices of the mesh elements');
     106                        fielddisplay(self,'x','vertices x coordinate [m]');
     107                        fielddisplay(self,'y','vertices y coordinate [m]');
     108                        fielddisplay(self,'edges','edges of the 2d mesh (vertex1 vertex2 element1 element2)');
     109                        fielddisplay(self,'numberofedges','number of edges of the 2d mesh');
    110110
    111111                        disp(sprintf('\n      Properties:'));
    112                         fielddisplay(obj,'vertexonboundary','vertices on the boundary of the domain flag list');
    113                         fielddisplay(obj,'segments','edges on domain boundary (vertex1 vertex2 element)');
    114                         fielddisplay(obj,'segmentmarkers','number associated to each segment');
    115                         fielddisplay(obj,'vertexconnectivity','list of vertices connected to vertex_i');
    116                         fielddisplay(obj,'elementconnectivity','list of vertices connected to element_i');
    117                         fielddisplay(obj,'average_vertex_connectivity','average number of vertices connected to one vertex');
     112                        fielddisplay(self,'vertexonboundary','vertices on the boundary of the domain flag list');
     113                        fielddisplay(self,'segments','edges on domain boundary (vertex1 vertex2 element)');
     114                        fielddisplay(self,'segmentmarkers','number associated to each segment');
     115                        fielddisplay(self,'vertexconnectivity','list of vertices connected to vertex_i');
     116                        fielddisplay(self,'elementconnectivity','list of vertices connected to element_i');
     117                        fielddisplay(self,'average_vertex_connectivity','average number of vertices connected to one vertex');
    118118
    119119                        disp(sprintf('\n      Extracted model:'));
    120                         fielddisplay(obj,'extractedvertices','vertices extracted from the model');
    121                         fielddisplay(obj,'extractedelements','elements extracted from the model');
     120                        fielddisplay(self,'extractedvertices','vertices extracted from the model');
     121                        fielddisplay(self,'extractedelements','elements extracted from the model');
    122122
    123123                        disp(sprintf('\n      Projection:'));
    124                         fielddisplay(obj,'lat','vertices latitude [degrees]');
    125                         fielddisplay(obj,'long','vertices longitude [degrees]');
    126                         fielddisplay(obj,'epsg','EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)');
     124                        fielddisplay(self,'lat','vertices latitude [degrees]');
     125                        fielddisplay(self,'long','vertices longitude [degrees]');
     126                        fielddisplay(self,'epsg','EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)');
    127127                end % }}}
    128                 function createxml(obj,fid) % {{{
     128                function createxml(self,fid) % {{{
    129129                        fprintf(fid, '<!-- 2D tria Mesh (horizontal) -->\n');
    130130
    131131                        %elements and vertices
    132132                        fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Elements and vertices">','<section name="mesh" />');
    133                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','  <parameter key ="numberofelements" type="',class(obj.numberofelements),'" default="',convert2str(obj.numberofelements),'">','     <section name="mesh" />','     <help> number of elements </help>','  </parameter>');
    134                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','  <parameter key ="numberofvertices" type="',class(obj.numberofvertices),'" default="',convert2str(obj.numberofvertices),'">','     <section name="mesh" />','     <help> number of vertices </help>','  </parameter>');
    135                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','  <parameter key ="elements" type="',class(obj.elements),'" default="',convert2str(obj.elements),'">','     <section name="mesh" />','     <help> vertex indices of the mesh elements </help>','  </parameter>');
    136                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="x" type="',class(obj.x),'" default="',convert2str(obj.x),'">','     <section name="mesh" />','     <help> vertices x coordinate [m] </help>','  </parameter>');
    137                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="y" type="',class(obj.y),'" default="',convert2str(obj.y),'">','     <section name="mesh" />','     <help> vertices y coordinate [m] </help>','  </parameter>');
    138                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="edges" type="',class(obj.edges),'" default="',convert2str(obj.edges),'">','     <section name="mesh" />','     <help> edges of the 2d mesh (vertex1 vertex2 element1 element2) </help>','  </parameter>');
    139                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="numberofedges" type="',class(obj.numberofedges),'" default="',convert2str(obj.numberofedges),'">','     <section name="mesh" />','     <help> number of edges of the 2d mesh </help>','  </parameter>');
     133                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','  <parameter key ="numberofelements" type="',class(self.numberofelements),'" default="',convert2str(self.numberofelements),'">','     <section name="mesh" />','     <help> number of elements </help>','  </parameter>');
     134                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','  <parameter key ="numberofvertices" type="',class(self.numberofvertices),'" default="',convert2str(self.numberofvertices),'">','     <section name="mesh" />','     <help> number of vertices </help>','  </parameter>');
     135                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','  <parameter key ="elements" type="',class(self.elements),'" default="',convert2str(self.elements),'">','     <section name="mesh" />','     <help> vertex indices of the mesh elements </help>','  </parameter>');
     136                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="x" type="',class(self.x),'" default="',convert2str(self.x),'">','     <section name="mesh" />','     <help> vertices x coordinate [m] </help>','  </parameter>');
     137                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="y" type="',class(self.y),'" default="',convert2str(self.y),'">','     <section name="mesh" />','     <help> vertices y coordinate [m] </help>','  </parameter>');
     138                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="edges" type="',class(self.edges),'" default="',convert2str(self.edges),'">','     <section name="mesh" />','     <help> edges of the 2d mesh (vertex1 vertex2 element1 element2) </help>','  </parameter>');
     139                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="numberofedges" type="',class(self.numberofedges),'" default="',convert2str(self.numberofedges),'">','     <section name="mesh" />','     <help> number of edges of the 2d mesh </help>','  </parameter>');
    140140                        fprintf(fid,'%s\n%s\n','</frame>');
    141141
    142142                        % properties
    143143                        fprintf(fid,'%s\n%s\n%s\n','<frame key="2" label="Properties">','<section name="mesh" />');             
    144                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonboundary" type="',class(obj.vertexonboundary),'" default="',convert2str(obj.vertexonboundary),'">','     <section name="mesh" />','     <help> vertices on the boundary of the domain flag list </help>','  </parameter>');
    145                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="segments" type="',class(obj.segments),'" default="',convert2str(obj.segments),'">','     <section name="mesh" />','     <help> edges on domain boundary (vertex1 vertex2 element) </help>','  </parameter>');
    146                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="segmentmarkers" type="',class(obj.segmentmarkers),'" default="',convert2str(obj.segmentmarkers),'">','     <section name="mesh" />','     <help> number associated to each segment </help>','  </parameter>');
    147                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexconnectivity" type="',class(obj.vertexconnectivity),'" default="',convert2str(obj.vertexconnectivity),'">','     <section name="mesh" />','     <help> list of vertices connected to vertex_i </help>','  </parameter>');
    148                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementconnectivity" type="',class(obj.elementconnectivity),'" default="',convert2str(obj.elementconnectivity),'">','     <section name="mesh" />','     <help> list of vertices connected to element_i </help>','  </parameter>');
    149                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="average_vertex_connectivity" type="',class(obj.average_vertex_connectivity),'" default="',convert2str(obj.average_vertex_connectivity),'">','     <section name="mesh" />','     <help> average number of vertices connected to one vertex </help>','  </parameter>');
     144                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonboundary" type="',class(self.vertexonboundary),'" default="',convert2str(self.vertexonboundary),'">','     <section name="mesh" />','     <help> vertices on the boundary of the domain flag list </help>','  </parameter>');
     145                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="segments" type="',class(self.segments),'" default="',convert2str(self.segments),'">','     <section name="mesh" />','     <help> edges on domain boundary (vertex1 vertex2 element) </help>','  </parameter>');
     146                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="segmentmarkers" type="',class(self.segmentmarkers),'" default="',convert2str(self.segmentmarkers),'">','     <section name="mesh" />','     <help> number associated to each segment </help>','  </parameter>');
     147                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexconnectivity" type="',class(self.vertexconnectivity),'" default="',convert2str(self.vertexconnectivity),'">','     <section name="mesh" />','     <help> list of vertices connected to vertex_i </help>','  </parameter>');
     148                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementconnectivity" type="',class(self.elementconnectivity),'" default="',convert2str(self.elementconnectivity),'">','     <section name="mesh" />','     <help> list of vertices connected to element_i </help>','  </parameter>');
     149                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="average_vertex_connectivity" type="',class(self.average_vertex_connectivity),'" default="',convert2str(self.average_vertex_connectivity),'">','     <section name="mesh" />','     <help> average number of vertices connected to one vertex </help>','  </parameter>');
    150150                        fprintf(fid,'%s\n%s\n','</frame>');
    151151
    152152                        %extracted model
    153153                        fprintf(fid,'%s\n%s\n%s\n','<frame key="3" label="Extracted Model">','<section name="mesh" />');
    154                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="extractedvertices" type="',class(obj.extractedvertices),'" default="',convert2str(obj.extractedvertices),'">','     <section name="mesh" />','     <help> vertices extracted from the model </help>','  </parameter>');
    155                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="extractedelements" type="',class(obj.extractedelements),'" default="',convert2str(obj.extractedelements),'">','     <section name="mesh" />','     <help> elements extracted from the model </help>','  </parameter>');
     154                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="extractedvertices" type="',class(self.extractedvertices),'" default="',convert2str(self.extractedvertices),'">','     <section name="mesh" />','     <help> vertices extracted from the model </help>','  </parameter>');
     155                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="extractedelements" type="',class(self.extractedelements),'" default="',convert2str(self.extractedelements),'">','     <section name="mesh" />','     <help> elements extracted from the model </help>','  </parameter>');
    156156                        fprintf(fid,'%s\n%s\n','</frame>');
    157157
    158158                        %projection
    159159                        fprintf(fid,'%s\n%s\n%s\n','<frame key="4" label="Projection">','<section name="mesh" />');
    160                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lat" type="',class(obj.lat),'" default="',convert2str(obj.lat),'">','     <section name="mesh" />','     <help> vertices latitude [degrees] </help>','  </parameter>');
    161                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="long" type="',class(obj.long),'" default="',convert2str(obj.long),'">','     <section name="mesh" />','     <help> verticies longitude [degrees] </help>','  </parameter>');
     160                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lat" type="',class(self.lat),'" default="',convert2str(self.lat),'">','     <section name="mesh" />','     <help> vertices latitude [degrees] </help>','  </parameter>');
     161                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="long" type="',class(self.long),'" default="',convert2str(self.long),'">','     <section name="mesh" />','     <help> verticies longitude [degrees] </help>','  </parameter>');
    162162                        % choice (epsg) 'n' or 's'
    163163                        fprintf(fid,'%s\n%s\n%s\n','  <parameter key ="epsg" type="alternative" optional="false">','     <section name="mesh" />','     <help> Indicate epsg ''n'' or ''s'' </help>');
     
    168168
    169169                end % }}}
    170                 function marshall(obj,md,fid) % {{{
    171                         WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum(['Domain' domaintype(obj)]),'format','Integer');
    172                         WriteData(fid,'enum',DomainDimensionEnum(),'data',dimension(obj),'format','Integer');
    173                         WriteData(fid,'enum',MeshElementtypeEnum(),'data',StringToEnum(elementtype(obj)),'format','Integer');
    174                         WriteData(fid,'object',obj,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
    175                         WriteData(fid,'object',obj,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
    176                         WriteData(fid,'enum',MeshZEnum(),'data',zeros(obj.numberofvertices,1),'format','DoubleMat','mattype',1);
    177                         WriteData(fid,'object',obj,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
    178                         WriteData(fid,'object',obj,'class','mesh','fieldname','numberofelements','format','Integer');
    179                         WriteData(fid,'object',obj,'class','mesh','fieldname','numberofvertices','format','Integer');
    180                         WriteData(fid,'object',obj,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
    181                         WriteData(fid,'object',obj,'class','mesh','fieldname','vertexonboundary','format','DoubleMat','mattype',1);
     170                function marshall(self,md,fid) % {{{
     171                        WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum(['Domain' domaintype(self)]),'format','Integer');
     172                        WriteData(fid,'enum',DomainDimensionEnum(),'data',dimension(self),'format','Integer');
     173                        WriteData(fid,'enum',MeshElementtypeEnum(),'data',StringToEnum(elementtype(self)),'format','Integer');
     174                        WriteData(fid,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
     175                        WriteData(fid,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
     176                        WriteData(fid,'enum',MeshZEnum(),'data',zeros(self.numberofvertices,1),'format','DoubleMat','mattype',1);
     177                        WriteData(fid,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
     178                        WriteData(fid,'object',self,'class','mesh','fieldname','numberofelements','format','Integer');
     179                        WriteData(fid,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer');
     180                        WriteData(fid,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
     181                        WriteData(fid,'object',self,'class','mesh','fieldname','vertexonboundary','format','DoubleMat','mattype',1);
    182182                end % }}}
    183                 function t = domaintype(obj) % {{{
     183                function t = domaintype(self) % {{{
    184184                        t = '2Dhorizontal';
    185185                end % }}}
    186                 function d = dimension(obj) % {{{
     186                function d = dimension(self) % {{{
    187187                        d = 2;
    188188                end % }}}
    189                 function s = elementtype(obj) % {{{
     189                function s = elementtype(self) % {{{
    190190                        s = 'Tria';
    191191                end % }}}
  • issm/trunk-jpl/src/m/classes/mesh2dvertical.m

    r18563 r19040  
    5151        end
    5252        methods
    53                 function createxml(obj,fid) % {{{
     53                function createxml(self,fid) % {{{
    5454                        fprintf(fid, '<!-- 2d Mesh (Vertical) -->\n');
    5555
    5656                        %elements and vertices
    5757                        fprintf(fid,'%s\n%s\n%s\n','       <frame key="1" label="Elements and vertices">','       <section name="mesh" />');
    58                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofelements" type="',class(obj.numberofelements),'" default="',convert2str(obj.numberofelements),'">','              <help> number of elements </help>','          </parameter>');
    59                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofvertices" type="',class(obj.numberofvertices),'" default="',convert2str(obj.numberofvertices),'">','              <help> number of vertices </help>','          </parameter>');
    60                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="elements" type="',class(obj.elements),'" default="',convert2str(obj.elements),'">','              <help> vertex indices of the mesh elements </help>','          </parameter>');
    61                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="x" type="',class(obj.x),'" default="',convert2str(obj.x),'">','     <section name="mesh" />','     <help> vertices x coordinate [m] </help>','  </parameter>');
    62                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="y" type="',class(obj.y),'" default="',convert2str(obj.y),'">','     <section name="mesh" />','     <help> vertices y coordinate [m] </help>','  </parameter>');
    63                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="edges" type="',class(obj.edges),'" default="',convert2str(obj.edges),'">','     <section name="mesh" />','     <help> edges of the 2d mesh (vertex1 vertex2 element1 element2) </help>','  </parameter>');
    64                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="numberofedges" type="',class(obj.numberofedges),'" default="',convert2str(obj.numberofedges),'">','     <section name="mesh" />','     <help> number of edges of the 2d mesh </help>','  </parameter>');
     58                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofelements" type="',class(self.numberofelements),'" default="',convert2str(self.numberofelements),'">','              <help> number of elements </help>','          </parameter>');
     59                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofvertices" type="',class(self.numberofvertices),'" default="',convert2str(self.numberofvertices),'">','              <help> number of vertices </help>','          </parameter>');
     60                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="elements" type="',class(self.elements),'" default="',convert2str(self.elements),'">','              <help> vertex indices of the mesh elements </help>','          </parameter>');
     61                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="x" type="',class(self.x),'" default="',convert2str(self.x),'">','     <section name="mesh" />','     <help> vertices x coordinate [m] </help>','  </parameter>');
     62                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="y" type="',class(self.y),'" default="',convert2str(self.y),'">','     <section name="mesh" />','     <help> vertices y coordinate [m] </help>','  </parameter>');
     63                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="edges" type="',class(self.edges),'" default="',convert2str(self.edges),'">','     <section name="mesh" />','     <help> edges of the 2d mesh (vertex1 vertex2 element1 element2) </help>','  </parameter>');
     64                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="numberofedges" type="',class(self.numberofedges),'" default="',convert2str(self.numberofedges),'">','     <section name="mesh" />','     <help> number of edges of the 2d mesh </help>','  </parameter>');
    6565                        fprintf(fid,'%s\n%s\n','       </frame>');
    6666
    6767                        % properties
    6868                        fprintf(fid,'%s\n%s\n%s\n','<frame key="2" label="Properties">','<section name="mesh" />');             
    69                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonboundary" type="',class(obj.vertexonboundary),'" default="',convert2str(obj.vertexonboundary),'">','     <section name="mesh" />','     <help> vertices on the boundary of the domain flag list </help>','  </parameter>');
    70                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonbase" type="',class(obj.vertexonbase),'" default="',convert2str(obj.vertexonbase),'">','     <section name="mesh" />','     <help> vertices on the bed of the domain flag list </help>','  </parameter>');           
    71                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="segments" type="',class(obj.segments),'" default="',convert2str(obj.segments),'">','     <section name="mesh" />','     <help> edges on domain boundary (vertex1 vertex2 element) </help>','  </parameter>');
    72                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="segmentmarkers" type="',class(obj.segmentmarkers),'" default="',convert2str(obj.segmentmarkers),'">','     <section name="mesh" />','     <help> number associated to each segment </help>','  </parameter>');
    73                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexconnectivity" type="',class(obj.vertexconnectivity),'" default="',convert2str(obj.vertexconnectivity),'">','     <section name="mesh" />','     <help> list of vertices connected to vertex_i </help>','  </parameter>');
    74                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementconnectivity" type="',class(obj.elementconnectivity),'" default="',convert2str(obj.elementconnectivity),'">','     <section name="mesh" />','     <help> list of vertices connected to element_i </help>','  </parameter>');
    75                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="average_vertex_connectivity" type="',class(obj.average_vertex_connectivity),'" default="',convert2str(obj.average_vertex_connectivity),'">','     <section name="mesh" />','     <help> average number of vertices connected to one vertex </help>','  </parameter>');
     69                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonboundary" type="',class(self.vertexonboundary),'" default="',convert2str(self.vertexonboundary),'">','     <section name="mesh" />','     <help> vertices on the boundary of the domain flag list </help>','  </parameter>');
     70                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonbase" type="',class(self.vertexonbase),'" default="',convert2str(self.vertexonbase),'">','     <section name="mesh" />','     <help> vertices on the bed of the domain flag list </help>','  </parameter>');           
     71                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="segments" type="',class(self.segments),'" default="',convert2str(self.segments),'">','     <section name="mesh" />','     <help> edges on domain boundary (vertex1 vertex2 element) </help>','  </parameter>');
     72                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="segmentmarkers" type="',class(self.segmentmarkers),'" default="',convert2str(self.segmentmarkers),'">','     <section name="mesh" />','     <help> number associated to each segment </help>','  </parameter>');
     73                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexconnectivity" type="',class(self.vertexconnectivity),'" default="',convert2str(self.vertexconnectivity),'">','     <section name="mesh" />','     <help> list of vertices connected to vertex_i </help>','  </parameter>');
     74                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementconnectivity" type="',class(self.elementconnectivity),'" default="',convert2str(self.elementconnectivity),'">','     <section name="mesh" />','     <help> list of vertices connected to element_i </help>','  </parameter>');
     75                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="average_vertex_connectivity" type="',class(self.average_vertex_connectivity),'" default="',convert2str(self.average_vertex_connectivity),'">','     <section name="mesh" />','     <help> average number of vertices connected to one vertex </help>','  </parameter>');
    7676                        fprintf(fid,'%s\n%s\n','</frame>');
    7777
    7878                        %projection
    7979                        fprintf(fid,'%s\n%s\n%s\n','<frame key="3" label="Projection">','<section name="mesh" />');
    80                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lat" type="',class(obj.lat),'" default="',convert2str(obj.lat),'">','     <section name="mesh" />','     <help> vertices latitude [degrees] </help>','  </parameter>');
    81                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="long" type="',class(obj.long),'" default="',convert2str(obj.long),'">','     <section name="mesh" />','     <help> verticies longitude [degrees] </help>','  </parameter>');
    82                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','  <parameter key ="epsg" type="',class(obj.epsg),'" default="',convert2str(obj.epsg),'">','     <section name="mesh" />','     <help> Indicate epsg ''n'' or ''s'' </help>','  </parameter>');
     80                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lat" type="',class(self.lat),'" default="',convert2str(self.lat),'">','     <section name="mesh" />','     <help> vertices latitude [degrees] </help>','  </parameter>');
     81                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="long" type="',class(self.long),'" default="',convert2str(self.long),'">','     <section name="mesh" />','     <help> verticies longitude [degrees] </help>','  </parameter>');
     82                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','  <parameter key ="epsg" type="',class(self.epsg),'" default="',convert2str(self.epsg),'">','     <section name="mesh" />','     <help> Indicate epsg ''n'' or ''s'' </help>','  </parameter>');
    8383                        fprintf(fid,'%s\n%s\n','</frame>');
    8484
    8585                end % }}}
    86                 function obj = mesh2dvertical(varargin) % {{{
     86                function self = mesh2dvertical(varargin) % {{{
    8787                        switch nargin
    8888                                case 0
    89                                         obj=setdefaultparameters(obj);
     89                                        self=setdefaultparameters(self);
    9090                                case 1
    9191                                        inputstruct=varargin{1};
     
    9595                                                fieldname = list1{i};
    9696                                                if ismember(fieldname,list2),
    97                                                         obj.(fieldname) = inputstruct.(fieldname);
     97                                                        self.(fieldname) = inputstruct.(fieldname);
    9898                                                end
    9999                                        end
     
    102102                        end
    103103                end % }}}
    104                 function obj = setdefaultparameters(obj) % {{{
     104                function self = setdefaultparameters(self) % {{{
    105105
    106106                        %the connectivity is the averaged number of nodes linked to a
     
    109109                        %give a good memory/time ration. This value can be checked in
    110110                        %trunk/test/Miscellaneous/runme.m
    111                         obj.average_vertex_connectivity=25;
    112                 end % }}}
    113                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     111                        self.average_vertex_connectivity=25;
     112                end % }}}
     113                function md = checkconsistency(self,md,solution,analyses) % {{{
    114114
    115115                        md = checkfield(md,'fieldname','mesh.x','NaN',1,'size',[md.mesh.numberofvertices 1]);
     
    131131                        end
    132132                end % }}}
    133                 function disp(obj) % {{{
     133                function disp(self) % {{{
    134134                        disp(sprintf('   2D tria Mesh (vertical):'));
    135135
    136136                        disp(sprintf('\n      Elements and vertices:'));
    137                         fielddisplay(obj,'numberofelements','number of elements');
    138                         fielddisplay(obj,'numberofvertices','number of vertices');
    139                         fielddisplay(obj,'elements','vertex indices of the mesh elements');
    140                         fielddisplay(obj,'x','vertices x coordinate [m]');
    141                         fielddisplay(obj,'y','vertices y coordinate [m]');
    142                         fielddisplay(obj,'edges','edges of the 2d mesh (vertex1 vertex2 element1 element2)');
    143                         fielddisplay(obj,'numberofedges','number of edges of the 2d mesh');
     137                        fielddisplay(self,'numberofelements','number of elements');
     138                        fielddisplay(self,'numberofvertices','number of vertices');
     139                        fielddisplay(self,'elements','vertex indices of the mesh elements');
     140                        fielddisplay(self,'x','vertices x coordinate [m]');
     141                        fielddisplay(self,'y','vertices y coordinate [m]');
     142                        fielddisplay(self,'edges','edges of the 2d mesh (vertex1 vertex2 element1 element2)');
     143                        fielddisplay(self,'numberofedges','number of edges of the 2d mesh');
    144144
    145145                        disp(sprintf('\n      Properties:'));
    146                         fielddisplay(obj,'vertexonboundary','vertices on the boundary of the domain flag list');
    147                         fielddisplay(obj,'vertexonbase','vertices on the bed of the domain flag list');
    148                         fielddisplay(obj,'vertexonsurface','vertices on the surface of the domain flag list');
    149                         fielddisplay(obj,'segments','edges on domain boundary (vertex1 vertex2 element)');
    150                         fielddisplay(obj,'segmentmarkers','number associated to each segment');
    151                         fielddisplay(obj,'vertexconnectivity','list of vertices connected to vertex_i');
    152                         fielddisplay(obj,'elementconnectivity','list of vertices connected to element_i');
    153                         fielddisplay(obj,'average_vertex_connectivity','average number of vertices connected to one vertex');
     146                        fielddisplay(self,'vertexonboundary','vertices on the boundary of the domain flag list');
     147                        fielddisplay(self,'vertexonbase','vertices on the bed of the domain flag list');
     148                        fielddisplay(self,'vertexonsurface','vertices on the surface of the domain flag list');
     149                        fielddisplay(self,'segments','edges on domain boundary (vertex1 vertex2 element)');
     150                        fielddisplay(self,'segmentmarkers','number associated to each segment');
     151                        fielddisplay(self,'vertexconnectivity','list of vertices connected to vertex_i');
     152                        fielddisplay(self,'elementconnectivity','list of vertices connected to element_i');
     153                        fielddisplay(self,'average_vertex_connectivity','average number of vertices connected to one vertex');
    154154
    155155                        disp(sprintf('\n      Projection:'));
    156                         fielddisplay(obj,'lat','vertices latitude [degrees]');
    157                         fielddisplay(obj,'long','vertices longitude [degrees]');
    158                         fielddisplay(obj,'epsg','EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)');
    159                 end % }}}
    160                 function marshall(obj,md,fid) % {{{
    161                         WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum(['Domain' domaintype(obj)]),'format','Integer');
    162                         WriteData(fid,'enum',DomainDimensionEnum(),'data',dimension(obj),'format','Integer');
    163                         WriteData(fid,'enum',MeshElementtypeEnum(),'data',StringToEnum(elementtype(obj)),'format','Integer');
    164                         WriteData(fid,'object',obj,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
    165                         WriteData(fid,'object',obj,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
    166                         WriteData(fid,'enum',MeshZEnum(),'data',zeros(obj.numberofvertices,1),'format','DoubleMat','mattype',1);
    167                         WriteData(fid,'object',obj,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
    168                         WriteData(fid,'object',obj,'class','mesh','fieldname','numberofelements','format','Integer');
    169                         WriteData(fid,'object',obj,'class','mesh','fieldname','numberofvertices','format','Integer');
    170                         WriteData(fid,'object',obj,'class','mesh','fieldname','vertexonbase','format','BooleanMat','mattype',1);
    171                         WriteData(fid,'object',obj,'class','mesh','fieldname','vertexonsurface','format','BooleanMat','mattype',1);
    172                         WriteData(fid,'object',obj,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
    173                 end % }}}
    174                 function t = domaintype(obj) % {{{
     156                        fielddisplay(self,'lat','vertices latitude [degrees]');
     157                        fielddisplay(self,'long','vertices longitude [degrees]');
     158                        fielddisplay(self,'epsg','EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)');
     159                end % }}}
     160                function marshall(self,md,fid) % {{{
     161                        WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum(['Domain' domaintype(self)]),'format','Integer');
     162                        WriteData(fid,'enum',DomainDimensionEnum(),'data',dimension(self),'format','Integer');
     163                        WriteData(fid,'enum',MeshElementtypeEnum(),'data',StringToEnum(elementtype(self)),'format','Integer');
     164                        WriteData(fid,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
     165                        WriteData(fid,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
     166                        WriteData(fid,'enum',MeshZEnum(),'data',zeros(self.numberofvertices,1),'format','DoubleMat','mattype',1);
     167                        WriteData(fid,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
     168                        WriteData(fid,'object',self,'class','mesh','fieldname','numberofelements','format','Integer');
     169                        WriteData(fid,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer');
     170                        WriteData(fid,'object',self,'class','mesh','fieldname','vertexonbase','format','BooleanMat','mattype',1);
     171                        WriteData(fid,'object',self,'class','mesh','fieldname','vertexonsurface','format','BooleanMat','mattype',1);
     172                        WriteData(fid,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
     173                end % }}}
     174                function t = domaintype(self) % {{{
    175175                        t = '2Dvertical';
    176176                end % }}}
    177                 function d = dimension(obj) % {{{
     177                function d = dimension(self) % {{{
    178178                        d = 2;
    179179                end % }}}
    180                 function s = elementtype(obj) % {{{
     180                function s = elementtype(self) % {{{
    181181                        s = 'Tria';
    182182                end % }}}
  • issm/trunk-jpl/src/m/classes/mesh3dprisms.m

    r18563 r19040  
    6262        end
    6363        methods
    64                 function createxml(obj,fid) % {{{
     64                function createxml(self,fid) % {{{
    6565                        fprintf(fid, '<!-- 3D prism Mesh -->\n');
    6666
    6767                        % Elements and verticies of the original 2d mesh
    6868                        fprintf(fid,'%s\n%s\n%s\n','       <frame key="1" label="Elements and vertices of the orginal 2d mesh">','       <section name="mesh3dprisms" />');
    69                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofelements2d" type="',class(obj.numberofelements2d),'" default="',convert2str(obj.numberofelements2d),'">','              <help> number of elements </help>','          </parameter>');
    70                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofvertices2d" type="',class(obj.numberofvertices2d),'" default="',convert2str(obj.numberofvertices2d),'">','              <help> number of vertices </help>','          </parameter>');
    71                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="elements2d" type="',class(obj.elements2d),'" default="',convert2str(obj.elements2d),'">','              <help> vertex indices of the mesh elements </help>','          </parameter>');
    72                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="x2d" type="',class(obj.x2d),'" default="',convert2str(obj.x2d),'">','     <section name="mesh3dprisms" />','     <help> vertices x coordinate [m] </help>','  </parameter>');
    73                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="y2d" type="',class(obj.y2d),'" default="',convert2str(obj.y2d),'">','     <section name="mesh3dprisms" />','     <help> vertices y coordinate [m] </help>','  </parameter>');
     69                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofelements2d" type="',class(self.numberofelements2d),'" default="',convert2str(self.numberofelements2d),'">','              <help> number of elements </help>','          </parameter>');
     70                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofvertices2d" type="',class(self.numberofvertices2d),'" default="',convert2str(self.numberofvertices2d),'">','              <help> number of vertices </help>','          </parameter>');
     71                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="elements2d" type="',class(self.elements2d),'" default="',convert2str(self.elements2d),'">','              <help> vertex indices of the mesh elements </help>','          </parameter>');
     72                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="x2d" type="',class(self.x2d),'" default="',convert2str(self.x2d),'">','     <section name="mesh3dprisms" />','     <help> vertices x coordinate [m] </help>','  </parameter>');
     73                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="y2d" type="',class(self.y2d),'" default="',convert2str(self.y2d),'">','     <section name="mesh3dprisms" />','     <help> vertices y coordinate [m] </help>','  </parameter>');
    7474                        fprintf(fid,'%s\n%s\n','       </frame>');
    7575
    7676                        % Elements and vertices of the extruded 3d mesh
    7777                        fprintf(fid,'%s\n%s\n%s\n','       <frame key="2" label="Elements and vertices of the orginal 3d mesh">','       <section name="mesh3dprisms" />');
    78                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofelements" type="',class(obj.numberofelements),'" default="',convert2str(obj.numberofelements),'">','              <help> number of elements </help>','          </parameter>');
    79                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofvertices" type="',class(obj.numberofvertices),'" default="',convert2str(obj.numberofvertices),'">','              <help> number of vertices </help>','          </parameter>');
    80                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="elements" type="',class(obj.elements),'" default="',convert2str(obj.elements),'">','              <help> vertex indices of the mesh elements </help>','          </parameter>');
    81                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="x" type="',class(obj.x),'" default="',convert2str(obj.x),'">','     <section name="mesh3dprisms" />','     <help> vertices x coordinate [m] </help>','  </parameter>');
    82                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="y" type="',class(obj.y),'" default="',convert2str(obj.y),'">','     <section name="mesh3dprisms" />','     <help> vertices y coordinate [m] </help>','  </parameter>');
    83                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="z" type="',class(obj.y),'" default="',convert2str(obj.y),'">','     <section name="mesh3dprisms" />','     <help> vertices z coordinate [m] </help>','  </parameter>');
     78                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofelements" type="',class(self.numberofelements),'" default="',convert2str(self.numberofelements),'">','              <help> number of elements </help>','          </parameter>');
     79                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofvertices" type="',class(self.numberofvertices),'" default="',convert2str(self.numberofvertices),'">','              <help> number of vertices </help>','          </parameter>');
     80                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="elements" type="',class(self.elements),'" default="',convert2str(self.elements),'">','              <help> vertex indices of the mesh elements </help>','          </parameter>');
     81                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="x" type="',class(self.x),'" default="',convert2str(self.x),'">','     <section name="mesh3dprisms" />','     <help> vertices x coordinate [m] </help>','  </parameter>');
     82                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="y" type="',class(self.y),'" default="',convert2str(self.y),'">','     <section name="mesh3dprisms" />','     <help> vertices y coordinate [m] </help>','  </parameter>');
     83                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="z" type="',class(self.y),'" default="',convert2str(self.y),'">','     <section name="mesh3dprisms" />','     <help> vertices z coordinate [m] </help>','  </parameter>');
    8484                        fprintf(fid,'%s\n%s\n','       </frame>');
    8585
    8686                        % properties
    8787                        fprintf(fid,'%s\n%s\n%s\n','<frame key="3" label="Properties">','<section name="mesh3dprisms" />');             
    88                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="numberoflayers" type="',class(obj.numberoflayers),'" default="',convert2str(obj.numberoflayers),'">','     <section name="mesh3dprisms" />','     <help> number of extrusion layers </help>','  </parameter>');
    89                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonbase" type="',class(obj.vertexonbase),'" default="',convert2str(obj.vertexonbase),'">','     <section name="mesh3dprisms" />','     <help> lower vertices flags list </help>','  </parameter>');
    90                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementontbase" type="',class(obj.elementontbase),'" default="',convert2str(obj.elementontbase),'">','     <section name="mesh3dprisms" />','     <help> lower elements flags list </help>','  </parameter>');
    91                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonsurface" type="',class(obj.vertexonsurface),'" default="',convert2str(obj.vertexonsurface),'">','     <section name="mesh3dprisms" />','     <help> upper vertices flags list </help>','  </parameter>');
    92                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementontsurface" type="',class(obj.elementontsurface),'" default="',convert2str(obj.elementontsurface),'">','     <section name="mesh3dprisms" />','     <help> upper elements flags list </help>','  </parameter>');
    93                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="uppervertex" type="',class(obj.uppervertex),'" default="',convert2str(obj.uppervertex),'">','     <section name="mesh3dprisms" />','     <help> upper vertex list (NaN for vertex on the upper surface) </help>','  </parameter>');
    94                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="upperelements" type="',class(obj.upperelements),'" default="',convert2str(obj.upperelements),'">','     <section name="mesh3dprisms" />','     <help> upper element list (NaN for element on the upper layer) </help>','  </parameter>');
    95                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lowervertex" type="',class(obj.lowervertex),'" default="',convert2str(obj.lowervertex),'">','     <section name="mesh3dprisms" />','     <help> lower vertex list (NaN for vertex on the lower surface) </help>','  </parameter>');
    96                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lowerelements" type="',class(obj.lowerelements),'" default="',convert2str(obj.lowerelements),'">','     <section name="mesh3dprisms" />','     <help> element list (NaN for element on the lower layer) </help>','  </parameter>');
    97                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonboundary" type="',class(obj.vertexonboundary),'" default="',convert2str(obj.vertexonboundary),'">','     <section name="mesh3dprisms" />','     <help> vertices on the boundary of the domain flag list </help>','  </parameter>');
    98                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexconnectivity" type="',class(obj.vertexconnectivity),'" default="',convert2str(obj.vertexconnectivity),'">','     <section name="mesh3dprisms" />','     <help> list of vertices connected to vertex_i </help>','  </parameter>');
    99                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementconnectivity" type="',class(obj.elementconnectivity),'" default="',convert2str(obj.elementconnectivity),'">','     <section name="mesh3dprisms" />','     <help> average number of vertices connected to one vertex </help>','  </parameter>');
    100                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="average_vertex_connectivity" type="',class(obj.average_vertex_connectivity),'" default="',convert2str(obj.average_vertex_connectivity),'">','     <section name="mesh3dprisms" />','     <help> average number of vertices connected to one vertex </help>','  </parameter>');
     88                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="numberoflayers" type="',class(self.numberoflayers),'" default="',convert2str(self.numberoflayers),'">','     <section name="mesh3dprisms" />','     <help> number of extrusion layers </help>','  </parameter>');
     89                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonbase" type="',class(self.vertexonbase),'" default="',convert2str(self.vertexonbase),'">','     <section name="mesh3dprisms" />','     <help> lower vertices flags list </help>','  </parameter>');
     90                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementontbase" type="',class(self.elementontbase),'" default="',convert2str(self.elementontbase),'">','     <section name="mesh3dprisms" />','     <help> lower elements flags list </help>','  </parameter>');
     91                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonsurface" type="',class(self.vertexonsurface),'" default="',convert2str(self.vertexonsurface),'">','     <section name="mesh3dprisms" />','     <help> upper vertices flags list </help>','  </parameter>');
     92                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementontsurface" type="',class(self.elementontsurface),'" default="',convert2str(self.elementontsurface),'">','     <section name="mesh3dprisms" />','     <help> upper elements flags list </help>','  </parameter>');
     93                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="uppervertex" type="',class(self.uppervertex),'" default="',convert2str(self.uppervertex),'">','     <section name="mesh3dprisms" />','     <help> upper vertex list (NaN for vertex on the upper surface) </help>','  </parameter>');
     94                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="upperelements" type="',class(self.upperelements),'" default="',convert2str(self.upperelements),'">','     <section name="mesh3dprisms" />','     <help> upper element list (NaN for element on the upper layer) </help>','  </parameter>');
     95                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lowervertex" type="',class(self.lowervertex),'" default="',convert2str(self.lowervertex),'">','     <section name="mesh3dprisms" />','     <help> lower vertex list (NaN for vertex on the lower surface) </help>','  </parameter>');
     96                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lowerelements" type="',class(self.lowerelements),'" default="',convert2str(self.lowerelements),'">','     <section name="mesh3dprisms" />','     <help> element list (NaN for element on the lower layer) </help>','  </parameter>');
     97                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonboundary" type="',class(self.vertexonboundary),'" default="',convert2str(self.vertexonboundary),'">','     <section name="mesh3dprisms" />','     <help> vertices on the boundary of the domain flag list </help>','  </parameter>');
     98                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexconnectivity" type="',class(self.vertexconnectivity),'" default="',convert2str(self.vertexconnectivity),'">','     <section name="mesh3dprisms" />','     <help> list of vertices connected to vertex_i </help>','  </parameter>');
     99                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementconnectivity" type="',class(self.elementconnectivity),'" default="',convert2str(self.elementconnectivity),'">','     <section name="mesh3dprisms" />','     <help> average number of vertices connected to one vertex </help>','  </parameter>');
     100                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="average_vertex_connectivity" type="',class(self.average_vertex_connectivity),'" default="',convert2str(self.average_vertex_connectivity),'">','     <section name="mesh3dprisms" />','     <help> average number of vertices connected to one vertex </help>','  </parameter>');
    101101                        fprintf(fid,'%s\n%s\n','</frame>');
    102102
    103103                        % Extracted model
    104104                        fprintf(fid,'%s\n%s\n%s\n','<frame key="4" label="Extracted Model">','<section name="mesh3dprisms" />');
    105                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="extractedvertices" type="',class(obj.extractedvertices),'" default="',convert2str(obj.extractedvertices),'">','     <section name="mesh3dprisms" />','     <help> vertices extracted from the model </help>','  </parameter>');
    106                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="extractedelements" type="',class(obj.extractedelements),'" default="',convert2str(obj.extractedelements),'">','     <section name="mesh3dprisms" />','     <help> elements extracted from the model </help>','  </parameter>');
     105                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="extractedvertices" type="',class(self.extractedvertices),'" default="',convert2str(self.extractedvertices),'">','     <section name="mesh3dprisms" />','     <help> vertices extracted from the model </help>','  </parameter>');
     106                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="extractedelements" type="',class(self.extractedelements),'" default="',convert2str(self.extractedelements),'">','     <section name="mesh3dprisms" />','     <help> elements extracted from the model </help>','  </parameter>');
    107107                        fprintf(fid,'%s\n%s\n','</frame>');
    108108
    109109                        % Projection
    110110                        fprintf(fid,'%s\n%s\n%s\n','<frame key="5" label="Projection">','<section name="mesh3dprisms" />');
    111                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lat" type="',class(obj.lat),'" default="',convert2str(obj.lat),'">','     <section name="mesh3dprisms" />','     <help> vertices latitude [degrees] </help>','  </parameter>');
    112                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="long" type="',class(obj.long),'" default="',convert2str(obj.long),'">','     <section name="mesh3dprisms" />','     <help> verticies longitude [degrees] </help>','  </parameter>');
    113                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','  <parameter key ="epsg" type="',class(obj.epsg),'" default="',convert2str(obj.epsg),'">','     <section name="mesh3dprisms" />','     <help> Indicate epsg ''n'' or ''s'' </help>','  </parameter>');
     111                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lat" type="',class(self.lat),'" default="',convert2str(self.lat),'">','     <section name="mesh3dprisms" />','     <help> vertices latitude [degrees] </help>','  </parameter>');
     112                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="long" type="',class(self.long),'" default="',convert2str(self.long),'">','     <section name="mesh3dprisms" />','     <help> verticies longitude [degrees] </help>','  </parameter>');
     113                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','  <parameter key ="epsg" type="',class(self.epsg),'" default="',convert2str(self.epsg),'">','     <section name="mesh3dprisms" />','     <help> Indicate epsg ''n'' or ''s'' </help>','  </parameter>');
    114114                        fprintf(fid,'%s\n%s\n','</frame>');
    115115
     
    133133                        end
    134134                end % }}}
    135                 function obj = setdefaultparameters(obj) % {{{
     135                function self = setdefaultparameters(self) % {{{
    136136
    137137                        %the connectivity is the averaged number of nodes linked to a
     
    140140                        %give a good memory/time ration. This value can be checked in
    141141                        %trunk/test/Miscellaneous/runme.m
    142                         obj.average_vertex_connectivity=25;
    143                 end % }}}
    144                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     142                        self.average_vertex_connectivity=25;
     143                end % }}}
     144                function md = checkconsistency(self,md,solution,analyses) % {{{
    145145
    146146                        md = checkfield(md,'fieldname','mesh.x','NaN',1,'size',[md.mesh.numberofvertices 1]);
     
    161161                        md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',24,'message','''mesh.average_vertex_connectivity'' should be at least 24 in 3d');
    162162                end % }}}
    163                 function disp(obj) % {{{
     163                function disp(self) % {{{
    164164                        disp(sprintf('   3D prism Mesh:'));
    165165
    166166                        disp(sprintf('\n      Elements and vertices of the original 2d mesh:'));
    167                         fielddisplay(obj,'numberofelements2d','number of elements');
    168                         fielddisplay(obj,'numberofvertices2d','number of vertices');
    169                         fielddisplay(obj,'elements2d','vertex indices of the mesh elements');
    170                         fielddisplay(obj,'x2d','vertices x coordinate [m]');
    171                         fielddisplay(obj,'y2d','vertices y coordinate [m]');
     167                        fielddisplay(self,'numberofelements2d','number of elements');
     168                        fielddisplay(self,'numberofvertices2d','number of vertices');
     169                        fielddisplay(self,'elements2d','vertex indices of the mesh elements');
     170                        fielddisplay(self,'x2d','vertices x coordinate [m]');
     171                        fielddisplay(self,'y2d','vertices y coordinate [m]');
    172172
    173173                        disp(sprintf('\n      Elements and vertices of the extruded 3d mesh:'));
    174                         fielddisplay(obj,'numberofelements','number of elements');
    175                         fielddisplay(obj,'numberofvertices','number of vertices');
    176                         fielddisplay(obj,'elements','vertex indices of the mesh elements');
    177                         fielddisplay(obj,'x','vertices x coordinate [m]');
    178                         fielddisplay(obj,'y','vertices y coordinate [m]');
    179                         fielddisplay(obj,'z','vertices z coordinate [m]');
     174                        fielddisplay(self,'numberofelements','number of elements');
     175                        fielddisplay(self,'numberofvertices','number of vertices');
     176                        fielddisplay(self,'elements','vertex indices of the mesh elements');
     177                        fielddisplay(self,'x','vertices x coordinate [m]');
     178                        fielddisplay(self,'y','vertices y coordinate [m]');
     179                        fielddisplay(self,'z','vertices z coordinate [m]');
    180180
    181181                        disp(sprintf('\n      Properties:'));
    182                         fielddisplay(obj,'numberoflayers','number of extrusion layers');
    183                         fielddisplay(obj,'vertexonbase','lower vertices flags list');
    184                         fielddisplay(obj,'vertexonsurface','upper vertices flags list');
    185                         fielddisplay(obj,'uppervertex','upper vertex list (NaN for vertex on the upper surface)');
    186                         fielddisplay(obj,'upperelements','upper element list (NaN for element on the upper layer)');
    187                         fielddisplay(obj,'lowervertex','lower vertex list (NaN for vertex on the lower surface)');
    188                         fielddisplay(obj,'lowerelements','lower element list (NaN for element on the lower layer');
    189                         fielddisplay(obj,'vertexonboundary','vertices on the boundary of the domain flag list');
    190 
    191                         fielddisplay(obj,'vertexconnectivity','list of vertices connected to vertex_i');
    192                         fielddisplay(obj,'elementconnectivity','list of vertices connected to element_i');
    193                         fielddisplay(obj,'average_vertex_connectivity','average number of vertices connected to one vertex');
     182                        fielddisplay(self,'numberoflayers','number of extrusion layers');
     183                        fielddisplay(self,'vertexonbase','lower vertices flags list');
     184                        fielddisplay(self,'vertexonsurface','upper vertices flags list');
     185                        fielddisplay(self,'uppervertex','upper vertex list (NaN for vertex on the upper surface)');
     186                        fielddisplay(self,'upperelements','upper element list (NaN for element on the upper layer)');
     187                        fielddisplay(self,'lowervertex','lower vertex list (NaN for vertex on the lower surface)');
     188                        fielddisplay(self,'lowerelements','lower element list (NaN for element on the lower layer');
     189                        fielddisplay(self,'vertexonboundary','vertices on the boundary of the domain flag list');
     190
     191                        fielddisplay(self,'vertexconnectivity','list of vertices connected to vertex_i');
     192                        fielddisplay(self,'elementconnectivity','list of vertices connected to element_i');
     193                        fielddisplay(self,'average_vertex_connectivity','average number of vertices connected to one vertex');
    194194
    195195                        disp(sprintf('\n      Extracted model:'));
    196                         fielddisplay(obj,'extractedvertices','vertices extracted from the model');
    197                         fielddisplay(obj,'extractedelements','elements extracted from the model');
     196                        fielddisplay(self,'extractedvertices','vertices extracted from the model');
     197                        fielddisplay(self,'extractedelements','elements extracted from the model');
    198198
    199199                        disp(sprintf('\n      Projection:'));
    200                         fielddisplay(obj,'lat','vertices latitude [degrees]');
    201                         fielddisplay(obj,'long','vertices longitude [degrees]');
    202                         fielddisplay(obj,'epsg','EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)');
    203                 end % }}}
    204                 function marshall(obj,md,fid) % {{{
    205                         WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum(['Domain' domaintype(obj)]),'format','Integer');
    206                         WriteData(fid,'enum',DomainDimensionEnum(),'data',dimension(obj),'format','Integer');
    207                         WriteData(fid,'enum',MeshElementtypeEnum(),'data',StringToEnum(elementtype(obj)),'format','Integer');
    208                         WriteData(fid,'object',obj,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
    209                         WriteData(fid,'object',obj,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
    210                         WriteData(fid,'object',obj,'class','mesh','fieldname','z','format','DoubleMat','mattype',1);
    211                         WriteData(fid,'object',obj,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
    212                         WriteData(fid,'object',obj,'class','mesh','fieldname','numberoflayers','format','Integer');
    213                         WriteData(fid,'object',obj,'class','mesh','fieldname','numberofelements','format','Integer');
    214                         WriteData(fid,'object',obj,'class','mesh','fieldname','numberofvertices','format','Integer');
    215                         WriteData(fid,'object',obj,'class','mesh','fieldname','vertexonbase','format','BooleanMat','mattype',1);
    216                         WriteData(fid,'object',obj,'class','mesh','fieldname','vertexonsurface','format','BooleanMat','mattype',1);
    217                         WriteData(fid,'object',obj,'class','mesh','fieldname','lowerelements','format','DoubleMat','mattype',2);
    218                         WriteData(fid,'object',obj,'class','mesh','fieldname','upperelements','format','DoubleMat','mattype',2);
    219                         WriteData(fid,'object',obj,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
    220                         WriteData(fid,'object',obj,'class','mesh','fieldname','elements2d','format','DoubleMat','mattype',3);
    221                         WriteData(fid,'object',obj,'class','mesh','fieldname','numberofvertices2d','format','Integer');
    222                         WriteData(fid,'object',obj,'class','mesh','fieldname','numberofelements2d','format','Integer');
    223                 end % }}}
    224                 function type = domaintype(obj) % {{{
     200                        fielddisplay(self,'lat','vertices latitude [degrees]');
     201                        fielddisplay(self,'long','vertices longitude [degrees]');
     202                        fielddisplay(self,'epsg','EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)');
     203                end % }}}
     204                function marshall(self,md,fid) % {{{
     205                        WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum(['Domain' domaintype(self)]),'format','Integer');
     206                        WriteData(fid,'enum',DomainDimensionEnum(),'data',dimension(self),'format','Integer');
     207                        WriteData(fid,'enum',MeshElementtypeEnum(),'data',StringToEnum(elementtype(self)),'format','Integer');
     208                        WriteData(fid,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
     209                        WriteData(fid,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
     210                        WriteData(fid,'object',self,'class','mesh','fieldname','z','format','DoubleMat','mattype',1);
     211                        WriteData(fid,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
     212                        WriteData(fid,'object',self,'class','mesh','fieldname','numberoflayers','format','Integer');
     213                        WriteData(fid,'object',self,'class','mesh','fieldname','numberofelements','format','Integer');
     214                        WriteData(fid,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer');
     215                        WriteData(fid,'object',self,'class','mesh','fieldname','vertexonbase','format','BooleanMat','mattype',1);
     216                        WriteData(fid,'object',self,'class','mesh','fieldname','vertexonsurface','format','BooleanMat','mattype',1);
     217                        WriteData(fid,'object',self,'class','mesh','fieldname','lowerelements','format','DoubleMat','mattype',2);
     218                        WriteData(fid,'object',self,'class','mesh','fieldname','upperelements','format','DoubleMat','mattype',2);
     219                        WriteData(fid,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
     220                        WriteData(fid,'object',self,'class','mesh','fieldname','elements2d','format','DoubleMat','mattype',3);
     221                        WriteData(fid,'object',self,'class','mesh','fieldname','numberofvertices2d','format','Integer');
     222                        WriteData(fid,'object',self,'class','mesh','fieldname','numberofelements2d','format','Integer');
     223                end % }}}
     224                function type = domaintype(self) % {{{
    225225                        type = '3D';
    226226                end % }}}
    227                 function d = dimension(obj) % {{{
     227                function d = dimension(self) % {{{
    228228                        d = 3;
    229229                end % }}}
    230                 function s = elementtype(obj) % {{{
     230                function s = elementtype(self) % {{{
    231231                        s = 'Penta';
    232232                end % }}}
  • issm/trunk-jpl/src/m/classes/mesh3dtetras.m

    r18563 r19040  
    6262        end
    6363        methods
    64                 function createxml(obj,fid) % {{{
     64                function createxml(self,fid) % {{{
    6565                        fprintf(fid, '<!-- 3D Tetra Mesh -->\n');
    6666
    6767                        % Elements and verticies of the original 2d mesh
    6868                        fprintf(fid,'%s\n%s\n%s\n','       <frame key="1" label="Elements and vertices of the orginal 2d mesh">','       <section name="mesh3dprisms" />');
    69                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofelements2d" type="',class(obj.numberofelements2d),'" default="',convert2str(obj.numberofelements2d),'">','              <help> number of elements </help>','          </parameter>');
    70                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofvertices2d" type="',class(obj.numberofvertices2d),'" default="',convert2str(obj.numberofvertices2d),'">','              <help> number of vertices </help>','          </parameter>');
    71                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="elements2d" type="',class(obj.elements2d),'" default="',convert2str(obj.elements2d),'">','              <help> vertex indices of the mesh elements </help>','          </parameter>');
    72                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="x2d" type="',class(obj.x2d),'" default="',convert2str(obj.x2d),'">','     <section name="mesh3dprisms" />','     <help> vertices x coordinate [m] </help>','  </parameter>');
    73                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="y2d" type="',class(obj.y2d),'" default="',convert2str(obj.y2d),'">','     <section name="mesh3dprisms" />','     <help> vertices y coordinate [m] </help>','  </parameter>');
     69                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofelements2d" type="',class(self.numberofelements2d),'" default="',convert2str(self.numberofelements2d),'">','              <help> number of elements </help>','          </parameter>');
     70                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofvertices2d" type="',class(self.numberofvertices2d),'" default="',convert2str(self.numberofvertices2d),'">','              <help> number of vertices </help>','          </parameter>');
     71                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="elements2d" type="',class(self.elements2d),'" default="',convert2str(self.elements2d),'">','              <help> vertex indices of the mesh elements </help>','          </parameter>');
     72                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="x2d" type="',class(self.x2d),'" default="',convert2str(self.x2d),'">','     <section name="mesh3dprisms" />','     <help> vertices x coordinate [m] </help>','  </parameter>');
     73                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="y2d" type="',class(self.y2d),'" default="',convert2str(self.y2d),'">','     <section name="mesh3dprisms" />','     <help> vertices y coordinate [m] </help>','  </parameter>');
    7474                        fprintf(fid,'%s\n%s\n','       </frame>');
    7575
    7676                        % Elements and vertices of the extruded 3d mesh
    7777                        fprintf(fid,'%s\n%s\n%s\n','       <frame key="2" label="Elements and vertices of the orginal 3d mesh">','       <section name="mesh3dprisms" />');
    78                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofelements" type="',class(obj.numberofelements),'" default="',convert2str(obj.numberofelements),'">','              <help> number of elements </help>','          </parameter>');
    79                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofvertices" type="',class(obj.numberofvertices),'" default="',convert2str(obj.numberofvertices),'">','              <help> number of vertices </help>','          </parameter>');
    80                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="elements" type="',class(obj.elements),'" default="',convert2str(obj.elements),'">','              <help> vertex indices of the mesh elements </help>','          </parameter>');
    81                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="x" type="',class(obj.x),'" default="',convert2str(obj.x),'">','     <section name="mesh3dprisms" />','     <help> vertices x coordinate [m] </help>','  </parameter>');
    82                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="y" type="',class(obj.y),'" default="',convert2str(obj.y),'">','     <section name="mesh3dprisms" />','     <help> vertices y coordinate [m] </help>','  </parameter>');
    83                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="z" type="',class(obj.y),'" default="',convert2str(obj.y),'">','     <section name="mesh3dprisms" />','     <help> vertices z coordinate [m] </help>','  </parameter>');
     78                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofelements" type="',class(self.numberofelements),'" default="',convert2str(self.numberofelements),'">','              <help> number of elements </help>','          </parameter>');
     79                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofvertices" type="',class(self.numberofvertices),'" default="',convert2str(self.numberofvertices),'">','              <help> number of vertices </help>','          </parameter>');
     80                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="elements" type="',class(self.elements),'" default="',convert2str(self.elements),'">','              <help> vertex indices of the mesh elements </help>','          </parameter>');
     81                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="x" type="',class(self.x),'" default="',convert2str(self.x),'">','     <section name="mesh3dprisms" />','     <help> vertices x coordinate [m] </help>','  </parameter>');
     82                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="y" type="',class(self.y),'" default="',convert2str(self.y),'">','     <section name="mesh3dprisms" />','     <help> vertices y coordinate [m] </help>','  </parameter>');
     83                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="z" type="',class(self.y),'" default="',convert2str(self.y),'">','     <section name="mesh3dprisms" />','     <help> vertices z coordinate [m] </help>','  </parameter>');
    8484                        fprintf(fid,'%s\n%s\n','       </frame>');
    8585
    8686                        % properties
    8787                        fprintf(fid,'%s\n%s\n%s\n','<frame key="3" label="Properties">','<section name="mesh3dprisms" />');             
    88                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="numberoflayers" type="',class(obj.numberoflayers),'" default="',convert2str(obj.numberoflayers),'">','     <section name="mesh3dprisms" />','     <help> number of extrusion layers </help>','  </parameter>');
    89                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonbase" type="',class(obj.vertexonbase),'" default="',convert2str(obj.vertexonbase),'">','     <section name="mesh3dprisms" />','     <help> lower vertices flags list </help>','  </parameter>');
    90                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementontbase" type="',class(obj.elementontbase),'" default="',convert2str(obj.elementontbase),'">','     <section name="mesh3dprisms" />','     <help> lower elements flags list </help>','  </parameter>');
    91                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonsurface" type="',class(obj.vertexonsurface),'" default="',convert2str(obj.vertexonsurface),'">','     <section name="mesh3dprisms" />','     <help> upper vertices flags list </help>','  </parameter>');
    92                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementontsurface" type="',class(obj.elementontsurface),'" default="',convert2str(obj.elementontsurface),'">','     <section name="mesh3dprisms" />','     <help> upper elements flags list </help>','  </parameter>');
    93                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="uppervertex" type="',class(obj.uppervertex),'" default="',convert2str(obj.uppervertex),'">','     <section name="mesh3dprisms" />','     <help> upper vertex list (NaN for vertex on the upper surface) </help>','  </parameter>');
    94                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="upperelements" type="',class(obj.upperelements),'" default="',convert2str(obj.upperelements),'">','     <section name="mesh3dprisms" />','     <help> upper element list (NaN for element on the upper layer) </help>','  </parameter>');
    95                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lowervertex" type="',class(obj.lowervertex),'" default="',convert2str(obj.lowervertex),'">','     <section name="mesh3dprisms" />','     <help> lower vertex list (NaN for vertex on the lower surface) </help>','  </parameter>');
    96                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lowerelements" type="',class(obj.lowerelements),'" default="',convert2str(obj.lowerelements),'">','     <section name="mesh3dprisms" />','     <help> element list (NaN for element on the lower layer) </help>','  </parameter>');
    97                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonboundary" type="',class(obj.vertexonboundary),'" default="',convert2str(obj.vertexonboundary),'">','     <section name="mesh3dprisms" />','     <help> vertices on the boundary of the domain flag list </help>','  </parameter>');
    98                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexconnectivity" type="',class(obj.vertexconnectivity),'" default="',convert2str(obj.vertexconnectivity),'">','     <section name="mesh3dprisms" />','     <help> list of vertices connected to vertex_i </help>','  </parameter>');
    99                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementconnectivity" type="',class(obj.elementconnectivity),'" default="',convert2str(obj.elementconnectivity),'">','     <section name="mesh3dprisms" />','     <help> average number of vertices connected to one vertex </help>','  </parameter>');
    100                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="average_vertex_connectivity" type="',class(obj.average_vertex_connectivity),'" default="',convert2str(obj.average_vertex_connectivity),'">','     <section name="mesh3dprisms" />','     <help> average number of vertices connected to one vertex </help>','  </parameter>');
     88                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="numberoflayers" type="',class(self.numberoflayers),'" default="',convert2str(self.numberoflayers),'">','     <section name="mesh3dprisms" />','     <help> number of extrusion layers </help>','  </parameter>');
     89                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonbase" type="',class(self.vertexonbase),'" default="',convert2str(self.vertexonbase),'">','     <section name="mesh3dprisms" />','     <help> lower vertices flags list </help>','  </parameter>');
     90                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementontbase" type="',class(self.elementontbase),'" default="',convert2str(self.elementontbase),'">','     <section name="mesh3dprisms" />','     <help> lower elements flags list </help>','  </parameter>');
     91                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonsurface" type="',class(self.vertexonsurface),'" default="',convert2str(self.vertexonsurface),'">','     <section name="mesh3dprisms" />','     <help> upper vertices flags list </help>','  </parameter>');
     92                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementontsurface" type="',class(self.elementontsurface),'" default="',convert2str(self.elementontsurface),'">','     <section name="mesh3dprisms" />','     <help> upper elements flags list </help>','  </parameter>');
     93                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="uppervertex" type="',class(self.uppervertex),'" default="',convert2str(self.uppervertex),'">','     <section name="mesh3dprisms" />','     <help> upper vertex list (NaN for vertex on the upper surface) </help>','  </parameter>');
     94                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="upperelements" type="',class(self.upperelements),'" default="',convert2str(self.upperelements),'">','     <section name="mesh3dprisms" />','     <help> upper element list (NaN for element on the upper layer) </help>','  </parameter>');
     95                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lowervertex" type="',class(self.lowervertex),'" default="',convert2str(self.lowervertex),'">','     <section name="mesh3dprisms" />','     <help> lower vertex list (NaN for vertex on the lower surface) </help>','  </parameter>');
     96                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lowerelements" type="',class(self.lowerelements),'" default="',convert2str(self.lowerelements),'">','     <section name="mesh3dprisms" />','     <help> element list (NaN for element on the lower layer) </help>','  </parameter>');
     97                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonboundary" type="',class(self.vertexonboundary),'" default="',convert2str(self.vertexonboundary),'">','     <section name="mesh3dprisms" />','     <help> vertices on the boundary of the domain flag list </help>','  </parameter>');
     98                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexconnectivity" type="',class(self.vertexconnectivity),'" default="',convert2str(self.vertexconnectivity),'">','     <section name="mesh3dprisms" />','     <help> list of vertices connected to vertex_i </help>','  </parameter>');
     99                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementconnectivity" type="',class(self.elementconnectivity),'" default="',convert2str(self.elementconnectivity),'">','     <section name="mesh3dprisms" />','     <help> average number of vertices connected to one vertex </help>','  </parameter>');
     100                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="average_vertex_connectivity" type="',class(self.average_vertex_connectivity),'" default="',convert2str(self.average_vertex_connectivity),'">','     <section name="mesh3dprisms" />','     <help> average number of vertices connected to one vertex </help>','  </parameter>');
    101101                        fprintf(fid,'%s\n%s\n','</frame>');
    102102
    103103                        % Extracted model
    104104                        fprintf(fid,'%s\n%s\n%s\n','<frame key="4" label="Extracted Model">','<section name="mesh3dprisms" />');
    105                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="extractedvertices" type="',class(obj.extractedvertices),'" default="',convert2str(obj.extractedvertices),'">','     <section name="mesh3dprisms" />','     <help> vertices extracted from the model </help>','  </parameter>');
    106                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="extractedelements" type="',class(obj.extractedelements),'" default="',convert2str(obj.extractedelements),'">','     <section name="mesh3dprisms" />','     <help> elements extracted from the model </help>','  </parameter>');
     105                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="extractedvertices" type="',class(self.extractedvertices),'" default="',convert2str(self.extractedvertices),'">','     <section name="mesh3dprisms" />','     <help> vertices extracted from the model </help>','  </parameter>');
     106                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="extractedelements" type="',class(self.extractedelements),'" default="',convert2str(self.extractedelements),'">','     <section name="mesh3dprisms" />','     <help> elements extracted from the model </help>','  </parameter>');
    107107                        fprintf(fid,'%s\n%s\n','</frame>');
    108108
    109109                        % Projection
    110110                        fprintf(fid,'%s\n%s\n%s\n','<frame key="5" label="Projection">','<section name="mesh3dprisms" />');
    111                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lat" type="',class(obj.lat),'" default="',convert2str(obj.lat),'">','     <section name="mesh3dprisms" />','     <help> vertices latitude [degrees] </help>','  </parameter>');
    112                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="long" type="',class(obj.long),'" default="',convert2str(obj.long),'">','     <section name="mesh3dprisms" />','     <help> verticies longitude [degrees] </help>','  </parameter>');
    113                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','  <parameter key ="epsg" type="',class(obj.epsg),'" default="',convert2str(obj.epsg),'">','     <section name="mesh3dprisms" />','     <help> Indicate epsg ''n'' or ''s'' </help>','  </parameter>');
     111                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lat" type="',class(self.lat),'" default="',convert2str(self.lat),'">','     <section name="mesh3dprisms" />','     <help> vertices latitude [degrees] </help>','  </parameter>');
     112                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="long" type="',class(self.long),'" default="',convert2str(self.long),'">','     <section name="mesh3dprisms" />','     <help> verticies longitude [degrees] </help>','  </parameter>');
     113                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','  <parameter key ="epsg" type="',class(self.epsg),'" default="',convert2str(self.epsg),'">','     <section name="mesh3dprisms" />','     <help> Indicate epsg ''n'' or ''s'' </help>','  </parameter>');
    114114                        fprintf(fid,'%s\n%s\n','</frame>');
    115115
     
    133133                        end
    134134                end % }}}
    135                 function obj = setdefaultparameters(obj) % {{{
     135                function self = setdefaultparameters(self) % {{{
    136136
    137137                        %the connectivity is the averaged number of nodes linked to a
     
    140140                        %give a good memory/time ration. This value can be checked in
    141141                        %trunk/test/Miscellaneous/runme.m
    142                         obj.average_vertex_connectivity=25;
    143                 end % }}}
    144                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     142                        self.average_vertex_connectivity=25;
     143                end % }}}
     144                function md = checkconsistency(self,md,solution,analyses) % {{{
    145145
    146146                        md = checkfield(md,'fieldname','mesh.x','NaN',1,'size',[md.mesh.numberofvertices 1]);
     
    161161                        md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',24,'message','''mesh.average_vertex_connectivity'' should be at least 24 in 3d');
    162162                end % }}}
    163                 function disp(obj) % {{{
     163                function disp(self) % {{{
    164164                        disp(sprintf('   3D tetra Mesh:'));
    165165
    166166                        disp(sprintf('\n      Elements and vertices of the original 2d mesh:'));
    167                         fielddisplay(obj,'numberofelements2d','number of elements');
    168                         fielddisplay(obj,'numberofvertices2d','number of vertices');
    169                         fielddisplay(obj,'elements2d','vertex indices of the mesh elements');
    170                         fielddisplay(obj,'x2d','vertices x coordinate [m]');
    171                         fielddisplay(obj,'y2d','vertices y coordinate [m]');
     167                        fielddisplay(self,'numberofelements2d','number of elements');
     168                        fielddisplay(self,'numberofvertices2d','number of vertices');
     169                        fielddisplay(self,'elements2d','vertex indices of the mesh elements');
     170                        fielddisplay(self,'x2d','vertices x coordinate [m]');
     171                        fielddisplay(self,'y2d','vertices y coordinate [m]');
    172172
    173173                        disp(sprintf('\n      Elements and vertices of the extruded 3d mesh:'));
    174                         fielddisplay(obj,'numberofelements','number of elements');
    175                         fielddisplay(obj,'numberofvertices','number of vertices');
    176                         fielddisplay(obj,'elements','vertex indices of the mesh elements');
    177                         fielddisplay(obj,'x','vertices x coordinate [m]');
    178                         fielddisplay(obj,'y','vertices y coordinate [m]');
    179                         fielddisplay(obj,'z','vertices z coordinate [m]');
     174                        fielddisplay(self,'numberofelements','number of elements');
     175                        fielddisplay(self,'numberofvertices','number of vertices');
     176                        fielddisplay(self,'elements','vertex indices of the mesh elements');
     177                        fielddisplay(self,'x','vertices x coordinate [m]');
     178                        fielddisplay(self,'y','vertices y coordinate [m]');
     179                        fielddisplay(self,'z','vertices z coordinate [m]');
    180180
    181181                        disp(sprintf('\n      Properties:'));
    182                         fielddisplay(obj,'numberoflayers','number of extrusion layers');
    183                         fielddisplay(obj,'vertexonbase','lower vertices flags list');
    184                         fielddisplay(obj,'vertexonsurface','upper vertices flags list');
    185                         fielddisplay(obj,'uppervertex','upper vertex list (NaN for vertex on the upper surface)');
    186                         fielddisplay(obj,'upperelements','upper element list (NaN for element on the upper layer)');
    187                         fielddisplay(obj,'lowervertex','lower vertex list (NaN for vertex on the lower surface)');
    188                         fielddisplay(obj,'lowerelements','lower element list (NaN for element on the lower layer');
    189                         fielddisplay(obj,'vertexonboundary','vertices on the boundary of the domain flag list');
    190 
    191                         fielddisplay(obj,'vertexconnectivity','list of vertices connected to vertex_i');
    192                         fielddisplay(obj,'elementconnectivity','list of vertices connected to element_i');
    193                         fielddisplay(obj,'average_vertex_connectivity','average number of vertices connected to one vertex');
     182                        fielddisplay(self,'numberoflayers','number of extrusion layers');
     183                        fielddisplay(self,'vertexonbase','lower vertices flags list');
     184                        fielddisplay(self,'vertexonsurface','upper vertices flags list');
     185                        fielddisplay(self,'uppervertex','upper vertex list (NaN for vertex on the upper surface)');
     186                        fielddisplay(self,'upperelements','upper element list (NaN for element on the upper layer)');
     187                        fielddisplay(self,'lowervertex','lower vertex list (NaN for vertex on the lower surface)');
     188                        fielddisplay(self,'lowerelements','lower element list (NaN for element on the lower layer');
     189                        fielddisplay(self,'vertexonboundary','vertices on the boundary of the domain flag list');
     190
     191                        fielddisplay(self,'vertexconnectivity','list of vertices connected to vertex_i');
     192                        fielddisplay(self,'elementconnectivity','list of vertices connected to element_i');
     193                        fielddisplay(self,'average_vertex_connectivity','average number of vertices connected to one vertex');
    194194
    195195                        disp(sprintf('\n      Extracted model:'));
    196                         fielddisplay(obj,'extractedvertices','vertices extracted from the model');
    197                         fielddisplay(obj,'extractedelements','elements extracted from the model');
     196                        fielddisplay(self,'extractedvertices','vertices extracted from the model');
     197                        fielddisplay(self,'extractedelements','elements extracted from the model');
    198198
    199199                        disp(sprintf('\n      Projection:'));
    200                         fielddisplay(obj,'lat','vertices latitude [degrees]');
    201                         fielddisplay(obj,'long','vertices longitude [degrees]');
    202                         fielddisplay(obj,'epsg','EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)');
    203                 end % }}}
    204                 function marshall(obj,md,fid) % {{{
    205                         WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum(['Domain' domaintype(obj)]),'format','Integer');
    206                         WriteData(fid,'enum',DomainDimensionEnum(),'data',dimension(obj),'format','Integer');
    207                         WriteData(fid,'enum',MeshElementtypeEnum(),'data',StringToEnum(elementtype(obj)),'format','Integer');
    208                         WriteData(fid,'object',obj,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
    209                         WriteData(fid,'object',obj,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
    210                         WriteData(fid,'object',obj,'class','mesh','fieldname','z','format','DoubleMat','mattype',1);
    211                         WriteData(fid,'object',obj,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
    212                         WriteData(fid,'object',obj,'class','mesh','fieldname','numberoflayers','format','Integer');
    213                         WriteData(fid,'object',obj,'class','mesh','fieldname','numberofelements','format','Integer');
    214                         WriteData(fid,'object',obj,'class','mesh','fieldname','numberofvertices','format','Integer');
    215                         WriteData(fid,'object',obj,'class','mesh','fieldname','vertexonbase','format','BooleanMat','mattype',1);
    216                         WriteData(fid,'object',obj,'class','mesh','fieldname','vertexonsurface','format','BooleanMat','mattype',1);
    217                         WriteData(fid,'object',obj,'class','mesh','fieldname','lowerelements','format','DoubleMat','mattype',2);
    218                         WriteData(fid,'object',obj,'class','mesh','fieldname','upperelements','format','DoubleMat','mattype',2);
    219                         WriteData(fid,'object',obj,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
    220                         WriteData(fid,'object',obj,'class','mesh','fieldname','elements2d','format','DoubleMat','mattype',3);
    221                         WriteData(fid,'object',obj,'class','mesh','fieldname','numberofvertices2d','format','Integer');
    222                         WriteData(fid,'object',obj,'class','mesh','fieldname','numberofelements2d','format','Integer');
    223                 end % }}}
    224                 function t = domaintype(obj) % {{{
     200                        fielddisplay(self,'lat','vertices latitude [degrees]');
     201                        fielddisplay(self,'long','vertices longitude [degrees]');
     202                        fielddisplay(self,'epsg','EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)');
     203                end % }}}
     204                function marshall(self,md,fid) % {{{
     205                        WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum(['Domain' domaintype(self)]),'format','Integer');
     206                        WriteData(fid,'enum',DomainDimensionEnum(),'data',dimension(self),'format','Integer');
     207                        WriteData(fid,'enum',MeshElementtypeEnum(),'data',StringToEnum(elementtype(self)),'format','Integer');
     208                        WriteData(fid,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
     209                        WriteData(fid,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
     210                        WriteData(fid,'object',self,'class','mesh','fieldname','z','format','DoubleMat','mattype',1);
     211                        WriteData(fid,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
     212                        WriteData(fid,'object',self,'class','mesh','fieldname','numberoflayers','format','Integer');
     213                        WriteData(fid,'object',self,'class','mesh','fieldname','numberofelements','format','Integer');
     214                        WriteData(fid,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer');
     215                        WriteData(fid,'object',self,'class','mesh','fieldname','vertexonbase','format','BooleanMat','mattype',1);
     216                        WriteData(fid,'object',self,'class','mesh','fieldname','vertexonsurface','format','BooleanMat','mattype',1);
     217                        WriteData(fid,'object',self,'class','mesh','fieldname','lowerelements','format','DoubleMat','mattype',2);
     218                        WriteData(fid,'object',self,'class','mesh','fieldname','upperelements','format','DoubleMat','mattype',2);
     219                        WriteData(fid,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
     220                        WriteData(fid,'object',self,'class','mesh','fieldname','elements2d','format','DoubleMat','mattype',3);
     221                        WriteData(fid,'object',self,'class','mesh','fieldname','numberofvertices2d','format','Integer');
     222                        WriteData(fid,'object',self,'class','mesh','fieldname','numberofelements2d','format','Integer');
     223                end % }}}
     224                function t = domaintype(self) % {{{
    225225                        t = '3D';
    226226                end % }}}
    227                 function d = dimension(obj) % {{{
     227                function d = dimension(self) % {{{
    228228                        d = 3;
    229229                end % }}}
    230                 function s = elementtype(obj) % {{{
     230                function s = elementtype(self) % {{{
    231231                        s = 'Tetra';
    232232                end % }}}
  • issm/trunk-jpl/src/m/classes/miscellaneous.m

    r17720 r19040  
    1111        end
    1212        methods
    13         function createxml(obj,fid) % {{{
     13        function createxml(self,fid) % {{{
    1414            fprintf(fid, '<!-- miscellaneous -->\n');           
    1515                   
    1616            % miscellaneous solution parameters
    1717            fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="miscellaneous parameters">','<section name="miscellaneous" />');                   
    18                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="notes" type="',class(obj.notes),'" default="',convert2str(obj.notes),'">','     <section name="miscellaneous" />','     <help> notes in a cell of strings </help>','  </parameter>');
    19                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="name" type="',class(obj.name),'" default="',convert2str(obj.name),'">','     <section name="miscellaneous" />','     <help> model name </help>','  </parameter>');
    20                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="dummy" type="',class(obj.dummy),'" default="',convert2str(obj.dummy),'">','     <section name="miscellaneous" />','     <help> empty field to store some data </help>','  </parameter>');
     18                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="notes" type="',class(self.notes),'" default="',convert2str(self.notes),'">','     <section name="miscellaneous" />','     <help> notes in a cell of strings </help>','  </parameter>');
     19                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="name" type="',class(self.name),'" default="',convert2str(self.name),'">','     <section name="miscellaneous" />','     <help> model name </help>','  </parameter>');
     20                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="dummy" type="',class(self.dummy),'" default="',convert2str(self.dummy),'">','     <section name="miscellaneous" />','     <help> empty field to store some data </help>','  </parameter>');
    2121            fprintf(fid,'%s\n%s\n','</frame>');   
    2222       
    2323        end % }}}       
    24                 function obj = miscellaneous(varargin) % {{{
     24                function self = miscellaneous(varargin) % {{{
    2525                        switch nargin
    2626                                case 0
    27                                         obj=setdefaultparameters(obj);
     27                                        self=setdefaultparameters(self);
    2828                                otherwise
    2929                                        error('constructor not supported');
    3030                        end
    3131                end % }}}
    32                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     32                function md = checkconsistency(self,md,solution,analyses) % {{{
    3333
    3434                        md = checkfield(md,'fieldname','miscellaneous.name','empty',1);
    3535
    3636                end % }}}
    37                 function obj = setdefaultparameters(obj) % {{{
     37                function self = setdefaultparameters(self) % {{{
    3838
    3939                end % }}}
    40                 function disp(obj) % {{{
     40                function disp(self) % {{{
    4141                        disp(sprintf('   miscellaneous parameters:'));
    4242
    43                         fielddisplay(obj,'notes','notes in a cell of strings');
    44                         fielddisplay(obj,'name','model name');
    45                         fielddisplay(obj,'dummy','empty field to store some data');
     43                        fielddisplay(self,'notes','notes in a cell of strings');
     44                        fielddisplay(self,'name','model name');
     45                        fielddisplay(self,'dummy','empty field to store some data');
    4646
    4747                end % }}}
    48                 function marshall(obj,md,fid) % {{{
    49                         WriteData(fid,'object',obj,'fieldname','name','format','String');
     48                function marshall(self,md,fid) % {{{
     49                        WriteData(fid,'object',self,'fieldname','name','format','String');
    5050                end % }}}
    5151        end
  • issm/trunk-jpl/src/m/classes/misfit.m

    r19027 r19040  
    2828       
    2929        methods
    30                 function obj = misfit(varargin) % {{{
     30                function self = misfit(varargin) % {{{
    3131                        if nargin==0,
    32                                 obj=setdefaultparameters(obj);
     32                                self=setdefaultparameters(self);
    3333                        else
    3434                                %use provided options to change fields
     
    3636
    3737                                %get name
    38                                 obj.name=getfieldvalue(options,'name','');
    39                                 obj.definitionenum=getfieldvalue(options,'definitionenum');
    40                                 obj.model_enum=getfieldvalue(options,'model_enum');
    41                                 obj.observation=getfieldvalue(options,'observation',NaN);
    42                                 obj.observation_enum=getfieldvalue(options,'observation_enum');
    43                                 obj.timeinterpolation=getfieldvalue(options,'timeinterpolation','nearestneighbor');
    44                                 obj.weights=getfieldvalue(options,'weights',NaN);
    45                                 obj.weights_enum=getfieldvalue(options,'weights_enum',NaN);
     38                                self.name=getfieldvalue(options,'name','');
     39                                self.definitionenum=getfieldvalue(options,'definitionenum');
     40                                self.model_enum=getfieldvalue(options,'model_enum');
     41                                self.observation=getfieldvalue(options,'observation',NaN);
     42                                self.observation_enum=getfieldvalue(options,'observation_enum');
     43                                self.timeinterpolation=getfieldvalue(options,'timeinterpolation','nearestneighbor');
     44                                self.weights=getfieldvalue(options,'weights',NaN);
     45                                self.weights_enum=getfieldvalue(options,'weights_enum',NaN);
    4646
    4747                        end
    4848                end % }}}
    49                 function obj = setdefaultparameters(obj) % {{{
    50                         obj.timeinterpolation='nearestneighbor';
     49                function self = setdefaultparameters(self) % {{{
     50                        self.timeinterpolation='nearestneighbor';
    5151                end % }}}
    52                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     52                function md = checkconsistency(self,md,solution,analyses) % {{{
    5353
    54                         if ~ischar(obj.name),
     54                        if ~ischar(self.name),
    5555                                error('misfit error message: ''name'' field should be a string!');
    5656                        end
    57                         md = checkfield(md,'fieldname','obj.definitionenum','field',obj.definitionenum,'values',[Outputdefinition1Enum,Outputdefinition2Enum,Outputdefinition3Enum,Outputdefinition4Enum,Outputdefinition5Enum,Outputdefinition6Enum,Outputdefinition7Enum,Outputdefinition8Enum,Outputdefinition9Enum,Outputdefinition10Enum]);
     57                        md = checkfield(md,'fieldname','self.definitionenum','field',self.definitionenum,'values',[Outputdefinition1Enum,Outputdefinition2Enum,Outputdefinition3Enum,Outputdefinition4Enum,Outputdefinition5Enum,Outputdefinition6Enum,Outputdefinition7Enum,Outputdefinition8Enum,Outputdefinition9Enum,Outputdefinition10Enum]);
    5858
    59                         if ~ischar(obj.timeinterpolation),
     59                        if ~ischar(self.timeinterpolation),
    6060                                error('misfit error message: ''timeinterpolation'' field should be a string!');
    6161                        end
    62                         md = checkfield(md,'fieldname','obj.observation','field',obj.observation,'timeseries',1,'NaN',1);
    63                         md = checkfield(md,'fieldname','obj.timeinterpolation','field',obj.timeinterpolation,'values',{'nearestneighbor'});
    64                         md = checkfield(md,'fieldname','obj.weights','field',obj.weights,'timeseries',1,'NaN',1);
     62                        md = checkfield(md,'fieldname','self.observation','field',self.observation,'timeseries',1,'NaN',1);
     63                        md = checkfield(md,'fieldname','self.timeinterpolation','field',self.timeinterpolation,'values',{'nearestneighbor'});
     64                        md = checkfield(md,'fieldname','self.weights','field',self.weights,'timeseries',1,'NaN',1);
    6565
    6666                end % }}}
    67                 function md = disp(obj) % {{{
     67                function md = disp(self) % {{{
    6868               
    6969                        disp(sprintf('   Misfit:\n'));
    7070
    71                         fielddisplay(obj,'name','identifier for this misfit response');
    72                         fielddisplay(obj,'definitionenum','enum that identifies this output definition uniquely, from Outputdefinition[1-10]Enum');
    73                         fielddisplay(obj,'model_enum','enum for field that is modeled');
    74                         fielddisplay(obj,'observation','observed field that we compare the model against');
    75                         fielddisplay(obj,'observation_enum','observation enum');
    76                         fielddisplay(obj,'timeinterpolation','interpolation routine used to interpolate misfit between two time steps (default is ''nearestneighbor''');
    77                         fielddisplay(obj,'weights','weights (at vertices) to apply to the misfit');
    78                         fielddisplay(obj,'weights_enum','enum for weights for identification purposes');
     71                        fielddisplay(self,'name','identifier for this misfit response');
     72                        fielddisplay(self,'definitionenum','enum that identifies this output definition uniquely, from Outputdefinition[1-10]Enum');
     73                        fielddisplay(self,'model_enum','enum for field that is modeled');
     74                        fielddisplay(self,'observation','observed field that we compare the model against');
     75                        fielddisplay(self,'observation_enum','observation enum');
     76                        fielddisplay(self,'timeinterpolation','interpolation routine used to interpolate misfit between two time steps (default is ''nearestneighbor''');
     77                        fielddisplay(self,'weights','weights (at vertices) to apply to the misfit');
     78                        fielddisplay(self,'weights_enum','enum for weights for identification purposes');
    7979
    8080                end % }}}
    81                 function md = marshall(obj,md,fid) % {{{
     81                function md = marshall(self,md,fid) % {{{
    8282
    83                 WriteData(fid,'object',obj,'fieldname','name','format','String');
    84                 WriteData(fid,'object',obj,'fieldname','definitionenum','format','Integer');
    85                 WriteData(fid,'object',obj,'fieldname','model_enum','format','Integer');
    86                 WriteData(fid,'object',obj,'fieldname','observation','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    87                 WriteData(fid,'object',obj,'fieldname','observation_enum','format','Integer');
    88                 WriteData(fid,'object',obj,'fieldname','timeinterpolation','format','String');
    89                 WriteData(fid,'object',obj,'fieldname','weights','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    90                 WriteData(fid,'object',obj,'fieldname','weights_enum','format','Integer');
     83                WriteData(fid,'object',self,'fieldname','name','format','String');
     84                WriteData(fid,'object',self,'fieldname','definitionenum','format','Integer');
     85                WriteData(fid,'object',self,'fieldname','model_enum','format','Integer');
     86                WriteData(fid,'object',self,'fieldname','observation','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
     87                WriteData(fid,'object',self,'fieldname','observation_enum','format','Integer');
     88                WriteData(fid,'object',self,'fieldname','timeinterpolation','format','String');
     89                WriteData(fid,'object',self,'fieldname','weights','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
     90                WriteData(fid,'object',self,'fieldname','weights_enum','format','Integer');
    9191
    9292                end % }}}
  • issm/trunk-jpl/src/m/classes/model.m

    r18961 r19040  
    13411341                        end
    13421342                end % }}}
    1343                 function disp(obj) % {{{
    1344                         disp(sprintf('%19s: %-22s -- %s','mesh'            ,['[1x1 ' class(obj.mesh) ']'],'mesh properties'));
    1345                         disp(sprintf('%19s: %-22s -- %s','mask'            ,['[1x1 ' class(obj.mask) ']'],'defines grounded and floating elements'));
    1346                         disp(sprintf('%19s: %-22s -- %s','geometry'        ,['[1x1 ' class(obj.geometry) ']'],'surface elevation, bedrock topography, ice thickness,...'));
    1347                         disp(sprintf('%19s: %-22s -- %s','constants'       ,['[1x1 ' class(obj.constants) ']'],'physical constants'));
    1348                         disp(sprintf('%19s: %-22s -- %s','surfaceforcings' ,['[1x1 ' class(obj.surfaceforcings) ']'],'surface forcings'));
    1349                         disp(sprintf('%19s: %-22s -- %s','basalforcings'   ,['[1x1 ' class(obj.basalforcings) ']'],'bed forcings'));
    1350                         disp(sprintf('%19s: %-22s -- %s','materials'       ,['[1x1 ' class(obj.materials) ']'],'material properties'));
    1351                         disp(sprintf('%19s: %-22s -- %s','damage'          ,['[1x1 ' class(obj.damage) ']'],'parameters for damage evolution solution'));
    1352                         disp(sprintf('%19s: %-22s -- %s','friction'        ,['[1x1 ' class(obj.friction) ']'],'basal friction/drag properties'));
    1353                         disp(sprintf('%19s: %-22s -- %s','flowequation'    ,['[1x1 ' class(obj.flowequation) ']'],'flow equations'));
    1354                         disp(sprintf('%19s: %-22s -- %s','timestepping'    ,['[1x1 ' class(obj.timestepping) ']'],'time stepping for transient models'));
    1355                         disp(sprintf('%19s: %-22s -- %s','initialization'  ,['[1x1 ' class(obj.initialization) ']'],'initial guess/state'));
    1356                         disp(sprintf('%19s: %-22s -- %s','rifts'           ,['[1x1 ' class(obj.rifts) ']'],'rifts properties'));
    1357                         disp(sprintf('%19s: %-22s -- %s','debug'           ,['[1x1 ' class(obj.debug) ']'],'debugging tools (valgrind, gprof)'));
    1358                         disp(sprintf('%19s: %-22s -- %s','verbose'         ,['[1x1 ' class(obj.verbose) ']'],'verbosity level in solve'));
    1359                         disp(sprintf('%19s: %-22s -- %s','settings'        ,['[1x1 ' class(obj.settings) ']'],'settings properties'));
    1360                         disp(sprintf('%19s: %-22s -- %s','toolkits'        ,['[1x1 ' class(obj.toolkits) ']'],'PETSc options for each solution'));
    1361                         disp(sprintf('%19s: %-22s -- %s','cluster'         ,['[1x1 ' class(obj.cluster) ']'],'cluster parameters (number of cpus...)'));
    1362                         disp(sprintf('%19s: %-22s -- %s','balancethickness',['[1x1 ' class(obj.balancethickness) ']'],'parameters for balancethickness solution'));
    1363                         disp(sprintf('%19s: %-22s -- %s','stressbalance'   ,['[1x1 ' class(obj.stressbalance) ']'],'parameters for stressbalance solution'));
    1364                         disp(sprintf('%19s: %-22s -- %s','groundingline'   ,['[1x1 ' class(obj.groundingline) ']'],'parameters for groundingline solution'));
    1365                         disp(sprintf('%19s: %-22s -- %s','hydrology'       ,['[1x1 ' class(obj.hydrology) ']'],'parameters for hydrology solution'));
    1366                         disp(sprintf('%19s: %-22s -- %s','masstransport'   ,['[1x1 ' class(obj.masstransport) ']'],'parameters for masstransport solution'));
    1367                         disp(sprintf('%19s: %-22s -- %s','thermal'         ,['[1x1 ' class(obj.thermal) ']'],'parameters for thermal solution'));
    1368                         disp(sprintf('%19s: %-22s -- %s','steadystate'     ,['[1x1 ' class(obj.steadystate) ']'],'parameters for steadystate solution'));
    1369                         disp(sprintf('%19s: %-22s -- %s','transient'       ,['[1x1 ' class(obj.transient) ']'],'parameters for transient solution'));
    1370                         disp(sprintf('%19s: %-22s -- %s','calving'         ,['[1x1 ' class(obj.calving) ']'],'parameters for calving'));
    1371                         disp(sprintf('%19s: %-22s -- %s','gia'             ,['[1x1 ' class(obj.gia) ']'],'parameters for gia solution'));
    1372                         disp(sprintf('%19s: %-22s -- %s','autodiff'        ,['[1x1 ' class(obj.autodiff) ']'],'automatic differentiation parameters'));
    1373                         disp(sprintf('%19s: %-22s -- %s','flaim'           ,['[1x1 ' class(obj.flaim) ']'],'flaim parameters'));
    1374                         disp(sprintf('%19s: %-22s -- %s','inversion'       ,['[1x1 ' class(obj.inversion) ']'],'parameters for inverse methods'));
    1375                         disp(sprintf('%19s: %-22s -- %s','qmu'             ,['[1x1 ' class(obj.qmu) ']'],'dakota properties'));
    1376                         disp(sprintf('%19s: %-22s -- %s','outputdefinition',['[1x1 ' class(obj.outputdefinition) ']'],'output definition'));
    1377                         disp(sprintf('%19s: %-22s -- %s','results'         ,['[1x1 ' class(obj.results) ']'],'model results'));
    1378                         disp(sprintf('%19s: %-22s -- %s','radaroverlay'    ,['[1x1 ' class(obj.radaroverlay) ']'],'radar image for plot overlay'));
    1379                         disp(sprintf('%19s: %-22s -- %s','miscellaneous'   ,['[1x1 ' class(obj.miscellaneous) ']'],'miscellaneous fields'));
    1380                         disp(sprintf('%19s: %-22s -- %s','seaice'       ,['[1x1 ' class(obj.seaice) ']'],'parameters for Sea Ice solution'));
     1343                function disp(self) % {{{
     1344                        disp(sprintf('%19s: %-22s -- %s','mesh'            ,['[1x1 ' class(self.mesh) ']'],'mesh properties'));
     1345                        disp(sprintf('%19s: %-22s -- %s','mask'            ,['[1x1 ' class(self.mask) ']'],'defines grounded and floating elements'));
     1346                        disp(sprintf('%19s: %-22s -- %s','geometry'        ,['[1x1 ' class(self.geometry) ']'],'surface elevation, bedrock topography, ice thickness,...'));
     1347                        disp(sprintf('%19s: %-22s -- %s','constants'       ,['[1x1 ' class(self.constants) ']'],'physical constants'));
     1348                        disp(sprintf('%19s: %-22s -- %s','surfaceforcings' ,['[1x1 ' class(self.surfaceforcings) ']'],'surface forcings'));
     1349                        disp(sprintf('%19s: %-22s -- %s','basalforcings'   ,['[1x1 ' class(self.basalforcings) ']'],'bed forcings'));
     1350                        disp(sprintf('%19s: %-22s -- %s','materials'       ,['[1x1 ' class(self.materials) ']'],'material properties'));
     1351                        disp(sprintf('%19s: %-22s -- %s','damage'          ,['[1x1 ' class(self.damage) ']'],'parameters for damage evolution solution'));
     1352                        disp(sprintf('%19s: %-22s -- %s','friction'        ,['[1x1 ' class(self.friction) ']'],'basal friction/drag properties'));
     1353                        disp(sprintf('%19s: %-22s -- %s','flowequation'    ,['[1x1 ' class(self.flowequation) ']'],'flow equations'));
     1354                        disp(sprintf('%19s: %-22s -- %s','timestepping'    ,['[1x1 ' class(self.timestepping) ']'],'time stepping for transient models'));
     1355                        disp(sprintf('%19s: %-22s -- %s','initialization'  ,['[1x1 ' class(self.initialization) ']'],'initial guess/state'));
     1356                        disp(sprintf('%19s: %-22s -- %s','rifts'           ,['[1x1 ' class(self.rifts) ']'],'rifts properties'));
     1357                        disp(sprintf('%19s: %-22s -- %s','debug'           ,['[1x1 ' class(self.debug) ']'],'debugging tools (valgrind, gprof)'));
     1358                        disp(sprintf('%19s: %-22s -- %s','verbose'         ,['[1x1 ' class(self.verbose) ']'],'verbosity level in solve'));
     1359                        disp(sprintf('%19s: %-22s -- %s','settings'        ,['[1x1 ' class(self.settings) ']'],'settings properties'));
     1360                        disp(sprintf('%19s: %-22s -- %s','toolkits'        ,['[1x1 ' class(self.toolkits) ']'],'PETSc options for each solution'));
     1361                        disp(sprintf('%19s: %-22s -- %s','cluster'         ,['[1x1 ' class(self.cluster) ']'],'cluster parameters (number of cpus...)'));
     1362                        disp(sprintf('%19s: %-22s -- %s','balancethickness',['[1x1 ' class(self.balancethickness) ']'],'parameters for balancethickness solution'));
     1363                        disp(sprintf('%19s: %-22s -- %s','stressbalance'   ,['[1x1 ' class(self.stressbalance) ']'],'parameters for stressbalance solution'));
     1364                        disp(sprintf('%19s: %-22s -- %s','groundingline'   ,['[1x1 ' class(self.groundingline) ']'],'parameters for groundingline solution'));
     1365                        disp(sprintf('%19s: %-22s -- %s','hydrology'       ,['[1x1 ' class(self.hydrology) ']'],'parameters for hydrology solution'));
     1366                        disp(sprintf('%19s: %-22s -- %s','masstransport'   ,['[1x1 ' class(self.masstransport) ']'],'parameters for masstransport solution'));
     1367                        disp(sprintf('%19s: %-22s -- %s','thermal'         ,['[1x1 ' class(self.thermal) ']'],'parameters for thermal solution'));
     1368                        disp(sprintf('%19s: %-22s -- %s','steadystate'     ,['[1x1 ' class(self.steadystate) ']'],'parameters for steadystate solution'));
     1369                        disp(sprintf('%19s: %-22s -- %s','transient'       ,['[1x1 ' class(self.transient) ']'],'parameters for transient solution'));
     1370                        disp(sprintf('%19s: %-22s -- %s','calving'         ,['[1x1 ' class(self.calving) ']'],'parameters for calving'));
     1371                        disp(sprintf('%19s: %-22s -- %s','gia'             ,['[1x1 ' class(self.gia) ']'],'parameters for gia solution'));
     1372                        disp(sprintf('%19s: %-22s -- %s','autodiff'        ,['[1x1 ' class(self.autodiff) ']'],'automatic differentiation parameters'));
     1373                        disp(sprintf('%19s: %-22s -- %s','flaim'           ,['[1x1 ' class(self.flaim) ']'],'flaim parameters'));
     1374                        disp(sprintf('%19s: %-22s -- %s','inversion'       ,['[1x1 ' class(self.inversion) ']'],'parameters for inverse methods'));
     1375                        disp(sprintf('%19s: %-22s -- %s','qmu'             ,['[1x1 ' class(self.qmu) ']'],'dakota properties'));
     1376                        disp(sprintf('%19s: %-22s -- %s','outputdefinition',['[1x1 ' class(self.outputdefinition) ']'],'output definition'));
     1377                        disp(sprintf('%19s: %-22s -- %s','results'         ,['[1x1 ' class(self.results) ']'],'model results'));
     1378                        disp(sprintf('%19s: %-22s -- %s','radaroverlay'    ,['[1x1 ' class(self.radaroverlay) ']'],'radar image for plot overlay'));
     1379                        disp(sprintf('%19s: %-22s -- %s','miscellaneous'   ,['[1x1 ' class(self.miscellaneous) ']'],'miscellaneous fields'));
     1380                        disp(sprintf('%19s: %-22s -- %s','seaice'       ,['[1x1 ' class(self.seaice) ']'],'parameters for Sea Ice solution'));
    13811381                end % }}}
    1382                 function memory(obj) % {{{
     1382                function memory(self) % {{{
    13831383
    13841384                disp(sprintf('\nMemory imprint:\n'));
     
    13881388
    13891389                for i=1:length(fields),
    1390                         field=obj.(fields{i});
     1390                        field=self.(fields{i});
    13911391                        s=whos('field');
    13921392                        mem=mem+s.bytes/1e6;
     
    13961396                disp(sprintf('%19s: %g Mb','Total',mem));
    13971397                end % }}}
    1398                 function netcdf(obj,filename) % {{{
     1398                function netcdf(self,filename) % {{{
    13991399                %NETCDF - save model as netcdf
    14001400                %
     
    14091409                ncid=netcdf.create(filename,'CLOBBER');
    14101410                netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Conventions','CF-1.4');
    1411                 netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Title',['ISSM model (' obj.miscellaneous.name ')']);
     1411                netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Title',['ISSM model (' self.miscellaneous.name ')']);
    14121412                netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Author',getenv('USER'));
    14131413                netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Date',datestr(now));
     
    14181418                for step=1:2,
    14191419                        counter=0;
    1420                         [var_id,counter]=structtonc(ncid,'md',obj,0,var_id,counter,step);
     1420                        [var_id,counter]=structtonc(ncid,'md',self,0,var_id,counter,step);
    14211421                        if step==1, netcdf.endDef(ncid); end
    14221422                end
     
    14281428                netcdf.close(ncid)
    14291429                end % }}}
    1430                 function xylim(obj) % {{{
    1431 
    1432                         xlim([min(obj.mesh.x) max(obj.mesh.x)]);
    1433                         ylim([min(obj.mesh.y) max(obj.mesh.y)])
     1430                function xylim(self) % {{{
     1431
     1432                        xlim([min(self.mesh.x) max(self.mesh.x)]);
     1433                        ylim([min(self.mesh.y) max(self.mesh.y)])
    14341434                end % }}}
    14351435                function md=upload(md) % {{{
  • issm/trunk-jpl/src/m/classes/modellist.m

    r17686 r19040  
    122122
    123123                end % }}}
    124                 function obj = modellist(varargin) % {{{
     124                function self = modellist(varargin) % {{{
    125125
    126126                        %initialize list
     
    146146                                end
    147147
    148                                 obj.models  = celllist;
    149                                 obj.cluster = obj.models{1}.cluster;
    150                         end
    151                 end % }}}
    152                 function val = get(obj, propName)% {{{
     148                                self.models  = celllist;
     149                                self.cluster = self.models{1}.cluster;
     150                        end
     151                end % }}}
     152                function val = get(self, propName)% {{{
    153153                %GET - gets model propertie from a specified object ans returns the value
    154154                %
     
    158158                        switch propName
    159159                                case 'numberofelements'
    160                                         val = obj.numberofelements;
     160                                        val = self.numberofelements;
    161161                                case 'numberofnodes'
    162                                         val = obj.numberofnodes;
     162                                        val = self.numberofnodes;
    163163                                case 'elements'
    164                                         val = obj.elements;
     164                                        val = self.elements;
    165165                                case 'x'
    166                                         val = obj.x;
     166                                        val = self.x;
    167167                                case 'y'
    168                                         val = obj.y;
     168                                        val = self.y;
    169169                                case 'z'
    170                                         val = obj.z;
     170                                        val = self.z;
    171171                                otherwise
    172172                                        error(['get error message: ' propName,' is not a valid model property'])
    173173                        end
    174174                end % }}}
    175                 function obj = loadmultipleresultsfromcluster(obj) % {{{
     175                function self = loadmultipleresultsfromcluster(self) % {{{
    176176                        %LOADMULTIPLERESULTSFROMCLUSTER - load multiple results of solution sequences from cluster
    177177                        %
    178178                        %   Usage:
    179                         %      obj=loadresultsfromcluster(obj);
    180 
    181                         nummodels=length(obj.models);
     179                        %      self=loadresultsfromcluster(self);
     180
     181                        nummodels=length(self.models);
    182182
    183183                        %Get cluster settings
    184                         cluster=obj.cluster;
    185                         name=obj.name;
     184                        cluster=self.cluster;
     185                        name=self.name;
    186186                        cluster_rc_location=which('cluster.rc');
    187187                        [codepath,executionpath]=ClusterParameters(cluster,cluster_rc_location);
     
    200200                        for i=1:nummodels,
    201201                                %load  results for this model
    202                                 obj.models{i}=loadresultsfromdisk(obj.models{i},[name '-' num2str(i) 'vs' num2str(nummodels) '.outbin']);
     202                                self.models{i}=loadresultsfromdisk(self.models{i},[name '-' num2str(i) 'vs' num2str(nummodels) '.outbin']);
    203203
    204204                                delete([name '-' num2str(i) 'vs' num2str(nummodels) '.outbin']);
     
    208208                        delete('ModelResults.tar.gz');
    209209                end % }}}
    210                 function obj = solve(obj,varargin)% {{{
     210                function self = solve(self,varargin)% {{{
    211211                        %SOLVE - apply solution sequence for  a list of models. Used in batch mode.
    212212                        %
    213213                        %   Usage:
    214                         %      obj=solve(obj,varargin)
     214                        %      self=solve(self,varargin)
    215215                        %      where varargin is a lit of paired arguments.
    216216                        %      arguments can be: 'analysis_type': 'stressbalance','thermal','masstransport','transient'
    217217                        %
    218218                        %   Examples:
    219                         %      obj=solve(obj,'analysis_type','stressbalance');
     219                        %      self=solve(self,'analysis_type','stressbalance');
    220220
    221221                        %recover options
     
    226226
    227227                        %length of list
    228                         nummodels=length(obj.models);
     228                        nummodels=length(self.models);
    229229
    230230                        %name of queue: to make it unique, add a time stamp
    231                         name=[obj.name '-' datestr(now,1) '-' datestr(now,'HH-MM-SS') ];
     231                        name=[self.name '-' datestr(now,1) '-' datestr(now,'HH-MM-SS') ];
    232232
    233233                        %name of cluster will be first name of list
    234                         cluster=obj.cluster;
     234                        cluster=self.cluster;
    235235
    236236                        %Figure out parameters for this particular cluster
     
    242242
    243243                                %model
    244                                 mdex=obj.models{i};
     244                                mdex=self.models{i};
    245245
    246246                                %recover some fields
     
    248248
    249249                                mdex.name=[name '-' num2str(i) 'vs' num2str(nummodels)];
    250                                 mdex.time=obj.time;
    251                                 mdex.queue=obj.queue;
    252                                 mdex.cluster=obj.cluster;
    253                                 if ~isnan(obj.np),
    254                                         mdex.np=obj.np;
     250                                mdex.time=self.time;
     251                                mdex.queue=self.queue;
     252                                mdex.cluster=self.cluster;
     253                                if ~isnan(self.np),
     254                                        mdex.np=self.np;
    255255                                end
    256256
     
    263263
    264264                                %feed back
    265                                 obj.models{i}=mdex;
     265                                self.models{i}=mdex;
    266266                        end
    267267
     
    287287
    288288                        %save name:
    289                         obj.name=name;
     289                        self.name=name;
    290290                end % }}}
    291291        end
  • issm/trunk-jpl/src/m/classes/outputdefinition.m

    r17720 r19040  
    99        end
    1010        methods
    11            function createxml(obj,fid) % {{{
     11           function createxml(self,fid) % {{{
    1212            fprintf(fid, '<!-- outputdefinition -->\n');           
    1313                   
    1414            % outputdefinition solution parameters
    1515            fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="outputdefinition">','<section name="outputdefinition" />');                   
    16                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="definitions" type="',class(obj.definitions),'" default="',convert2str(obj.definitions),'">','     <section name="outputdefinition" />','     <help> list of potential outputs that can be requested, but which need additional data to be defined </help>','  </parameter>');
     16                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="definitions" type="',class(self.definitions),'" default="',convert2str(self.definitions),'">','     <section name="outputdefinition" />','     <help> list of potential outputs that can be requested, but which need additional data to be defined </help>','  </parameter>');
    1717            fprintf(fid,'%s\n%s\n','</frame>');   
    1818       
    1919        end % }}}
    20                 function obj = outputdefinition(varargin) % {{{
     20                function self = outputdefinition(varargin) % {{{
    2121                        switch nargin
    2222                                case 0
    23                                         obj=setdefaultparameters(obj);
     23                                        self=setdefaultparameters(self);
    2424                                otherwise
    2525                                        error('constructor not supported');
    2626                        end
    2727                end % }}}
    28                 function obj = setdefaultparameters(obj) % {{{
     28                function self = setdefaultparameters(self) % {{{
    2929
    30                         obj.definitions={};
     30                        self.definitions={};
    3131
    3232                end % }}}
    33                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     33                function md = checkconsistency(self,md,solution,analyses) % {{{
    3434
    3535                        md = checkfield(md,'fieldname','outputdefinition.definitions','cell',1);
    3636
    37                         for i=1:length(obj.definitions),
    38                                 md=checkconsistency(obj.definitions{i},md,solution,analyses);
     37                        for i=1:length(self.definitions),
     38                                md=checkconsistency(self.definitions{i},md,solution,analyses);
    3939                        end
    4040
    4141                end % }}}
    42                 function disp(obj) % {{{
     42                function disp(self) % {{{
    4343                        disp(sprintf('   outputdefinition:'));
    44                         fielddisplay(obj,'definitions','list of potential outputs that can be requested, but which need additional data to be defined');
     44                        fielddisplay(self,'definitions','list of potential outputs that can be requested, but which need additional data to be defined');
    4545
    4646                end % }}}
    47                 function marshall(obj,md,fid) % {{{
     47                function marshall(self,md,fid) % {{{
    4848
    49                 enums=zeros(length(obj.definitions),1);
    50                 for i=1:length(obj.definitions),
    51                         obj.definitions{i}.marshall(md,fid);
    52                         classdefinition=class(obj.definitions{i});
     49                enums=zeros(length(self.definitions),1);
     50                for i=1:length(self.definitions),
     51                        self.definitions{i}.marshall(md,fid);
     52                        classdefinition=class(self.definitions{i});
    5353                        classdefinition(1)=upper(classdefinition(1)); %so it matches our enums definitions.
    5454                        enums(i)=StringToEnum(classdefinition);
  • issm/trunk-jpl/src/m/classes/pairoptions.m

    r15344 r19040  
    1111        end
    1212        methods
    13                 function obj = pairoptions(varargin) % {{{
     13                function self = pairoptions(varargin) % {{{
    1414
    1515                        %get calling function name
    1616                        a=dbstack;
    1717                        if length(a)>1,
    18                                 obj.functionname=a(2).file(1:end-2);
    19                         else
    20                                 obj.functionname='';
     18                                self.functionname=a(2).file(1:end-2);
     19                        else
     20                                self.functionname='';
    2121                        end
    2222
     
    2525                                %Do nothing,
    2626                        else
    27                                 obj=buildlist(obj,varargin{:});
    28                         end
    29                 end % }}}
    30                 function obj = buildlist(obj,varargin) % {{{
     27                                self=buildlist(self,varargin{:});
     28                        end
     29                end % }}}
     30                function self = buildlist(self,varargin) % {{{
    3131                %BUILDLIST - build list of obj from input
    3232
     
    3838
    3939                        %Allocate memory
    40                         obj.list=cell(numoptions,3);
     40                        self.list=cell(numoptions,3);
    4141
    4242                        %go through varargin and build list of obj
    4343                        for i=1:numoptions,
    4444                                if ischar(varargin{2*i-1}),
    45                                         obj.list{i,1}=varargin{2*i-1};
    46                                         obj.list{i,2}=varargin{2*i};
    47                                         obj.list{i,3}=false; %used?
     45                                        self.list{i,1}=varargin{2*i-1};
     46                                        self.list{i,2}=varargin{2*i};
     47                                        self.list{i,3}=false; %used?
    4848                                else
    4949                                        %option is not a string, ignore it
    5050                                        disp(['WARNING: option number ' num2str(i) ' is not a string, it will be ignored']);
    51                                         obj.list(i,:)=[];
     51                                        self.list(i,:)=[];
    5252                                        continue
    5353                                end
    5454                        end
    5555                end % }}}
    56                 function obj = addfield(obj,field,value) % {{{
     56                function self = addfield(self,field,value) % {{{
    5757                        if ischar(field),
    58                                 obj.list{end+1,1} = field;
    59                                 obj.list{end,2}   = value;
    60                                 obj.list{end,3}   = false;
    61                         end
    62                 end % }}}
    63                 function obj = addfielddefault(obj,field,value) % {{{
     58                                self.list{end+1,1} = field;
     59                                self.list{end,2}   = value;
     60                                self.list{end,3}   = false;
     61                        end
     62                end % }}}
     63                function self = addfielddefault(self,field,value) % {{{
    6464                %ADDFIELDDEFAULT - add a field to an options list if it does not exist
    6565                        if ischar(field),
    66                                 if ~exist(obj,field),
    67                                         obj.list{end+1,1} = field;
    68                                         obj.list{end,2}   = value;
    69                                         obj.list{end,3}   = true;  %It is a default so user will not be notified if not used
     66                                if ~exist(self,field),
     67                                        self.list{end+1,1} = field;
     68                                        self.list{end,2}   = value;
     69                                        self.list{end,3}   = true;  %It is a default so user will not be notified if not used
    7070                                end
    7171                        end
     
    8484                        end
    8585                end % }}}
    86                 function obj = changefieldvalue(obj,field,newvalue) % {{{
     86                function self = changefieldvalue(self,field,newvalue) % {{{
    8787                %CHANGEOPTIONVALUE - change the value of an option in an option list
    8888
    8989                        %track occurrence of field
    90                         lines=find(strcmpi(obj.list(:,1),field));
     90                        lines=find(strcmpi(self.list(:,1),field));
    9191
    9292                        %replace value
    9393                        if isempty(lines),
    9494                                %add new field if not found
    95                                 obj=addfield(obj,field,newvalue);
    96                                 obj.list{end,3}=true; % do not notify user if unused
     95                                self=addfield(self,field,newvalue);
     96                                self.list{end,3}=true; % do not notify user if unused
    9797                        else
    9898                                for i=1:length(lines),
    99                                         obj.list{lines(i),2}=newvalue;
    100                                 end
    101                         end
    102                 end % }}}
    103                 function obj = deleteduplicates(obj,warn) % {{{
     99                                        self.list{lines(i),2}=newvalue;
     100                                end
     101                        end
     102                end % }}}
     103                function self = deleteduplicates(self,warn) % {{{
    104104                %DELETEDUPLICATES - delete duplicates in an option list
    105105
    106106                        %track the first occurrence of each option
    107                         [dummy lines]=unique(obj.list(:,1),'first');
     107                        [dummy lines]=unique(self.list(:,1),'first');
    108108                        clear dummy
    109109
    110110                        %warn user if requested
    111111                        if warn,
    112                                 numoptions=size(obj.list,1);
     112                                numoptions=size(self.list,1);
    113113                                for i=1:numoptions,
    114114                                        if ~ismember(i,lines),
    115                                                 disp(['WARNING: option ' obj.list{i,1} ' appeared more than once. Only its first occurrence will be kept'])
     115                                                disp(['WARNING: option ' self.list{i,1} ' appeared more than once. Only its first occurrence will be kept'])
    116116                                        end
    117117                                end
     
    119119
    120120                        %remove duplicates from the options list
    121                         obj.list=obj.list(lines,:);
    122                 end % }}}
    123                 function displayunused(obj) % {{{
     121                        self.list=self.list(lines,:);
     122                end % }}}
     123                function displayunused(self) % {{{
    124124                        %DISPLAYUNUSED - display unused options
    125125
    126                         numoptions=size(obj.list,1);
     126                        numoptions=size(self.list,1);
    127127                        for i=1:numoptions,
    128                                 if ~obj.list{i,3},
    129                                         disp(['WARNING: option ' obj.list{i,1} ' was not used'])
    130                                 end
    131                         end
    132                 end % }}}
    133                 function disp(obj) % {{{
    134                         disp(sprintf('   functionname: %s',obj.functionname));
    135                         if ~isempty(obj.list),
    136                                 disp(sprintf('   list: (%ix%i)\n',size(obj.list,1),size(obj.list,2)));
    137                                 for i=1:size(obj.list,1),
    138                                         if ischar(obj.list{i,2}),
    139                                                 disp(sprintf('     field: %-10s value: ''%s''',obj.list{i,1},obj.list{i,2}));
    140                                         elseif isnumeric(obj.list{i,2}) & length(obj.list{i,2})==1,
    141                                                 disp(sprintf('     field: %-10s value: %g',obj.list{i,1},obj.list{i,2}));
    142                                         elseif isnumeric(obj.list{i,2}) & length(obj.list{i,2})==2,
    143                                                 disp(sprintf('     field: %-10s value: [%g %g]',obj.list{i,1},obj.list{i,2}));
     128                                if ~self.list{i,3},
     129                                        disp(['WARNING: option ' self.list{i,1} ' was not used'])
     130                                end
     131                        end
     132                end % }}}
     133                function disp(self) % {{{
     134                        disp(sprintf('   functionname: %s',self.functionname));
     135                        if ~isempty(self.list),
     136                                disp(sprintf('   list: (%ix%i)\n',size(self.list,1),size(self.list,2)));
     137                                for i=1:size(self.list,1),
     138                                        if ischar(self.list{i,2}),
     139                                                disp(sprintf('     field: %-10s value: ''%s''',self.list{i,1},self.list{i,2}));
     140                                        elseif isnumeric(self.list{i,2}) & length(self.list{i,2})==1,
     141                                                disp(sprintf('     field: %-10s value: %g',self.list{i,1},self.list{i,2}));
     142                                        elseif isnumeric(self.list{i,2}) & length(self.list{i,2})==2,
     143                                                disp(sprintf('     field: %-10s value: [%g %g]',self.list{i,1},self.list{i,2}));
    144144                                        else
    145                                                 disp(sprintf('     field: %-10s value: (%ix%i)',obj.list{i,1},size(obj.list{i,2},1),size(obj.list{i,2},2)));
     145                                                disp(sprintf('     field: %-10s value: (%ix%i)',self.list{i,1},size(self.list{i,2},1),size(self.list{i,2},2)));
    146146                                        end
    147147                                end
     
    150150                        end
    151151                end % }}}
    152                 function bool = exist(obj,field) % {{{
     152                function bool = exist(self,field) % {{{
    153153                %EXIST - check if the option exists
    154154
     
    162162
    163163                        %Recover option
    164                         pos=find(strcmpi(field,obj.list(:,1)));
     164                        pos=find(strcmpi(field,self.list(:,1)));
    165165                        if ~isempty(pos),
    166166                                bool=true;
    167                                 obj.list{pos,3}   = true;  %It is a default so user will not be notified if not used
     167                                self.list{pos,3}   = true;  %It is a default so user will not be notified if not used
    168168                        else
    169169                                bool=false;
    170170                        end
    171171                end % }}}
    172                 function num = fieldoccurrences(obj,field), % {{{
     172                function num = fieldoccurrences(self,field), % {{{
    173173                %FIELDOCCURRENCES - get number of occurrence of a field
    174174
     
    179179
    180180                        %get number of occurrence
    181                         num=sum(strcmpi(field,obj.list(:,1)));
    182                 end % }}}
    183                 function value = getfieldvalue(obj,field,varargin), % {{{
     181                        num=sum(strcmpi(field,self.list(:,1)));
     182                end % }}}
     183                function value = getfieldvalue(self,field,varargin), % {{{
    184184                %GETOPTION - get the value of an option
    185185                %
    186186                %   Usage:
    187                 %      value=getfieldvalue(obj,field,varargin)
     187                %      value=getfieldvalue(self,field,varargin)
    188188                %
    189189                %   Find an option value from a field. A default option
     
    205205
    206206                        %Recover option
    207                         pos=find(strcmpi(obj.list(:,1),field));
     207                        pos=find(strcmpi(self.list(:,1),field));
    208208                        if ~isempty(pos),
    209                                 value=obj.list{pos(1),2}; % ignore extra entry
    210                                 obj.list{pos(1),3}=true;  % option used
     209                                value=self.list{pos(1),2}; % ignore extra entry
     210                                self.list{pos(1),3}=true;  % option used
    211211                                return;
    212212                        end
     
    219219                        end
    220220                end % }}}
    221                 function obj = removefield(obj,field,warn)% {{{
     221                function self = removefield(self,field,warn)% {{{
    222222                %REMOVEFIELD - delete a field in an option list
    223223                %
    224224                %   Usage:
    225                 %      obj=removefield(obj,field,warn)
     225                %      self=removefield(self,field,warn)
    226226                %
    227227                %   if warn==1 display an info message to warn user that
     
    229229
    230230                        %check is field exist
    231                         if exist(obj,field),
     231                        if exist(self,field),
    232232
    233233                                %find where the field is located
    234                                 lines=find(~strcmpi(obj.list(:,1),field));
     234                                lines=find(~strcmpi(self.list(:,1),field));
    235235
    236236                                %remove duplicates from the options list
    237                                 obj.list=obj.list(lines,:);
     237                                self.list=self.list(lines,:);
    238238
    239239                                %warn user if requested
     
    243243                        end
    244244                end % }}}
    245                 function marshall(obj,fid,firstindex)% {{{
    246 
    247                         for i=1:size(obj.list,1),
    248                                 name  = obj.list{i,1};
    249                                 value = obj.list{i,2};
     245                function marshall(self,fid,firstindex)% {{{
     246
     247                        for i=1:size(self.list,1),
     248                                name  = self.list{i,1};
     249                                value = self.list{i,2};
    250250
    251251                                %Write option name
  • issm/trunk-jpl/src/m/classes/private.m

    r12943 r19040  
    1212        end
    1313        methods
    14                 function obj = private(varargin) % {{{
     14                function self = private(varargin) % {{{
    1515                        switch nargin
    1616                                case 0
    17                                         obj=setdefaultparameters(obj);
     17                                        self=setdefaultparameters(self);
    1818                                otherwise
    1919                                        error('constructor not supported');
    2020                        end
    2121                end % }}}
    22                 function obj = setdefaultparameters(obj) % {{{
     22                function self = setdefaultparameters(self) % {{{
    2323
    2424                end % }}}
    25                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     25                function md = checkconsistency(self,md,solution,analyses) % {{{
    2626
    2727                end % }}}
    28                 function disp(obj) % {{{
     28                function disp(self) % {{{
    2929                        disp(sprintf('   private parameters: do not change'));
    3030
    31                         fielddisplay(obj,'isconsistent','is model self consistent');
    32                         fielddisplay(obj,'runtimename','name of the run launched');
    33                         fielddisplay(obj,'bamg','structure with mesh properties constructed if bamg is used to mesh the domain');
    34                         fielddisplay(obj,'solution','type of solution launched');
     31                        fielddisplay(self,'isconsistent','is model self consistent');
     32                        fielddisplay(self,'runtimename','name of the run launched');
     33                        fielddisplay(self,'bamg','structure with mesh properties constructed if bamg is used to mesh the domain');
     34                        fielddisplay(self,'solution','type of solution launched');
    3535
    3636                end % }}}
  • issm/trunk-jpl/src/m/classes/qmu.m

    r17720 r19040  
    2424        end
    2525        methods
    26         function createxml(obj,fid) % {{{
     26        function createxml(self,fid) % {{{
    2727            fprintf(fid, '<!-- qmu -->\n');           
    2828                   
    2929            % qmu solution parameters
    3030            fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="qmu parameters">','<section name="qmu" />');                   
    31                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isdakota" type="',class(obj.isdakota),'" default="',convert2str(obj.isdakota),'">','     <section name="qmu" />','     <help> is qmu analysis activated? </help>','  </parameter>');
    32                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="variables" type="',class(obj.variables),'" default="',convert2str(obj.variables),'">','     <section name="qmu" />','     <help> (arrays of each variable class) </help>','  </parameter>');
    33                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="responses" type="',class(obj.responses),'" default="',convert2str(obj.responses),'">','     <section name="qmu" />','     <help> (arrays of each response class) </help>','  </parameter>');
     31                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isdakota" type="',class(self.isdakota),'" default="',convert2str(self.isdakota),'">','     <section name="qmu" />','     <help> is qmu analysis activated? </help>','  </parameter>');
     32                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="variables" type="',class(self.variables),'" default="',convert2str(self.variables),'">','     <section name="qmu" />','     <help> (arrays of each variable class) </help>','  </parameter>');
     33                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="responses" type="',class(self.responses),'" default="',convert2str(self.responses),'">','     <section name="qmu" />','     <help> (arrays of each response class) </help>','  </parameter>');
    3434               
    35                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="numberofresponses" type="',class(obj.numberofresponses),'" default="',convert2str(obj.numberofresponses),'">','     <section name="qmu" />','     <help> number of responses </help>','  </parameter>');
    36                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="params" type="',class(obj.params),'" default="',convert2str(obj.params),'">','     <section name="qmu" />','     <help> (array of method-independent parameters)  </help>','  </parameter>');
    37                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="results" type="',class(obj.results),'" default="',convert2str(obj.results),'">','     <section name="qmu" />','     <help> (information from dakota files) </help>','  </parameter>');
     35                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="numberofresponses" type="',class(self.numberofresponses),'" default="',convert2str(self.numberofresponses),'">','     <section name="qmu" />','     <help> number of responses </help>','  </parameter>');
     36                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="params" type="',class(self.params),'" default="',convert2str(self.params),'">','     <section name="qmu" />','     <help> (array of method-independent parameters)  </help>','  </parameter>');
     37                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="results" type="',class(self.results),'" default="',convert2str(self.results),'">','     <section name="qmu" />','     <help> (information from dakota files) </help>','  </parameter>');
    3838               
    39                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="partition" type="',class(obj.partition),'" default="',convert2str(obj.partition),'">','     <section name="qmu" />','     <help> user provided mesh partitioning, defaults to metis if not specified </help>','  </parameter>');
    40                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="numberofpartitions" type="',class(obj.numberofpartitions),'" default="',convert2str(obj.numberofpartitions),'">','     <section name="qmu" />','     <help> number of partitions for semi-discrete qmu  </help>','  </parameter>');
    41                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="variabledescriptors" type="',class(obj.variabledescriptors),'" default="',convert2str(obj.variabledescriptors),'">','     <section name="qmu" />','     <help>  </help>','  </parameter>');
     39                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="partition" type="',class(self.partition),'" default="',convert2str(self.partition),'">','     <section name="qmu" />','     <help> user provided mesh partitioning, defaults to metis if not specified </help>','  </parameter>');
     40                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="numberofpartitions" type="',class(self.numberofpartitions),'" default="',convert2str(self.numberofpartitions),'">','     <section name="qmu" />','     <help> number of partitions for semi-discrete qmu  </help>','  </parameter>');
     41                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="variabledescriptors" type="',class(self.variabledescriptors),'" default="',convert2str(self.variabledescriptors),'">','     <section name="qmu" />','     <help>  </help>','  </parameter>');
    4242           
    43                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="responsedescriptors" type="',class(obj.responsedescriptors),'" default="',convert2str(obj.responsedescriptors),'">','     <section name="qmu" />','     <help> use an enthalpy formulation to include temperate ice (default is 0) </help>','  </parameter>');
    44                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="method" type="',class(obj.method),'" default="',convert2str(obj.method),'">','     <section name="qmu" />','     <help> array of dakota_method class </help>','  </parameter>');
    45                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="mass_flux_profile_directory" type="',class(obj.mass_flux_profile_directory),'" default="',convert2str(obj.mass_flux_profile_directory),'">','     <section name="qmu" />','     <help> directory for mass flux profiles </help>','  </parameter>');
     43                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="responsedescriptors" type="',class(self.responsedescriptors),'" default="',convert2str(self.responsedescriptors),'">','     <section name="qmu" />','     <help> use an enthalpy formulation to include temperate ice (default is 0) </help>','  </parameter>');
     44                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="method" type="',class(self.method),'" default="',convert2str(self.method),'">','     <section name="qmu" />','     <help> array of dakota_method class </help>','  </parameter>');
     45                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="mass_flux_profile_directory" type="',class(self.mass_flux_profile_directory),'" default="',convert2str(self.mass_flux_profile_directory),'">','     <section name="qmu" />','     <help> directory for mass flux profiles </help>','  </parameter>');
    4646               
    47                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="mass_flux_profiles" type="',class(obj.mass_flux_profiles),'" default="',convert2str(obj.mass_flux_profiles),'">','     <section name="qmu" />','     <help>  </help>','  </parameter>');
    48                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="mass_flux_segments" type="',class(obj.mass_flux_segments),'" default="',convert2str(obj.mass_flux_segments),'">','     <section name="qmu" />','     <help>  </help>','  </parameter>');
    49                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="adjacency" type="',class(obj.adjacency),'" default="',convert2str(obj.adjacency),'">','     <section name="qmu" />','     <help> additional outputs requested </help>','  </parameter>');
    50                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertex_weight" type="',class(obj.vertex_weight),'" default="',convert2str(obj.vertex_weight),'">','     <section name="qmu" />','     <help> weight applied to each mesh vertex </help>','  </parameter>');
     47                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="mass_flux_profiles" type="',class(self.mass_flux_profiles),'" default="',convert2str(self.mass_flux_profiles),'">','     <section name="qmu" />','     <help>  </help>','  </parameter>');
     48                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="mass_flux_segments" type="',class(self.mass_flux_segments),'" default="',convert2str(self.mass_flux_segments),'">','     <section name="qmu" />','     <help>  </help>','  </parameter>');
     49                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="adjacency" type="',class(self.adjacency),'" default="',convert2str(self.adjacency),'">','     <section name="qmu" />','     <help> additional outputs requested </help>','  </parameter>');
     50                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertex_weight" type="',class(self.vertex_weight),'" default="',convert2str(self.vertex_weight),'">','     <section name="qmu" />','     <help> weight applied to each mesh vertex </help>','  </parameter>');
    5151           
    5252            fprintf(fid,'%s\n%s\n','</frame>');   
    5353       
    5454        end % }}}       
    55                 function obj = qmu(varargin) % {{{
     55                function self = qmu(varargin) % {{{
    5656                        switch nargin
    5757                                case 0
    58                                         obj=setdefaultparameters(obj);
     58                                        self=setdefaultparameters(self);
    5959                                otherwise
    6060                                        error('constructor not supported');
    6161                        end
    6262                end % }}}
    63                 function obj = setdefaultparameters(obj) % {{{
     63                function self = setdefaultparameters(self) % {{{
    6464
    6565                end % }}}
    66                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     66                function md = checkconsistency(self,md,solution,analyses) % {{{
    6767
    6868                        %Early return
     
    9090                        end
    9191                end % }}}
    92                 function disp(obj) % {{{
     92                function disp(self) % {{{
    9393                        disp(sprintf('   qmu parameters:'));
    9494
    95                         fielddisplay(obj,'isdakota','is qmu analysis activated?');
    96                         for i=1:numel(obj.variables)
     95                        fielddisplay(self,'isdakota','is qmu analysis activated?');
     96                        for i=1:numel(self.variables)
    9797                                disp(sprintf('         variables%s:  (arrays of each variable class)',...
    98                                         string_dim(obj.variables,i)));
    99                                 fnames=fieldnames(obj.variables(i));
     98                                        string_dim(self.variables,i)));
     99                                fnames=fieldnames(self.variables(i));
    100100                                maxlen=0;
    101101                                for j=1:numel(fnames)
     
    105105                                for j=1:numel(fnames)
    106106                                        disp(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
    107                                                 fnames{j},size(obj.variables.(fnames{j})),class(obj.variables.(fnames{j}))));
     107                                                fnames{j},size(self.variables.(fnames{j})),class(self.variables.(fnames{j}))));
    108108                                end
    109109                        end
    110                         for i=1:numel(obj.responses)
     110                        for i=1:numel(self.responses)
    111111                                disp(sprintf('         responses%s:  (arrays of each response class)',...
    112                                         string_dim(obj.responses,i)));
    113                                 fnames=fieldnames(obj.responses(i));
     112                                        string_dim(self.responses,i)));
     113                                fnames=fieldnames(self.responses(i));
    114114                                maxlen=0;
    115115                                for j=1:numel(fnames)
     
    119119                                for j=1:numel(fnames)
    120120                                        disp(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
    121                                                 fnames{j},size(obj.responses.(fnames{j})),class(obj.responses.(fnames{j}))));
     121                                                fnames{j},size(self.responses.(fnames{j})),class(self.responses.(fnames{j}))));
    122122                                end
    123123                        end
    124                         fielddisplay(obj,'numberofresponses','number of responses')
    125                         for i=1:numel(obj.method);
    126                                 if strcmp(class(obj.method(i)),'dakota_method')
     124                        fielddisplay(self,'numberofresponses','number of responses')
     125                        for i=1:numel(self.method);
     126                                if strcmp(class(self.method(i)),'dakota_method')
    127127                                        disp(sprintf('            method%s :    ''%s''',...
    128                                                 string_dim(obj.method,i),obj.method(i).method));
     128                                                string_dim(self.method,i),self.method(i).method));
    129129                                end
    130130                        end
    131                         for i=1:numel(obj.params)
     131                        for i=1:numel(self.params)
    132132                                disp(sprintf('         params%s:  (array of method-independent parameters)',...
    133                                         string_dim(obj.params,i)));
    134                                 fnames=fieldnames(obj.params(i));
     133                                        string_dim(self.params,i)));
     134                                fnames=fieldnames(self.params(i));
    135135                                maxlen=0;
    136136                                for j=1:numel(fnames)
     
    140140                                for j=1:numel(fnames)
    141141                                        disp(sprintf(['            %-' num2str(maxlen+1) 's: %s'],...
    142                                                 fnames{j},any2str(obj.params(i).(fnames{j}))));
     142                                                fnames{j},any2str(self.params(i).(fnames{j}))));
    143143                                end
    144144                        end
    145                         for i=1:numel(obj.results)
     145                        for i=1:numel(self.results)
    146146                                disp(sprintf('         results%s:  (information from dakota files)',...
    147                                         string_dim(obj.results,i)));
    148                                 fnames=fieldnames(obj.results(i));
     147                                        string_dim(self.results,i)));
     148                                fnames=fieldnames(self.results(i));
    149149                                maxlen=0;
    150150                                for j=1:numel(fnames)
     
    154154                                for j=1:numel(fnames)
    155155                                        disp(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
    156                                                 fnames{j},size(obj.results.(fnames{j})),class(obj.results.(fnames{j}))));
     156                                                fnames{j},size(self.results.(fnames{j})),class(self.results.(fnames{j}))));
    157157                                end
    158158                        end
    159                         fielddisplay(obj,'partition','user provided mesh partitioning, defaults to metis if not specified')
    160                         fielddisplay(obj,'numberofpartitions','number of partitions for semi-discrete qmu')
    161                         fielddisplay(obj,'variabledescriptors','');
    162                         fielddisplay(obj,'responsedescriptors','');
    163                         fielddisplay(obj,'method','array of dakota_method class');
    164                         fielddisplay(obj,'mass_flux_profile_directory','directory for mass flux profiles');
    165                         fielddisplay(obj,'mass_flux_profiles','list of mass_flux profiles');
    166                         fielddisplay(obj,'mass_flux_segments','');
    167                         fielddisplay(obj,'adjacency','');
    168                         fielddisplay(obj,'vertex_weight','weight applied to each mesh vertex');
     159                        fielddisplay(self,'partition','user provided mesh partitioning, defaults to metis if not specified')
     160                        fielddisplay(self,'numberofpartitions','number of partitions for semi-discrete qmu')
     161                        fielddisplay(self,'variabledescriptors','');
     162                        fielddisplay(self,'responsedescriptors','');
     163                        fielddisplay(self,'method','array of dakota_method class');
     164                        fielddisplay(self,'mass_flux_profile_directory','directory for mass flux profiles');
     165                        fielddisplay(self,'mass_flux_profiles','list of mass_flux profiles');
     166                        fielddisplay(self,'mass_flux_segments','');
     167                        fielddisplay(self,'adjacency','');
     168                        fielddisplay(self,'vertex_weight','weight applied to each mesh vertex');
    169169
    170170                end % }}}
    171                 function marshall(obj,md,fid) % {{{
    172                         WriteData(fid,'object',obj,'fieldname','isdakota','format','Boolean');
    173                         if ~obj.isdakota,
     171                function marshall(self,md,fid) % {{{
     172                        WriteData(fid,'object',self,'fieldname','isdakota','format','Boolean');
     173                        if ~self.isdakota,
    174174                                WriteData(fid,'data',false,'enum',QmuMassFluxSegmentsPresentEnum,'format','Boolean');
    175175                                return;
    176176                        end
    177                         WriteData(fid,'object',obj,'fieldname','partition','format','DoubleMat','mattype',2);
    178                         WriteData(fid,'object',obj,'fieldname','numberofpartitions','format','Integer');
    179                         WriteData(fid,'object',obj,'fieldname','numberofresponses','format','Integer');
    180                         WriteData(fid,'object',obj,'fieldname','variabledescriptors','format','StringArray');
    181                         WriteData(fid,'object',obj,'fieldname','responsedescriptors','format','StringArray');
    182                         if ~isempty(obj.mass_flux_segments),
    183                                 WriteData(fid,'data',obj.mass_flux_segments,'enum',MassFluxSegmentsEnum,'format','MatArray');
     177                        WriteData(fid,'object',self,'fieldname','partition','format','DoubleMat','mattype',2);
     178                        WriteData(fid,'object',self,'fieldname','numberofpartitions','format','Integer');
     179                        WriteData(fid,'object',self,'fieldname','numberofresponses','format','Integer');
     180                        WriteData(fid,'object',self,'fieldname','variabledescriptors','format','StringArray');
     181                        WriteData(fid,'object',self,'fieldname','responsedescriptors','format','StringArray');
     182                        if ~isempty(self.mass_flux_segments),
     183                                WriteData(fid,'data',self.mass_flux_segments,'enum',MassFluxSegmentsEnum,'format','MatArray');
    184184                                flag=true;
    185185                        else
  • issm/trunk-jpl/src/m/classes/radaroverlay.m

    r14640 r19040  
    1111        end
    1212        methods
    13                 function obj = radaroverlay(varargin) % {{{
     13                function self = radaroverlay(varargin) % {{{
    1414                        switch nargin
    1515                                case 0
    16                                         obj=setdefaultparameters(obj);
     16                                        self=setdefaultparameters(self);
    1717                                otherwise
    1818                                        error('constructor not supported');
    1919                        end
    2020                end % }}}
    21                 function obj = setdefaultparameters(obj) % {{{
     21                function self = setdefaultparameters(self) % {{{
    2222
    2323                end % }}}
    24                 function disp(obj) % {{{
     24                function disp(self) % {{{
    2525                        disp(sprintf('   radaroverlay parameters:'));
    2626
    27                         fielddisplay(obj,'pwr','radar power image (matrix)');
    28                         fielddisplay(obj,'x','corresponding x coordinates [m]');
    29                         fielddisplay(obj,'y','corresponding y coordinates [m]');
     27                        fielddisplay(self,'pwr','radar power image (matrix)');
     28                        fielddisplay(self,'x','corresponding x coordinates [m]');
     29                        fielddisplay(self,'y','corresponding y coordinates [m]');
    3030
    3131                end % }}}
  • issm/trunk-jpl/src/m/classes/rifts.m

    r17720 r19040  
    1010        end
    1111        methods
    12         function createxml(obj,fid) % {{{
     12        function createxml(self,fid) % {{{
    1313            fprintf(fid, '\n\n');
    1414            fprintf(fid, '%s\n', '<!-- rifts -->');
    15                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="riftstruct" type="',              class(obj.riftstruct),'" default="',                  obj.riftstruct,'">',              '     <section name="rifts" />','     <help> structure containing all rift information (vertices coordinates, segments, type of melange, ...) </help>','</parameter>');
    16             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="riftproperties" type="',            class(obj.riftproperties),'" default="',                obj.riftproperties,'">',   '     <section name="rifts" />','     <help> N/A </help>','</parameter>');
     15                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="riftstruct" type="',              class(self.riftstruct),'" default="',                  self.riftstruct,'">',              '     <section name="rifts" />','     <help> structure containing all rift information (vertices coordinates, segments, type of melange, ...) </help>','</parameter>');
     16            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="riftproperties" type="',            class(self.riftproperties),'" default="',                self.riftproperties,'">',   '     <section name="rifts" />','     <help> N/A </help>','</parameter>');
    1717   
    1818        end % }}}
    19                 function obj = rifts(varargin) % {{{
     19                function self = rifts(varargin) % {{{
    2020                        switch nargin
    2121                                case 0
    22                                         obj=setdefaultparameters(obj);
     22                                        self=setdefaultparameters(self);
    2323                                otherwise
    2424                                        error('constructor not supported');
    2525                        end
    2626                end % }}}
    27                 function obj = setdefaultparameters(obj) % {{{
     27                function self = setdefaultparameters(self) % {{{
    2828
    2929                end % }}}
    30                 function md = checkconsistency(obj,md,solution,analyses) % {{{
    31                         if isempty(obj.riftstruct) | isnans(obj.riftstruct),
     30                function md = checkconsistency(self,md,solution,analyses) % {{{
     31                        if isempty(self.riftstruct) | isnans(self.riftstruct),
    3232                                numrifts=0;
    3333                        else
    34                                 numrifts=numel(obj.riftstruct);
     34                                numrifts=numel(self.riftstruct);
    3535                        end
    3636                        if numrifts,
     
    3838                                        md = checkmessage(md,['models with rifts are only supported in 2d for now!']);
    3939                                end
    40                                 if ~isstruct(obj.riftstruct),
     40                                if ~isstruct(self.riftstruct),
    4141                                        md = checkmessage(md,['rifts.riftstruct should be a structure!']);
    4242                                end
     
    4949                                end
    5050                        else
    51                                 if ~isnans(obj.riftstruct),
     51                                if ~isnans(self.riftstruct),
    5252                                        md = checkmessage(md,['riftstruct should be NaN since numrifts is 0!']);
    5353                                end
    5454                        end
    5555                end % }}}
    56                 function disp(obj) % {{{
     56                function disp(self) % {{{
    5757                        disp(sprintf('   rifts parameters:'));
    5858
    59                         fielddisplay(obj,'riftstruct','structure containing all rift information (vertices coordinates, segments, type of melange, ...)');
    60                         fielddisplay(obj,'riftproperties','');
     59                        fielddisplay(self,'riftstruct','structure containing all rift information (vertices coordinates, segments, type of melange, ...)');
     60                        fielddisplay(self,'riftproperties','');
    6161
    6262                end % }}}
    63                 function marshall(obj,md,fid) % {{{
     63                function marshall(self,md,fid) % {{{
    6464
    6565                        %Process rift info
    66                         if isempty(obj.riftstruct) | isnans(obj.riftstruct),
     66                        if isempty(self.riftstruct) | isnans(self.riftstruct),
    6767                                numrifts=0;
    6868                        else
    69                                 numrifts=numel(obj.riftstruct);
     69                                numrifts=numel(self.riftstruct);
    7070                        end
    7171                        numpairs=0;
    7272                        for i=1:numrifts,
    73                                 numpairs=numpairs+size(obj.riftstruct(i).penaltypairs,1);
     73                                numpairs=numpairs+size(self.riftstruct(i).penaltypairs,1);
    7474                        end
    7575
     
    7878                        count=1;
    7979                        for i=1:numrifts,
    80                                 numpairsforthisrift=size(obj.riftstruct(i).penaltypairs,1);
    81                                 data(count:count+numpairsforthisrift-1,1:7)=obj.riftstruct(i).penaltypairs;
    82                                 data(count:count+numpairsforthisrift-1,8)=obj.riftstruct(i).fill;
    83                                 data(count:count+numpairsforthisrift-1,9)=obj.riftstruct(i).friction;
    84                                 data(count:count+numpairsforthisrift-1,10)=obj.riftstruct(i).fraction;
    85                                 data(count:count+numpairsforthisrift-1,11)=obj.riftstruct(i).fractionincrement;
    86                                 data(count:count+numpairsforthisrift-1,12)=obj.riftstruct(i).state;
     80                                numpairsforthisrift=size(self.riftstruct(i).penaltypairs,1);
     81                                data(count:count+numpairsforthisrift-1,1:7)=self.riftstruct(i).penaltypairs;
     82                                data(count:count+numpairsforthisrift-1,8)=self.riftstruct(i).fill;
     83                                data(count:count+numpairsforthisrift-1,9)=self.riftstruct(i).friction;
     84                                data(count:count+numpairsforthisrift-1,10)=self.riftstruct(i).fraction;
     85                                data(count:count+numpairsforthisrift-1,11)=self.riftstruct(i).fractionincrement;
     86                                data(count:count+numpairsforthisrift-1,12)=self.riftstruct(i).state;
    8787                                count=count+numpairsforthisrift;
    8888                        end
  • issm/trunk-jpl/src/m/classes/seaice.m

    r18503 r19040  
    1414        end
    1515        methods
    16                 function obj = seaice(varargin) % {{{
     16                function self = seaice(varargin) % {{{
    1717                        switch nargin
    1818                                case 0
    19                                         obj=setdefaultparameters(obj);
     19                                        self=setdefaultparameters(self);
    2020                                        return;
    2121                                otherwise
     
    2323                        end
    2424                end % }}}
    25                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     25                function md = checkconsistency(self,md,solution,analyses) % {{{
    2626                        if solution~=SeaiceSolutionEnum(), return; end
    2727                        md = checkfield(md,'fieldname','seaice.min_concentration','NaN',1,'>=',0,'numel',1);
     
    3232                        md = checkfield(md,'fieldname','seaice.coriolis_factor','size',[md.mesh.numberofelements 1],'NaN',1,'>=',0);
    3333                end % }}}
    34                 function obj = setdefaultparameters(obj) % {{{
     34                function self = setdefaultparameters(self) % {{{
    3535
    3636                        %Minimum ice concentration allowed in the simulation
    37                         obj.min_concentration=0.;
     37                        self.min_concentration=0.;
    3838
    3939                        %Minimum ice thickness allowed in the simulation
    40                         obj.min_thickness=0.;
     40                        self.min_thickness=0.;
    4141
    4242                        %Maxmimum ice thickness allowed in the simulation
    43                         obj.max_thickness=25.;
     43                        self.max_thickness=25.;
    4444
    4545                end % }}}
    46                 function disp(obj) % {{{
     46                function disp(self) % {{{
    4747                        disp(sprintf('   seaice parameters:'));
    48                         fielddisplay(obj,'min_concentration','minimum ice concentration allowed in the simulation [no unit]');
    49                         fielddisplay(obj,'min_thickness','minimum ice thickness allowed in the simulation [m]');
    50                         fielddisplay(obj,'max_thickness','maximum ice thickness allowed in the simulation [m]');
    51                         fielddisplay(obj,'spcvx','x-axis velocity constraint (NaN means no constraint) [m/s]');
    52                         fielddisplay(obj,'spcvy','y-axis velocity constraint (NaN means no constraint) [m/s]');
    53                         fielddisplay(obj,'coriolis_factor','factor applied to Coriolis forces (latitude dependent)');
     48                        fielddisplay(self,'min_concentration','minimum ice concentration allowed in the simulation [no unit]');
     49                        fielddisplay(self,'min_thickness','minimum ice thickness allowed in the simulation [m]');
     50                        fielddisplay(self,'max_thickness','maximum ice thickness allowed in the simulation [m]');
     51                        fielddisplay(self,'spcvx','x-axis velocity constraint (NaN means no constraint) [m/s]');
     52                        fielddisplay(self,'spcvy','y-axis velocity constraint (NaN means no constraint) [m/s]');
     53                        fielddisplay(self,'coriolis_factor','factor applied to Coriolis forces (latitude dependent)');
    5454                end % }}}
    55                 function marshall(obj,md,fid) % {{{
    56                         WriteData(fid,'object',obj,'fieldname','min_concentration','format','Double');
    57                         WriteData(fid,'object',obj,'fieldname','min_thickness','format','Double');
    58                         WriteData(fid,'object',obj,'fieldname','max_thickness','format','Double');
    59                         WriteData(fid,'object',obj,'fieldname','spcvx','format','DoubleMat','mattype',1);
    60                         WriteData(fid,'object',obj,'fieldname','spcvy','format','DoubleMat','mattype',1);
    61                         WriteData(fid,'object',obj,'fieldname','coriolis_factor','format','DoubleMat','mattype',2);
     55                function marshall(self,md,fid) % {{{
     56                        WriteData(fid,'object',self,'fieldname','min_concentration','format','Double');
     57                        WriteData(fid,'object',self,'fieldname','min_thickness','format','Double');
     58                        WriteData(fid,'object',self,'fieldname','max_thickness','format','Double');
     59                        WriteData(fid,'object',self,'fieldname','spcvx','format','DoubleMat','mattype',1);
     60                        WriteData(fid,'object',self,'fieldname','spcvy','format','DoubleMat','mattype',1);
     61                        WriteData(fid,'object',self,'fieldname','coriolis_factor','format','DoubleMat','mattype',2);
    6262                end % }}}
    6363        end
  • issm/trunk-jpl/src/m/classes/seaiceatm.m

    r18492 r19040  
    1414        end
    1515        methods
    16                 function obj = seaiceatm(varargin) % {{{
     16                function self = seaiceatm(varargin) % {{{
    1717                        switch nargin
    1818                                case 0
    19                                         obj=setdefaultparameters(obj);
     19                                        self=setdefaultparameters(self);
    2020                                otherwise
    2121                                        error('constructor not supported');
    2222                        end
    2323                end % }}}
    24                 function obj = setdefaultparameters(obj) % {{{
     24                function self = setdefaultparameters(self) % {{{
    2525
    2626                        %air density (kg/m^3)
    27                         obj.rho_air=1.3;
     27                        self.rho_air=1.3;
    2828
    2929                        %By default, we apply the full stress
    30                         obj.air_coef = 1.;
     30                        self.air_coef = 1.;
    3131
    3232                        %drag coefficients (different from Hibler 0.0012)
    33                         obj.air_lin_drag_coef  = 0.;
    34                         obj.air_quad_drag_coef = 0.003;
     33                        self.air_lin_drag_coef  = 0.;
     34                        self.air_quad_drag_coef = 0.003;
    3535
    3636                end % }}}
    37                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     37                function md = checkconsistency(self,md,solution,analyses) % {{{
    3838                        md = checkfield(md,'fieldname','surfaceforcings.rho_air','NaN',1,'>',0.,'numel',1);
    3939                        md = checkfield(md,'fieldname','surfaceforcings.air_coef','NaN',1,'>=',0.,'<=',1,'numel',1);
     
    4343                        md = checkfield(md,'fieldname','surfaceforcings.wind_vy','NaN',1,'size',[md.mesh.numberofvertices 1]);
    4444                end % }}}
    45                 function disp(obj) % {{{
     45                function disp(self) % {{{
    4646                        disp(sprintf('   Atmospheric forcings for sea ice:'));
    4747                        disp(sprintf('\n     tau_a = air_coef*rho_air*(air_lin_drag_coef+air_quad_drag_coef*|v_wind|)*v_wind\n'));
    48                         fielddisplay(obj,'rho_air','air density [kg/m^3]');
    49                         fielddisplay(obj,'air_coef','atmospheric stress spin up coefficient (between 0 and 1)');
    50                         fielddisplay(obj,'air_lin_drag_coef','air linear drag coefficient (no unit)');
    51                         fielddisplay(obj,'air_quad_drag_coef','air quadratic drag coefficient [s/m]');
    52                         fielddisplay(obj,'wind_vx','wind speed x-component at 10 m elevation [m/s]');
    53                         fielddisplay(obj,'wind_vy','wind speed y-component at 10 m elevation [m/s]');
     48                        fielddisplay(self,'rho_air','air density [kg/m^3]');
     49                        fielddisplay(self,'air_coef','atmospheric stress spin up coefficient (between 0 and 1)');
     50                        fielddisplay(self,'air_lin_drag_coef','air linear drag coefficient (no unit)');
     51                        fielddisplay(self,'air_quad_drag_coef','air quadratic drag coefficient [s/m]');
     52                        fielddisplay(self,'wind_vx','wind speed x-component at 10 m elevation [m/s]');
     53                        fielddisplay(self,'wind_vy','wind speed y-component at 10 m elevation [m/s]');
    5454                end % }}}
    55                 function marshall(obj,md,fid) % {{{
     55                function marshall(self,md,fid) % {{{
    5656                        WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SeaiceatmEnum(),'format','Integer');
    57                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','rho_air','format','Double');
    58                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','air_coef','format','Double');
    59                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','air_lin_drag_coef','format','Double');
    60                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','air_quad_drag_coef','format','Double');
    61                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','wind_vx','format','DoubleMat','mattype',1);
    62                         WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','wind_vy','format','DoubleMat','mattype',1);
     57                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rho_air','format','Double');
     58                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','air_coef','format','Double');
     59                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','air_lin_drag_coef','format','Double');
     60                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','air_quad_drag_coef','format','Double');
     61                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','wind_vx','format','DoubleMat','mattype',1);
     62                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','wind_vy','format','DoubleMat','mattype',1);
    6363                end % }}}
    6464        end
  • issm/trunk-jpl/src/m/classes/seaiceinitialization.m

    r18503 r19040  
    2020        end
    2121        methods
    22                 function obj = seaiceinitialization(varargin) % {{{
     22                function self = seaiceinitialization(varargin) % {{{
    2323                        switch nargin
    2424                                case 0
     
    2828                        end
    2929                end % }}}
    30                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     30                function md = checkconsistency(self,md,solution,analyses) % {{{
    3131                        md = checkfield(md,'fieldname','initialization.thickness','size',[md.mesh.numberofelements 1],'NaN',1,'>=',0);
    3232                        md = checkfield(md,'fieldname','initialization.concentration','size',[md.mesh.numberofelements 1],'NaN',1,'>=',0);
     
    4242                        md = checkfield(md,'fieldname','initialization.mesh_y','NaN',1,'size',[md.mesh.numberofvertices 1]);
    4343                end % }}}
    44                 function disp(obj) % {{{
     44                function disp(self) % {{{
    4545                        disp(sprintf('   initial field values:'));
    46                         fielddisplay(obj,'thickness','sea ice thickness [m]');
    47                         fielddisplay(obj,'concentration','sea ice concentration (between 0 and 1)');
    48                         fielddisplay(obj,'vx','x component of the ice velocity [m/s]');
    49                         fielddisplay(obj,'vy','y component of the ice velocity [m/s]');
    50                         fielddisplay(obj,'vx_coriolis','x component of the ice velocity used to calculate coriolis forces [m/s]');
    51                         fielddisplay(obj,'vy_coriolis','y component of the ice velocity used to calculate coriolis forces [m/s]');
    52                         fielddisplay(obj,'sigma_predictor_xx','Predictor for the xx component of the Cauchy stress tensor [Pa]');
    53                         fielddisplay(obj,'sigma_predictor_yy','Predictor for the yy component of the Cauchy stress tensor [Pa]');
    54                         fielddisplay(obj,'sigma_predictor_xy','Predictor for the xy component of the Cauchy stress tensor [Pa]');
    55                         fielddisplay(obj,'damage','damage, between 0 (no damage) and 1 (fully damaged)');
    56                         fielddisplay(obj,'mesh_x','x position of each vertex of the mesh using a Lagrangian approach');
    57                         fielddisplay(obj,'mesh_y','y position of each vertex of the mesh using a Lagrangian approach');
     46                        fielddisplay(self,'thickness','sea ice thickness [m]');
     47                        fielddisplay(self,'concentration','sea ice concentration (between 0 and 1)');
     48                        fielddisplay(self,'vx','x component of the ice velocity [m/s]');
     49                        fielddisplay(self,'vy','y component of the ice velocity [m/s]');
     50                        fielddisplay(self,'vx_coriolis','x component of the ice velocity used to calculate coriolis forces [m/s]');
     51                        fielddisplay(self,'vy_coriolis','y component of the ice velocity used to calculate coriolis forces [m/s]');
     52                        fielddisplay(self,'sigma_predictor_xx','Predictor for the xx component of the Cauchy stress tensor [Pa]');
     53                        fielddisplay(self,'sigma_predictor_yy','Predictor for the yy component of the Cauchy stress tensor [Pa]');
     54                        fielddisplay(self,'sigma_predictor_xy','Predictor for the xy component of the Cauchy stress tensor [Pa]');
     55                        fielddisplay(self,'damage','damage, between 0 (no damage) and 1 (fully damaged)');
     56                        fielddisplay(self,'mesh_x','x position of each vertex of the mesh using a Lagrangian approach');
     57                        fielddisplay(self,'mesh_y','y position of each vertex of the mesh using a Lagrangian approach');
    5858                end % }}}
    59                 function marshall(obj,md,fid) % {{{
    60                         WriteData(fid,'data',obj.thickness,'format','DoubleMat','mattype',2,'enum',SeaiceThicknessEnum());
    61                         WriteData(fid,'data',obj.concentration,'format','DoubleMat','mattype',2,'enum',SeaiceConcentrationEnum());
    62                         WriteData(fid,'data',obj.vx,'format','DoubleMat','mattype',1,'enum',VxEnum);
    63                         WriteData(fid,'data',obj.vy,'format','DoubleMat','mattype',1,'enum',VyEnum);
    64                         WriteData(fid,'data',obj.vx_coriolis,'format','DoubleMat','mattype',1,'enum',VxStarEnum());
    65                         WriteData(fid,'data',obj.vy_coriolis,'format','DoubleMat','mattype',1,'enum',VyStarEnum());
    66                         WriteData(fid,'data',obj.sigma_predictor_xx,'format','DoubleMat','mattype',2,'enum',StressTensorPredictorxxEnum());
    67                         WriteData(fid,'data',obj.sigma_predictor_yy,'format','DoubleMat','mattype',2,'enum',StressTensorPredictoryyEnum());
    68                         WriteData(fid,'data',obj.sigma_predictor_xy,'format','DoubleMat','mattype',2,'enum',StressTensorPredictorxyEnum());
    69                         WriteData(fid,'data',obj.damage,'format','DoubleMat','mattype',2,'enum',DamageEnum());
    70                         WriteData(fid,'data',obj.mesh_x,'format','DoubleMat','mattype',1,'enum',MeshXEnum());
    71                         WriteData(fid,'data',obj.mesh_y,'format','DoubleMat','mattype',1,'enum',MeshYEnum());
     59                function marshall(self,md,fid) % {{{
     60                        WriteData(fid,'data',self.thickness,'format','DoubleMat','mattype',2,'enum',SeaiceThicknessEnum());
     61                        WriteData(fid,'data',self.concentration,'format','DoubleMat','mattype',2,'enum',SeaiceConcentrationEnum());
     62                        WriteData(fid,'data',self.vx,'format','DoubleMat','mattype',1,'enum',VxEnum);
     63                        WriteData(fid,'data',self.vy,'format','DoubleMat','mattype',1,'enum',VyEnum);
     64                        WriteData(fid,'data',self.vx_coriolis,'format','DoubleMat','mattype',1,'enum',VxStarEnum());
     65                        WriteData(fid,'data',self.vy_coriolis,'format','DoubleMat','mattype',1,'enum',VyStarEnum());
     66                        WriteData(fid,'data',self.sigma_predictor_xx,'format','DoubleMat','mattype',2,'enum',StressTensorPredictorxxEnum());
     67                        WriteData(fid,'data',self.sigma_predictor_yy,'format','DoubleMat','mattype',2,'enum',StressTensorPredictoryyEnum());
     68                        WriteData(fid,'data',self.sigma_predictor_xy,'format','DoubleMat','mattype',2,'enum',StressTensorPredictorxyEnum());
     69                        WriteData(fid,'data',self.damage,'format','DoubleMat','mattype',2,'enum',DamageEnum());
     70                        WriteData(fid,'data',self.mesh_x,'format','DoubleMat','mattype',1,'enum',MeshXEnum());
     71                        WriteData(fid,'data',self.mesh_y,'format','DoubleMat','mattype',1,'enum',MeshYEnum());
    7272                end % }}}
    7373        end
  • issm/trunk-jpl/src/m/classes/seaiceocean.m

    r18503 r19040  
    1616        end
    1717        methods
    18                 function obj = seaiceocean(varargin) % {{{
     18                function self = seaiceocean(varargin) % {{{
    1919                        switch nargin
    2020                                case 0
    21                                         obj=setdefaultparameters(obj);
     21                                        self=setdefaultparameters(self);
    2222                                otherwise
    2323                                        error('constructor not supported');
    2424                        end
    2525                end % }}}
    26                 function obj = setdefaultparameters(obj) % {{{
     26                function self = setdefaultparameters(self) % {{{
    2727
    2828                        %ocean density (kg/m^3)
    29                         obj.rho_ocean=1025.;
     29                        self.rho_ocean=1025.;
    3030
    3131                        %By default, we apply the full stress
    32                         obj.ocean_coef = 1.;
     32                        self.ocean_coef = 1.;
    3333
    3434                        %drag coefficients (different from Hibler 0.0055)
    35                         obj.ocean_lin_drag_coef  = 0.;
    36                         obj.ocean_quad_drag_coef = 0.004;
     35                        self.ocean_lin_drag_coef  = 0.;
     36                        self.ocean_quad_drag_coef = 0.004;
    3737
    3838                        %Turning angle in degrees (McPhee 1998)
    39                         obj.ocean_turning_angle = deg2rad(25.);
     39                        self.ocean_turning_angle = deg2rad(25.);
    4040
    4141                end % }}}
    42                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     42                function md = checkconsistency(self,md,solution,analyses) % {{{
    4343                        md = checkfield(md,'fieldname','basalforcings.rho_ocean','NaN',1,'>',0.,'numel',1);
    4444                        md = checkfield(md,'fieldname','basalforcings.ocean_coef','NaN',1,'>=',0.,'<=',1.,'numel',1);
     
    5050                        md = checkfield(md,'fieldname','basalforcings.ocean_vy','NaN',1,'size',[md.mesh.numberofvertices 1]);
    5151                end % }}}
    52                 function disp(obj) % {{{
     52                function disp(self) % {{{
    5353                        disp(sprintf('   Ocean forcings for sea ice:'));
    5454                        %disp(sprintf('\n     tau_b = ocean_coef*rho_ocean*...'));
    55                         fielddisplay(obj,'rho_ocean','ocean density [kg/m^3]');
    56                         fielddisplay(obj,'ocean_coef','ocean stress spin up coefficient (between 0 and 1)');
    57                         fielddisplay(obj,'ocean_lin_drag_coef','ocean linear drag coefficient [Pa/(m/s)]');
    58                         fielddisplay(obj,'ocean_quad_drag_coef','ocean quadratic drag coefficient [Pa/(m/s)^2]');
    59                         fielddisplay(obj,'ocean_turning_angle','ocean turning angle [rad]');
    60                         fielddisplay(obj,'ocean_ssh','ocean sea surface height [m]');
    61                         fielddisplay(obj,'ocean_vx','ocean speed x-component [m/s]');
    62                         fielddisplay(obj,'ocean_vy','ocean speed y-component [m/s]');
     55                        fielddisplay(self,'rho_ocean','ocean density [kg/m^3]');
     56                        fielddisplay(self,'ocean_coef','ocean stress spin up coefficient (between 0 and 1)');
     57                        fielddisplay(self,'ocean_lin_drag_coef','ocean linear drag coefficient [Pa/(m/s)]');
     58                        fielddisplay(self,'ocean_quad_drag_coef','ocean quadratic drag coefficient [Pa/(m/s)^2]');
     59                        fielddisplay(self,'ocean_turning_angle','ocean turning angle [rad]');
     60                        fielddisplay(self,'ocean_ssh','ocean sea surface height [m]');
     61                        fielddisplay(self,'ocean_vx','ocean speed x-component [m/s]');
     62                        fielddisplay(self,'ocean_vy','ocean speed y-component [m/s]');
    6363                end % }}}
    64                 function marshall(obj,md,fid) % {{{
     64                function marshall(self,md,fid) % {{{
    6565                        WriteData(fid,'enum',BasalforcingsEnum(),'data',SeaiceoceanEnum(),'format','Integer');
    66                         WriteData(fid,'object',obj,'class','basalforcings','fieldname','rho_ocean','format','Double');
    67                         WriteData(fid,'object',obj,'class','basalforcings','fieldname','ocean_coef','format','Double');
    68                         WriteData(fid,'object',obj,'class','basalforcings','fieldname','ocean_lin_drag_coef','format','Double');
    69                         WriteData(fid,'object',obj,'class','basalforcings','fieldname','ocean_quad_drag_coef','format','Double');
    70                         WriteData(fid,'object',obj,'class','basalforcings','fieldname','ocean_turning_angle','format','Double');
    71                         WriteData(fid,'object',obj,'class','basalforcings','fieldname','ocean_ssh','format','DoubleMat','mattype',1);
    72                         WriteData(fid,'object',obj,'class','basalforcings','fieldname','ocean_vx','format','DoubleMat','mattype',1);
    73                         WriteData(fid,'object',obj,'class','basalforcings','fieldname','ocean_vy','format','DoubleMat','mattype',1);
     66                        WriteData(fid,'object',self,'class','basalforcings','fieldname','rho_ocean','format','Double');
     67                        WriteData(fid,'object',self,'class','basalforcings','fieldname','ocean_coef','format','Double');
     68                        WriteData(fid,'object',self,'class','basalforcings','fieldname','ocean_lin_drag_coef','format','Double');
     69                        WriteData(fid,'object',self,'class','basalforcings','fieldname','ocean_quad_drag_coef','format','Double');
     70                        WriteData(fid,'object',self,'class','basalforcings','fieldname','ocean_turning_angle','format','Double');
     71                        WriteData(fid,'object',self,'class','basalforcings','fieldname','ocean_ssh','format','DoubleMat','mattype',1);
     72                        WriteData(fid,'object',self,'class','basalforcings','fieldname','ocean_vx','format','DoubleMat','mattype',1);
     73                        WriteData(fid,'object',self,'class','basalforcings','fieldname','ocean_vy','format','DoubleMat','mattype',1);
    7474                end % }}}
    7575        end
  • issm/trunk-jpl/src/m/classes/settings.m

    r17931 r19040  
    1919        end
    2020        methods
    21         function createxml(obj,fid) % {{{
     21        function createxml(self,fid) % {{{
    2222            fprintf(fid, '\n\n');
    2323            fprintf(fid, '%s\n', '<!-- settings -->');
    24                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="results_on_nodes" type="',      class(obj.results_on_nodes),'" default="',        convert2str(obj.results_on_nodes),'">',  '     <section name="settings" />','     <help> results are output for all the nodes of each element </help>','</parameter>');
    25             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="io_gather" type="',          class(obj.io_gather),'" default="',           convert2str(obj.io_gather),'">',     '     <section name="settings" />','     <help> I/O gathering strategy for result outputs (default 1) </help>','</parameter>');
     24                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="results_on_nodes" type="',      class(self.results_on_nodes),'" default="',        convert2str(self.results_on_nodes),'">',        '     <section name="settings" />','     <help> results are output for all the nodes of each element </help>','</parameter>');
     25            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="io_gather" type="',          class(self.io_gather),'" default="',           convert2str(self.io_gather),'">',     '     <section name="settings" />','     <help> I/O gathering strategy for result outputs (default 1) </help>','</parameter>');
    2626           
    2727            % lowmen drop-down (0 or 1)
     
    3030            fprintf(fid,'%s\n%s\n','       <option value="1" type="string" default="false"> </option>','</parameter>');
    3131
    32             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="output_frequency" type="',          class(obj.output_frequency),'" default="',           convert2str(obj.output_frequency),'">',       '     <section name="settings" />','     <help> frequency at which results are saved in all solutions with multiple time_steps </help>','</parameter>');
    33             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="waitonlock" type="',   class(obj.waitonlock),'" default="',      convert2str(obj.waitonlock),'">',     '     <section name="settings" />','     <help> maximum number of minutes to wait for batch results (NaN to deactivate) </help>','</parameter>');
    34             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="upload_server" type="',         class(obj.upload_server),'" default="',          convert2str(obj.upload_server),'">',  '     <section name="settings" />','     <help> server hostname where model should be uploaded </help>','</parameter>');
    35             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="upload_path" type="',             class(obj.upload_path),'" default="',              convert2str(obj.upload_path),'">',     '     <section name="settings" />','     <help> path on server where model should be uploaded </help>','</parameter>');
    36             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="upload_login" type="',        class(obj.upload_login),'" default="',         convert2str(obj.upload_login),'">',       '     <section name="settings" />','     <help> server login </help>','</parameter>');
    37             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="upload_port" type="',          class(obj.upload_port),'" default="',      convert2str(obj.upload_port),'">',     '     <section name="settings" />','     <help> port login (default is 0) </help>','</parameter>');
    38             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',         '<parameter key ="upload_filename" type="',         class(obj.upload_filename),'" default="',          convert2str(obj.upload_filename),'">',   '     <section name="settings" />','     <help> unique id generated when uploading the file to server </help>','</parameter>');
     32            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="output_frequency" type="',          class(self.output_frequency),'" default="',           convert2str(self.output_frequency),'">',     '     <section name="settings" />','     <help> frequency at which results are saved in all solutions with multiple time_steps </help>','</parameter>');
     33            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="waitonlock" type="',   class(self.waitonlock),'" default="',      convert2str(self.waitonlock),'">',     '     <section name="settings" />','     <help> maximum number of minutes to wait for batch results (NaN to deactivate) </help>','</parameter>');
     34            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="upload_server" type="',         class(self.upload_server),'" default="',          convert2str(self.upload_server),'">',        '     <section name="settings" />','     <help> server hostname where model should be uploaded </help>','</parameter>');
     35            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="upload_path" type="',             class(self.upload_path),'" default="',              convert2str(self.upload_path),'">',     '     <section name="settings" />','     <help> path on server where model should be uploaded </help>','</parameter>');
     36            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="upload_login" type="',        class(self.upload_login),'" default="',         convert2str(self.upload_login),'">',     '     <section name="settings" />','     <help> server login </help>','</parameter>');
     37            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="upload_port" type="',          class(self.upload_port),'" default="',      convert2str(self.upload_port),'">',     '     <section name="settings" />','     <help> port login (default is 0) </help>','</parameter>');
     38            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',         '<parameter key ="upload_filename" type="',         class(self.upload_filename),'" default="',          convert2str(self.upload_filename),'">', '     <section name="settings" />','     <help> unique id generated when uploading the file to server </help>','</parameter>');
    3939             
    4040        end % }}}
    41                 function obj = settings(varargin) % {{{
     41                function self = settings(varargin) % {{{
    4242                        switch nargin
    4343                                case 0
    44                                         obj=setdefaultparameters(obj);
     44                                        self=setdefaultparameters(self);
    4545                                otherwise
    4646                                        error('constructor not supported');
    4747                        end
    4848                end % }}}
    49                 function obj = setdefaultparameters(obj) % {{{
     49                function self = setdefaultparameters(self) % {{{
    5050
    5151                        %are we short in memory ? (0 faster but requires more memory)
    52                         obj.lowmem=0;
     52                        self.lowmem=0;
    5353
    5454                        %i/o:
    55                         obj.io_gather=1;
     55                        self.io_gather=1;
    5656
    5757                        %results frequency by default every step
    58                         obj.output_frequency=1;
     58                        self.output_frequency=1;
    5959
    6060                        %this option can be activated to load automatically the results
     
    6262                        %N minutes that is generated once the solution has converged
    6363                        %0 to deactivate
    64                         obj.waitonlock=Inf;
     64                        self.waitonlock=Inf;
    6565
    6666                        %upload options:
     
    6868
    6969                end % }}}
    70                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     70                function md = checkconsistency(self,md,solution,analyses) % {{{
    7171
    7272                        md = checkfield(md,'fieldname','settings.results_on_nodes','numel',[1],'values',[0 1]);
     
    7777
    7878                end % }}}
    79                 function disp(obj) % {{{
     79                function disp(self) % {{{
    8080                        disp(sprintf('   general settings parameters:'));
    8181
    82                         fielddisplay(obj,'results_on_nodes','results are output for all the nodes of each element');
    83                         fielddisplay(obj,'io_gather','I/O gathering strategy for result outputs (default 1)');
    84                         fielddisplay(obj,'lowmem','is the memory limited ? (0 or 1)');
    85                         fielddisplay(obj,'output_frequency','frequency at which results are saved in all solutions with multiple time_steps');
    86                         fielddisplay(obj,'waitonlock','maximum number of minutes to wait for batch results (NaN to deactivate)');
    87                         fielddisplay(obj,'upload_server','server hostname where model should be uploaded');
    88                         fielddisplay(obj,'upload_path','path on server where model should be uploaded');
    89                         fielddisplay(obj,'upload_login','server login');
    90                         fielddisplay(obj,'upload_port','port login (default is 0)');
    91                         fielddisplay(obj,'upload_filename','unique id generated when uploading the file to server');
     82                        fielddisplay(self,'results_on_nodes','results are output for all the nodes of each element');
     83                        fielddisplay(self,'io_gather','I/O gathering strategy for result outputs (default 1)');
     84                        fielddisplay(self,'lowmem','is the memory limited ? (0 or 1)');
     85                        fielddisplay(self,'output_frequency','frequency at which results are saved in all solutions with multiple time_steps');
     86                        fielddisplay(self,'waitonlock','maximum number of minutes to wait for batch results (NaN to deactivate)');
     87                        fielddisplay(self,'upload_server','server hostname where model should be uploaded');
     88                        fielddisplay(self,'upload_path','path on server where model should be uploaded');
     89                        fielddisplay(self,'upload_login','server login');
     90                        fielddisplay(self,'upload_port','port login (default is 0)');
     91                        fielddisplay(self,'upload_filename','unique id generated when uploading the file to server');
    9292
    9393                end % }}}
    94                 function marshall(obj,md,fid) % {{{
    95                         WriteData(fid,'object',obj,'fieldname','results_on_nodes','format','Boolean');
    96                         WriteData(fid,'object',obj,'fieldname','io_gather','format','Boolean');
    97                         WriteData(fid,'object',obj,'fieldname','lowmem','format','Boolean');
    98                         WriteData(fid,'object',obj,'fieldname','output_frequency','format','Integer');
    99                         if obj.waitonlock>0,
     94                function marshall(self,md,fid) % {{{
     95                        WriteData(fid,'object',self,'fieldname','results_on_nodes','format','Boolean');
     96                        WriteData(fid,'object',self,'fieldname','io_gather','format','Boolean');
     97                        WriteData(fid,'object',self,'fieldname','lowmem','format','Boolean');
     98                        WriteData(fid,'object',self,'fieldname','output_frequency','format','Integer');
     99                        if self.waitonlock>0,
    100100                                WriteData(fid,'enum',SettingsWaitonlockEnum(),'data',true,'format','Boolean');
    101101                        else
  • issm/trunk-jpl/src/m/classes/snowpack.m

    r19027 r19040  
    105105        end
    106106        methods
    107                 function obj = snowpack(varargin) % {{{
     107                function self = snowpack(varargin) % {{{
    108108                        switch nargin
    109109                                case 0
    110                                         obj=setdefaultparameters(obj);
     110                                        self=setdefaultparameters(self);
    111111                                case 1
    112112                                        inputstruct=varargin{1};
     
    116116                                                fieldname = list1{i};
    117117                                                if ismember(fieldname,list2),
    118                                                         obj.(fieldname) = inputstruct.(fieldname);
     118                                                        self.(fieldname) = inputstruct.(fieldname);
    119119                                                end
    120120                                        end
     
    123123                        end
    124124                end % }}}
    125                 function obj = setdefaultparameters(obj) % {{{
     125                function self = setdefaultparameters(self) % {{{
    126126
    127127                %snowpack:  %{{{
    128                 obj.snowpack_meas_tss = 1;
    129                 obj.snowpack_enforce_measured_snow_heights = 0;
    130                 obj.snowpack_sw_mode = 0;
    131                 obj.snowpack_incoming_longwave = 1;
    132                 obj.snowpack_height_of_wind_value = 12.;
    133                 obj.snowpack_height_of_meteo_values = 12.;
    134                 obj.snowpack_neutral = 0;
    135                 obj.snowpack_roughness_length = 0.002;
    136                 obj.snowpack_number_slopes = 1;
    137                 obj.snowpack_snow_redistribution = 1;
    138                 obj.snowpack_calculation_step_length = 15.0;
    139                 obj.snowpack_change_bc = 0;
    140                 obj.snowpack_thresh_change_bc = -1.0;
    141                 obj.snowpack_snp_soil = 0;
    142                 obj.snowpack_soil_flux = 0;
    143                 obj.snowpack_geo_heat = 0.06;
    144                 obj.snowpack_canopy = 0;
     128                self.snowpack_meas_tss = 1;
     129                self.snowpack_enforce_measured_snow_heights = 0;
     130                self.snowpack_sw_mode = 0;
     131                self.snowpack_incoming_longwave = 1;
     132                self.snowpack_height_of_wind_value = 12.;
     133                self.snowpack_height_of_meteo_values = 12.;
     134                self.snowpack_neutral = 0;
     135                self.snowpack_roughness_length = 0.002;
     136                self.snowpack_number_slopes = 1;
     137                self.snowpack_snow_redistribution = 1;
     138                self.snowpack_calculation_step_length = 15.0;
     139                self.snowpack_change_bc = 0;
     140                self.snowpack_thresh_change_bc = -1.0;
     141                self.snowpack_snp_soil = 0;
     142                self.snowpack_soil_flux = 0;
     143                self.snowpack_geo_heat = 0.06;
     144                self.snowpack_canopy = 0;
    145145                %}}}
    146146                %snowpackadvanced:  %{{{
    147                 obj.snowpackadvanced_variant = 'ANTARCTICA'; % use 320 kg m-3 for fixed density
    148                 obj.snowpackadvanced_hn_density = 'EVENT';
     147                self.snowpackadvanced_variant = 'ANTARCTICA'; % use 320 kg m-3 for fixed density
     148                self.snowpackadvanced_hn_density = 'EVENT';
    149149                %}}}
    150150                %general:  %{{{
    151                 obj.general_pluginpath = '/usr/local/lib/meteoio/plugins/';
    152                 obj.general_buff_chunk_size = 90;
    153                 obj.general_buff_before = 1.5;
     151                self.general_pluginpath = '/usr/local/lib/meteoio/plugins/';
     152                self.general_buff_chunk_size = 90;
     153                self.general_buff_before = 1.5;
    154154                %}}}
    155155                %input {{{
    156                 obj.input_coordsys = 'ch1903';
    157                 obj.input_coordparam = 'null';
    158                 obj.input_time_zone = 8;
    159                 obj.input_meteo = 'smet';
    160                 obj.input_meteopath = './input';
    161                 obj.input_station1 = 'domec.smet';
    162                 obj.input_snowfile1 = 'domec.sno';
     156                self.input_coordsys = 'ch1903';
     157                self.input_coordparam = 'null';
     158                self.input_time_zone = 8;
     159                self.input_meteo = 'smet';
     160                self.input_meteopath = './input';
     161                self.input_station1 = 'domec.smet';
     162                self.input_snowfile1 = 'domec.sno';
    163163                %}}}
    164164                %output {{{
    165                 obj.output_coordsys = 'ch1903';
    166                 obj.output_coordparam = 'null';
    167                 obj.output_time_zone = 8;
    168                 obj.output_meteopath = './output';
    169                 obj.output_experiment = 'smet';
    170                 obj.output_ts_write = 1;
    171                 obj.output_ts_start = 0.0;
    172                 obj.output_ts_days_between = 0.04166667;
    173                 obj.output_profile = 'ascii';
    174                 obj.output_prof_write = 1;
    175                 obj.output_prof_start = 0.0;
    176                 obj.output_prof_days_between = 0.04166667;
     165                self.output_coordsys = 'ch1903';
     166                self.output_coordparam = 'null';
     167                self.output_time_zone = 8;
     168                self.output_meteopath = './output';
     169                self.output_experiment = 'smet';
     170                self.output_ts_write = 1;
     171                self.output_ts_start = 0.0;
     172                self.output_ts_days_between = 0.04166667;
     173                self.output_profile = 'ascii';
     174                self.output_prof_write = 1;
     175                self.output_prof_start = 0.0;
     176                self.output_prof_days_between = 0.04166667;
    177177                %}}}
    178178                %interpolations1d %{{{
    179                 obj.interpolations1d_window_size = 439200; %that is 5 d and 2 h; 1 d = 86400
    180                 obj.interpolations1d_hnw_resample = 'none';
    181                 obj.interpolations1d_hs_resample = 'linear';
    182                 obj.interpolations1d_tsg_resample = 'linear';
    183                 obj.interpolations1d_rho_hn_resample = 'none';
    184                 obj.interpolations1d_vw_resample = 'nearest_neighbour';
    185                 obj.interpolations1d_vw_args = 'extrapolate';
     179                self.interpolations1d_window_size = 439200; %that is 5 d and 2 h; 1 d = 86400
     180                self.interpolations1d_hnw_resample = 'none';
     181                self.interpolations1d_hs_resample = 'linear';
     182                self.interpolations1d_tsg_resample = 'linear';
     183                self.interpolations1d_rho_hn_resample = 'none';
     184                self.interpolations1d_vw_resample = 'nearest_neighbour';
     185                self.interpolations1d_vw_args = 'extrapolate';
    186186                %}}}
    187187                %filters {{{
    188                 obj.filters_ta_filter1 = 'min_max';
    189                 obj.filters_ta_arg1 = [190 280];
    190                 obj.filters_rh_filter1 = 'min_max';
    191                 obj.filters_rh_arg1 = [0.01 1.2];
    192                 obj.filters_rh_filter2 = 'min_max';
    193                 obj.filters_rh_arg2 = {'soft' 0.01 1.0};
    194                 obj.filters_iswr_filter1 = 'min_max';
    195                 obj.filters_iswr_arg1 = [-10 1500];
    196                 obj.filters_iswr_filter2 = 'min_max';
    197                 obj.filters_iswr_arg2 = {'soft' 0 1500};
    198                 obj.filters_rswr_filter1 = 'min_max';
    199                 obj.filters_rswr_arg1 = [-10 1500];
    200                 obj.filters_rswr_filter2 = 'min_max';
    201                 obj.filters_rswr_arg2 = {'soft' 0 1500};
     188                self.filters_ta_filter1 = 'min_max';
     189                self.filters_ta_arg1 = [190 280];
     190                self.filters_rh_filter1 = 'min_max';
     191                self.filters_rh_arg1 = [0.01 1.2];
     192                self.filters_rh_filter2 = 'min_max';
     193                self.filters_rh_arg2 = {'soft' 0.01 1.0};
     194                self.filters_iswr_filter1 = 'min_max';
     195                self.filters_iswr_arg1 = [-10 1500];
     196                self.filters_iswr_filter2 = 'min_max';
     197                self.filters_iswr_arg2 = {'soft' 0 1500};
     198                self.filters_rswr_filter1 = 'min_max';
     199                self.filters_rswr_arg1 = [-10 1500];
     200                self.filters_rswr_filter2 = 'min_max';
     201                self.filters_rswr_arg2 = {'soft' 0 1500};
    202202
    203203                %for ta between 190 and 280 k;
    204                 obj.filters_ilwr_filter1 = 'min_max';
    205                 obj.filters_ilwr_arg1 = [30 355];
    206                 obj.filters_ilwr_filter2 = 'min_max';
    207                 obj.filters_ilwr_arg2 = {'soft' 35 350};
    208                 obj.filters_tss_filter1 = 'min_max';
    209                 obj.filters_tss_arg1 = [180 275];
    210                 obj.filters_tsg_filter1 = 'min_max';
    211                 obj.filters_tsg_arg1 = [200 275];
    212                 obj.filters_vw_filter1 = 'min_max';
    213                 obj.filters_vw_arg1 = [-2 70];
    214                 obj.filters_vw_filter2 = 'min_max';
    215                 obj.filters_vw_arg2 = {'soft' 0 50};
     204                self.filters_ilwr_filter1 = 'min_max';
     205                self.filters_ilwr_arg1 = [30 355];
     206                self.filters_ilwr_filter2 = 'min_max';
     207                self.filters_ilwr_arg2 = {'soft' 35 350};
     208                self.filters_tss_filter1 = 'min_max';
     209                self.filters_tss_arg1 = [180 275];
     210                self.filters_tsg_filter1 = 'min_max';
     211                self.filters_tsg_arg1 = [200 275];
     212                self.filters_vw_filter1 = 'min_max';
     213                self.filters_vw_arg1 = [-2 70];
     214                self.filters_vw_filter2 = 'min_max';
     215                self.filters_vw_arg2 = {'soft' 0 50};
    216216                %}}}
    217217
    218218                end % }}}
    219                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     219                function md = checkconsistency(self,md,solution,analyses) % {{{
    220220                        %snowpack:  %{{{
    221221                        md=checkfield(md,'fieldname','snowpack.snowpack_meas_tss','values',[0 1]);
     
    337337                        %}}}
    338338                end % }}}
    339                 function disp(obj) % {{{
     339                function disp(self) % {{{
    340340
    341341                        disp(sprintf('   Snowpack solution parameters:'));
    342342                        disp(sprintf('\n        %s','Snowpack parameters:')); % {{{
    343                         fielddisplay(obj,'snowpack_meas_tss',{'A measured surface temperature is available and can be reliably ','used for various consistency tests (it needs to be set to true if enabling CHANGE_BC) (0 or 1)'});
    344                         fielddisplay(obj,'snowpack_enforce_measured_snow_heights','Input mode by which a measurement of snow depth is used to drive the snow cover mass balance (0 or 1)');
    345                         fielddisplay(obj,'snowpack_sw_mode',{'Define the shortwave radiation input:',...
     343                        fielddisplay(self,'snowpack_meas_tss',{'A measured surface temperature is available and can be reliably ','used for various consistency tests (it needs to be set to true if enabling CHANGE_BC) (0 or 1)'});
     344                        fielddisplay(self,'snowpack_enforce_measured_snow_heights','Input mode by which a measurement of snow depth is used to drive the snow cover mass balance (0 or 1)');
     345                        fielddisplay(self,'snowpack_sw_mode',{'Define the shortwave radiation input:',...
    346346                                '0 Incoming shortwave radiation is measured and albedo estimated by the model',...
    347347                                '1 Reflected shortwave radiation is available as input and albedo is estimated by the model (IMIS standard)',...
    348348                                '2 Incoming and reflected shortwave radiation are both measured and the albedo is estimated from both measurements subject to plausibility checks.'});
    349                         fielddisplay(obj,'snowpack_incoming_longwave','Use the provided incoming long wave on the virtual slopes? (0 or 1)');
    350                         fielddisplay(obj,'snowpack_height_of_wind_value',{'The instrument height (or model layer height) for wind input data; note that height ',...
     349                        fielddisplay(self,'snowpack_incoming_longwave','Use the provided incoming long wave on the virtual slopes? (0 or 1)');
     350                        fielddisplay(self,'snowpack_height_of_wind_value',{'The instrument height (or model layer height) for wind input data; note that height ',...
    351351                                'is above ground for a standard SNOWPACK application but above surface (snow or ground) for Alpine3D applications '});
    352                         fielddisplay(obj,'snowpack_height_of_meteo_values',{'The instrument height (or model layer height) for meteorological input data except for wind,',...
     352                        fielddisplay(self,'snowpack_height_of_meteo_values',{'The instrument height (or model layer height) for meteorological input data except for wind,',...
    353353                                'which may be at a different height; note that height is above ground for a standard SNOWPACK ',...
    354354                                'application but above surface (snow or ground) for Alpine3D applications. '});
    355                         fielddisplay(obj,'snowpack_neutral',{'Select the atmospheric stability correction model:',...
     355                        fielddisplay(self,'snowpack_neutral',{'Select the atmospheric stability correction model:',...
    356356                                '-1 use a simplified Richardson number stability correction',...
    357357                                '0 assume standard Monin-Obukhov bulk formulation for surface exchange iteration with Paulson, Stearns and Weidner (can be used with BC_CHANGE=0)',...
    358358                                '1 force Monin-Obukhov formulation to assume neutral conditions regardless of the actual stratification; it has been shown to work well in ',...
    359359                                'complex terrain settings. It should be used with BC_CHANGE=1, i.e., Dirichlet /* but also is recommended with Neumann b.c., i.e., BC_CHANGE=0.'});
    360                         fielddisplay(obj,'snowpack_roughness_length',{'Aerodynamic roughness length as a parameter for the Monin-Obukhov bulk formulation;',...
     360                        fielddisplay(self,'snowpack_roughness_length',{'Aerodynamic roughness length as a parameter for the Monin-Obukhov bulk formulation;',...
    361361                                'A typical value for complex terrain is 0.01 m and for snow covered flat sites 0.001 m. '});
    362                         fielddisplay(obj,'snowpack_number_slopes',{'Based on meteorological input from a (flat field) automatic station or numerical weather model,',...
     362                        fielddisplay(self,'snowpack_number_slopes',{'Based on meteorological input from a (flat field) automatic station or numerical weather model,',...
    363363                                'up to 8 expositions can be calculated in addition to the flat field if the corresponding *.sno files are provided. For example,',...
    364364                                'if you provide a flat field *.snow file (mandatory), which is named KLO3.sno and you want 4 slopes to be calculated the corresponding',...
    365365                                'slope files should be named KLO21.sno, ...,KLO24.sno '});
    366                         fielddisplay(obj,'snowpack_snow_redistribution',{'Specifies if redistribution of snow is allowed from (upwind) expositions to lee slopes.',...
     366                        fielddisplay(self,'snowpack_snow_redistribution',{'Specifies if redistribution of snow is allowed from (upwind) expositions to lee slopes.',...
    367367                                'In case just the flat field is calculated, snow erosion is enabled but only for "ENFORCE_MEASURED_SNOW_HEIGHTS".'});
    368                                 fielddisplay(obj,'snowpack_calculation_step_length',{'Internal time step (in minutes) used for model simulation. Please note that this MUST ',...
     368                                fielddisplay(self,'snowpack_calculation_step_length',{'Internal time step (in minutes) used for model simulation. Please note that this MUST ',...
    369369                                'be the same as HNW::accumulate (the latter being in seconds) if re-acumulating precipitation, otherwise it would lead to wrong results.'});
    370                         fielddisplay(obj,'snowpack_change_bc',{'Use measured surface temperature as Dirichlet temperature BC for sub-freezing snowpacks and switch to ',...
     370                        fielddisplay(self,'snowpack_change_bc',{'Use measured surface temperature as Dirichlet temperature BC for sub-freezing snowpacks and switch to ',...
    371371                        'Neumann only for melting snowpacks. If set to false, assumes Neumann boundary conditions.'});
    372                         fielddisplay(obj,'snowpack_thresh_change_bc','Threshold value (small number below freezing), which switches from Dirichlet to Neumann BCs if CHANGE_BC is selected');
    373                         fielddisplay(obj,'snowpack_snp_soil','Soil layers as defined by the *.sno files are included in the simulation');
    374                         fielddisplay(obj,'snowpack_soil_flux','Assume that the lower temperature boundary condition is given by GEO_HEAT (Neumann) and not by a measured temperature');
    375                         fielddisplay(obj,'snowpack_geo_heat','Constant geothermal heat flux at great) depth W m-2): Lower flux boundary condition for temperature equation if BC is Neumann');
    376                         fielddisplay(obj,'snowpack_canopy','Switch to tell the model that canopy is present (note that Canopy parameters should then be provided in the *.sno file)');
     372                        fielddisplay(self,'snowpack_thresh_change_bc','Threshold value (small number below freezing), which switches from Dirichlet to Neumann BCs if CHANGE_BC is selected');
     373                        fielddisplay(self,'snowpack_snp_soil','Soil layers as defined by the *.sno files are included in the simulation');
     374                        fielddisplay(self,'snowpack_soil_flux','Assume that the lower temperature boundary condition is given by GEO_HEAT (Neumann) and not by a measured temperature');
     375                        fielddisplay(self,'snowpack_geo_heat','Constant geothermal heat flux at great) depth W m-2): Lower flux boundary condition for temperature equation if BC is Neumann');
     376                        fielddisplay(self,'snowpack_canopy','Switch to tell the model that canopy is present (note that Canopy parameters should then be provided in the *.sno file)');
    377377                        % }}}
    378378                        disp(sprintf('\n        %s','Snowpackadvanced parameters:')); % {{{
    379                         fielddisplay(obj,'snowpackadvanced_variant','variant selection (includes a choice of specific models, DEFAULT, ANTARCTICA and JAPAN )'); % use 320 kg m-3 for fixed density
    380                         fielddisplay(obj,'snowpackadvanced_hn_density',{'Fixed value to be used as new snow density if a constant density model is chosen, otherwise the choices are "PARAMETERIZED" "EVENT" "MEASURED"'});
     379                        fielddisplay(self,'snowpackadvanced_variant','variant selection (includes a choice of specific models, DEFAULT, ANTARCTICA and JAPAN )'); % use 320 kg m-3 for fixed density
     380                        fielddisplay(self,'snowpackadvanced_hn_density',{'Fixed value to be used as new snow density if a constant density model is chosen, otherwise the choices are "PARAMETERIZED" "EVENT" "MEASURED"'});
    381381                        % }}}
    382382                        disp(sprintf('\n        %s','General parameters:')); % {{{
    383                         fielddisplay(obj,'general_pluginpath','');
    384                         fielddisplay(obj,'general_buff_chunk_size','Size in days of a chunk of data to read at once.');
    385                         fielddisplay(obj,'general_buff_before','Alternate way of buffer centering: When rebuffering, the new date will be located BUFF_BEFORE days from the beginning of the buffer (therefore, it takes a value in days). ');
     383                        fielddisplay(self,'general_pluginpath','');
     384                        fielddisplay(self,'general_buff_chunk_size','Size in days of a chunk of data to read at once.');
     385                        fielddisplay(self,'general_buff_before','Alternate way of buffer centering: When rebuffering, the new date will be located BUFF_BEFORE days from the beginning of the buffer (therefore, it takes a value in days). ');
    386386                        % }}}
    387387                        disp(sprintf('\n        %s','Input  parameter:')); % {{{
    388                         fielddisplay(obj,'input_coordsys','coordinates in the Swiss Grid (http://geomatics.ladetto.ch/ch1903_wgs84_de.pdf). One of CH1903,UTM,UPS,PROJ4 or LOCAL');
    389                         fielddisplay(obj,'input_coordparam',' ');
    390                         fielddisplay(obj,'input_time_zone',' ');
    391                         fielddisplay(obj,'input_meteo','plugin for METEO data (one of BORMA,COSMO,GEOTOP,GRIB,GS,IMIS,SMET,SNOWPACK');
    392                         fielddisplay(obj,'input_meteopath','string containing the path to the xml files.');
    393                         fielddisplay(obj,'input_station1','Meteorology file for station number #');
    394                         fielddisplay(obj,'input_snowfile1','File name for the initial snow profile for station number #');
     388                        fielddisplay(self,'input_coordsys','coordinates in the Swiss Grid (http://geomatics.ladetto.ch/ch1903_wgs84_de.pdf). One of CH1903,UTM,UPS,PROJ4 or LOCAL');
     389                        fielddisplay(self,'input_coordparam',' ');
     390                        fielddisplay(self,'input_time_zone',' ');
     391                        fielddisplay(self,'input_meteo','plugin for METEO data (one of BORMA,COSMO,GEOTOP,GRIB,GS,IMIS,SMET,SNOWPACK');
     392                        fielddisplay(self,'input_meteopath','string containing the path to the xml files.');
     393                        fielddisplay(self,'input_station1','Meteorology file for station number #');
     394                        fielddisplay(self,'input_snowfile1','File name for the initial snow profile for station number #');
    395395                        % }}}
    396396                        disp(sprintf('\n        %s','Output parameters:')); % {{{
    397                         fielddisplay(obj,'output_coordsys','Coordinates in the Swiss Grid http://geomatics.ladetto.ch/ch1903_wgs84_de.pdf. One of CH1903,UTM,UPS,PROJ4 or LOCAL ');
    398                         fielddisplay(obj,'output_coordparam','');
    399                         fielddisplay(obj,'output_time_zone','');
    400                         fielddisplay(obj,'output_meteopath','Path to the outputs (this path MUST exist, it won''t be created)');
    401                         fielddisplay(obj,'output_experiment','Option to give an additional simulation specific output name to the run in addition to "STATION_NAME"');
    402                         fielddisplay(obj,'output_ts_write','Write meteo data out? (0 or 1)');
    403                         fielddisplay(obj,'output_ts_start','When to start writing meteo data out (offset, in days)');
    404                         fielddisplay(obj,'output_ts_days_between','How often to write meteo data out (in days: 3 hours=.125, 1 hour=4.1666e-2)');
    405                         fielddisplay(obj,'output_profile','How to write the profiles (default: ASCII, choice is ASCII,IMIS or ASCII IMIS)');
     397                        fielddisplay(self,'output_coordsys','Coordinates in the Swiss Grid http://geomatics.ladetto.ch/ch1903_wgs84_de.pdf. One of CH1903,UTM,UPS,PROJ4 or LOCAL ');
     398                        fielddisplay(self,'output_coordparam','');
     399                        fielddisplay(self,'output_time_zone','');
     400                        fielddisplay(self,'output_meteopath','Path to the outputs (this path MUST exist, it won''t be created)');
     401                        fielddisplay(self,'output_experiment','Option to give an additional simulation specific output name to the run in addition to "STATION_NAME"');
     402                        fielddisplay(self,'output_ts_write','Write meteo data out? (0 or 1)');
     403                        fielddisplay(self,'output_ts_start','When to start writing meteo data out (offset, in days)');
     404                        fielddisplay(self,'output_ts_days_between','How often to write meteo data out (in days: 3 hours=.125, 1 hour=4.1666e-2)');
     405                        fielddisplay(self,'output_profile','How to write the profiles (default: ASCII, choice is ASCII,IMIS or ASCII IMIS)');
    406406)');
    407                         fielddisplay(obj,'output_prof_write','Write profile data out? (0 or 1) ');
    408                         fielddisplay(obj,'output_prof_start','When to start writing profile data out (offset, in days)');
    409                         fielddisplay(obj,'output_prof_days_between','How often to write profile data out (in days: 3 hours=.125, 1 hour=4.1666e-2)');
     407                        fielddisplay(self,'output_prof_write','Write profile data out? (0 or 1) ');
     408                        fielddisplay(self,'output_prof_start','When to start writing profile data out (offset, in days)');
     409                        fielddisplay(self,'output_prof_days_between','How often to write profile data out (in days: 3 hours=.125, 1 hour=4.1666e-2)');
    410410                        % }}}
    411411                        disp(sprintf('\n        %s','Interpolations1d parameters:')); % {{{
    412                         fielddisplay(obj,'interpolations1d_window_size','Affects resampling: expresses (in seconds) how far a valid point can be searched for when re-interpolating a missing value');
    413                         fielddisplay(obj,'interpolations1d_hnw_resample','NONE, NEAREST_NEIGHBOUR, ACCUMULATE or LINEAR');
     412                        fielddisplay(self,'interpolations1d_window_size','Affects resampling: expresses (in seconds) how far a valid point can be searched for when re-interpolating a missing value');
     413                        fielddisplay(self,'interpolations1d_hnw_resample','NONE, NEAREST_NEIGHBOUR, ACCUMULATE or LINEAR');
    414414 ');
    415                         fielddisplay(obj,'interpolations1d_hs_resample','Mean average processing. The mean average filter returns the mean value of all values within a user given time window. (NONE, NEAREST_NEIGHBOUR, ACCUMULATE or LINEAR)');
    416                         fielddisplay(obj,'interpolations1d_tsg_resample','Mean average processing. The mean average filter returns the mean value of all values within a user given time window.(NONE, NEAREST_NEIGHBOUR, ACCUMULATE or LINEAR)');
    417                         fielddisplay(obj,'interpolations1d_rho_hn_resample','(NONE, NEAREST_NEIGHBOUR, ACCUMULATE or LINEAR)');
    418                         fielddisplay(obj,'interpolations1d_vw_resample','(NONE, NEAREST_NEIGHBOUR, ACCUMULATE or LINEAR)');
    419                         fielddisplay(obj,'interpolations1d_vw_args','default nothing, otherwise, ''extrapolcate''');
     415                        fielddisplay(self,'interpolations1d_hs_resample','Mean average processing. The mean average filter returns the mean value of all values within a user given time window. (NONE, NEAREST_NEIGHBOUR, ACCUMULATE or LINEAR)');
     416                        fielddisplay(self,'interpolations1d_tsg_resample','Mean average processing. The mean average filter returns the mean value of all values within a user given time window.(NONE, NEAREST_NEIGHBOUR, ACCUMULATE or LINEAR)');
     417                        fielddisplay(self,'interpolations1d_rho_hn_resample','(NONE, NEAREST_NEIGHBOUR, ACCUMULATE or LINEAR)');
     418                        fielddisplay(self,'interpolations1d_vw_resample','(NONE, NEAREST_NEIGHBOUR, ACCUMULATE or LINEAR)');
     419                        fielddisplay(self,'interpolations1d_vw_args','default nothing, otherwise, ''extrapolcate''');
    420420                        % }}}
    421421                        disp(sprintf('\n        %s','Filters parameters:')); % {{{
    422                         fielddisplay(obj,'filters_ta_filter1',' ');
    423                         fielddisplay(obj,'filters_ta_arg1','');
    424                         fielddisplay(obj,'filters_rh_filter1',' ');
    425                         fielddisplay(obj,'filters_rh_arg1','');
    426                         fielddisplay(obj,'filters_rh_filter2',' ');
    427                         fielddisplay(obj,'filters_rh_arg2','');
    428                         fielddisplay(obj,'filters_iswr_filter1',' ');
    429                         fielddisplay(obj,'filters_iswr_arg1','');
    430                         fielddisplay(obj,'filters_iswr_filter2',' ');
    431                         fielddisplay(obj,'filters_iswr_arg2','');
    432                         fielddisplay(obj,'filters_rswr_filter1',' ');
    433                         fielddisplay(obj,'filters_rswr_arg1','');
    434                         fielddisplay(obj,'filters_rswr_filter2',' ');
    435                         fielddisplay(obj,'filters_rswr_arg2','');
     422                        fielddisplay(self,'filters_ta_filter1',' ');
     423                        fielddisplay(self,'filters_ta_arg1','');
     424                        fielddisplay(self,'filters_rh_filter1',' ');
     425                        fielddisplay(self,'filters_rh_arg1','');
     426                        fielddisplay(self,'filters_rh_filter2',' ');
     427                        fielddisplay(self,'filters_rh_arg2','');
     428                        fielddisplay(self,'filters_iswr_filter1',' ');
     429                        fielddisplay(self,'filters_iswr_arg1','');
     430                        fielddisplay(self,'filters_iswr_filter2',' ');
     431                        fielddisplay(self,'filters_iswr_arg2','');
     432                        fielddisplay(self,'filters_rswr_filter1',' ');
     433                        fielddisplay(self,'filters_rswr_arg1','');
     434                        fielddisplay(self,'filters_rswr_filter2',' ');
     435                        fielddisplay(self,'filters_rswr_arg2','');
    436436
    437437                        %for ta between 190 and 280 k;
    438                         fielddisplay(obj,'filters_ilwr_filter1',' ');
    439                         fielddisplay(obj,'filters_ilwr_arg1','');
    440                         fielddisplay(obj,'filters_ilwr_filter2',' ');
    441                         fielddisplay(obj,'filters_ilwr_arg2','');
    442                         fielddisplay(obj,'filters_tss_filter1',' ');
    443                         fielddisplay(obj,'filters_tss_arg1','');
    444                         fielddisplay(obj,'filters_tsg_filter1',' ');
    445                         fielddisplay(obj,'filters_tsg_arg1','');
    446                         fielddisplay(obj,'filters_vw_filter1',' ');
    447                         fielddisplay(obj,'filters_vw_arg1','');
    448                         fielddisplay(obj,'filters_vw_filter2',' ');
    449                         fielddisplay(obj,'filters_vw_arg2','');
     438                        fielddisplay(self,'filters_ilwr_filter1',' ');
     439                        fielddisplay(self,'filters_ilwr_arg1','');
     440                        fielddisplay(self,'filters_ilwr_filter2',' ');
     441                        fielddisplay(self,'filters_ilwr_arg2','');
     442                        fielddisplay(self,'filters_tss_filter1',' ');
     443                        fielddisplay(self,'filters_tss_arg1','');
     444                        fielddisplay(self,'filters_tsg_filter1',' ');
     445                        fielddisplay(self,'filters_tsg_arg1','');
     446                        fielddisplay(self,'filters_vw_filter1',' ');
     447                        fielddisplay(self,'filters_vw_arg1','');
     448                        fielddisplay(self,'filters_vw_filter2',' ');
     449                        fielddisplay(self,'filters_vw_arg2','');
    450450                        % }}}
    451451
    452452                end % }}}
    453                 function marshall(obj,md,fid) % {{{
     453                function marshall(self,md,fid) % {{{
    454454
    455455                        yts=365.0*24.0*3600.0;
    456456
    457                         WriteData(fid,'object',obj,'class','snowpack','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
    458                         WriteData(fid,'object',obj,'class','snowpack','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
    459                         WriteData(fid,'object',obj,'class','snowpack','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
    460                         WriteData(fid,'object',obj,'class','snowpack','fieldname','restol','format','Double');
    461                         WriteData(fid,'object',obj,'class','snowpack','fieldname','reltol','format','Double');
    462                         WriteData(fid,'object',obj,'class','snowpack','fieldname','abstol','format','Double');
    463                         WriteData(fid,'object',obj,'class','snowpack','fieldname','isnewton','format','Integer');
    464                         WriteData(fid,'object',obj,'class','snowpack','fieldname','FSreconditioning','format','Double');
    465                         WriteData(fid,'object',obj,'class','snowpack','fieldname','viscosity_overshoot','format','Double');
    466                         WriteData(fid,'object',obj,'class','snowpack','fieldname','maxiter','format','Integer');
    467                         WriteData(fid,'object',obj,'class','snowpack','fieldname','shelf_dampening','format','Integer');
    468                         WriteData(fid,'object',obj,'class','snowpack','fieldname','vertex_pairing','format','DoubleMat','mattype',3);
    469                         WriteData(fid,'object',obj,'class','snowpack','fieldname','penalty_factor','format','Double');
    470                         WriteData(fid,'object',obj,'class','snowpack','fieldname','rift_penalty_lock','format','Integer');
    471                         WriteData(fid,'object',obj,'class','snowpack','fieldname','rift_penalty_threshold','format','Integer');
    472                         WriteData(fid,'object',obj,'class','snowpack','fieldname','referential','format','DoubleMat','mattype',1);
    473                         WriteData(fid,'object',obj,'class','snowpack','fieldname','requested_outputs','format','StringArray');
    474                         WriteData(fid,'data',obj.loadingforce(:,1),'format','DoubleMat','mattype',1,'enum',LoadingforceXEnum);
    475                         WriteData(fid,'data',obj.loadingforce(:,2),'format','DoubleMat','mattype',1,'enum',LoadingforceYEnum);
    476                         WriteData(fid,'data',obj.loadingforce(:,3),'format','DoubleMat','mattype',1,'enum',LoadingforceZEnum);
     457                        WriteData(fid,'object',self,'class','snowpack','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
     458                        WriteData(fid,'object',self,'class','snowpack','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
     459                        WriteData(fid,'object',self,'class','snowpack','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
     460                        WriteData(fid,'object',self,'class','snowpack','fieldname','restol','format','Double');
     461                        WriteData(fid,'object',self,'class','snowpack','fieldname','reltol','format','Double');
     462                        WriteData(fid,'object',self,'class','snowpack','fieldname','abstol','format','Double');
     463                        WriteData(fid,'object',self,'class','snowpack','fieldname','isnewton','format','Integer');
     464                        WriteData(fid,'object',self,'class','snowpack','fieldname','FSreconditioning','format','Double');
     465                        WriteData(fid,'object',self,'class','snowpack','fieldname','viscosity_overshoot','format','Double');
     466                        WriteData(fid,'object',self,'class','snowpack','fieldname','maxiter','format','Integer');
     467                        WriteData(fid,'object',self,'class','snowpack','fieldname','shelf_dampening','format','Integer');
     468                        WriteData(fid,'object',self,'class','snowpack','fieldname','vertex_pairing','format','DoubleMat','mattype',3);
     469                        WriteData(fid,'object',self,'class','snowpack','fieldname','penalty_factor','format','Double');
     470                        WriteData(fid,'object',self,'class','snowpack','fieldname','rift_penalty_lock','format','Integer');
     471                        WriteData(fid,'object',self,'class','snowpack','fieldname','rift_penalty_threshold','format','Integer');
     472                        WriteData(fid,'object',self,'class','snowpack','fieldname','referential','format','DoubleMat','mattype',1);
     473                        WriteData(fid,'object',self,'class','snowpack','fieldname','requested_outputs','format','StringArray');
     474                        WriteData(fid,'data',self.loadingforce(:,1),'format','DoubleMat','mattype',1,'enum',LoadingforceXEnum);
     475                        WriteData(fid,'data',self.loadingforce(:,2),'format','DoubleMat','mattype',1,'enum',LoadingforceYEnum);
     476                        WriteData(fid,'data',self.loadingforce(:,3),'format','DoubleMat','mattype',1,'enum',LoadingforceZEnum);
    477477                end % }}}
    478478        end
  • issm/trunk-jpl/src/m/classes/spheremesh.m

    r17559 r19040  
    2222        end
    2323        methods
    24                 function obj = spheremesh(varargin) % {{{
     24                function self = spheremesh(varargin) % {{{
    2525                        switch nargin
    2626                                case 0
    27                                         obj=setdefaultparameters(obj);
     27                                        self=setdefaultparameters(self);
    2828                                otherwise
    2929                                        error('constructor not supported');
    3030                        end
    3131                end % }}}
    32                 function obj = setdefaultparameters(obj) % {{{
     32                function self = setdefaultparameters(self) % {{{
    3333
    3434                        %the connectivity is the avergaded number of nodes linked to a
     
    3737                        %give a good memory/time ration. This value can be checked in
    3838                        %trunk/test/Miscellaneous/runme.m
    39                         obj.average_vertex_connectivity=25;
     39                        self.average_vertex_connectivity=25;
    4040                end % }}}
    41                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     41                function md = checkconsistency(self,md,solution,analyses) % {{{
    4242
    4343                        md = checkfield(md,'fieldname','spheremesh.x','NaN',1,'size',[md.spheremesh.numberofvertices 1]);
     
    5757                        md = checkfield(md,'fieldname','spheremesh.elementconnectivity','size',[md.spheremesh.numberofelements 3],'NaN',1);
    5858                end % }}}
    59                 function disp(obj) % {{{
     59                function disp(self) % {{{
    6060                        disp(sprintf('   Mesh:'));
    6161
    6262                        disp(sprintf('\n      Elements and vertices:'));
    63                         fielddisplay(obj,'numberofelements','number of elements');
    64                         fielddisplay(obj,'numberofvertices','number of vertices');
    65                         fielddisplay(obj,'elements','vertex indices of the mesh elements');
    66                         fielddisplay(obj,'x','vertices x coordinate [m]');
    67                         fielddisplay(obj,'y','vertices y coordinate [m]');
    68                         fielddisplay(obj,'z','vertices z coordinate [m]');
    69                         fielddisplay(obj,'r','vertices r coordinate [m]');
    70                         fielddisplay(obj,'theta','vertices theta coordinate [degrees]');
    71                         fielddisplay(obj,'phi','vertices phi coordinate [degrees]');
     63                        fielddisplay(self,'numberofelements','number of elements');
     64                        fielddisplay(self,'numberofvertices','number of vertices');
     65                        fielddisplay(self,'elements','vertex indices of the mesh elements');
     66                        fielddisplay(self,'x','vertices x coordinate [m]');
     67                        fielddisplay(self,'y','vertices y coordinate [m]');
     68                        fielddisplay(self,'z','vertices z coordinate [m]');
     69                        fielddisplay(self,'r','vertices r coordinate [m]');
     70                        fielddisplay(self,'theta','vertices theta coordinate [degrees]');
     71                        fielddisplay(self,'phi','vertices phi coordinate [degrees]');
    7272
    7373                        disp(sprintf('\n      Properties:'));
    74                         fielddisplay(obj,'numberoflayers','number of extrusion layers');
     74                        fielddisplay(self,'numberoflayers','number of extrusion layers');
    7575
    76                         fielddisplay(obj,'vertexconnectivity','list of vertices connected to vertex_i');
    77                         fielddisplay(obj,'elementconnectivity','list of vertices connected to element_i');
    78                         fielddisplay(obj,'average_vertex_connectivity','average number of vertices connected to one vertex');
     76                        fielddisplay(self,'vertexconnectivity','list of vertices connected to vertex_i');
     77                        fielddisplay(self,'elementconnectivity','list of vertices connected to element_i');
     78                        fielddisplay(self,'average_vertex_connectivity','average number of vertices connected to one vertex');
    7979
    8080                end % }}}
    81                 function marshall(obj,md,fid) % {{{
    82                         WriteData(fid,'object',obj,'fieldname','x','format','DoubleMat','mattype',1);
    83                         WriteData(fid,'object',obj,'fieldname','y','format','DoubleMat','mattype',1);
    84                         WriteData(fid,'object',obj,'fieldname','z','format','DoubleMat','mattype',1);
    85                         WriteData(fid,'object',obj,'fieldname','r','format','DoubleMat','mattype',1);
    86                         WriteData(fid,'object',obj,'fieldname','theta','format','DoubleMat','mattype',1);
    87                         WriteData(fid,'object',obj,'fieldname','phi','format','DoubleMat','mattype',1);
    88                         WriteData(fid,'object',obj,'fieldname','elements','format','DoubleMat','mattype',2);
    89                         WriteData(fid,'object',obj,'fieldname','numberoflayers','format','Integer');
    90                         WriteData(fid,'object',obj,'fieldname','numberofelements','format','Integer');
    91                         WriteData(fid,'object',obj,'fieldname','numberofvertices','format','Integer');
    92                         WriteData(fid,'object',obj,'fieldname','elementconnectivity','format','DoubleMat','mattype',3);
    93                         WriteData(fid,'object',obj,'fieldname','average_vertex_connectivity','format','Integer');
     81                function marshall(self,md,fid) % {{{
     82                        WriteData(fid,'object',self,'fieldname','x','format','DoubleMat','mattype',1);
     83                        WriteData(fid,'object',self,'fieldname','y','format','DoubleMat','mattype',1);
     84                        WriteData(fid,'object',self,'fieldname','z','format','DoubleMat','mattype',1);
     85                        WriteData(fid,'object',self,'fieldname','r','format','DoubleMat','mattype',1);
     86                        WriteData(fid,'object',self,'fieldname','theta','format','DoubleMat','mattype',1);
     87                        WriteData(fid,'object',self,'fieldname','phi','format','DoubleMat','mattype',1);
     88                        WriteData(fid,'object',self,'fieldname','elements','format','DoubleMat','mattype',2);
     89                        WriteData(fid,'object',self,'fieldname','numberoflayers','format','Integer');
     90                        WriteData(fid,'object',self,'fieldname','numberofelements','format','Integer');
     91                        WriteData(fid,'object',self,'fieldname','numberofvertices','format','Integer');
     92                        WriteData(fid,'object',self,'fieldname','elementconnectivity','format','DoubleMat','mattype',3);
     93                        WriteData(fid,'object',self,'fieldname','average_vertex_connectivity','format','Integer');
    9494                end % }}}
    9595        end
  • issm/trunk-jpl/src/m/classes/steadystate.m

    r17720 r19040  
    1111        end
    1212        methods
    13         function createxml(obj,fid) % {{{
     13        function createxml(self,fid) % {{{
    1414            fprintf(fid, '<!-- steadystate -->\n');           
    1515                   
    1616            % steadystate solution parameters
    1717            fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="steadystate solution parameters">','<section name="steadystate" />');                   
    18                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="reltol" type="',class(obj.reltol),'" default="',convert2str(obj.reltol),'">','     <section name="steadystate" />','     <help> relative tolerance criterion [K] </help>','  </parameter>');
    19                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="maxiter" type="',class(obj.maxiter),'" default="',convert2str(obj.maxiter),'">','     <section name="steadystate" />','     <help> maximum number of iterations </help>','  </parameter>');
    20                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="requested_outputs" type="',class(obj.requested_outputs),'" default="',convert2str(obj.requested_outputs),'">','     <section name="steadystate" />','     <help> additional requested outputs </help>','  </parameter>');
     18                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="reltol" type="',class(self.reltol),'" default="',convert2str(self.reltol),'">','     <section name="steadystate" />','     <help> relative tolerance criterion [K] </help>','  </parameter>');
     19                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="maxiter" type="',class(self.maxiter),'" default="',convert2str(self.maxiter),'">','     <section name="steadystate" />','     <help> maximum number of iterations </help>','  </parameter>');
     20                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="requested_outputs" type="',class(self.requested_outputs),'" default="',convert2str(self.requested_outputs),'">','     <section name="steadystate" />','     <help> additional requested outputs </help>','  </parameter>');
    2121            fprintf(fid,'%s\n%s\n','</frame>');   
    2222       
    2323        end % }}}
    24                 function obj = steadystate(varargin) % {{{
     24                function self = steadystate(varargin) % {{{
    2525                        switch nargin
    2626                                case 0
    27                                         obj=setdefaultparameters(obj);
     27                                        self=setdefaultparameters(self);
    2828                                otherwise
    2929                                        error('constructor not supported');
    3030                        end
    3131                end % }}}
    32                 function obj = setdefaultparameters(obj) % {{{
     32                function self = setdefaultparameters(self) % {{{
    3333                        %maximum of steady state iterations
    34                         obj.maxiter=100;
     34                        self.maxiter=100;
    3535
    3636                        %Relative tolerance for the steadystate convertgence
    37                         obj.reltol=0.01;
     37                        self.reltol=0.01;
    3838
    3939                        %default output
    40                         obj.requested_outputs={'default'};
     40                        self.requested_outputs={'default'};
    4141                end % }}}
    4242                function list=defaultoutputs(self,md) % {{{
     
    4545
    4646                end % }}}
    47                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     47                function md = checkconsistency(self,md,solution,analyses) % {{{
    4848
    4949                        %Early return
     
    5959                        end
    6060                end % }}}
    61                 function disp(obj) % {{{
     61                function disp(self) % {{{
    6262                        disp(sprintf('   steadystate solution parameters:'));
    6363
    64                         fielddisplay(obj,'reltol','relative tolerance criterion');
    65                         fielddisplay(obj,'maxiter','maximum number of iterations');
    66                         fielddisplay(obj,'requested_outputs','additional requested outputs');
     64                        fielddisplay(self,'reltol','relative tolerance criterion');
     65                        fielddisplay(self,'maxiter','maximum number of iterations');
     66                        fielddisplay(self,'requested_outputs','additional requested outputs');
    6767
    6868                end % }}}
    69                 function marshall(obj,md,fid) % {{{
    70                         WriteData(fid,'object',obj,'fieldname','reltol','format','Double');
    71                         WriteData(fid,'object',obj,'fieldname','maxiter','format','Integer');
     69                function marshall(self,md,fid) % {{{
     70                        WriteData(fid,'object',self,'fieldname','reltol','format','Double');
     71                        WriteData(fid,'object',self,'fieldname','maxiter','format','Integer');
    7272
    7373                        %process requested outputs
    74                         outputs = obj.requested_outputs;
     74                        outputs = self.requested_outputs;
    7575                        pos  = find(ismember(outputs,'default'));
    7676                        if ~isempty(pos),
    7777                                outputs(pos) = [];                         %remove 'default' from outputs
    78                                 outputs      = [outputs defaultoutputs(obj,md)]; %add defaults
     78                                outputs      = [outputs defaultoutputs(self,md)]; %add defaults
    7979                        end
    8080                        WriteData(fid,'data',outputs,'enum',SteadystateRequestedOutputsEnum,'format','StringArray');
  • issm/trunk-jpl/src/m/classes/stressbalance.m

    r19027 r19040  
    2626        end
    2727        methods
    28                 function createxml(obj,fid) % {{{
     28                function createxml(self,fid) % {{{
    2929                        fprintf(fid, '\n\n');
    3030                        fprintf(fid, '%s\n', '<!-- StressBalance solution parameters: -->');
     
    3232                        % Convergence criteria           
    3333                        fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Convergence criteria">','<section name="stressbalance" />');
    34                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="restol" type="',      class(obj.restol),'" default="',        convert2str(obj.restol),'">',        '     <section name="stressbalance" />','     <help> mechanical equilibrium residual convergence criterion </help>','</parameter>');
    35                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="reltol" type="',          class(obj.reltol),'" default="',            convert2str(obj.reltol),'">',     '     <section name="stressbalance" />','     <help> velocity relative convergence criterion, NaN: not applied </help>','</parameter>');
    36                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '<parameter key ="abstol" type="',        class(obj.abstol),'" default="',          convert2str(obj.abstol),'">',       '     <section name="stressbalance" />','     <help> velocity absolute convergence criterion, NaN: not applied </help>','</parameter>');
     34                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="restol" type="',      class(self.restol),'" default="',        convert2str(self.restol),'">',      '     <section name="stressbalance" />','     <help> mechanical equilibrium residual convergence criterion </help>','</parameter>');
     35                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="reltol" type="',          class(self.reltol),'" default="',            convert2str(self.reltol),'">',     '     <section name="stressbalance" />','     <help> velocity relative convergence criterion, NaN: not applied </help>','</parameter>');
     36                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '<parameter key ="abstol" type="',        class(self.abstol),'" default="',          convert2str(self.abstol),'">',     '     <section name="stressbalance" />','     <help> velocity absolute convergence criterion, NaN: not applied </help>','</parameter>');
    3737
    3838                        %is newton drop-down (0,1,or 2)
     
    4242                        fprintf(fid,'%s\n%s\n','       <option value="2" type="string" default="false"> </option>','</parameter>');
    4343
    44                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="maxiter" type="',          class(obj.maxiter),'" default="',       convert2str(obj.maxiter),'">',     '     <section name="stressbalance" />','     <help> maximum number of nonlinear iterations </help>','</parameter>');
    45                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="viscosity_overshoot" type="',         class(obj.viscosity_overshoot),'" default="',           convert2str(obj.viscosity_overshoot),'">',   '     <section name="stressbalance" />','     <help> over-shooting constant new=new+C*(new-old) </help>','</parameter>');
     44                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="maxiter" type="',          class(self.maxiter),'" default="',       convert2str(self.maxiter),'">',     '     <section name="stressbalance" />','     <help> maximum number of nonlinear iterations </help>','</parameter>');
     45                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="viscosity_overshoot" type="',         class(self.viscosity_overshoot),'" default="',           convert2str(self.viscosity_overshoot),'">', '     <section name="stressbalance" />','     <help> over-shooting constant new=new+C*(new-old) </help>','</parameter>');
    4646                        fprintf(fid,'%s\n%s\n','</frame>');
    4747
    4848                        % boundary conditions   
    4949                        fprintf(fid,'%s\n%s\n%s\n','<frame key="2" label="Boundary conditions">','<section name="stressbalance" />');                   
    50                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="spcvx" type="',            class(obj.spcvx),'" default="',         convert2str(obj.spcvx),'">',     '     <section name="stressbalance" />','     <help> x-axis velocity constraint (NaN means no constraint) [m/yr] </help>','</parameter>');
    51                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="spcvy" type="',            class(obj.spcvy),'" default="',         convert2str(obj.spcvy),'">',    '     <section name="stressbalance" />','     <help> y-axis velocity constraint (NaN means no constraint) [m/yr] </help>','</parameter>');
    52                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="spcvz" type="',            class(obj.spcvz),'" default="',         convert2str(obj.spcvz),'">',     '     <section name="stressbalance" />','     <help> z-axis velocity constraint (NaN means no constraint) [m/yr] </help>','</parameter>');
     50                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="spcvx" type="',            class(self.spcvx),'" default="',        convert2str(self.spcvx),'">',     '     <section name="stressbalance" />','     <help> x-axis velocity constraint (NaN means no constraint) [m/yr] </help>','</parameter>');
     51                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="spcvy" type="',            class(self.spcvy),'" default="',        convert2str(self.spcvy),'">',   '     <section name="stressbalance" />','     <help> y-axis velocity constraint (NaN means no constraint) [m/yr] </help>','</parameter>');
     52                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="spcvz" type="',            class(self.spcvz),'" default="',        convert2str(self.spcvz),'">',     '     <section name="stressbalance" />','     <help> z-axis velocity constraint (NaN means no constraint) [m/yr] </help>','</parameter>');
    5353                        fprintf(fid,'%s\n%s\n','</frame>');
    5454
    5555                        % Rift options   
    5656                        fprintf(fid,'%s\n%s\n%s\n','<frame key="3" label="Rift options">','<section name="stressbalance" />'); 
    57                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="rift_penalty_threshold" type="',           class(obj.rift_penalty_threshold),'" default="',       convert2str(obj.rift_penalty_threshold),'">',     '     <section name="stressbalance" />','     <help> threshold for instability of mechanical constraints </help>','</parameter>');
    58                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',         '<parameter key ="rift_penalty_lock" type="',         class(obj.rift_penalty_lock),'" default="',           convert2str(obj.rift_penalty_lock),'">',    '     <section name="stressbalance" />','     <help> number of iterations before rift penalties are locked </help>','</parameter>');
     57                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="rift_penalty_threshold" type="',           class(self.rift_penalty_threshold),'" default="',       convert2str(self.rift_penalty_threshold),'">',     '     <section name="stressbalance" />','     <help> threshold for instability of mechanical constraints </help>','</parameter>');
     58                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',         '<parameter key ="rift_penalty_lock" type="',         class(self.rift_penalty_lock),'" default="',           convert2str(self.rift_penalty_lock),'">',  '     <section name="stressbalance" />','     <help> number of iterations before rift penalties are locked </help>','</parameter>');
    5959                        fprintf(fid,'%s\n%s\n','</frame>');
    6060
    6161                        %others
    6262                        fprintf(fid,'%s\n%s\n%s\n','<frame key="4" label="Other">','<section name="stressbalance" />');         
    63                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="shelf_dampening" type="',          class(obj.shelf_dampening),'" default="',       convert2str(obj.shelf_dampening),'">',     '     <section name="stressbalance" />','     <help> use dampening for floating ice ? Only for FS model </help>','</parameter>');
    64                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',         '<parameter key ="FSreconditioning" type="',    class(obj.FSreconditioning),'" default="',           convert2str(obj.FSreconditioning),'">',    '     <section name="stressbalance" />','     <help> multiplier for incompressibility equation. Only for FS model </help>','</parameter>');
    65                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="referential" type="',      class(obj.referential),'" default="',       convert2str(obj.referential),'">',     '     <section name="stressbalance" />','     <help> local referential </help>','</parameter>');
    66                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',         '<parameter key ="loadingforce" type="',        class(obj.loadingforce),'" default="',           convert2str(obj.loadingforce),'">',    '     <section name="stressbalance" />','     <help> loading force applied on each point [N/m^3] </help>','</parameter>');
    67                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="requested_outputs" type="',        class(obj.requested_outputs),'" default="',       convert2str(obj.requested_outputs),'">',     '     <section name="stressbalance" />','     <help> additional outputs requested </help>','</parameter>');
     63                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="shelf_dampening" type="',          class(self.shelf_dampening),'" default="',       convert2str(self.shelf_dampening),'">',     '     <section name="stressbalance" />','     <help> use dampening for floating ice ? Only for FS model </help>','</parameter>');
     64                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',         '<parameter key ="FSreconditioning" type="',    class(self.FSreconditioning),'" default="',           convert2str(self.FSreconditioning),'">',  '     <section name="stressbalance" />','     <help> multiplier for incompressibility equation. Only for FS model </help>','</parameter>');
     65                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="referential" type="',      class(self.referential),'" default="',       convert2str(self.referential),'">',     '     <section name="stressbalance" />','     <help> local referential </help>','</parameter>');
     66                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',         '<parameter key ="loadingforce" type="',        class(self.loadingforce),'" default="',           convert2str(self.loadingforce),'">',  '     <section name="stressbalance" />','     <help> loading force applied on each point [N/m^3] </help>','</parameter>');
     67                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="requested_outputs" type="',        class(self.requested_outputs),'" default="',       convert2str(self.requested_outputs),'">',     '     <section name="stressbalance" />','     <help> additional outputs requested </help>','</parameter>');
    6868
    6969
    7070                        fprintf(fid,'%s\n%s\n','</frame>');
    7171                end % }}}
    72                 function obj = stressbalance(varargin) % {{{
     72                function self = stressbalance(varargin) % {{{
    7373                        switch nargin
    7474                                case 0
    75                                         obj=setdefaultparameters(obj);
     75                                        self=setdefaultparameters(self);
    7676                                case 1
    7777                                        inputstruct=varargin{1};
     
    8181                                                fieldname = list1{i};
    8282                                                if ismember(fieldname,list2),
    83                                                         obj.(fieldname) = inputstruct.(fieldname);
     83                                                        self.(fieldname) = inputstruct.(fieldname);
    8484                                                end
    8585                                        end
     
    8888                        end
    8989                end % }}}
    90                 function obj = setdefaultparameters(obj) % {{{
     90                function self = setdefaultparameters(self) % {{{
    9191
    9292                         %maximum of non-linear iterations.
    93                          obj.maxiter=100;
     93                         self.maxiter=100;
    9494
    9595                         %Convergence criterion: absolute, relative and residual
    96                          obj.restol=10^-4;
    97                          obj.reltol=0.01;
    98                          obj.abstol=10;
    99 
    100                          obj.FSreconditioning=10^13;
    101                          obj.shelf_dampening=0;
     96                         self.restol=10^-4;
     97                         self.reltol=0.01;
     98                         self.abstol=10;
     99
     100                         self.FSreconditioning=10^13;
     101                         self.shelf_dampening=0;
    102102
    103103                         %Penalty factor applied kappa=max(stiffness matrix)*10^penalty_factor
    104                          obj.penalty_factor=3;
     104                         self.penalty_factor=3;
    105105
    106106                         %coefficient to update the viscosity between each iteration of
    107107                         %a stressbalance according to the following formula
    108108                         %viscosity(n)=viscosity(n)+viscosity_overshoot(viscosity(n)-viscosity(n-1))
    109                          obj.viscosity_overshoot=0;
     109                         self.viscosity_overshoot=0;
    110110
    111111                         %Stop the iterations of rift if below a threshold
    112                          obj.rift_penalty_threshold=0;
     112                         self.rift_penalty_threshold=0;
    113113
    114114                         %in some solutions, it might be needed to stop a run when only
    115115                         %a few constraints remain unstable. For thermal computation, this
    116116                         %parameter is often used.
    117                          obj.rift_penalty_lock=10;
     117                         self.rift_penalty_lock=10;
    118118
    119119                         %output default:
    120                          obj.requested_outputs={'default'};
    121 
    122                 end % }}}
    123                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     120                         self.requested_outputs={'default'};
     121
     122                end % }}}
     123                function md = checkconsistency(self,md,solution,analyses) % {{{
    124124
    125125                        %Early return
     
    175175
    176176                end % }}}
    177                 function disp(obj) % {{{
     177                function disp(self) % {{{
    178178
    179179                        disp(sprintf('   StressBalance solution parameters:'));
    180180
    181181                        disp(sprintf('\n      %s','Convergence criteria:'));
    182                         fielddisplay(obj,'restol','mechanical equilibrium residual convergence criterion');
    183                         fielddisplay(obj,'reltol','velocity relative convergence criterion, NaN: not applied');
    184                         fielddisplay(obj,'abstol','velocity absolute convergence criterion, NaN: not applied');
    185                         fielddisplay(obj,'isnewton','0: Picard''s fixed point, 1: Newton''s method, 2: hybrid');
    186                         fielddisplay(obj,'maxiter','maximum number of nonlinear iterations');
    187                         fielddisplay(obj,'viscosity_overshoot','over-shooting constant new=new+C*(new-old)');
     182                        fielddisplay(self,'restol','mechanical equilibrium residual convergence criterion');
     183                        fielddisplay(self,'reltol','velocity relative convergence criterion, NaN: not applied');
     184                        fielddisplay(self,'abstol','velocity absolute convergence criterion, NaN: not applied');
     185                        fielddisplay(self,'isnewton','0: Picard''s fixed point, 1: Newton''s method, 2: hybrid');
     186                        fielddisplay(self,'maxiter','maximum number of nonlinear iterations');
     187                        fielddisplay(self,'viscosity_overshoot','over-shooting constant new=new+C*(new-old)');
    188188
    189189                        disp(sprintf('\n      %s','boundary conditions:'));
    190                         fielddisplay(obj,'spcvx','x-axis velocity constraint (NaN means no constraint) [m/yr]');
    191                         fielddisplay(obj,'spcvy','y-axis velocity constraint (NaN means no constraint) [m/yr]');
    192                         fielddisplay(obj,'spcvz','z-axis velocity constraint (NaN means no constraint) [m/yr]');
     190                        fielddisplay(self,'spcvx','x-axis velocity constraint (NaN means no constraint) [m/yr]');
     191                        fielddisplay(self,'spcvy','y-axis velocity constraint (NaN means no constraint) [m/yr]');
     192                        fielddisplay(self,'spcvz','z-axis velocity constraint (NaN means no constraint) [m/yr]');
    193193
    194194                        disp(sprintf('\n      %s','Rift options:'));
    195                         fielddisplay(obj,'rift_penalty_threshold','threshold for instability of mechanical constraints');
    196                         fielddisplay(obj,'rift_penalty_lock','number of iterations before rift penalties are locked');
     195                        fielddisplay(self,'rift_penalty_threshold','threshold for instability of mechanical constraints');
     196                        fielddisplay(self,'rift_penalty_lock','number of iterations before rift penalties are locked');
    197197
    198198                        disp(sprintf('\n      %s','Penalty options:'));
    199                         fielddisplay(obj,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset');
    200                         fielddisplay(obj,'vertex_pairing','pairs of vertices that are penalized');
     199                        fielddisplay(self,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset');
     200                        fielddisplay(self,'vertex_pairing','pairs of vertices that are penalized');
    201201
    202202                        disp(sprintf('\n      %s','Other:'));
    203                         fielddisplay(obj,'shelf_dampening','use dampening for floating ice ? Only for FS model');
    204                         fielddisplay(obj,'FSreconditioning','multiplier for incompressibility equation. Only for FS model');
    205                         fielddisplay(obj,'referential','local referential');
    206                         fielddisplay(obj,'loadingforce','loading force applied on each point [N/m^3]');
    207                         fielddisplay(obj,'requested_outputs','additional outputs requested');
    208 
    209                 end % }}}
    210                 function marshall(obj,md,fid) % {{{
    211 
    212                         WriteData(fid,'object',obj,'class','stressbalance','fieldname','vertex_pairing','format','DoubleMat','mattype',3);
     203                        fielddisplay(self,'shelf_dampening','use dampening for floating ice ? Only for FS model');
     204                        fielddisplay(self,'FSreconditioning','multiplier for incompressibility equation. Only for FS model');
     205                        fielddisplay(self,'referential','local referential');
     206                        fielddisplay(self,'loadingforce','loading force applied on each point [N/m^3]');
     207                        fielddisplay(self,'requested_outputs','additional outputs requested');
     208
     209                end % }}}
     210                function marshall(self,md,fid) % {{{
     211
     212                        WriteData(fid,'object',self,'class','stressbalance','fieldname','vertex_pairing','format','DoubleMat','mattype',3);
    213213
    214214                        if md.private.solution==SeaiceSolutionEnum,
     
    218218                        yts=365.0*24.0*3600.0;
    219219
    220                         WriteData(fid,'object',obj,'class','stressbalance','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
    221                         WriteData(fid,'object',obj,'class','stressbalance','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
    222                         WriteData(fid,'object',obj,'class','stressbalance','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
    223                         WriteData(fid,'object',obj,'class','stressbalance','fieldname','restol','format','Double');
    224                         WriteData(fid,'object',obj,'class','stressbalance','fieldname','reltol','format','Double');
    225                         WriteData(fid,'object',obj,'class','stressbalance','fieldname','abstol','format','Double','scale',1./yts);
    226                         WriteData(fid,'object',obj,'class','stressbalance','fieldname','isnewton','format','Integer');
    227                         WriteData(fid,'object',obj,'class','stressbalance','fieldname','FSreconditioning','format','Double');
    228                         WriteData(fid,'object',obj,'class','stressbalance','fieldname','viscosity_overshoot','format','Double');
    229                         WriteData(fid,'object',obj,'class','stressbalance','fieldname','maxiter','format','Integer');
    230                         WriteData(fid,'object',obj,'class','stressbalance','fieldname','shelf_dampening','format','Integer');
    231                         WriteData(fid,'object',obj,'class','stressbalance','fieldname','penalty_factor','format','Double');
    232                         WriteData(fid,'object',obj,'class','stressbalance','fieldname','rift_penalty_lock','format','Integer');
    233                         WriteData(fid,'object',obj,'class','stressbalance','fieldname','rift_penalty_threshold','format','Integer');
    234                         WriteData(fid,'object',obj,'class','stressbalance','fieldname','referential','format','DoubleMat','mattype',1);
    235 
    236                         WriteData(fid,'data',obj.loadingforce(:,1),'format','DoubleMat','mattype',1,'enum',LoadingforceXEnum);
    237                         WriteData(fid,'data',obj.loadingforce(:,2),'format','DoubleMat','mattype',1,'enum',LoadingforceYEnum);
    238                         WriteData(fid,'data',obj.loadingforce(:,3),'format','DoubleMat','mattype',1,'enum',LoadingforceZEnum);
     220                        WriteData(fid,'object',self,'class','stressbalance','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
     221                        WriteData(fid,'object',self,'class','stressbalance','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
     222                        WriteData(fid,'object',self,'class','stressbalance','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
     223                        WriteData(fid,'object',self,'class','stressbalance','fieldname','restol','format','Double');
     224                        WriteData(fid,'object',self,'class','stressbalance','fieldname','reltol','format','Double');
     225                        WriteData(fid,'object',self,'class','stressbalance','fieldname','abstol','format','Double','scale',1./yts);
     226                        WriteData(fid,'object',self,'class','stressbalance','fieldname','isnewton','format','Integer');
     227                        WriteData(fid,'object',self,'class','stressbalance','fieldname','FSreconditioning','format','Double');
     228                        WriteData(fid,'object',self,'class','stressbalance','fieldname','viscosity_overshoot','format','Double');
     229                        WriteData(fid,'object',self,'class','stressbalance','fieldname','maxiter','format','Integer');
     230                        WriteData(fid,'object',self,'class','stressbalance','fieldname','shelf_dampening','format','Integer');
     231                        WriteData(fid,'object',self,'class','stressbalance','fieldname','penalty_factor','format','Double');
     232                        WriteData(fid,'object',self,'class','stressbalance','fieldname','rift_penalty_lock','format','Integer');
     233                        WriteData(fid,'object',self,'class','stressbalance','fieldname','rift_penalty_threshold','format','Integer');
     234                        WriteData(fid,'object',self,'class','stressbalance','fieldname','referential','format','DoubleMat','mattype',1);
     235
     236                        WriteData(fid,'data',self.loadingforce(:,1),'format','DoubleMat','mattype',1,'enum',LoadingforceXEnum);
     237                        WriteData(fid,'data',self.loadingforce(:,2),'format','DoubleMat','mattype',1,'enum',LoadingforceYEnum);
     238                        WriteData(fid,'data',self.loadingforce(:,3),'format','DoubleMat','mattype',1,'enum',LoadingforceZEnum);
    239239
    240240                        %process requested outputs
    241                         outputs = obj.requested_outputs;
     241                        outputs = self.requested_outputs;
    242242                        pos  = find(ismember(outputs,'default'));
    243243                        if ~isempty(pos),
    244244                                outputs(pos) = [];                         %remove 'default' from outputs
    245                                 outputs      = [outputs defaultoutputs(obj,md)]; %add defaults
     245                                outputs      = [outputs defaultoutputs(self,md)]; %add defaults
    246246                        end
    247247                        WriteData(fid,'data',outputs,'enum',StressbalanceRequestedOutputsEnum,'format','StringArray');
  • issm/trunk-jpl/src/m/classes/taoinversion.m

    r18994 r19040  
    2929        end
    3030        methods
    31                 function obj = taoinversion(varargin) % {{{
     31                function self = taoinversion(varargin) % {{{
    3232                        switch nargin
    3333                                case 0
    34                                         obj=setdefaultparameters(obj);
     34                                        self=setdefaultparameters(self);
    3535                                case 1
    36                                         obj=structtoobj(taoinversion(),varargin{1});
     36                                        self=structtoobj(taoinversion(),varargin{1});
    3737                                otherwise
    3838                                        error('constructor not supported');
    3939                        end
    4040                end % }}}
    41                 function obj = setdefaultparameters(obj) % {{{
     41                function self = setdefaultparameters(self) % {{{
    4242
    4343                        %default is incomplete adjoint for now
    44                         obj.incomplete_adjoint=1;
     44                        self.incomplete_adjoint=1;
    4545
    4646                        %parameter to be inferred by control methods (only
    4747                        %drag and B are supported yet)
    48                         obj.control_parameters={'FrictionCoefficient'};
     48                        self.control_parameters={'FrictionCoefficient'};
    4949
    5050                        %number of iterations and steps
    51                         obj.maxsteps=20;
    52                         obj.maxiter =30;
     51                        self.maxsteps=20;
     52                        self.maxiter =30;
    5353
    5454                        %default tolerances
    55                         obj.fatol = 0;
    56                         obj.frtol = 0;
    57                         obj.gatol = 0;
    58                         obj.grtol = 0;
    59                         obj.gttol = 1e-4;
     55                        self.fatol = 0;
     56                        self.frtol = 0;
     57                        self.gatol = 0;
     58                        self.grtol = 0;
     59                        self.gttol = 1e-4;
    6060
    6161                        %minimization algorithm
     
    6363                        PETSCMINOR = IssmConfig('_PETSC_MINOR_');
    6464                        if(PETSCMAJOR>3 | (PETSCMAJOR==3 & PETSCMINOR>=5))
    65                                 obj.algorithm = 'blmvm';
     65                                self.algorithm = 'blmvm';
    6666                        else
    67                                 obj.algorithm = 'tao_blmvm';
     67                                self.algorithm = 'tao_blmvm';
    6868                        end
    6969
    7070                        %several responses can be used:
    71                         obj.cost_functions=101;
     71                        self.cost_functions=101;
    7272
    7373                end % }}}
    74                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     74                function md = checkconsistency(self,md,solution,analyses) % {{{
    7575
    7676                        %Early return
    77                         if ~obj.iscontrol, return; end
     77                        if ~self.iscontrol, return; end
    7878
    7979                        if ~IssmConfig('_HAVE_TAO_'),
     
    117117                        end
    118118                end % }}}
    119                 function disp(obj) % {{{
     119                function disp(self) % {{{
    120120                        disp(sprintf('   taoinversion parameters:'));
    121                         fielddisplay(obj,'iscontrol','is inversion activated?');
    122                         fielddisplay(obj,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity');
    123                         fielddisplay(obj,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
    124                         fielddisplay(obj,'maxsteps','maximum number of iterations (gradient computation)');
    125                         fielddisplay(obj,'maxiter','maximum number of Function evaluation (forward run)');
    126                         fielddisplay(obj,'fatol','convergence criterion: f(X)-f(X*) (X: current iteration, X*: "true" solution, f: cost function)');
    127                         fielddisplay(obj,'frtol','convergence criterion: |f(X)-f(X*)|/|f(X*)|');
    128                         fielddisplay(obj,'gatol','convergence criterion: ||g(X)|| (g: gradient of the cost function)');
    129                         fielddisplay(obj,'grtol','convergence criterion: ||g(X)||/|f(X)|');
    130                         fielddisplay(obj,'gttol','convergence criterion: ||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)');
    131                         fielddisplay(obj,'algorithm','minimization algorithm: ''tao_blmvm'', ''tao_cg'', ''tao_lmvm''');
    132                         fielddisplay(obj,'cost_functions','indicate the type of response for each optimization step');
    133                         fielddisplay(obj,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
    134                         fielddisplay(obj,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
    135                         fielddisplay(obj,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
    136                         fielddisplay(obj,'vx_obs','observed velocity x component [m/yr]');
    137                         fielddisplay(obj,'vy_obs','observed velocity y component [m/yr]');
    138                         fielddisplay(obj,'vel_obs','observed velocity magnitude [m/yr]');
    139                         fielddisplay(obj,'thickness_obs','observed thickness [m]');
    140                         fielddisplay(obj,'surface_obs','observed surface elevation [m]');
     121                        fielddisplay(self,'iscontrol','is inversion activated?');
     122                        fielddisplay(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity');
     123                        fielddisplay(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
     124                        fielddisplay(self,'maxsteps','maximum number of iterations (gradient computation)');
     125                        fielddisplay(self,'maxiter','maximum number of Function evaluation (forward run)');
     126                        fielddisplay(self,'fatol','convergence criterion: f(X)-f(X*) (X: current iteration, X*: "true" solution, f: cost function)');
     127                        fielddisplay(self,'frtol','convergence criterion: |f(X)-f(X*)|/|f(X*)|');
     128                        fielddisplay(self,'gatol','convergence criterion: ||g(X)|| (g: gradient of the cost function)');
     129                        fielddisplay(self,'grtol','convergence criterion: ||g(X)||/|f(X)|');
     130                        fielddisplay(self,'gttol','convergence criterion: ||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)');
     131                        fielddisplay(self,'algorithm','minimization algorithm: ''tao_blmvm'', ''tao_cg'', ''tao_lmvm''');
     132                        fielddisplay(self,'cost_functions','indicate the type of response for each optimization step');
     133                        fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
     134                        fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
     135                        fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
     136                        fielddisplay(self,'vx_obs','observed velocity x component [m/yr]');
     137                        fielddisplay(self,'vy_obs','observed velocity y component [m/yr]');
     138                        fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]');
     139                        fielddisplay(self,'thickness_obs','observed thickness [m]');
     140                        fielddisplay(self,'surface_obs','observed surface elevation [m]');
    141141                        disp('Available cost functions:');
    142142                        disp('   101: SurfaceAbsVelMisfit');
     
    150150                        disp('   503: ThicknessAbsGradient');
    151151                end % }}}
    152                 function marshall(obj,md,fid) % {{{
     152                function marshall(self,md,fid) % {{{
    153153
    154154                        yts=365.0*24.0*3600.0;
    155155
    156                         WriteData(fid,'object',obj,'class','inversion','fieldname','iscontrol','format','Boolean');
     156                        WriteData(fid,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean');
    157157                        WriteData(fid,'enum',InversionTypeEnum(),'data',1,'format','Integer');
    158                         if ~obj.iscontrol, return; end
    159                         WriteData(fid,'object',obj,'class','inversion','fieldname','incomplete_adjoint','format','Boolean');
    160                         WriteData(fid,'object',obj,'class','inversion','fieldname','maxsteps','format','Integer');
    161                         WriteData(fid,'object',obj,'class','inversion','fieldname','maxiter','format','Integer');
    162                         WriteData(fid,'object',obj,'class','inversion','fieldname','fatol','format','Double');
    163                         WriteData(fid,'object',obj,'class','inversion','fieldname','frtol','format','Double');
    164                         WriteData(fid,'object',obj,'class','inversion','fieldname','gatol','format','Double');
    165                         WriteData(fid,'object',obj,'class','inversion','fieldname','grtol','format','Double');
    166                         WriteData(fid,'object',obj,'class','inversion','fieldname','gttol','format','Double');
    167                         WriteData(fid,'object',obj,'class','inversion','fieldname','algorithm','format','String');
    168                         WriteData(fid,'object',obj,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
    169                         WriteData(fid,'object',obj,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3);
    170                         WriteData(fid,'object',obj,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3);
    171                         WriteData(fid,'object',obj,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
    172                         WriteData(fid,'object',obj,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
    173                         WriteData(fid,'object',obj,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
    174                         WriteData(fid,'object',obj,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',1);
    175                         WriteData(fid,'object',obj,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',1);
     158                        if ~self.iscontrol, return; end
     159                        WriteData(fid,'object',self,'class','inversion','fieldname','incomplete_adjoint','format','Boolean');
     160                        WriteData(fid,'object',self,'class','inversion','fieldname','maxsteps','format','Integer');
     161                        WriteData(fid,'object',self,'class','inversion','fieldname','maxiter','format','Integer');
     162                        WriteData(fid,'object',self,'class','inversion','fieldname','fatol','format','Double');
     163                        WriteData(fid,'object',self,'class','inversion','fieldname','frtol','format','Double');
     164                        WriteData(fid,'object',self,'class','inversion','fieldname','gatol','format','Double');
     165                        WriteData(fid,'object',self,'class','inversion','fieldname','grtol','format','Double');
     166                        WriteData(fid,'object',self,'class','inversion','fieldname','gttol','format','Double');
     167                        WriteData(fid,'object',self,'class','inversion','fieldname','algorithm','format','String');
     168                        WriteData(fid,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
     169                        WriteData(fid,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3);
     170                        WriteData(fid,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3);
     171                        WriteData(fid,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
     172                        WriteData(fid,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
     173                        WriteData(fid,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
     174                        WriteData(fid,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',1);
     175                        WriteData(fid,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',1);
    176176
    177177                        %process control parameters
    178                         num_control_parameters=numel(obj.control_parameters);
     178                        num_control_parameters=numel(self.control_parameters);
    179179                        data=zeros(1,num_control_parameters);
    180180                        for i=1:num_control_parameters,
    181                                 data(i)=StringToEnum(obj.control_parameters{i});
     181                                data(i)=StringToEnum(self.control_parameters{i});
    182182                        end
    183183                        WriteData(fid,'data',data,'enum',InversionControlParametersEnum(),'format','DoubleMat','mattype',3);
     
    185185
    186186                        %process cost functions
    187                         num_cost_functions=size(obj.cost_functions,2);
    188                         data=marshallcostfunctions(obj.cost_functions);
     187                        num_cost_functions=size(self.cost_functions,2);
     188                        data=marshallcostfunctions(self.cost_functions);
    189189                        WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3);
    190190                        WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer');
  • issm/trunk-jpl/src/m/classes/thermal.m

    r19027 r19040  
    1818        end
    1919        methods
    20         function createxml(obj,fid) % {{{
     20        function createxml(self,fid) % {{{
    2121            fprintf(fid, '<!-- thermal -->\n');           
    2222                   
    2323            % thermal solution parameters
    2424            fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Thermal solution parameters">','<section name="thermal" />');                   
    25             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="spctemperature" type="',class(obj.spctemperature),'" default="',convert2str(obj.spctemperature),'">','     <section name="thermal" />','     <help> temperature constraints (NaN means no constraint) [K] </help>','  </parameter>');
     25            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="spctemperature" type="',class(self.spctemperature),'" default="',convert2str(self.spctemperature),'">','     <section name="thermal" />','     <help> temperature constraints (NaN means no constraint) [K] </help>','  </parameter>');
    2626               
    2727            % penalty_threshold drop-down (0, 1, or 2)
     
    3131            fprintf(fid,'%s\n%s\n','       <option value="2" type="string" default="false"> </option>','</parameter>');
    3232
    33             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="stabilization" type="',class(obj.stabilization),'" default="',convert2str(obj.stabilization),'">','     <section name="thermal" />','     <help> maximum number of non linear iterations </help>','  </parameter>');
    34                                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="reltol" type="',class(obj.reltol),'" default="',convert2str(obj.reltol),'">','     <section name="steadystate" />','     <help> relative tolerance criterion [K] </help>','  </parameter>');
    35             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="maxiter" type="',class(obj.maxiter),'" default="',convert2str(obj.maxiter),'">','     <section name="thermal" />','     <help> stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization) </help>','  </parameter>');
    36             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="penalty_lock" type="',class(obj.penalty_lock),'" default="',convert2str(obj.penalty_lock),'">','     <section name="thermal" />','     <help> threshold to declare convergence of thermal solution (default is 0)  </help>','  </parameter>');
    37             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="penalty_factor" type="',class(obj.penalty_factor),'" default="',convert2str(obj.penalty_factor),'">','     <section name="thermal" />','     <help> scaling exponent (default is 3) </help>','  </parameter>');
    38             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isenthalpy" type="',class(obj.isenthalpy),'" default="',convert2str(obj.isenthalpy),'">','     <section name="thermal" />','     <help> use an enthalpy formulation to include temperate ice (default is 0) </help>','  </parameter>');
    39             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isdynamicbasalspc" type="',class(obj.isdynamicbasalspc),'" default="',convert2str(obj.isdynamicbasalspc),'">','     <section name="thermal" />','     <help> enable dynamic setting of basal forcing. recommended for enthalpy formulation (default is 0)  </help>','  </parameter>');
    40             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="requested_outputs" type="',class(obj.requested_outputs),'" default="',convert2str(obj.requested_outputs),'">','     <section name="thermal" />','     <help> additional outputs requested </help>','  </parameter>');
     33            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="stabilization" type="',class(self.stabilization),'" default="',convert2str(self.stabilization),'">','     <section name="thermal" />','     <help> maximum number of non linear iterations </help>','  </parameter>');
     34                                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="reltol" type="',class(self.reltol),'" default="',convert2str(self.reltol),'">','     <section name="steadystate" />','     <help> relative tolerance criterion [K] </help>','  </parameter>');
     35            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="maxiter" type="',class(self.maxiter),'" default="',convert2str(self.maxiter),'">','     <section name="thermal" />','     <help> stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization) </help>','  </parameter>');
     36            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="penalty_lock" type="',class(self.penalty_lock),'" default="',convert2str(self.penalty_lock),'">','     <section name="thermal" />','     <help> threshold to declare convergence of thermal solution (default is 0)  </help>','  </parameter>');
     37            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="penalty_factor" type="',class(self.penalty_factor),'" default="',convert2str(self.penalty_factor),'">','     <section name="thermal" />','     <help> scaling exponent (default is 3) </help>','  </parameter>');
     38            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isenthalpy" type="',class(self.isenthalpy),'" default="',convert2str(self.isenthalpy),'">','     <section name="thermal" />','     <help> use an enthalpy formulation to include temperate ice (default is 0) </help>','  </parameter>');
     39            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isdynamicbasalspc" type="',class(self.isdynamicbasalspc),'" default="',convert2str(self.isdynamicbasalspc),'">','     <section name="thermal" />','     <help> enable dynamic setting of basal forcing. recommended for enthalpy formulation (default is 0)  </help>','  </parameter>');
     40            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="requested_outputs" type="',class(self.requested_outputs),'" default="',convert2str(self.requested_outputs),'">','     <section name="thermal" />','     <help> additional outputs requested </help>','  </parameter>');
    4141            fprintf(fid,'%s\n%s\n','</frame>');   
    4242       
    4343        end % }}}
    44                 function obj = thermal(varargin) % {{{
     44                function self = thermal(varargin) % {{{
    4545                        switch nargin
    4646                                case 0
    47                                         obj=setdefaultparameters(obj);
     47                                        self=setdefaultparameters(self);
    4848                                otherwise
    4949                                        error('constructor not supported');
     
    5959
    6060                end % }}}
    61                 function obj = setdefaultparameters(obj) % {{{
     61                function self = setdefaultparameters(self) % {{{
    6262
    6363                        %Number of unstable constraints acceptable
    64                         obj.penalty_threshold=0;
     64                        self.penalty_threshold=0;
    6565
    6666                        %Type of stabilization used
    67                         obj.stabilization=1;
     67                        self.stabilization=1;
    6868
    6969                        %Relative tolerance for the enthalpy convergence
    70                         obj.reltol=0.01;
     70                        self.reltol=0.01;
    7171
    7272                        %Maximum number of iterations
    73                         obj.maxiter=100;
     73                        self.maxiter=100;
    7474
    7575                        %factor used to compute the values of the penalties: kappa=max(stiffness matrix)*10^penalty_factor
    76                         obj.penalty_factor=3;
     76                        self.penalty_factor=3;
    7777
    7878                        %Should we use cold ice (default) or enthalpy formulation
    79                         obj.isenthalpy=0;
     79                        self.isenthalpy=0;
    8080
    8181                        %will basal boundary conditions be set dynamically
    82                         obj.isdynamicbasalspc=0;
     82                        self.isdynamicbasalspc=0;
    8383
    8484                        %default output
    85                         obj.requested_outputs={'default'};
     85                        self.requested_outputs={'default'};
    8686                end % }}}
    87                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     87                function md = checkconsistency(self,md,solution,analyses) % {{{
    8888
    8989                        %Early return
     
    108108                 md = checkfield(md,'fieldname','thermal.requested_outputs','stringrow',1);
    109109    end % }}}
    110                 function disp(obj) % {{{
     110                function disp(self) % {{{
    111111                        disp(sprintf('   Thermal solution parameters:'));
    112112
    113                         fielddisplay(obj,'spctemperature','temperature constraints (NaN means no constraint) [K]');
    114                         fielddisplay(obj,'stabilization','0: no, 1: artificial_diffusivity, 2: SUPG');
    115                         fielddisplay(obj,'reltol','relative tolerance convergence criterion for enthalpy');
    116                         fielddisplay(obj,'maxiter','maximum number of non linear iterations');
    117                         fielddisplay(obj,'penalty_lock','stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization)');
    118                         fielddisplay(obj,'penalty_threshold','threshold to declare convergence of thermal solution (default is 0)');
    119                         fielddisplay(obj,'penalty_factor','scaling exponent (default is 3)');
    120                         fielddisplay(obj,'isenthalpy','use an enthalpy formulation to include temperate ice (default is 0)');
    121                         fielddisplay(obj,'isdynamicbasalspc',['enable dynamic setting of basal forcing. required for enthalpy formulation (default is 0)']);
    122                         fielddisplay(obj,'requested_outputs','additional outputs requested');
     113                        fielddisplay(self,'spctemperature','temperature constraints (NaN means no constraint) [K]');
     114                        fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: SUPG');
     115                        fielddisplay(self,'reltol','relative tolerance convergence criterion for enthalpy');
     116                        fielddisplay(self,'maxiter','maximum number of non linear iterations');
     117                        fielddisplay(self,'penalty_lock','stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization)');
     118                        fielddisplay(self,'penalty_threshold','threshold to declare convergence of thermal solution (default is 0)');
     119                        fielddisplay(self,'penalty_factor','scaling exponent (default is 3)');
     120                        fielddisplay(self,'isenthalpy','use an enthalpy formulation to include temperate ice (default is 0)');
     121                        fielddisplay(self,'isdynamicbasalspc',['enable dynamic setting of basal forcing. required for enthalpy formulation (default is 0)']);
     122                        fielddisplay(self,'requested_outputs','additional outputs requested');
    123123
    124124                end % }}}
    125                 function marshall(obj,md,fid) % {{{
    126                         WriteData(fid,'object',obj,'fieldname','spctemperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    127                         WriteData(fid,'object',obj,'fieldname','penalty_threshold','format','Integer');
    128                         WriteData(fid,'object',obj,'fieldname','stabilization','format','Integer');
    129                         WriteData(fid,'object',obj,'fieldname','reltol','format','Double');
    130                         WriteData(fid,'object',obj,'fieldname','maxiter','format','Integer');
    131                         WriteData(fid,'object',obj,'fieldname','penalty_lock','format','Integer');
    132                         WriteData(fid,'object',obj,'fieldname','penalty_factor','format','Double');
    133                         WriteData(fid,'object',obj,'fieldname','isenthalpy','format','Boolean');
    134                         WriteData(fid,'object',obj,'fieldname','isdynamicbasalspc','format','Boolean');
     125                function marshall(self,md,fid) % {{{
     126                        WriteData(fid,'object',self,'fieldname','spctemperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
     127                        WriteData(fid,'object',self,'fieldname','penalty_threshold','format','Integer');
     128                        WriteData(fid,'object',self,'fieldname','stabilization','format','Integer');
     129                        WriteData(fid,'object',self,'fieldname','reltol','format','Double');
     130                        WriteData(fid,'object',self,'fieldname','maxiter','format','Integer');
     131                        WriteData(fid,'object',self,'fieldname','penalty_lock','format','Integer');
     132                        WriteData(fid,'object',self,'fieldname','penalty_factor','format','Double');
     133                        WriteData(fid,'object',self,'fieldname','isenthalpy','format','Boolean');
     134                        WriteData(fid,'object',self,'fieldname','isdynamicbasalspc','format','Boolean');
    135135
    136136                        %process requested outputs
    137                         outputs = obj.requested_outputs;
     137                        outputs = self.requested_outputs;
    138138                        pos  = find(ismember(outputs,'default'));
    139139                        if ~isempty(pos),
    140140                                outputs(pos) = [];                         %remove 'default' from outputs
    141                                 outputs      = [outputs defaultoutputs(obj,md)]; %add defaults
     141                                outputs      = [outputs defaultoutputs(self,md)]; %add defaults
    142142                        end
    143143                        WriteData(fid,'data',outputs,'enum',ThermalRequestedOutputsEnum(),'format','StringArray');
  • issm/trunk-jpl/src/m/classes/timestepping.m

    r18537 r19040  
    1515        end
    1616        methods
    17        function createxml(obj,fid) % {{{
     17       function createxml(self,fid) % {{{
    1818            fprintf(fid, '\n\n');
    1919            fprintf(fid, '%s\n', '<!-- Timestepping -->');
    20                         fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="start_time" type="',              class(obj.start_time),'" default="',                  convert2str(obj.start_time),'">',              '     <section name="timestepping" />','     <help> simulation starting time [yr] </help>','</parameter>');
    21             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="final_time" type="',            class(obj.final_time),'" default="',                convert2str(obj.final_time),'">',   '     <section name="timestepping" />','     <help> final time to stop the simulation [yr] </help>','</parameter>');
    22             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="time_step" type="',      class(obj.time_step),'" default="',          convert2str(obj.time_step),'">',            '     <section name="timestepping" />','     <help> length of time steps [yr] </help>','</parameter>');
     20                        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="start_time" type="',              class(self.start_time),'" default="',                  convert2str(self.start_time),'">',              '     <section name="timestepping" />','     <help> simulation starting time [yr] </help>','</parameter>');
     21            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="final_time" type="',            class(self.final_time),'" default="',                convert2str(self.final_time),'">',   '     <section name="timestepping" />','     <help> final time to stop the simulation [yr] </help>','</parameter>');
     22            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="time_step" type="',      class(self.time_step),'" default="',          convert2str(self.time_step),'">',            '     <section name="timestepping" />','     <help> length of time steps [yr] </help>','</parameter>');
    2323            % time_adapt 0 or 1 drop down
    2424            fprintf(fid,'%s\n%s\n%s\n%s\n','<parameter key ="time_adapt" type="alternative" optional="false">','     <section name="timestepping" />','     <help> use cfl condition to define time step ? (0 or 1)  </help>');
    2525            fprintf(fid, '%s\n',   '       <option value="0" type="string" default="true"></option>');
    2626            fprintf(fid, '%s\n%s\n',   '       <option value="1" type="string" default="false"></option>','</parameter>');
    27             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="cfl_coefficient" type="',       class(obj.cfl_coefficient),'" default="',              convert2str(obj.cfl_coefficient),'">',              '     <section name="timestepping" />','     <help> coefficient applied to cfl condition </help>','</parameter>');
     27            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="cfl_coefficient" type="',       class(self.cfl_coefficient),'" default="',              convert2str(self.cfl_coefficient),'">',              '     <section name="timestepping" />','     <help> coefficient applied to cfl condition </help>','</parameter>');
    2828           
    2929        end % }}}
    3030       
    31                 function obj = timestepping(varargin) % {{{
     31                function self = timestepping(varargin) % {{{
    3232                        switch nargin
    3333                                case 0
    34                                         obj=setdefaultparameters(obj);
     34                                        self=setdefaultparameters(self);
    3535                                otherwise
    3636                                        error('constructor not supported');
    3737                        end
    3838                end % }}}
    39                 function obj = setdefaultparameters(obj) % {{{
     39                function self = setdefaultparameters(self) % {{{
    4040
    4141                        %time between 2 time steps
    42                         obj.time_step=1./2.;
     42                        self.time_step=1./2.;
    4343
    4444                        %final time
    45                         obj.final_time=10.*obj.time_step;
     45                        self.final_time=10.*self.time_step;
    4646
    4747                        %time adaptation?
    48                         obj.time_adapt=0;
    49                         obj.cfl_coefficient=0.5;
     48                        self.time_adapt=0;
     49                        self.cfl_coefficient=0.5;
    5050
    5151                        %should we interpolate forcings between timesteps?
    52                         obj.interp_forcings=1;
     52                        self.interp_forcings=1;
    5353
    5454                        %In years by default
    55                         obj.in_years = 1;
     55                        self.in_years = 1;
    5656                end % }}}
    57                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     57                function md = checkconsistency(self,md,solution,analyses) % {{{
    5858
    5959                        md = checkfield(md,'fieldname','timestepping.start_time','numel',[1],'NaN',1);
     
    6363                        md = checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1);
    6464                        md = checkfield(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0 1]);
    65                         if obj.final_time-obj.start_time<0,
     65                        if self.final_time-self.start_time<0,
    6666                                md = checkmessage(md,'timestepping.final_time should be larger than timestepping.start_time');
    6767                        end
    6868                end % }}}
    69                 function disp(obj) % {{{
     69                function disp(self) % {{{
    7070                        disp(sprintf('   timestepping parameters:'));
    7171
    72                         if(obj.in_years)
     72                        if(self.in_years)
    7373                                unit = 'yr';
    7474                        else
    7575                                unit = 's';
    7676                        end
    77                         fielddisplay(obj,'start_time',['simulation starting time [' unit ']']);
    78                         fielddisplay(obj,'final_time',['final time to stop the simulation [' unit ']']);
    79                         fielddisplay(obj,'time_step',['length of time steps [' unit ']']);
    80                         fielddisplay(obj,'time_adapt','use cfl condition to define time step ? (0 or 1) ');
    81                         fielddisplay(obj,'cfl_coefficient','coefficient applied to cfl condition');
    82                         fielddisplay(obj,'interp_forcings','interpolate in time between requested forcing values ? (0 or 1)');
    83                         fielddisplay(obj,'in_years','time unit, 1: years, 0: seconds');
     77                        fielddisplay(self,'start_time',['simulation starting time [' unit ']']);
     78                        fielddisplay(self,'final_time',['final time to stop the simulation [' unit ']']);
     79                        fielddisplay(self,'time_step',['length of time steps [' unit ']']);
     80                        fielddisplay(self,'time_adapt','use cfl condition to define time step ? (0 or 1) ');
     81                        fielddisplay(self,'cfl_coefficient','coefficient applied to cfl condition');
     82                        fielddisplay(self,'interp_forcings','interpolate in time between requested forcing values ? (0 or 1)');
     83                        fielddisplay(self,'in_years','time unit, 1: years, 0: seconds');
    8484
    8585                end % }}}
    86                 function marshall(obj,md,fid) % {{{
     86                function marshall(self,md,fid) % {{{
    8787
    88                         if obj.in_years,
     88                        if self.in_years,
    8989                                scale = 365.0*24.0*3600.0;
    9090                        else
    9191                                scale = 1.;
    9292                        end
    93                         WriteData(fid,'object',obj,'fieldname','start_time','format','Double','scale',scale);
    94                         WriteData(fid,'object',obj,'fieldname','final_time','format','Double','scale',scale);
    95                         WriteData(fid,'object',obj,'fieldname','time_step','format','Double','scale',scale);
    96                         WriteData(fid,'object',obj,'fieldname','time_adapt','format','Boolean');
    97                         WriteData(fid,'object',obj,'fieldname','cfl_coefficient','format','Double');
    98                         WriteData(fid,'object',obj,'fieldname','interp_forcings','format','Boolean');
     93                        WriteData(fid,'object',self,'fieldname','start_time','format','Double','scale',scale);
     94                        WriteData(fid,'object',self,'fieldname','final_time','format','Double','scale',scale);
     95                        WriteData(fid,'object',self,'fieldname','time_step','format','Double','scale',scale);
     96                        WriteData(fid,'object',self,'fieldname','time_adapt','format','Boolean');
     97                        WriteData(fid,'object',self,'fieldname','cfl_coefficient','format','Double');
     98                        WriteData(fid,'object',self,'fieldname','interp_forcings','format','Boolean');
    9999                end % }}}
    100100        end
  • issm/trunk-jpl/src/m/classes/toolkits.m

    r16192 r19040  
    22%
    33%   Usage:
    4 %      obj=toolkits();
     4%      self=toolkits();
    55
    66classdef toolkits < dynamicprops
     
    1010         end
    1111         methods
    12                  function obj = toolkits(varargin) % {{{
     12                 function self = toolkits(varargin) % {{{
    1313                         switch nargin
    1414                                 case 0
    15                                          obj=setdefaultparameters(obj);
     15                                         self=setdefaultparameters(self);
    1616                                 case 1
    17                                          obj=structtoobj(obj,varargin{1});
     17                                         self=structtoobj(self,varargin{1});
    1818                                 otherwise
    1919                                         error('constructor not supported');
    2020                                 end
    2121                         end % }}}
    22                  function obj = addoptions(obj,analysis,varargin) % {{{
     22                 function self = addoptions(self,analysis,varargin) % {{{
    2323                 % Usage example:
    2424                 %    md.toolkits=addoptions(md.toolkits,StressbalanceAnalysisEnum(),FSoptions());
     
    2929
    3030                         %Create dynamic property if property does not exist yet
    31                          if ~ismember(analysis,properties(obj)),
    32                                  obj.addprop(analysis);
     31                         if ~ismember(analysis,properties(self)),
     32                                 self.addprop(analysis);
    3333                         end
    3434
    3535                         %Add toolkits options to analysis
    36                          if nargin==3, obj.(analysis) = varargin{1}; end
     36                         if nargin==3, self.(analysis) = varargin{1}; end
    3737                 end
    3838                 %}}}
    39                  function obj = setdefaultparameters(obj) % {{{
     39                 function self = setdefaultparameters(self) % {{{
    4040
    4141                         %default toolkits:
     
    4343                                 %MUMPS is the default toolkits
    4444                                 if IssmConfig('_HAVE_MUMPS_'),
    45                                          obj.DefaultAnalysis           = mumpsoptions();
     45                                         self.DefaultAnalysis           = mumpsoptions();
    4646                                 else
    47                                          obj.DefaultAnalysis           = iluasmoptions();
     47                                         self.DefaultAnalysis           = iluasmoptions();
    4848                                 end
    4949                         else
    5050                                 if IssmConfig('_HAVE_MUMPS_'),
    51                                          obj.DefaultAnalysis           = issmmumpssolver();
     51                                         self.DefaultAnalysis           = issmmumpssolver();
    5252                                 elseif IssmConfig('_HAVE_GSL_'),
    53                                          obj.DefaultAnalysis           = issmgslsolver();
     53                                         self.DefaultAnalysis           = issmgslsolver();
    5454                                 else
    5555                                         error('Need at least Mumps or Gsl to define an issm solver type');
     
    5858
    5959                 end % }}}
    60                  function disp(obj) % {{{
    61                          analyses=properties(obj);
     60                 function disp(self) % {{{
     61                         analyses=properties(self);
    6262                         disp(sprintf('List of toolkits options per analysis:\n'));
    6363                         for i=1:numel(analyses),
    6464                                 analysis=analyses{i};
    6565                                 disp([analysis ':']);
    66                                  disp(obj.(analysis));
     66                                 disp(self.(analysis));
    6767                         end
    6868                 end % }}}
    69                  function md = checkconsistency(obj,md,solution,analyses) % {{{
    70                          analyses=properties(obj);
     69                 function md = checkconsistency(self,md,solution,analyses) % {{{
     70                         analyses=properties(self);
    7171                         for i=1:numel(analyses),
    72                                  if isempty(fieldnames(obj.(analyses{i})))
     72                                 if isempty(fieldnames(self.(analyses{i})))
    7373                                         md = checkmessage(md,['md.toolkits.' analyses{i} ' is empty']);
    7474                                 end
  • issm/trunk-jpl/src/m/classes/toolkits.py

    r17480 r19040  
    1212
    1313           Usage:
    14               obj=toolkits();
     14              self=toolkits();
    1515        """
    1616
  • issm/trunk-jpl/src/m/classes/transient.m

    r18757 r19040  
    1818        end
    1919        methods
    20         function createxml(obj,fid) % {{{
     20        function createxml(self,fid) % {{{
    2121            fprintf(fid, '<!-- transient -->\n');           
    2222                   
    2323            % transient solution parameters
    2424            fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="transient solution parameters">','<section name="transient" />');                   
    25                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="ismasstransport" type="',class(obj.ismasstransport),'" default="',convert2str(obj.ismasstransport),'">','     <section name="transient" />','     <help> indicates whether a masstransport solution is used in the transient </help>','  </parameter>');
    26                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isstressbalance" type="',class(obj.isstressbalance),'" default="',convert2str(obj.isstressbalance),'">','     <section name="transient" />','     <help> indicates whether a stressbalance solution is used in the transient </help>','  </parameter>');
    27                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isthermal" type="',class(obj.isthermal),'" default="',convert2str(obj.isthermal),'">','     <section name="transient" />','     <help> indicates whether a thermal solution is used in the transient </help>','  </parameter>');
    28                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isgroundingline" type="',class(obj.isgroundingline),'" default="',convert2str(obj.isgroundingline),'">','     <section name="transient" />','     <help> indicates whether a groundingline migration is used in the transient </help>','  </parameter>');
    29                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isgia" type="',class(obj.isgia),'" default="',convert2str(obj.isgia),'">','     <section name="transient" />','     <help> indicates whether a postglacial rebound model is used in the transient </help>','  </parameter>');
    30                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isdamageevolution" type="',class(obj.isdamageevolution),'" default="',convert2str(obj.isdamageevolution),'">','     <section name="transient" />','     <help> indicates whether damage evolution is used in the transient </help>','  </parameter>');
    31                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="islevelset" type="',class(obj.islevelset),'" default="',convert2str(obj.islevelset),'">','     <section name="transient" />','     <help> LEVEL SET DESCRIPTION...  </help>','  </parameter>');
    32                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="iscalving" type="',class(obj.iscalving),'" default="',convert2str(obj.iscalving),'">','     <section name="transient" />','     <help> indicates whether calving is used in the transient </help>','  </parameter>');
    33                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="requested_outputs" type="',class(obj.requested_outputs),'" default="',convert2str(obj.requested_outputs),'">','     <section name="transient" />','     <help> list of additional outputs requested </help>','  </parameter>');
     25                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="ismasstransport" type="',class(self.ismasstransport),'" default="',convert2str(self.ismasstransport),'">','     <section name="transient" />','     <help> indicates whether a masstransport solution is used in the transient </help>','  </parameter>');
     26                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isstressbalance" type="',class(self.isstressbalance),'" default="',convert2str(self.isstressbalance),'">','     <section name="transient" />','     <help> indicates whether a stressbalance solution is used in the transient </help>','  </parameter>');
     27                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isthermal" type="',class(self.isthermal),'" default="',convert2str(self.isthermal),'">','     <section name="transient" />','     <help> indicates whether a thermal solution is used in the transient </help>','  </parameter>');
     28                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isgroundingline" type="',class(self.isgroundingline),'" default="',convert2str(self.isgroundingline),'">','     <section name="transient" />','     <help> indicates whether a groundingline migration is used in the transient </help>','  </parameter>');
     29                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isgia" type="',class(self.isgia),'" default="',convert2str(self.isgia),'">','     <section name="transient" />','     <help> indicates whether a postglacial rebound model is used in the transient </help>','  </parameter>');
     30                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isdamageevolution" type="',class(self.isdamageevolution),'" default="',convert2str(self.isdamageevolution),'">','     <section name="transient" />','     <help> indicates whether damage evolution is used in the transient </help>','  </parameter>');
     31                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="islevelset" type="',class(self.islevelset),'" default="',convert2str(self.islevelset),'">','     <section name="transient" />','     <help> LEVEL SET DESCRIPTION...  </help>','  </parameter>');
     32                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="iscalving" type="',class(self.iscalving),'" default="',convert2str(self.iscalving),'">','     <section name="transient" />','     <help> indicates whether calving is used in the transient </help>','  </parameter>');
     33                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="requested_outputs" type="',class(self.requested_outputs),'" default="',convert2str(self.requested_outputs),'">','     <section name="transient" />','     <help> list of additional outputs requested </help>','  </parameter>');
    3434            fprintf(fid,'%s\n%s\n','</frame>');   
    3535       
    3636        end % }}}
    37                 function obj = transient(varargin) % {{{
     37                function self = transient(varargin) % {{{
    3838                        switch nargin
    3939                                case 0
    40                                         obj=setdefaultparameters(obj);
     40                                        self = setdefaultparameters(self);
    4141                                otherwise
    4242                                        error('constructor not supported');
    4343                        end
    4444                end % }}}
    45                 function obj = deactivateall(obj) % {{{
     45                function self = deactivateall(self) % {{{
    4646
    4747                        %full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
    48                         obj.ismasstransport = 0;
    49                         obj.isstressbalance = 0;
    50                         obj.isthermal       = 0;
    51                         obj.isgroundingline = 0;
    52                         obj.isgia           = 0;
    53                         obj.isdamageevolution = 0;
    54                         obj.islevelset      = 0;
    55                         obj.iscalving       =0;
    56                         obj.ishydrology     = 0;
     48                        self.ismasstransport = 0;
     49                        self.isstressbalance = 0;
     50                        self.isthermal       = 0;
     51                        self.isgroundingline = 0;
     52                        self.isgia           = 0;
     53                        self.isdamageevolution = 0;
     54                        self.islevelset      = 0;
     55                        self.iscalving       =0;
     56                        self.ishydrology     = 0;
    5757
    5858                        %default output
    59                         obj.requested_outputs={};
     59                        self.requested_outputs={};
    6060                end % }}}
    61                 function obj = setdefaultparameters(obj) % {{{
     61                function self = setdefaultparameters(self) % {{{
    6262
    6363                        %full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
    64                         obj.ismasstransport = 1;
    65                         obj.isstressbalance = 1;
    66                         obj.isthermal       = 1;
    67                         obj.isgroundingline = 0;
    68                         obj.isgia           = 0;
    69                         obj.isdamageevolution = 0;
    70                         obj.islevelset      = 0;
    71                         obj.iscalving       = 0;
    72                         obj.ishydrology     = 0;
     64                        self.ismasstransport = 1;
     65                        self.isstressbalance = 1;
     66                        self.isthermal       = 1;
     67                        self.isgroundingline = 0;
     68                        self.isgia           = 0;
     69                        self.isdamageevolution = 0;
     70                        self.islevelset      = 0;
     71                        self.iscalving       = 0;
     72                        self.ishydrology     = 0;
    7373
    7474                        %default output
    75                         obj.requested_outputs={'default'};
     75                        self.requested_outputs={'default'};
    7676                end % }}}
    7777                function list = defaultoutputs(self,md) % {{{
     
    8282                        end
    8383                end % }}}
    84                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     84                function md = checkconsistency(self,md,solution,analyses) % {{{
    8585
    8686                        %Early return
     
    9999
    100100                end % }}}
    101                 function disp(obj) % {{{
     101                function disp(self) % {{{
    102102                        disp(sprintf('   transient solution parameters:'));
    103103
    104                         fielddisplay(obj,'ismasstransport','indicates whether a masstransport solution is used in the transient');
    105                         fielddisplay(obj,'isstressbalance','indicates whether a stressbalance solution is used in the transient');
    106                         fielddisplay(obj,'isthermal','indicates whether a thermal solution is used in the transient');
    107                         fielddisplay(obj,'isgroundingline','indicates whether a groundingline migration is used in the transient');
    108                         fielddisplay(obj,'isgia','indicates whether a postglacial rebound model is used in the transient');
    109                         fielddisplay(obj,'isdamageevolution','indicates whether damage evolution is used in the transient');
    110                         fielddisplay(obj,'islevelset','LEVEL SET DESCRIPTION...');
    111                         fielddisplay(obj,'iscalving','indicates whether calving is used in the transient');
    112                         fielddisplay(obj,'ishydrology','indicates whether an hydrology model is used');
    113                         fielddisplay(obj,'requested_outputs','list of additional outputs requested');
     104                        fielddisplay(self,'ismasstransport','indicates whether a masstransport solution is used in the transient');
     105                        fielddisplay(self,'isstressbalance','indicates whether a stressbalance solution is used in the transient');
     106                        fielddisplay(self,'isthermal','indicates whether a thermal solution is used in the transient');
     107                        fielddisplay(self,'isgroundingline','indicates whether a groundingline migration is used in the transient');
     108                        fielddisplay(self,'isgia','indicates whether a postglacial rebound model is used in the transient');
     109                        fielddisplay(self,'isdamageevolution','indicates whether damage evolution is used in the transient');
     110                        fielddisplay(self,'islevelset','LEVEL SET DESCRIPTION...');
     111                        fielddisplay(self,'iscalving','indicates whether calving is used in the transient');
     112                        fielddisplay(self,'ishydrology','indicates whether an hydrology model is used');
     113                        fielddisplay(self,'requested_outputs','list of additional outputs requested');
    114114
    115115                end % }}}
    116                 function marshall(obj,md,fid) % {{{
    117                         WriteData(fid,'object',obj,'fieldname','ismasstransport','format','Boolean');
    118                         WriteData(fid,'object',obj,'fieldname','isstressbalance','format','Boolean');
    119                         WriteData(fid,'object',obj,'fieldname','isthermal','format','Boolean');
    120                         WriteData(fid,'object',obj,'fieldname','isgroundingline','format','Boolean');
    121                         WriteData(fid,'object',obj,'fieldname','isgia','format','Boolean');
    122                         WriteData(fid,'object',obj,'fieldname','isdamageevolution','format','Boolean');
    123                         WriteData(fid,'object',obj,'fieldname','ishydrology','format','Boolean');
    124                         WriteData(fid,'object',obj,'fieldname','islevelset','format','Boolean');
    125                         WriteData(fid,'object',obj,'fieldname','iscalving','format','Boolean');
     116                function marshall(self,md,fid) % {{{
     117                        WriteData(fid,'object',self,'fieldname','ismasstransport','format','Boolean');
     118                        WriteData(fid,'object',self,'fieldname','isstressbalance','format','Boolean');
     119                        WriteData(fid,'object',self,'fieldname','isthermal','format','Boolean');
     120                        WriteData(fid,'object',self,'fieldname','isgroundingline','format','Boolean');
     121                        WriteData(fid,'object',self,'fieldname','isgia','format','Boolean');
     122                        WriteData(fid,'object',self,'fieldname','isdamageevolution','format','Boolean');
     123                        WriteData(fid,'object',self,'fieldname','ishydrology','format','Boolean');
     124                        WriteData(fid,'object',self,'fieldname','islevelset','format','Boolean');
     125                        WriteData(fid,'object',self,'fieldname','iscalving','format','Boolean');
    126126
    127127                        %process requested outputs
    128                         outputs = obj.requested_outputs;
     128                        outputs = self.requested_outputs;
    129129                        pos  = find(ismember(outputs,'default'));
    130130                        if ~isempty(pos),
    131131                                outputs(pos) = [];                         %remove 'default' from outputs
    132                                 outputs      = [outputs defaultoutputs(obj,md)]; %add defaults
     132                                outputs      = [outputs defaultoutputs(self,md)]; %add defaults
    133133                        end
    134134                        WriteData(fid,'data',outputs,'enum',TransientRequestedOutputsEnum,'format','StringArray');
  • issm/trunk-jpl/src/m/classes/verbose.m

    r17720 r19040  
    3838        %}}}
    3939        methods
    40         function createxml(obj,fid) % {{{
    41             fprintf(fid, '\n\n');
    42             fprintf(fid, '%s\n', '<!-- verbose -->');
    43              
    44              fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="mprocessor" type="',              class(obj.mprocessor),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(obj.mprocessor),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
    45              fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="module" type="',              class(obj.module),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(obj.module),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
    46              fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="solution" type="',              class(obj.solution),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(obj.solution),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
    47              fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="solver" type="',              class(obj.solver),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(obj.solver),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
    48              fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="convergence" type="',              class(obj.convergence),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(obj.convergence),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
    49              fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="control" type="',              class(obj.control),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(obj.control),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
    50              fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="qmu" type="',              class(obj.qmu),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(obj.qmu),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
    51              fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n',    '<parameter key ="autodiff" type="',              class(obj.autodiff),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(obj.autodiff),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
    52              
    53              
    54         end % }}}
     40                function createxml(self,fid) % {{{
     41                        fprintf(fid, '\n\n');
     42                        fprintf(fid, '%s\n', '<!-- verbose -->');
     43
     44                        fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="mprocessor" type="',              class(self.mprocessor),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(self.mprocessor),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
     45                        fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="module" type="',              class(self.module),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(self.module),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
     46                        fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="solution" type="',              class(self.solution),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(self.solution),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
     47                        fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="solver" type="',              class(self.solver),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(self.solver),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
     48                        fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="convergence" type="',              class(self.convergence),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(self.convergence),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
     49                        fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="control" type="',              class(self.control),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(self.control),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
     50                        fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="qmu" type="',              class(self.qmu),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(self.qmu),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
     51                        fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n',    '<parameter key ="autodiff" type="',              class(self.autodiff),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(self.autodiff),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
     52
     53
     54                end % }}}
    5555                function verbose=verbose(varargin) % {{{
    5656
     
    123123                end
    124124                %}}}
    125                 function md = checkconsistency(obj,md,solution,analyses) % {{{
     125                function md = checkconsistency(self,md,solution,analyses) % {{{
    126126
    127127                end % }}}
     
    142142                end
    143143                %}}}
    144                 function marshall(obj,md,fid) % {{{
    145                         WriteData(fid,'data',VerboseToBinary(obj),'enum',VerboseEnum(),'format','Integer');
     144                function marshall(self,md,fid) % {{{
     145                        WriteData(fid,'data',VerboseToBinary(self),'enum',VerboseEnum(),'format','Integer');
    146146                end % }}}
    147147        end
Note: See TracChangeset for help on using the changeset viewer.