Changeset 18615


Ignore:
Timestamp:
10/10/14 14:28:51 (10 years ago)
Author:
Mathieu Morlighem
Message:

NEW: added scaling factor in M1QN3 to normalize gradient

Location:
issm/trunk-jpl/src
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r18613 r18615  
    142142        IndependentObjectEnum,
    143143        InversionControlParametersEnum,
     144        InversionControlScalingFactorsEnum,
    144145        InversionCostFunctionThresholdEnum,
    145146        InversionCostFunctionsCoefficientsEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r18613 r18615  
    150150                case IndependentObjectEnum : return "IndependentObject";
    151151                case InversionControlParametersEnum : return "InversionControlParameters";
     152                case InversionControlScalingFactorsEnum : return "InversionControlScalingFactors";
    152153                case InversionCostFunctionThresholdEnum : return "InversionCostFunctionThreshold";
    153154                case InversionCostFunctionsCoefficientsEnum : return "InversionCostFunctionsCoefficients";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r18613 r18615  
    153153              else if (strcmp(name,"IndependentObject")==0) return IndependentObjectEnum;
    154154              else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum;
     155              else if (strcmp(name,"InversionControlScalingFactors")==0) return InversionControlScalingFactorsEnum;
    155156              else if (strcmp(name,"InversionCostFunctionThreshold")==0) return InversionCostFunctionThresholdEnum;
    156157              else if (strcmp(name,"InversionCostFunctionsCoefficients")==0) return InversionCostFunctionsCoefficientsEnum;
     
    259260              else if (strcmp(name,"MasstransportVertexPairing")==0) return MasstransportVertexPairingEnum;
    260261              else if (strcmp(name,"MasstransportNumRequestedOutputs")==0) return MasstransportNumRequestedOutputsEnum;
    261               else if (strcmp(name,"MasstransportRequestedOutputs")==0) return MasstransportRequestedOutputsEnum;
    262262         else stage=3;
    263263   }
    264264   if(stage==3){
    265               if (strcmp(name,"QmuIsdakota")==0) return QmuIsdakotaEnum;
     265              if (strcmp(name,"MasstransportRequestedOutputs")==0) return MasstransportRequestedOutputsEnum;
     266              else if (strcmp(name,"QmuIsdakota")==0) return QmuIsdakotaEnum;
    266267              else if (strcmp(name,"MassFluxSegments")==0) return MassFluxSegmentsEnum;
    267268              else if (strcmp(name,"MassFluxSegmentsPresent")==0) return MassFluxSegmentsPresentEnum;
     
    382383              else if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum;
    383384              else if (strcmp(name,"FlaimAnalysis")==0) return FlaimAnalysisEnum;
    384               else if (strcmp(name,"FlaimSolution")==0) return FlaimSolutionEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum;
     388              if (strcmp(name,"FlaimSolution")==0) return FlaimSolutionEnum;
     389              else if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum;
    389390              else if (strcmp(name,"HydrologyDCInefficientAnalysis")==0) return HydrologyDCInefficientAnalysisEnum;
    390391              else if (strcmp(name,"HydrologyDCEfficientAnalysis")==0) return HydrologyDCEfficientAnalysisEnum;
     
    505506              else if (strcmp(name,"Adjointx")==0) return AdjointxEnum;
    506507              else if (strcmp(name,"Adjointy")==0) return AdjointyEnum;
    507               else if (strcmp(name,"Adjointz")==0) return AdjointzEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"BalancethicknessMisfit")==0) return BalancethicknessMisfitEnum;
     511              if (strcmp(name,"Adjointz")==0) return AdjointzEnum;
     512              else if (strcmp(name,"BalancethicknessMisfit")==0) return BalancethicknessMisfitEnum;
    512513              else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum;
    513514              else if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum;
     
    628629              else if (strcmp(name,"J")==0) return JEnum;
    629630              else if (strcmp(name,"StringExternalResult")==0) return StringExternalResultEnum;
    630               else if (strcmp(name,"Step")==0) return StepEnum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"Time")==0) return TimeEnum;
     634              if (strcmp(name,"Step")==0) return StepEnum;
     635              else if (strcmp(name,"Time")==0) return TimeEnum;
    635636              else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum;
    636637              else if (strcmp(name,"Outputdefinition")==0) return OutputdefinitionEnum;
     
    751752              else if (strcmp(name,"BasalforcingsOceanTurningAngle")==0) return BasalforcingsOceanTurningAngleEnum;
    752753              else if (strcmp(name,"BasalforcingsOceanSsh")==0) return BasalforcingsOceanSshEnum;
    753               else if (strcmp(name,"BasalforcingsOceanVx")==0) return BasalforcingsOceanVxEnum;
    754754         else stage=7;
    755755   }
    756756   if(stage==7){
    757               if (strcmp(name,"BasalforcingsOceanVy")==0) return BasalforcingsOceanVyEnum;
     757              if (strcmp(name,"BasalforcingsOceanVx")==0) return BasalforcingsOceanVxEnum;
     758              else if (strcmp(name,"BasalforcingsOceanVy")==0) return BasalforcingsOceanVyEnum;
    758759              else if (strcmp(name,"SurfaceforcingsRhoAir")==0) return SurfaceforcingsRhoAirEnum;
    759760              else if (strcmp(name,"SurfaceforcingsAirCoef")==0) return SurfaceforcingsAirCoefEnum;
  • issm/trunk-jpl/src/m/classes/m1qn3inversion.m

    r18565 r18615  
    99                incomplete_adjoint          = 0
    1010                control_parameters          = NaN
     11                control_scaling_factors     = NaN
    1112                maxsteps                    = 0
    1213                maxiter                     = 0
    13                 dxmin                       = 0;
    14                 gttol                       = 0;
     14                dxmin                       = 0
     15                gttol                       = 0
    1516                cost_functions              = NaN
    1617                cost_functions_coefficients = NaN
     
    2223                vel_obs                     = NaN
    2324                thickness_obs               = NaN
    24                 surface_obs               = NaN
     25                surface_obs                 = NaN
    2526
    2627        end
     
    4445                        %drag and B are supported yet)
    4546                        self.control_parameters={'FrictionCoefficient'};
     47
     48                        %Scaling factor for each control
     49                        self.control_scaling_factors=1;
    4650
    4751                        %number of iterations
     
    7478                                {'BalancethicknessThickeningRate' 'FrictionCoefficient' 'MaterialsRheologyBbar' 'DamageDbar',...
    7579                                'Vx' 'Vy' 'Thickness' 'BalancethicknessOmega' 'BalancethicknessApparentMassbalance'});
     80                        md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[1 num_controls],'>',0,'NaN',1);
    7681                        md = checkfield(md,'fieldname','inversion.maxsteps','numel',1,'>=',0);
    7782                        md = checkfield(md,'fieldname','inversion.maxiter','numel',1,'>=',0);
     
    100105                        fielddisplay(obj,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity');
    101106                        fielddisplay(obj,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
     107                        fielddisplay(obj,'control_scaling_factors','order of magnitude of each control (useful for multi-parameter optimization)');
    102108                        fielddisplay(obj,'maxsteps','maximum number of iterations (gradient computation)');
    103109                        fielddisplay(obj,'maxiter','maximum number of Function evaluation (forward run)');
     
    132138                        if ~obj.iscontrol, return; end
    133139                        WriteData(fid,'object',obj,'class','inversion','fieldname','incomplete_adjoint','format','Boolean');
     140                        WriteData(fid,'object',obj,'class','inversion','fieldname','control_scaling_factors','format','DoubleMat','mattype',3);
    134141                        WriteData(fid,'object',obj,'class','inversion','fieldname','maxsteps','format','Integer');
    135142                        WriteData(fid,'object',obj,'class','inversion','fieldname','maxiter','format','Integer');
  • issm/trunk-jpl/src/m/enum/EnumDefinitions.py

    r18613 r18615  
    142142def IndependentObjectEnum(): return StringToEnum("IndependentObject")[0]
    143143def InversionControlParametersEnum(): return StringToEnum("InversionControlParameters")[0]
     144def InversionControlScalingFactorsEnum(): return StringToEnum("InversionControlScalingFactors")[0]
    144145def InversionCostFunctionThresholdEnum(): return StringToEnum("InversionCostFunctionThreshold")[0]
    145146def InversionCostFunctionsCoefficientsEnum(): return StringToEnum("InversionCostFunctionsCoefficients")[0]
Note: See TracChangeset for help on using the changeset viewer.