Changeset 9542
- Timestamp:
- 08/31/11 17:36:09 (14 years ago)
- Location:
- issm/trunk/src/m
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/m/classes/model.m
r9540 r9542 184 184 nsteps = modelfield('default',0,'marshall',true,'format','Integer'); 185 185 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); 187 187 tolx = modelfield('default',0,'marshall',true,'format','Double'); 188 188 optscal = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3); … … 499 499 if (structmd.control_type==147), md.control_type={'Dhdt'}; end 500 500 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 501 512 502 513 %New fields … … 688 699 689 700 %several responses can be used: 690 md.cm_responses= SurfaceAbsVelMisfitEnum*ones(md.nsteps,1);701 md.cm_responses=101*ones(md.nsteps,1); 691 702 692 703 %cm_jump is used to speed up control method. When -
issm/trunk/src/m/model/display/displaycontrol.m
r9536 r9542 16 16 fielddisplay(md,'eps_cm','misfit convergence criterion. Default is 1%, NaN if not applied'); 17 17 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'); 19 19 fielddisplay(md,'maxiter','maximum iterations during each optimization step'); 20 20 fielddisplay(md,'tolx','minimum tolerance which will stop one optimization search'); … … 26 26 fielddisplay(md,'epsvel','for relative fit, avoids misfit becoming infinity, for logarithmic fit, threshold for velocity'); 27 27 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'); 28 38 else 29 39 disp(sprintf(' %s','no scheduled control. activate by doing md.control_analysis=1')); -
issm/trunk/src/m/model/ismodelselfconsistent.m
r9536 r9542 221 221 222 222 %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]); 226 224 227 225 %WEIGHTS -
issm/trunk/src/m/model/marshall.m
r9536 r9542 386 386 out(i)=StringToEnum(in{i}); 387 387 end 388 function 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 90 90 if exist(options,'cm_responses'), 91 91 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])), 93 93 md.cm_responses=repmat(cm_responses(:),md.nsteps,1); 94 94 md.cm_responses(md.nsteps+1:end)=[]; … … 99 99 third=ceil(md.nsteps/3); 100 100 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)... 104 104 ]; 105 105 md.cm_responses(md.nsteps+1:end)=[]; -
issm/trunk/src/m/model/parameterization/parametercontroldrag.m
r9536 r9542 89 89 if exist(options,'cm_responses'), 90 90 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])). 92 92 md.cm_responses=repmat(cm_responses(:),md.nsteps,1); 93 93 md.cm_responses(md.nsteps+1:end)=[]; … … 98 98 third=ceil(md.nsteps/3); 99 99 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)... 103 103 ]; 104 104 md.cm_responses(md.nsteps+1:end)=[];
Note:
See TracChangeset
for help on using the changeset viewer.