Changeset 17909


Ignore:
Timestamp:
05/01/14 14:23:44 (11 years ago)
Author:
Mathieu Morlighem
Message:

CHG: added dxmin and epsrel as options

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

Legend:

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

    r17908 r17909  
    1010                control_parameters          = NaN
    1111                nsteps                      = 0
     12                dxmin                       = 0;
     13                epsrel                      = 0;
    1214                cost_functions              = NaN
    1315                cost_functions_coefficients = NaN
     
    1921                vel_obs                     = NaN
    2022                thickness_obs               = NaN
     23
    2124        end
    2225        methods
     
    3134                        end
    3235                end % }}}
    33                 function obj = setdefaultparameters(obj) % {{{
     36                function self = setdefaultparameters(self) % {{{
    3437
    3538                        %default is incomplete adjoint for now
    36                         obj.incomplete_adjoint=1;
     39                        self.incomplete_adjoint=1;
    3740
    3841                        %parameter to be inferred by control methods (only
    3942                        %drag and B are supported yet)
    40                         obj.control_parameters={'FrictionCoefficient'};
     43                        self.control_parameters={'FrictionCoefficient'};
    4144
    4245                        %number of steps in the control methods
    43                         obj.nsteps=20;
     46                        self.nsteps=20;
    4447
    4548                        %several responses can be used:
    46                         obj.cost_functions=101*ones(obj.nsteps,1);
     49                        self.cost_functions=101*ones(self.nsteps,1);
     50
     51                        %m1qn3 parameters
     52                        self.dxmin  = 0.1;
     53                        self.epsrel = 1e-4;
    4754
    4855                end % }}}
     
    5259                        if ~obj.iscontrol, return; end
    5360
    54                         if ~IssmConfig('_HAVE_TAO_'),
    55                                 md = checkmessage(md,['TAO has not been installed, ISSM needs to be reconfigured and recompiled with TAO']);
     61                        if ~IssmConfig('_HAVE_M1QN3_'),
     62                                md = checkmessage(md,['M1QN3 has not been installed, ISSM needs to be reconfigured and recompiled with M1QN3']);
    5663                        end
    5764
     
    6471                                {'BalancethicknessThickeningRate' 'FrictionCoefficient' 'MaterialsRheologyBbar' 'MaterialsRheologyZbar' 'Vx' 'Vy' 'Thickness'});
    6572                        md = checkfield(md,'fieldname','inversion.nsteps','numel',1,'>=',0);
     73                        md = checkfield(md,'fieldname','inversion.dxmin','numel',1,'>',0);
     74                        md = checkfield(md,'fieldname','inversion.epsrel','numel',1,'>',0);
    6675                        md = checkfield(md,'fieldname','inversion.cost_functions','size',[1 num_costfunc],'values',[101:105 201 501:506]);
    6776                        md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices num_costfunc],'>=',0);
     
    8493                        fielddisplay(obj,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
    8594                        fielddisplay(obj,'nsteps','number of optimization searches');
     95                        fielddisplay(obj,'dxmin','convergence criterion: two points less than dxmin from eachother (sup-norm) are considered identical');
     96                        fielddisplay(obj,'epsrel','convergence criterion: ratio between current gradient and initial gradient');
    8697                        fielddisplay(obj,'cost_functions','indicate the type of response for each optimization step');
    8798                        fielddisplay(obj,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
     
    112123                        WriteData(fid,'object',obj,'class','inversion','fieldname','incomplete_adjoint','format','Boolean');
    113124                        WriteData(fid,'object',obj,'class','inversion','fieldname','nsteps','format','Integer');
     125                        WriteData(fid,'object',obj,'class','inversion','fieldname','dxmin','format','Double');
     126                        WriteData(fid,'object',obj,'class','inversion','fieldname','epsrel','format','Double');
    114127                        WriteData(fid,'object',obj,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
    115128                        WriteData(fid,'object',obj,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3);
  • issm/trunk-jpl/src/m/classes/m1qn3inversion.py

    r17906 r17909  
    2323                        self.control_parameters          = float('NaN')
    2424                        self.nsteps                      = 0
     25                        self.dxmin                       = 0.
     26                        self.epsrel                      = 0.
    2527                        self.cost_functions              = float('NaN')
    2628                        self.cost_functions_coefficients = float('NaN')
     
    6062                string="%s\n%s"%(string,fielddisplay(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}'))
    6163                string="%s\n%s"%(string,fielddisplay(self,'nsteps','number of optimization searches'))
     64                string="%s\n%s"%(string,fielddisplay(self,'dxmin','convergence criterion: two points less than dxmin from eachother (sup-norm) are considered identical'))
     65                string="%s\n%s"%(string,fielddisplay(self,'epsrel','convergence criterion: ratio between current gradient and initial gradient'))
    6266                string="%s\n%s"%(string,fielddisplay(self,'cost_functions','indicate the type of response for each optimization step'))
    6367                string="%s\n%s"%(string,fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
     
    9599                self.cost_functions=101
    96100
     101                #m1qn3 parameters
     102                self.dxmin  = 0.1
     103                self.epsrel = 1e-4
     104
    97105                return self
    98106        #}}}
     
    110118                md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',['BalancethicknessThickeningRate','FrictionCoefficient','MaterialsRheologyBbar','DamageDbar','Vx','Vy','Thickness'])
    111119                md = checkfield(md,'fieldname','inversion.nsteps','numel',[1],'>=',0)
     120                md = checkfield(md,'fieldname','inversion.dxmin','numel',1,'>',0.)
     121                md = checkfield(md,'fieldname','inversion.epsrel','numel',1,'>',0.)
    112122                md = checkfield(md,'fieldname','inversion.cost_functions','size',[num_costfunc],'values',[101,102,103,104,105,201,501,502,503,504,505])
    113123                md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices,num_costfunc],'>=',0)
     
    133143                WriteData(fid,'object',self,'class','inversion','fieldname','incomplete_adjoint','format','Boolean')
    134144                WriteData(fid,'object',self,'class','inversion','fieldname','nsteps','format','Integer')
     145                WriteData(fid,'object',obj,'class','inversion','fieldname','dxmin','format','Double')
     146                WriteData(fid,'object',obj,'class','inversion','fieldname','epsrel','format','Double')
    135147                WriteData(fid,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1)
    136148                WriteData(fid,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3)
Note: See TracChangeset for help on using the changeset viewer.