Index: /issm/trunk-jpl/src/c/cores/controladm1qn3_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/controladm1qn3_core.cpp	(revision 27757)
+++ /issm/trunk-jpl/src/c/cores/controladm1qn3_core.cpp	(revision 27758)
@@ -588,6 +588,8 @@
 	indic = 4; /*gradient required*/
 	simul_ad(&indic,&n,X,&f,G,izs,rzs,(void*)&mystruct);
+
 	/*Estimation of the expected decrease in f during the first iteration*/
-	double df1=f;
+	double dfminFrac = 1.; /*Expected reduction of J*/
+	double df1=dfminFrac*f;
 
 	/*Call M1QN3 solver*/
Index: /issm/trunk-jpl/src/c/cores/controlm1qn3_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/controlm1qn3_core.cpp	(revision 27757)
+++ /issm/trunk-jpl/src/c/cores/controlm1qn3_core.cpp	(revision 27758)
@@ -122,5 +122,6 @@
 
 	/*Estimation of the expected decrease in f during the first iteration*/
-	double df1=f;
+	double dfminFrac = 1.; /*Expected reduction of J*/
+	double df1=dfminFrac*f;
 
 	/*Call M1QN3 solver*/
Index: /issm/trunk-jpl/src/c/shared/Enum/Enum.vim
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 27757)
+++ /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 27758)
@@ -315,4 +315,5 @@
 syn keyword cConstant InversionCostFunctionsEnum
 syn keyword cConstant InversionDxminEnum
+syn keyword cConstant InversionDfminFracEnum
 syn keyword cConstant InversionGatolEnum
 syn keyword cConstant InversionGradientScalingEnum
@@ -1772,6 +1773,6 @@
 syn keyword cType Cfsurfacelogvel
 syn keyword cType Cfsurfacesquare
+syn keyword cType Cfsurfacesquaretransient
 syn keyword cType Channel
-syn keyword cType classes
 syn keyword cType Constraint
 syn keyword cType Constraints
@@ -1781,6 +1782,6 @@
 syn keyword cType ControlParam
 syn keyword cType Covertree
+syn keyword cType DataSetParam
 syn keyword cType DatasetInput
-syn keyword cType DataSetParam
 syn keyword cType Definition
 syn keyword cType DependentObject
@@ -1795,6 +1796,6 @@
 syn keyword cType ElementInput
 syn keyword cType ElementMatrix
+syn keyword cType ElementVector
 syn keyword cType Elements
-syn keyword cType ElementVector
 syn keyword cType ExponentialVariogram
 syn keyword cType ExternalResult
@@ -1803,10 +1804,9 @@
 syn keyword cType Friction
 syn keyword cType Gauss
-syn keyword cType GaussianVariogram
-syn keyword cType gaussobjects
 syn keyword cType GaussPenta
 syn keyword cType GaussSeg
 syn keyword cType GaussTetra
 syn keyword cType GaussTria
+syn keyword cType GaussianVariogram
 syn keyword cType GenericExternalResult
 syn keyword cType GenericOption
@@ -1825,5 +1825,4 @@
 syn keyword cType IssmDirectApplicInterface
 syn keyword cType IssmParallelDirectApplicInterface
-syn keyword cType krigingobjects
 syn keyword cType Load
 syn keyword cType Loads
@@ -1836,5 +1835,4 @@
 syn keyword cType Matice
 syn keyword cType Matlitho
-syn keyword cType matrixobjects
 syn keyword cType MatrixParam
 syn keyword cType Misfit
@@ -1849,6 +1847,6 @@
 syn keyword cType Observations
 syn keyword cType Option
+syn keyword cType OptionUtilities
 syn keyword cType Options
-syn keyword cType OptionUtilities
 syn keyword cType Param
 syn keyword cType Parameters
@@ -1864,11 +1862,11 @@
 syn keyword cType Regionaloutput
 syn keyword cType Results
+syn keyword cType RiftStruct
 syn keyword cType Riftfront
-syn keyword cType RiftStruct
 syn keyword cType SealevelGeometry
 syn keyword cType Seg
 syn keyword cType SegInput
+syn keyword cType SegRef
 syn keyword cType Segment
-syn keyword cType SegRef
 syn keyword cType SpcDynamic
 syn keyword cType SpcStatic
@@ -1889,4 +1887,8 @@
 syn keyword cType Vertex
 syn keyword cType Vertices
+syn keyword cType classes
+syn keyword cType gaussobjects
+syn keyword cType krigingobjects
+syn keyword cType matrixobjects
 syn keyword cType AdjointBalancethickness2Analysis
 syn keyword cType AdjointBalancethicknessAnalysis
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27757)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27758)
@@ -309,4 +309,5 @@
 	InversionCostFunctionsEnum,
 	InversionDxminEnum,
+	InversionDfminFracEnum,
 	InversionGatolEnum,
 	InversionGradientScalingEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27757)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27758)
@@ -317,4 +317,5 @@
 		case InversionCostFunctionsEnum : return "InversionCostFunctions";
 		case InversionDxminEnum : return "InversionDxmin";
+		case InversionDfminFracEnum : return "InversionDfminFrac";
 		case InversionGatolEnum : return "InversionGatol";
 		case InversionGradientScalingEnum : return "InversionGradientScaling";
Index: /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 27757)
+++ /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 27758)
@@ -308,4 +308,5 @@
 syn keyword juliaConstC InversionCostFunctionsEnum
 syn keyword juliaConstC InversionDxminEnum
+syn keyword juliaConstC InversionDfminFracEnum
 syn keyword juliaConstC InversionGatolEnum
 syn keyword juliaConstC InversionGradientScalingEnum
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27757)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27758)
@@ -323,4 +323,5 @@
 	      else if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum;
 	      else if (strcmp(name,"InversionDxmin")==0) return InversionDxminEnum;
+	      else if (strcmp(name,"InversionDfminFrac")==0) return InversionDfminFracEnum;
 	      else if (strcmp(name,"InversionGatol")==0) return InversionGatolEnum;
 	      else if (strcmp(name,"InversionGradientScaling")==0) return InversionGradientScalingEnum;
@@ -382,9 +383,9 @@
 	      else if (strcmp(name,"MasstransportPenaltyFactor")==0) return MasstransportPenaltyFactorEnum;
 	      else if (strcmp(name,"MasstransportRequestedOutputs")==0) return MasstransportRequestedOutputsEnum;
-	      else if (strcmp(name,"MasstransportStabilization")==0) return MasstransportStabilizationEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"MaterialsBeta")==0) return MaterialsBetaEnum;
+	      if (strcmp(name,"MasstransportStabilization")==0) return MasstransportStabilizationEnum;
+	      else if (strcmp(name,"MaterialsBeta")==0) return MaterialsBetaEnum;
 	      else if (strcmp(name,"MaterialsEarthDensity")==0) return MaterialsEarthDensityEnum;
 	      else if (strcmp(name,"MaterialsEffectiveconductivityAveraging")==0) return MaterialsEffectiveconductivityAveragingEnum;
@@ -505,9 +506,9 @@
 	      else if (strcmp(name,"SolidearthSettingsTimeAcc")==0) return SolidearthSettingsTimeAccEnum;
 	      else if (strcmp(name,"SolidearthSettingsHoriz")==0) return SolidearthSettingsHorizEnum;
-	      else if (strcmp(name,"SolidearthSettingsMaxiter")==0) return SolidearthSettingsMaxiterEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"SolidearthSettingsGrdOcean")==0) return SolidearthSettingsGrdOceanEnum;
+	      if (strcmp(name,"SolidearthSettingsMaxiter")==0) return SolidearthSettingsMaxiterEnum;
+	      else if (strcmp(name,"SolidearthSettingsGrdOcean")==0) return SolidearthSettingsGrdOceanEnum;
 	      else if (strcmp(name,"SolidearthSettingsOceanAreaScaling")==0) return SolidearthSettingsOceanAreaScalingEnum;
 	      else if (strcmp(name,"StochasticForcingCovariance")==0) return StochasticForcingCovarianceEnum;
@@ -628,9 +629,9 @@
 	      else if (strcmp(name,"SteadystateNumRequestedOutputs")==0) return SteadystateNumRequestedOutputsEnum;
 	      else if (strcmp(name,"SteadystateReltol")==0) return SteadystateReltolEnum;
-	      else if (strcmp(name,"SteadystateRequestedOutputs")==0) return SteadystateRequestedOutputsEnum;
          else stage=6;
    }
    if(stage==6){
-	      if (strcmp(name,"Step")==0) return StepEnum;
+	      if (strcmp(name,"SteadystateRequestedOutputs")==0) return SteadystateRequestedOutputsEnum;
+	      else if (strcmp(name,"Step")==0) return StepEnum;
 	      else if (strcmp(name,"Steps")==0) return StepsEnum;
 	      else if (strcmp(name,"StressbalanceAbstol")==0) return StressbalanceAbstolEnum;
@@ -751,9 +752,9 @@
 	      else if (strcmp(name,"BasalforcingsPicoSubShelfOceanSalinity")==0) return BasalforcingsPicoSubShelfOceanSalinityEnum;
 	      else if (strcmp(name,"BasalforcingsPicoSubShelfOceanTemp")==0) return BasalforcingsPicoSubShelfOceanTempEnum;
-	      else if (strcmp(name,"BasalStressx")==0) return BasalStressxEnum;
          else stage=7;
    }
    if(stage==7){
-	      if (strcmp(name,"BasalStressy")==0) return BasalStressyEnum;
+	      if (strcmp(name,"BasalStressx")==0) return BasalStressxEnum;
+	      else if (strcmp(name,"BasalStressy")==0) return BasalStressyEnum;
 	      else if (strcmp(name,"BasalStress")==0) return BasalStressEnum;
 	      else if (strcmp(name,"Base")==0) return BaseEnum;
@@ -874,9 +875,9 @@
 	      else if (strcmp(name,"Gradient")==0) return GradientEnum;
 	      else if (strcmp(name,"GroundinglineHeight")==0) return GroundinglineHeightEnum;
-	      else if (strcmp(name,"HydraulicPotential")==0) return HydraulicPotentialEnum;
          else stage=8;
    }
    if(stage==8){
-	      if (strcmp(name,"HydraulicPotentialOld")==0) return HydraulicPotentialOldEnum;
+	      if (strcmp(name,"HydraulicPotential")==0) return HydraulicPotentialEnum;
+	      else if (strcmp(name,"HydraulicPotentialOld")==0) return HydraulicPotentialOldEnum;
 	      else if (strcmp(name,"HydrologyBasalFlux")==0) return HydrologyBasalFluxEnum;
 	      else if (strcmp(name,"HydrologyBasinsId")==0) return HydrologyBasinsIdEnum;
@@ -997,9 +998,9 @@
 	      else if (strcmp(name,"SealevelBarystaticHydroLoad")==0) return SealevelBarystaticHydroLoadEnum;
 	      else if (strcmp(name,"SealevelBarystaticBpMask")==0) return SealevelBarystaticBpMaskEnum;
-	      else if (strcmp(name,"SealevelBarystaticBpWeights")==0) return SealevelBarystaticBpWeightsEnum;
          else stage=9;
    }
    if(stage==9){
-	      if (strcmp(name,"SealevelBarystaticBpArea")==0) return SealevelBarystaticBpAreaEnum;
+	      if (strcmp(name,"SealevelBarystaticBpWeights")==0) return SealevelBarystaticBpWeightsEnum;
+	      else if (strcmp(name,"SealevelBarystaticBpArea")==0) return SealevelBarystaticBpAreaEnum;
 	      else if (strcmp(name,"SealevelBarystaticBpLoad")==0) return SealevelBarystaticBpLoadEnum;
 	      else if (strcmp(name,"SealevelBarystaticOceanMask")==0) return SealevelBarystaticOceanMaskEnum;
@@ -1120,9 +1121,9 @@
 	      else if (strcmp(name,"SmbMassBalance")==0) return SmbMassBalanceEnum;
 	      else if (strcmp(name,"SmbMassBalanceSnow")==0) return SmbMassBalanceSnowEnum;
-	      else if (strcmp(name,"SmbMassBalanceIce")==0) return SmbMassBalanceIceEnum;
          else stage=10;
    }
    if(stage==10){
-	      if (strcmp(name,"SmbMassBalanceSemic")==0) return SmbMassBalanceSemicEnum;
+	      if (strcmp(name,"SmbMassBalanceIce")==0) return SmbMassBalanceIceEnum;
+	      else if (strcmp(name,"SmbMassBalanceSemic")==0) return SmbMassBalanceSemicEnum;
 	      else if (strcmp(name,"SmbMassBalanceSubstep")==0) return SmbMassBalanceSubstepEnum;
 	      else if (strcmp(name,"SmbMassBalanceTransient")==0) return SmbMassBalanceTransientEnum;
@@ -1243,9 +1244,9 @@
 	      else if (strcmp(name,"Vel")==0) return VelEnum;
 	      else if (strcmp(name,"VxAverage")==0) return VxAverageEnum;
-	      else if (strcmp(name,"VxBase")==0) return VxBaseEnum;
          else stage=11;
    }
    if(stage==11){
-	      if (strcmp(name,"VxDebris")==0) return VxDebrisEnum;
+	      if (strcmp(name,"VxBase")==0) return VxBaseEnum;
+	      else if (strcmp(name,"VxDebris")==0) return VxDebrisEnum;
 	      else if (strcmp(name,"Vx")==0) return VxEnum;
 	      else if (strcmp(name,"VxMesh")==0) return VxMeshEnum;
@@ -1366,9 +1367,9 @@
 	      else if (strcmp(name,"Outputdefinition84")==0) return Outputdefinition84Enum;
 	      else if (strcmp(name,"Outputdefinition85")==0) return Outputdefinition85Enum;
-	      else if (strcmp(name,"Outputdefinition86")==0) return Outputdefinition86Enum;
          else stage=12;
    }
    if(stage==12){
-	      if (strcmp(name,"Outputdefinition87")==0) return Outputdefinition87Enum;
+	      if (strcmp(name,"Outputdefinition86")==0) return Outputdefinition86Enum;
+	      else if (strcmp(name,"Outputdefinition87")==0) return Outputdefinition87Enum;
 	      else if (strcmp(name,"Outputdefinition88")==0) return Outputdefinition88Enum;
 	      else if (strcmp(name,"Outputdefinition89")==0) return Outputdefinition89Enum;
@@ -1489,9 +1490,9 @@
 	      else if (strcmp(name,"FSApproximation")==0) return FSApproximationEnum;
 	      else if (strcmp(name,"FSSolver")==0) return FSSolverEnum;
-	      else if (strcmp(name,"FSpressure")==0) return FSpressureEnum;
          else stage=13;
    }
    if(stage==13){
-	      if (strcmp(name,"FSvelocity")==0) return FSvelocityEnum;
+	      if (strcmp(name,"FSpressure")==0) return FSpressureEnum;
+	      else if (strcmp(name,"FSvelocity")==0) return FSvelocityEnum;
 	      else if (strcmp(name,"FemModel")==0) return FemModelEnum;
 	      else if (strcmp(name,"FileParam")==0) return FileParamEnum;
@@ -1612,9 +1613,9 @@
 	      else if (strcmp(name,"Matlitho")==0) return MatlithoEnum;
 	      else if (strcmp(name,"Mathydro")==0) return MathydroEnum;
-	      else if (strcmp(name,"MatrixParam")==0) return MatrixParamEnum;
          else stage=14;
    }
    if(stage==14){
-	      if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum;
+	      if (strcmp(name,"MatrixParam")==0) return MatrixParamEnum;
+	      else if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum;
 	      else if (strcmp(name,"MaxAbsVy")==0) return MaxAbsVyEnum;
 	      else if (strcmp(name,"MaxAbsVz")==0) return MaxAbsVzEnum;
@@ -1735,9 +1736,9 @@
 	      else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum;
 	      else if (strcmp(name,"StressIntensityFactor")==0) return StressIntensityFactorEnum;
-	      else if (strcmp(name,"StressbalanceAnalysis")==0) return StressbalanceAnalysisEnum;
          else stage=15;
    }
    if(stage==15){
-	      if (strcmp(name,"StressbalanceConvergenceNumSteps")==0) return StressbalanceConvergenceNumStepsEnum;
+	      if (strcmp(name,"StressbalanceAnalysis")==0) return StressbalanceAnalysisEnum;
+	      else if (strcmp(name,"StressbalanceConvergenceNumSteps")==0) return StressbalanceConvergenceNumStepsEnum;
 	      else if (strcmp(name,"StressbalanceSIAAnalysis")==0) return StressbalanceSIAAnalysisEnum;
 	      else if (strcmp(name,"StressbalanceSolution")==0) return StressbalanceSolutionEnum;
