Changeset 9542


Ignore:
Timestamp:
08/31/11 17:36:09 (14 years ago)
Author:
Mathieu Morlighem
Message:

renumbering of cm_responses

Location:
issm/trunk/src/m
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/m/classes/model.m

    r9540 r9542  
    184184                 nsteps           = modelfield('default',0,'marshall',true,'format','Integer');
    185185                 maxiter          = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);
    186                  cm_responses     = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);
     186                 cm_responses     = modelfield('default',NaN,'marshall',true,'preprocess','marshallcmresponses','format','DoubleMat','mattype',3);
    187187                 tolx             = modelfield('default',0,'marshall',true,'format','Double');
    188188                 optscal          = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);
     
    499499                                 if (structmd.control_type==147), md.control_type={'Dhdt'}; end
    500500                         end
     501                         if ismember(structmd.cm_responses(end,end),[165:170 383 388 389]),
     502                                 pos=find(structmd.cm_responses==166), md.control_type(pos)=101;
     503                                 pos=find(structmd.cm_responses==167), md.control_type(pos)=102;
     504                                 pos=find(structmd.cm_responses==168), md.control_type(pos)=103;
     505                                 pos=find(structmd.cm_responses==169), md.control_type(pos)=104;
     506                                 pos=find(structmd.cm_responses==170), md.control_type(pos)=105;
     507                                 pos=find(structmd.cm_responses==165), md.control_type(pos)=201;
     508                                 pos=find(structmd.cm_responses==389), md.control_type(pos)=501;
     509                                 pos=find(structmd.cm_responses==388), md.control_type(pos)=502;
     510                                 pos=find(structmd.cm_responses==382), md.control_type(pos)=503;
     511                         end
    501512
    502513                         %New fields
     
    688699
    689700                         %several responses can be used:
    690                          md.cm_responses=SurfaceAbsVelMisfitEnum*ones(md.nsteps,1);
     701                         md.cm_responses=101*ones(md.nsteps,1);
    691702
    692703                         %cm_jump is used to speed up control method. When
  • issm/trunk/src/m/model/display/displaycontrol.m

    r9536 r9542  
    1616        fielddisplay(md,'eps_cm','misfit convergence criterion. Default is 1%, NaN if not applied');
    1717        fielddisplay(md,'optscal','scaling factor on gradient direction during optimization, for each optimization step');
    18         fielddisplay(md,'cm_responses','indicate the type of response for each optimization steps: SurfaceAbsVelMisfitEnum, SurfaceRelVelMisfitEnum, SurfaceLogVelMisfitEnum, SurfaceLogVxVyMisfitEnum, SurfaceAverageVelMisfitEnum or ThicknessAbsMisfitEnum');
     18        fielddisplay(md,'cm_responses','indicate the type of response for each optimization steps');
    1919        fielddisplay(md,'maxiter','maximum iterations during each optimization step');
    2020        fielddisplay(md,'tolx','minimum tolerance which will stop one optimization search');
     
    2626        fielddisplay(md,'epsvel','for relative fit, avoids misfit becoming infinity, for logarithmic fit, threshold for velocity');
    2727        fielddisplay(md,'plot','visualization of the results of each iteration yes -> 1 no -> 0. Default is 1');
     28        disp('Available responses:');
     29        disp('   101: SurfaceAbsVelMisfit');
     30        disp('   102: SurfaceRelVelMisfit');
     31        disp('   103: SurfaceLogVelMisfit');
     32        disp('   104: SurfaceLogVxVyMisfit');
     33        disp('   105: SurfaceAverageVelMisfit');
     34        disp('   201: ThicknessAbsMisfit');
     35        disp('   501: DragCoefficientAbsGradient');
     36        disp('   502: RheologyBbarAbsGradient');
     37        disp('   503: ThicknessAbsGradient');
    2838else
    2939        disp(sprintf('         %s','no scheduled control. activate by doing md.control_analysis=1'));
  • issm/trunk/src/m/model/ismodelselfconsistent.m

    r9536 r9542  
    221221
    222222        %RESPONSES
    223         checkvalues(md,{'cm_responses'},...
    224                 [SurfaceAbsVelMisfitEnum SurfaceRelVelMisfitEnum SurfaceLogVelMisfitEnum SurfaceLogVxVyMisfitEnum SurfaceAverageVelMisfitEnum...
    225                 ThicknessAbsMisfitEnum DragCoefficientAbsGradientEnum RheologyBbarAbsGradientEnum ThicknessAbsGradientEnum]);
     223        checkvalues(md,{'cm_responses'},[101:105 201 501:503]);
    226224
    227225        %WEIGHTS
  • issm/trunk/src/m/model/marshall.m

    r9536 r9542  
    386386                out(i)=StringToEnum(in{i});
    387387        end
     388function out=marshallcmresponses(in),
     389        out=in;
     390        pos=find(in==101); out(pos)=SurfaceAbsVelMisfitEnum;
     391        pos=find(in==102); out(pos)=SurfaceRelVelMisfitEnum;
     392        pos=find(in==103); out(pos)=SurfaceLogVelMisfitEnum;
     393        pos=find(in==104); out(pos)=SurfaceLogVxVyMisfitEnum;
     394        pos=find(in==105); out(pos)=SurfaceAverageVelMisfitEnum;
     395        pos=find(in==201); out(pos)=ThicknessAbsMisfitEnum;
     396        pos=find(in==501); out(pos)=DragCoefficientAbsGradientEnum;
     397        pos=find(in==502); out(pos)=RheologyBbarAbsGradientEnum;
     398        pos=find(in==503); out(pos)=ThicknessAbsGradientEnum;
  • issm/trunk/src/m/model/parameterization/parametercontrolB.m

    r9536 r9542  
    9090if exist(options,'cm_responses'),
    9191        cm_responses=getfieldvalue(options,'cm_responses');
    92         if ~any(~ismember(cm_responses,[ SurfaceAbsVelMisfitEnum, SurfaceRelVelMisfitEnum, SurfaceLogVelMisfitEnum, SurfaceLogVxVyMisfitEnum, SurfaceAverageVelMisfitEnum ]));
     92        if ~any(~ismember(cm_responses,[ 101:105])),
    9393                md.cm_responses=repmat(cm_responses(:),md.nsteps,1);
    9494                md.cm_responses(md.nsteps+1:end)=[];
     
    9999        third=ceil(md.nsteps/3);
    100100        md.cm_responses=[...
    101                 SurfaceLogVelMisfitEnum*ones(third,1);...
    102                 SurfaceAbsVelMisfitEnum*ones(third,1);...
    103                 repmat([SurfaceAbsVelMisfitEnum;SurfaceAbsVelMisfitEnum;SurfaceLogVelMisfitEnum;SurfaceAbsVelMisfitEnum],third,1)...
     101                103*ones(third,1);...
     102                101*ones(third,1);...
     103                repmat([101;101;103;101],third,1)...
    104104                ];
    105105        md.cm_responses(md.nsteps+1:end)=[];
  • issm/trunk/src/m/model/parameterization/parametercontroldrag.m

    r9536 r9542  
    8989if exist(options,'cm_responses'),
    9090        cm_responses=getfieldvalue(options,'cm_responses');
    91         if ~any(~ismember(cm_responses,[ SurfaceAbsVelMisfitEnum, SurfaceRelVelMisfitEnum, SurfaceLogVelMisfitEnum, SurfaceLogVxVyMisfitEnum, SurfaceAverageVelMisfitEnum ]));
     91        if ~any(~ismember(cm_responses,[101 105])).
    9292                md.cm_responses=repmat(cm_responses(:),md.nsteps,1);
    9393                md.cm_responses(md.nsteps+1:end)=[];
     
    9898        third=ceil(md.nsteps/3);
    9999        md.cm_responses=[...
    100                 SurfaceLogVelMisfitEnum*ones(third,1);...
    101                 SurfaceAbsVelMisfitEnum*ones(third,1);...
    102                 repmat([SurfaceAbsVelMisfitEnum;SurfaceAbsVelMisfitEnum;SurfaceLogVelMisfitEnum;SurfaceAbsVelMisfitEnum],third,1)...
     100                103*ones(third,1);...
     101                101*ones(third,1);...
     102                repmat([101;101;103;101],third,1)...
    103103                ];
    104104        md.cm_responses(md.nsteps+1:end)=[];
Note: See TracChangeset for help on using the changeset viewer.