Ignore:
Timestamp:
11/14/13 14:50:13 (11 years ago)
Author:
Eric.Larour
Message:

CHG: checkfield could not run for massatfluggate or misfit classes, because these classes do not
have access to their own fields through the model! So we modified checkfield.m and checkfield.py to accept
either directly a field, or indirectly a fieldname which then is used to retrieve from the model.

File:
1 edited

Legend:

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

    r16576 r16764  
    107107                        num_costfunc=size(md.inversion.cost_functions,2);
    108108
    109                         md = checkfield(md,'inversion.iscontrol','values',[0 1]);
    110                         md = checkfield(md,'inversion.tao','values',[0 1]);
    111                         md = checkfield(md,'inversion.incomplete_adjoint','values',[0 1]);
    112                         md = checkfield(md,'inversion.control_parameters','cell',1,'values',...
     109                        md = checkfield(md,'fieldname','inversion.iscontrol','values',[0 1]);
     110                        md = checkfield(md,'fieldname','inversion.tao','values',[0 1]);
     111                        md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0 1]);
     112                        md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',...
    113113                                {'BalancethicknessThickeningRate' 'FrictionCoefficient' 'MaterialsRheologyBbar' 'DamageDbar' 'Vx' 'Vy' 'Thickness'});
    114                         md = checkfield(md,'inversion.nsteps','numel',1,'>=',0);
    115                         md = checkfield(md,'inversion.maxiter_per_step','size',[md.inversion.nsteps 1],'>=',0);
    116                         md = checkfield(md,'inversion.step_threshold','size',[md.inversion.nsteps 1]);
    117                         md = checkfield(md,'inversion.cost_functions','size',[1 num_costfunc],'values',[101:105 201 501:506]);
    118                         md = checkfield(md,'inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices num_costfunc],'>=',0);
    119                         md = checkfield(md,'inversion.gradient_scaling','size',[md.inversion.nsteps num_controls]);
    120                         md = checkfield(md,'inversion.min_parameters','size',[md.mesh.numberofvertices num_controls]);
    121                         md = checkfield(md,'inversion.max_parameters','size',[md.mesh.numberofvertices num_controls]);
     114                        md = checkfield(md,'fieldname','inversion.nsteps','numel',1,'>=',0);
     115                        md = checkfield(md,'fieldname','inversion.maxiter_per_step','size',[md.inversion.nsteps 1],'>=',0);
     116                        md = checkfield(md,'fieldname','inversion.step_threshold','size',[md.inversion.nsteps 1]);
     117                        md = checkfield(md,'fieldname','inversion.cost_functions','size',[1 num_costfunc],'values',[101:105 201 501:506]);
     118                        md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices num_costfunc],'>=',0);
     119                        md = checkfield(md,'fieldname','inversion.gradient_scaling','size',[md.inversion.nsteps num_controls]);
     120                        md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices num_controls]);
     121                        md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices num_controls]);
    122122
    123123                        %Only SSA, HO and FS are supported right now
     
    129129
    130130                        if solution==BalancethicknessSolutionEnum()
    131                                 md = checkfield(md,'inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
     131                                md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
    132132                        elseif solution==BalancethicknessSoftSolutionEnum()
    133                                 md = checkfield(md,'inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
     133                                md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
    134134                        else
    135                                 md = checkfield(md,'inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
    136                                 md = checkfield(md,'inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
     135                                md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
     136                                md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
    137137                        end
    138138                end % }}}
Note: See TracChangeset for help on using the changeset viewer.