Index: /issm/branches/trunk-jpl-damage/externalpackages/octave/install.sh
===================================================================
--- /issm/branches/trunk-jpl-damage/externalpackages/octave/install.sh	(revision 12872)
+++ /issm/branches/trunk-jpl-damage/externalpackages/octave/install.sh	(revision 12872)
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+#Some cleanup
+version=3.6.1
+rm -rf src install octave-$version octave-$version.tar.gz
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py "http://issm.jpl.nasa.gov/files/externalpackages/octave-$version.tar.gz" "octave-$version.tar.gz"
+
+#Untar 
+tar -zxvf  octave-$version.tar.gz
+
+#Move octave into install directory
+mv octave-$version/* src
+rm -rf octave-$version
+
+#install
+cd src 
+
+exit
+make 
+
+#Compile 
+cd ../install
+mkdir lib
+cd lib
+cp ../../src/*.a .
+ln -s octave_LINUX.a octave.a
+ln -s octave_LINUX.a liboctave.a
Index: /issm/branches/trunk-jpl-damage/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/EnumDefinitions/EnumDefinitions.h	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/EnumDefinitions/EnumDefinitions.h	(revision 12872)
@@ -82,5 +82,4 @@
 	InversionStepThresholdEnum,
 	InversionThicknessObsEnum,
-	InversionThreshParametersEnum,
 	InversionVelObsEnum,
 	InversionVxObsEnum,
Index: /issm/branches/trunk-jpl-damage/src/c/modules/EnumToStringx/EnumToStringx.cpp
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 12872)
@@ -86,5 +86,4 @@
 		case InversionStepThresholdEnum : return "InversionStepThreshold";
 		case InversionThicknessObsEnum : return "InversionThicknessObs";
-		case InversionThreshParametersEnum : return "InversionThreshParameters";
 		case InversionVelObsEnum : return "InversionVelObs";
 		case InversionVxObsEnum : return "InversionVxObs";
Index: /issm/branches/trunk-jpl-damage/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp	(revision 12872)
@@ -40,5 +40,5 @@
 	iomodel->FetchDataToInput(elements,InversionThicknessObsEnum);
 
-	iomodel->FetchData(5,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum,InversionThreshParametersEnum);
+	iomodel->FetchData(4,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum);
 	for(i=0;i<num_control_type;i++){
 		switch((int)iomodel->Data(InversionControlParametersEnum)[i]){
@@ -67,4 +67,4 @@
 	
 	/*Free data: */
-	iomodel->DeleteData(1+5+6,MeshElementsEnum,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum,InversionThreshParametersEnum,BalancethicknessThickeningRateEnum,VxEnum,VyEnum,FrictionCoefficientEnum,MaterialsRheologyBEnum,MaterialsRheologyZEnum);
+	iomodel->DeleteData(1+4+6,MeshElementsEnum,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum,BalancethicknessThickeningRateEnum,VxEnum,VyEnum,FrictionCoefficientEnum,MaterialsRheologyBEnum,MaterialsRheologyZEnum);
 }
Index: /issm/branches/trunk-jpl-damage/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 12872)
@@ -49,5 +49,5 @@
 	if(dim==3)iomodel->FetchData(2,MeshUpperelementsEnum,MeshLowerelementsEnum);
 	#endif
-	if(control_analysis)iomodel->FetchData(4,InversionControlParametersEnum,InversionMinParametersEnum,InversionMaxParametersEnum,InversionThreshParametersEnum);
+	if(control_analysis)iomodel->FetchData(3,InversionControlParametersEnum,InversionMinParametersEnum,InversionMaxParametersEnum);
 	
 	/*Create elements and materials: */
@@ -67,7 +67,7 @@
 	
 	/*Free data: */
-	iomodel->DeleteData(11,MeshElementsEnum,MeshElementconnectivityEnum,MeshUpperelementsEnum,MeshLowerelementsEnum,
+	iomodel->DeleteData(10,MeshElementsEnum,MeshElementconnectivityEnum,MeshUpperelementsEnum,MeshLowerelementsEnum,
 				MaterialsRheologyBEnum,MaterialsRheologyNEnum,MaterialsRheologyZEnum,InversionControlParametersEnum,InversionMinParametersEnum,
-				InversionMaxParametersEnum,InversionThreshParametersEnum);
+				InversionMaxParametersEnum);
 
 	/*Add new constant material property to materials, at the end: */
Index: /issm/branches/trunk-jpl-damage/src/c/modules/StringToEnumx/StringToEnumx.cpp
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 12872)
@@ -87,5 +87,4 @@
 	      else if (strcmp(name,"InversionStepThreshold")==0) return InversionStepThresholdEnum;
 	      else if (strcmp(name,"InversionThicknessObs")==0) return InversionThicknessObsEnum;
-	      else if (strcmp(name,"InversionThreshParameters")==0) return InversionThreshParametersEnum;
 	      else if (strcmp(name,"InversionVelObs")==0) return InversionVelObsEnum;
 	      else if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum;
@@ -137,9 +136,9 @@
 	      else if (strcmp(name,"MiscellaneousName")==0) return MiscellaneousNameEnum;
 	      else if (strcmp(name,"PrognosticHydrostaticAdjustment")==0) return PrognosticHydrostaticAdjustmentEnum;
+	      else if (strcmp(name,"PrognosticMinThickness")==0) return PrognosticMinThicknessEnum;
          else stage=2;
    }
    if(stage==2){
-	      if (strcmp(name,"PrognosticMinThickness")==0) return PrognosticMinThicknessEnum;
-	      else if (strcmp(name,"PrognosticPenaltyFactor")==0) return PrognosticPenaltyFactorEnum;
+	      if (strcmp(name,"PrognosticPenaltyFactor")==0) return PrognosticPenaltyFactorEnum;
 	      else if (strcmp(name,"PrognosticSpcthickness")==0) return PrognosticSpcthicknessEnum;
 	      else if (strcmp(name,"PrognosticStabilization")==0) return PrognosticStabilizationEnum;
@@ -260,9 +259,9 @@
 	      else if (strcmp(name,"Input")==0) return InputEnum;
 	      else if (strcmp(name,"IntInput")==0) return IntInputEnum;
+	      else if (strcmp(name,"IntParam")==0) return IntParamEnum;
          else stage=3;
    }
    if(stage==3){
-	      if (strcmp(name,"IntParam")==0) return IntParamEnum;
-	      else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
+	      if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
 	      else if (strcmp(name,"MacAyeal2dIceFront")==0) return MacAyeal2dIceFrontEnum;
 	      else if (strcmp(name,"MacAyeal3dIceFront")==0) return MacAyeal3dIceFrontEnum;
@@ -383,9 +382,9 @@
 	      else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum;
 	      else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum;
+	      else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"IceVolume")==0) return IceVolumeEnum;
-	      else if (strcmp(name,"P0")==0) return P0Enum;
+	      if (strcmp(name,"P0")==0) return P0Enum;
 	      else if (strcmp(name,"P1")==0) return P1Enum;
 	      else if (strcmp(name,"P1DG")==0) return P1DGEnum;
Index: /issm/branches/trunk-jpl-damage/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/objects/Elements/Penta.cpp	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/objects/Elements/Penta.cpp	(revision 12872)
@@ -1533,5 +1533,4 @@
 	double  cmmininputs[6];
 	double  cmmaxinputs[6];
-	double  cmthreshinputs[6];
 
 	double  yts;
@@ -1566,6 +1565,5 @@
 						for(j=0;j<6;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts;
 						for(j=0;j<6;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts;
-						for(j=0;j<6;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts;
-						this->inputs->AddInput(new ControlInput(BalancethicknessThickeningRateEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1));
+						this->inputs->AddInput(new ControlInput(BalancethicknessThickeningRateEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
 					}
 					break;
@@ -1575,6 +1573,5 @@
 						for(j=0;j<6;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts;
 						for(j=0;j<6;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts;
-						for(j=0;j<6;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts;
-						this->inputs->AddInput(new ControlInput(VxEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1));
+						this->inputs->AddInput(new ControlInput(VxEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
 					}
 					break;
@@ -1584,6 +1581,5 @@
 						for(j=0;j<6;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts;
 						for(j=0;j<6;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts;
-						for(j=0;j<6;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts;
-						this->inputs->AddInput(new ControlInput(VyEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1));
+						this->inputs->AddInput(new ControlInput(VyEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
 					}
 					break;
@@ -1593,6 +1589,5 @@
 						for(j=0;j<6;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i];
 						for(j=0;j<6;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i];
-						for(j=0;j<6;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts;
-						this->inputs->AddInput(new ControlInput(FrictionCoefficientEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1));
+						this->inputs->AddInput(new ControlInput(FrictionCoefficientEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
 					}
 					break;
Index: /issm/branches/trunk-jpl-damage/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/objects/Elements/Tria.cpp	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/objects/Elements/Tria.cpp	(revision 12872)
@@ -1377,5 +1377,4 @@
 	double cmmininputs[3];
 	double cmmaxinputs[3];
-	double cmthreshinputs[3];
 	bool   control_analysis=false;
 	int    num_control_type;
@@ -1404,6 +1403,5 @@
 						for(j=0;j<3;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;
 						for(j=0;j<3;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;
-						for(j=0;j<3;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;
-						this->inputs->AddInput(new ControlInput(BalancethicknessThickeningRateEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1));
+						this->inputs->AddInput(new ControlInput(BalancethicknessThickeningRateEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
 					}
 					break;
@@ -1413,6 +1411,5 @@
 						for(j=0;j<3;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;
 						for(j=0;j<3;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;
-						for(j=0;j<3;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;
-						this->inputs->AddInput(new ControlInput(VxEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1));
+						this->inputs->AddInput(new ControlInput(VxEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
 					}
 					break;
@@ -1422,6 +1419,5 @@
 						for(j=0;j<3;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;
 						for(j=0;j<3;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;
-						for(j=0;j<3;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;
-						this->inputs->AddInput(new ControlInput(VyEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1));
+						this->inputs->AddInput(new ControlInput(VyEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
 					}
 					break;
@@ -1431,6 +1427,5 @@
 						for(j=0;j<3;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i];
 						for(j=0;j<3;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i];
-						for(j=0;j<3;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;
-						this->inputs->AddInput(new ControlInput(FrictionCoefficientEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1));
+						this->inputs->AddInput(new ControlInput(FrictionCoefficientEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
 					}
 					break;
Index: /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/BoolInput.cpp
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/BoolInput.cpp	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/BoolInput.cpp	(revision 12872)
@@ -167,9 +167,8 @@
 /*}}}*/
 /*FUNCTION BoolInput::Constrain{{{1*/
-void BoolInput::Constrain(double cm_min, double cm_max, double cm_thresh){
+void BoolInput::Constrain(double cm_min, double cm_max){
 
 	if(!isnan(cm_min)) if (this->value<cm_min)this->value=cm_min;
 	if(!isnan(cm_max)) if (this->value>cm_max)this->value=cm_max;
-	if(!isnan(cm_thresh)) if (this->value<cm_thresh)this->value=cm_min;
 
 }
Index: /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/BoolInput.h
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/BoolInput.h	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/BoolInput.h	(revision 12872)
@@ -40,5 +40,4 @@
 		Input* PointwiseMin(Input* inputB){_error_("not implemented yet");};
 		Input* PointwiseMax(Input* inputB){_error_("not implemented yet");};
-		Input* PointwiseThresh(Input* inputB,Input* inputC){_error_("not implemented yet");};
 		ElementResult* SpawnResult(int step, double time);
 		void Configure(Parameters* parameters);
@@ -74,5 +73,5 @@
 		void ArtificialNoise(double min,double max){_error_("not implemented yet");};
 		void AXPY(Input* xinput,double scalar);
-		void Constrain(double cm_min, double cm_max, double cm_thresh);
+		void Constrain(double cm_min, double cm_max);
 		void Extrude(void);
 		void VerticallyIntegrate(Input* thickness_input){_error_("not supported yet");};
Index: /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/ControlInput.cpp
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/ControlInput.cpp	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/ControlInput.cpp	(revision 12872)
@@ -25,10 +25,9 @@
 	minvalues   = NULL;
 	maxvalues   = NULL;
-	threshvalues   = NULL;
 	gradient    = NULL;
 }
 /*}}}*/
-/*FUNCTION ControlInput::ControlInput(int enum_type,int enum_input,double* pvalues,double* pmin,double* pmax,double* pthresh,int id){{{1*/
-ControlInput::ControlInput(int in_enum_type,int enum_input,double* pvalues,double* pmin,double* pmax,double* pthresh,int id){
+/*FUNCTION ControlInput::ControlInput(int enum_type,int enum_input,double* pvalues,double* pmin,double* pmax,int id){{{1*/
+ControlInput::ControlInput(int in_enum_type,int enum_input,double* pvalues,double* pmin,double* pmax,int id){
 
 	control_id=id;
@@ -41,5 +40,4 @@
 			minvalues  =new TriaP1Input(enum_type,pmin);
 			maxvalues  =new TriaP1Input(enum_type,pmax);
-			threshvalues  =new TriaP1Input(enum_type,pthresh);
 			break;
 		case PentaP1InputEnum:
@@ -48,5 +46,4 @@
 			minvalues  =new PentaP1Input(enum_type,pmin);
 			maxvalues  =new PentaP1Input(enum_type,pmax);
-			threshvalues  =new TriaP1Input(enum_type,pthresh);
 			break;
 		default:
@@ -62,5 +59,4 @@
 	delete minvalues;
 	delete maxvalues;
-	delete threshvalues;
 	delete gradient;
 }
@@ -82,5 +78,4 @@
 	printf("---minvalues: \n");  if (minvalues)   minvalues->Echo();
 	printf("---maxvalues: \n");  if (maxvalues)   maxvalues->Echo();
-	printf("---threshvalues: \n");  if (threshvalues)   threshvalues->Echo();
 	printf("---gradient: \n");   if (gradient)    gradient->Echo();
 }
@@ -160,15 +155,4 @@
 	}
 
-	/*marshal threshvalues*/
-	if(!threshvalues){
-		flag=0;
-		memcpy(marshalled_dataset,&flag,sizeof(flag));marshalled_dataset+=sizeof(flag);
-	}
-	else{
-		flag=1;
-		memcpy(marshalled_dataset,&flag,sizeof(flag));marshalled_dataset+=sizeof(flag);
-		this->threshvalues->Marshall(&marshalled_dataset);
-	}
-
 	/*marshal gradient*/
 	if(!gradient){
@@ -200,5 +184,4 @@
 	if(minvalues)size+=minvalues->MarshallSize();
 	if(maxvalues)size+=maxvalues->MarshallSize();
-	if(threshvalues)size+=threshvalues->MarshallSize();
 	if(gradient)   size+=gradient->MarshallSize();
 	return size;
@@ -291,22 +274,4 @@
 	}
 
-	/*Demarshal threshvalues*/
-	memcpy(&flag,marshalled_dataset,sizeof(int));marshalled_dataset+=sizeof(int);
-	if(flag){
-		memcpy(&input_enum_type,marshalled_dataset,sizeof(int)); marshalled_dataset+=sizeof(int);
-		if(input_enum_type==PentaP1InputEnum){
-			threshvalues=new PentaP1Input();
-			threshvalues->Demarshall(&marshalled_dataset);
-		}
-		else if(input_enum_type==TriaP1InputEnum){
-			threshvalues=new TriaP1Input();
-			threshvalues->Demarshall(&marshalled_dataset);
-		}
-		else _error_("Not supported yet");
-	}
-	else{
-		threshvalues=NULL;
-	}
-
 	/*Demarshal gradient*/
 	memcpy(&flag,marshalled_dataset,sizeof(int));marshalled_dataset+=sizeof(int);
@@ -353,5 +318,4 @@
 	if(minvalues)   output->minvalues=(Input*)this->minvalues->copy();
 	if(maxvalues)   output->maxvalues=(Input*)this->maxvalues->copy();
-	if(threshvalues)   output->threshvalues=(Input*)this->threshvalues->copy();
 	if(gradient)    output->gradient=(Input*)this->gradient->copy();
 
@@ -379,10 +343,8 @@
 	newvalues=this->values->PointwiseMax(minvalues);
 	delete values; this->values=newvalues;
-	newvalues=this->values->PointwiseThresh(threshvalues,minvalues);
-	delete values; this->values=newvalues;
-}/*}}}*/
-/*FUNCTION ControlInput::Constrain(double min, double max, double thresh){{{1*/
-void ControlInput::Constrain(double min, double max, double thresh){
-	   values->Constrain(min,max,thresh);
+}/*}}}*/
+/*FUNCTION ControlInput::Constrain(double min, double max){{{1*/
+void ControlInput::Constrain(double min, double max){
+	   values->Constrain(min,max);
 }/*}}}*/
 /*FUNCTION ControlInput::Extrude{{{1*/
Index: /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/ControlInput.h
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/ControlInput.h	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/ControlInput.h	(revision 12872)
@@ -23,10 +23,9 @@
 		Input* minvalues;
 		Input* maxvalues;
-		Input* threshvalues;
 		Input* gradient;
 
 		/*ControlInput constructors, destructors: {{{1*/
 		ControlInput();
-		ControlInput(int enum_type,int enum_input,double* pvalues,double* pmin,double* pmax,double* pthresh,int id);
+		ControlInput(int enum_type,int enum_input,double* pvalues,double* pmin,double* pmax,int id);
 		~ControlInput();
 		/*}}}*/
@@ -45,5 +44,4 @@
 		Input* PointwiseMin(Input* inputB){_error_("not implemented yet");};
 		Input* PointwiseMax(Input* inputB){_error_("not implemented yet");};
-		Input* PointwiseThresh(Input* inputB,Input* inputC){_error_("not implemented yet");};
 		ElementResult* SpawnResult(int step, double time);
 		void AddTimeValues(double* values,int step,double time){_error_("not supported yet");};
@@ -76,5 +74,5 @@
 		void AXPY(Input* xinput,double scalar){_error_("not implemented yet");};
 		void Constrain(void);
-		void Constrain(double min,double max, double thresh);
+		void Constrain(double min,double max);
 		double InfinityNorm(void){_error_("not implemented yet");};
 		double Max(void){_error_("not implemented yet");};
Index: /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/DatasetInput.h
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/DatasetInput.h	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/DatasetInput.h	(revision 12872)
@@ -40,5 +40,4 @@
 		Input* PointwiseMin(Input* inputB){_error_("not implemented yet");};
 		Input* PointwiseMax(Input* inputB){_error_("not implemented yet");};
-		Input* PointwiseThresh(Input* inputB,Input* inputC){_error_("not implemented yet");};
 		ElementResult* SpawnResult(int step, double time){_error_("not implemented yet");};
 		void AddTimeValues(double* values,int step,double time){_error_("not supported yet");};
@@ -70,5 +69,5 @@
 		void AXPY(Input* xinput,double scalar){_error_("not implemented yet");};
 		void Constrain(void){_error_("not implemented yet");};
-		void Constrain(double min,double max, double thresh){_error_("not implemented yet");};
+		void Constrain(double min,double max){_error_("not implemented yet");};
 		double InfinityNorm(void){_error_("not implemented yet");};
 		double Max(void){_error_("not implemented yet");};
Index: /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/DoubleInput.cpp
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/DoubleInput.cpp	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/DoubleInput.cpp	(revision 12872)
@@ -223,9 +223,8 @@
 /*}}}*/
 /*FUNCTION DoubleInput::Constrain{{{1*/
-void DoubleInput::Constrain(double cm_min, double cm_max, double cm_thresh){
+void DoubleInput::Constrain(double cm_min, double cm_max){
 
 	if(!isnan(cm_min)) if (this->value<cm_min)this->value=cm_min;
 	if(!isnan(cm_max)) if (this->value>cm_max)this->value=cm_max;
-	if(!isnan(cm_thresh)) if (this->value<cm_thresh)this->value=cm_min;
 
 }
Index: /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/DoubleInput.h
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/DoubleInput.h	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/DoubleInput.h	(revision 12872)
@@ -39,5 +39,4 @@
 		Input* PointwiseMin(Input* inputB);
 		Input* PointwiseMax(Input* inputB);
-		Input* PointwiseThresh(Input* inputB,Input* inputC){_error_("not supported yet");};
 		ElementResult* SpawnResult(int step, double time);
 		void AddTimeValues(double* values,int step,double time){_error_("not supported yet");};
@@ -68,5 +67,5 @@
 		void ArtificialNoise(double min,double max){_error_("not implemented yet");};
 		void AXPY(Input* xinput,double scalar);
-		void Constrain(double cm_min, double cm_max, double cm_thresh);
+		void Constrain(double cm_min, double cm_max);
 		double InfinityNorm(void){_error_("not implemented yet");};
 		double Max(void);
Index: /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/Input.h
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/Input.h	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/Input.h	(revision 12872)
@@ -53,5 +53,5 @@
 		virtual void   ArtificialNoise(double min,double max)=0;
 		virtual void   AXPY(Input* xinput,double scalar)=0;
-		virtual void   Constrain(double cm_min, double cm_max, double cm_thresh)=0;
+		virtual void   Constrain(double cm_min, double cm_max)=0;
 		virtual void   VerticallyIntegrate(Input* thickness_input)=0;
 		virtual void   Extrude()=0;
@@ -63,5 +63,4 @@
 		virtual Input* PointwiseMax(Input* inputmax)=0;
 		virtual Input* PointwiseMin(Input* inputmin)=0;
-		virtual Input* PointwiseThresh(Input* inputthresh,Input* inputmin)=0;
 		virtual ElementResult* SpawnResult(int step, double time)=0;
 
Index: /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/IntInput.cpp
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/IntInput.cpp	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/IntInput.cpp	(revision 12872)
@@ -172,9 +172,8 @@
 /*}}}*/
 /*FUNCTION IntInput::Constrain{{{1*/
-void IntInput::Constrain(double cm_min, double cm_max, double cm_thresh){
+void IntInput::Constrain(double cm_min, double cm_max){
 
 	if(!isnan(cm_min)) if (this->value<cm_min)this->value=(int)cm_min;
 	if(!isnan(cm_max)) if (this->value>cm_max)this->value=(int)cm_max;
-	if(!isnan(cm_thresh)) if (this->value<cm_thresh)this->value=(int)cm_min;
 
 }
Index: /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/IntInput.h
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/IntInput.h	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/IntInput.h	(revision 12872)
@@ -40,5 +40,4 @@
 		Input* PointwiseMin(Input* inputB){_error_("not implemented yet");};
 		Input* PointwiseMax(Input* inputB){_error_("not implemented yet");};
-		Input* PointwiseThresh(Input* inputB,Input* inputC){_error_("not implemented yet");};
 		ElementResult* SpawnResult(int step, double time);
 		void AddTimeValues(double* values,int step,double time){_error_("not supported yet");};
@@ -69,5 +68,5 @@
 		void ArtificialNoise(double min,double max){_error_("not implemented yet");};
 		void AXPY(Input* xinput,double scalar);
-		void Constrain(double cm_min, double cm_max, double cm_thresh);
+		void Constrain(double cm_min, double cm_max);
 		double InfinityNorm(void){_error_("InfinityNorm not implemented for integers");};
 		double Max(void){_error_("Max not implemented for integers");};
Index: /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/PentaP1Input.cpp
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/PentaP1Input.cpp	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/PentaP1Input.cpp	(revision 12872)
@@ -466,5 +466,5 @@
 /*}}}*/
 /*FUNCTION PentaP1Input::Constrain{{{1*/
-void PentaP1Input::Constrain(double cm_min, double cm_max, double cm_thresh){
+void PentaP1Input::Constrain(double cm_min, double cm_max){
 
 	int i;
@@ -473,5 +473,4 @@
 	if(!isnan(cm_min)) for(i=0;i<numnodes;i++)if (this->values[i]<cm_min)this->values[i]=cm_min;
 	if(!isnan(cm_max)) for(i=0;i<numnodes;i++)if (this->values[i]>cm_max)this->values[i]=cm_max;
-	if(!isnan(cm_thresh)) for(i=0;i<numnodes;i++)if (this->values[i]<cm_thresh)this->values[i]=cm_min;
 
 }
@@ -609,40 +608,4 @@
 }
 /*}}}*/
-/*FUNCTION PentaP1Input::PointwiseThresh{{{1*/
-Input* PentaP1Input::PointwiseThresh(Input* inputB,Input* inputC){
-
-	/*Ouput*/
-	PentaP1Input* outinput=NULL;
-
-	/*Intermediaries*/
-	int               i;
-	PentaP1Input *xinputB     = NULL;
-	PentaP1Input *xinputC     = NULL;
-	int               B_numvalues;
-	const int         numnodes    = 6;
-	double            threshvalues[numnodes];
-
-	/*Check that inputB is of the same type*/
-	if (inputB->ObjectEnum()!=PentaP1InputEnum) _error_("Operation not permitted because inputB is of type %s",EnumToStringx(inputB->ObjectEnum()));
-	xinputB=(PentaP1Input*)inputB;
-
-	/*Check that inputB is of the same type*/
-	if (inputC->ObjectEnum()!=PentaP1InputEnum) _error_("Operation not permitted because inputC is of type %s",EnumToStringx(inputC->ObjectEnum()));
-	xinputC=(PentaP1Input*)inputC;
-
-	/*Create point wise thresh*/
-	for(i=0;i<numnodes;i++){
-		if(this->values[i] < xinputB->values[i]) threshvalues[i]=xinputC->values[i];
-		else threshvalues[i]=this->values[i];
-	}
-
-	/*Create new Penta vertex input (copy of current input)*/
-	outinput=new PentaP1Input(this->enum_type,&threshvalues[0]);
-
-	/*Return output pointer*/
-	return outinput;
-
-}
-/*}}}*/
 /*FUNCTION PentaP1Input::GetVectorFromInputs{{{1*/
 void PentaP1Input::GetVectorFromInputs(Vector* vector,int* doflist){
Index: /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/PentaP1Input.h
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/PentaP1Input.h	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/PentaP1Input.h	(revision 12872)
@@ -40,5 +40,4 @@
 		Input* PointwiseMin(Input* inputB);
 		Input* PointwiseMax(Input* inputB);
-		Input* PointwiseThresh(Input* inputB,Input* inputC);
 		ElementResult* SpawnResult(int step, double time);
 		void AddTimeValues(double* values,int step,double time){_error_("not supported yet");};
@@ -70,5 +69,5 @@
 		void ArtificialNoise(double min,double max){_error_("not implemented yet");};
 		void AXPY(Input* xinput,double scalar);
-		void Constrain(double cm_min, double cm_max, double cm_thresh);
+		void Constrain(double cm_min, double cm_max);
 		double InfinityNorm(void);
 		double Max(void);
Index: /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/TransientInput.h
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/TransientInput.h	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/TransientInput.h	(revision 12872)
@@ -43,5 +43,4 @@
 		Input* PointwiseMin(Input* forcingB){_error_("not implemented yet");};
 		Input* PointwiseMax(Input* forcingB){_error_("not implemented yet");};
-		Input* PointwiseThresh(Input* forcingB,Input* forcingC){_error_("not implemented yet");};
 		ElementResult* SpawnResult(int step, double time);
 		void Configure(Parameters* parameters);
@@ -72,5 +71,5 @@
 		void ArtificialNoise(double min,double max){_error_("not implemented yet");};
 		void AXPY(Input* xforcing,double scalar){_error_("not implemented yet");};
-		void Constrain(double cm_min, double cm_max, double cm_thresh){_error_("not implemented yet");};
+		void Constrain(double cm_min, double cm_max){_error_("not implemented yet");};
 		double InfinityNorm(void);
 		double Max(void);
Index: /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/TriaP1Input.cpp
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/TriaP1Input.cpp	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/TriaP1Input.cpp	(revision 12872)
@@ -329,5 +329,5 @@
 /*}}}*/
 /*FUNCTION TriaP1Input::Constrain{{{1*/
-void TriaP1Input::Constrain(double cm_min, double cm_max, double cm_thresh){
+void TriaP1Input::Constrain(double cm_min, double cm_max){
 
 	int i;
@@ -336,5 +336,4 @@
 	if(!isnan(cm_min)) for(i=0;i<numnodes;i++)if (this->values[i]<cm_min)this->values[i]=cm_min;
 	if(!isnan(cm_max)) for(i=0;i<numnodes;i++)if (this->values[i]>cm_max)this->values[i]=cm_max;
-	if(!isnan(cm_thresh)) for(i=0;i<numnodes;i++)if (this->values[i]<cm_thresh)this->values[i]=cm_min;
 
 }
@@ -417,41 +416,4 @@
 }
 /*}}}*/
-/*FUNCTION TriaP1Input::PointwiseThresh{{{1*/
-Input* TriaP1Input::PointwiseThresh(Input* inputB, Input* inputC){
-	/*pointwise comparison to inputB.  If less than inputB, set nodal output to input C*/
-
-	/*Ouput*/
-	TriaP1Input* outinput=NULL;
-
-	/*Intermediaries*/
-	int               i;
-	TriaP1Input *xinputB     = NULL;
-	TriaP1Input *xinputC     = NULL;
-	int               B_numvalues; /* doesn't look like this is used */
-	const int         numnodes    = 3;
-	double            threshvalues[numnodes];
-
-	/*Check that inputB is of the same type*/
-	if (inputB->ObjectEnum()!=TriaP1InputEnum) _error_("Operation not permitted because inputB is of type %s",EnumToStringx(inputB->ObjectEnum()));
-	xinputB=(TriaP1Input*)inputB;
-
-	/*Check that inputC is of the same type*/
-	if (inputC->ObjectEnum()!=TriaP1InputEnum) _error_("Operation not permitted because inputC is of type %s",EnumToStringx(inputC->ObjectEnum()));
-	xinputC=(TriaP1Input*)inputC;
-
-	/*Create point wise thresh*/
-	for(i=0;i<numnodes;i++){
-		if(this->values[i] < xinputB->values[i]) threshvalues[i]=xinputC->values[i];
-		else threshvalues[i]=this->values[i];
-	}
-
-	/*Create new Tria vertex input (copy of current input)*/
-	outinput=new TriaP1Input(this->enum_type,&threshvalues[0]);
-
-	/*Return output pointer*/
-	return outinput;
-
-}
-/*}}}*/
 /*FUNCTION TriaP1Input::Configure{{{1*/
 void TriaP1Input::Configure(Parameters* parameters){
Index: /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/TriaP1Input.h
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/TriaP1Input.h	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/objects/Inputs/TriaP1Input.h	(revision 12872)
@@ -40,5 +40,4 @@
 		Input* PointwiseMin(Input* inputB);
 		Input* PointwiseMax(Input* inputB);
-		Input* PointwiseThresh(Input* inputB, Input* inputC);
 		ElementResult* SpawnResult(int step, double time);
 		void AddTimeValues(double* values,int step,double time){_error_("not supported yet");};
@@ -70,5 +69,5 @@
 		void ArtificialNoise(double min,double max);
 		void AXPY(Input* xinput,double scalar);
-		void Constrain(double cm_min, double cm_max, double cm_thresh);
+		void Constrain(double cm_min, double cm_max);
 		double InfinityNorm(void);
 		double Max(void);
Index: /issm/branches/trunk-jpl-damage/src/c/objects/Materials/Matice.cpp
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/objects/Materials/Matice.cpp	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/c/objects/Materials/Matice.cpp	(revision 12872)
@@ -758,5 +758,4 @@
 		double    cmmininputs[num_vertices];
 		double    cmmaxinputs[num_vertices];
-		double    cmthreshinputs[num_vertices];
 
 		/*Get B*/
@@ -789,6 +788,5 @@
 							for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];
 							for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];
-							for(j=0;j<num_vertices;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];
-							this->inputs->AddInput(new ControlInput(MaterialsRheologyBbarEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1));
+							this->inputs->AddInput(new ControlInput(MaterialsRheologyBbarEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
 						}
 						break;
@@ -799,6 +797,5 @@
 							for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];
 							for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];
-							for(j=0;j<num_vertices;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];
-							this->inputs->AddInput(new ControlInput(MaterialsRheologyZbarEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1));
+							this->inputs->AddInput(new ControlInput(MaterialsRheologyZbarEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
 						}
 						break;
@@ -818,5 +815,4 @@
 		double    cmmininputs[num_vertices];
 		double    cmmaxinputs[num_vertices];
-		double    cmthreshinputs[num_vertices];
 
 		/*Get B*/
@@ -849,6 +845,5 @@
 							for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];
 							for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];
-							for(j=0;j<num_vertices;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];
-							this->inputs->AddInput(new ControlInput(MaterialsRheologyBEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1));
+							this->inputs->AddInput(new ControlInput(MaterialsRheologyBEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
 						}
 						break;
@@ -859,6 +854,5 @@
 							for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];
 							for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];
-							for(j=0;j<num_vertices;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];
-							this->inputs->AddInput(new ControlInput(MaterialsRheologyZEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1));
+							this->inputs->AddInput(new ControlInput(MaterialsRheologyZEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
 						}
 						break;
Index: /issm/branches/trunk-jpl-damage/src/m/classes/inversion.m
===================================================================
--- /issm/branches/trunk-jpl-damage/src/m/classes/inversion.m	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/m/classes/inversion.m	(revision 12872)
@@ -18,5 +18,4 @@
 		min_parameters              = NaN
 		max_parameters              = NaN
-		thresh_parameters           = NaN
 		step_threshold              = NaN
 		gradient_only               = 0
@@ -97,5 +96,4 @@
 			checkfield(md,'inversion.min_parameters','size',[md.mesh.numberofvertices num_controls]);
 			checkfield(md,'inversion.max_parameters','size',[md.mesh.numberofvertices num_controls]);
-			checkfield(md,'inversion.thresh_parameters','size',[md.mesh.numberofvertices num_controls]);
 
 			if solution==BalancethicknessSolutionEnum
@@ -119,5 +117,4 @@
 			fielddisplay(obj,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
 			fielddisplay(obj,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
-			fielddisplay(obj,'thresh_parameters','threshold value of the inversed parameter, below which it jumps to min_parameters. Set to min_parameters to disable');
 			fielddisplay(obj,'gradient_only','stop control method solution at gradient');
 			fielddisplay(obj,'vx_obs','observed velocity x component [m/a]');
@@ -149,5 +146,4 @@
 			WriteData(fid,'object',obj,'fieldname','min_parameters','format','DoubleMat','mattype',3);
 			WriteData(fid,'object',obj,'fieldname','max_parameters','format','DoubleMat','mattype',3);
-			WriteData(fid,'object',obj,'fieldname','thresh_parameters','format','DoubleMat','mattype',3);
 			WriteData(fid,'object',obj,'fieldname','step_threshold','format','DoubleMat','mattype',3);
 			WriteData(fid,'object',obj,'fieldname','gradient_only','format','Boolean');
Index: /issm/branches/trunk-jpl-damage/src/m/classes/model/model.m
===================================================================
--- /issm/branches/trunk-jpl-damage/src/m/classes/model/model.m	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/m/classes/model/model.m	(revision 12872)
@@ -189,5 +189,4 @@
 			 if isfield(structmd,'cm_min'), md.inversion.min_parameters=structmd.cm_min; end
 			 if isfield(structmd,'cm_max'), md.inversion.max_parameters=structmd.cm_max; end
-			 if isfield(structmd,'cm_thresh'), md.inversion.thresh_parameters=structmd.cm_thresh; end
 			 if isfield(structmd,'vx_obs'), md.inversion.vx_obs=structmd.vx_obs; end
 			 if isfield(structmd,'vy_obs'), md.inversion.vy_obs=structmd.vy_obs; end
Index: /issm/branches/trunk-jpl-damage/src/m/enum/MaximumNumberOfEnums.m
===================================================================
--- /issm/branches/trunk-jpl-damage/src/m/enum/MaximumNumberOfEnums.m	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/m/enum/MaximumNumberOfEnums.m	(revision 12872)
@@ -9,3 +9,3 @@
 %      macro=MaximumNumberOfEnums()
 
-macro=440;
+macro=439;
Index: /issm/branches/trunk-jpl-damage/src/m/model/parameterization/parametercontrolZ.m
===================================================================
--- /issm/branches/trunk-jpl-damage/src/m/model/parameterization/parametercontrolZ.m	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/src/m/model/parameterization/parametercontrolZ.m	(revision 12872)
@@ -57,14 +57,4 @@
 else
 	md.inversion.max_parameters=cm_max;
-end
-
-%cm_thresh
-cm_thresh=getfieldvalue(options,'cm_thresh',1e-4*ones(md.mesh.numberofvertices,1));
-if (length(cm_thresh)==1)
-	md.inversion.thresh_parameters=cm_thresh*ones(md.mesh.numberofvertices,1);
-elseif (length(cm_thresh)==md.mesh.numberofvertices)
-	md.inversion.thresh_parameters=cm_thresh;
-else
-	md.inversion.thresh_parameters=cm_thresh;
 end
 
Index: /issm/branches/trunk-jpl-damage/test/NightlyRun/test224.m
===================================================================
--- /issm/branches/trunk-jpl-damage/test/NightlyRun/test224.m	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/test/NightlyRun/test224.m	(revision 12872)
@@ -9,5 +9,4 @@
 md.inversion.min_parameters=10^6*ones(md.mesh.numberofvertices,1);
 md.inversion.max_parameters=2*10^9*ones(md.mesh.numberofvertices,1);
-md.inversion.thresh_parameters=md.inversion.min_parameters;
 md.inversion.nsteps=2;
 md.inversion.cost_functions=101*ones(md.inversion.nsteps,1);
Index: /issm/branches/trunk-jpl-damage/test/NightlyRun/test226.m
===================================================================
--- /issm/branches/trunk-jpl-damage/test/NightlyRun/test226.m	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/test/NightlyRun/test226.m	(revision 12872)
@@ -10,5 +10,4 @@
 md.inversion.min_parameters=10^6*ones(md.mesh.numberofvertices,1);
 md.inversion.max_parameters=2*10^9*ones(md.mesh.numberofvertices,1);
-md.inversion.thresh_parameters=md.inversion.min_parameters;
 md.inversion.nsteps=2;
 md.inversion.cost_functions=101*ones(md.inversion.nsteps,1);
Index: /issm/branches/trunk-jpl-damage/test/NightlyRun/test228.m
===================================================================
--- /issm/branches/trunk-jpl-damage/test/NightlyRun/test228.m	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/test/NightlyRun/test228.m	(revision 12872)
@@ -10,5 +10,4 @@
 md.inversion.min_parameters=10^6*ones(md.mesh.numberofvertices,1);
 md.inversion.max_parameters=2*10^9*ones(md.mesh.numberofvertices,1);
-md.inversion.thresh_parameters=md.inversion.min_parameters;
 md.inversion.nsteps=2;
 md.inversion.cost_functions=101*ones(md.inversion.nsteps,1);
Index: /issm/branches/trunk-jpl-damage/test/NightlyRun/test230.m
===================================================================
--- /issm/branches/trunk-jpl-damage/test/NightlyRun/test230.m	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/test/NightlyRun/test230.m	(revision 12872)
@@ -10,5 +10,4 @@
 md.inversion.min_parameters=10^6*ones(md.mesh.numberofvertices,1);
 md.inversion.max_parameters=2*10^9*ones(md.mesh.numberofvertices,1);
-md.inversion.thresh_parameters=md.inversion.min_parameters;
 md.inversion.nsteps=2;
 md.inversion.cost_functions=101*ones(md.inversion.nsteps,1);
Index: /issm/branches/trunk-jpl-damage/test/NightlyRun/test272.m
===================================================================
--- /issm/branches/trunk-jpl-damage/test/NightlyRun/test272.m	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/test/NightlyRun/test272.m	(revision 12872)
@@ -10,5 +10,4 @@
 md.inversion.min_parameters=10^-13*ones(md.mesh.numberofvertices,1);
 md.inversion.max_parameters=ones(md.mesh.numberofvertices,1);
-md.inversion.thresh_parameters=md.inversion.min_parameters;
 md.inversion.nsteps=2;
 md.inversion.cost_functions=101*ones(md.inversion.nsteps,1);
Index: /issm/branches/trunk-jpl-damage/test/NightlyRun/test338.m
===================================================================
--- /issm/branches/trunk-jpl-damage/test/NightlyRun/test338.m	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/test/NightlyRun/test338.m	(revision 12872)
@@ -9,5 +9,4 @@
 md.inversion.min_parameters=1*ones(md.mesh.numberofvertices,1);
 md.inversion.max_parameters=200*ones(md.mesh.numberofvertices,1);
-md.inversion.thresh_parameters=md.inversion.min_parameters;
 md.inversion.nsteps=2;
 md.inversion.cost_functions=[103*ones(md.inversion.nsteps,1)  501*ones(md.inversion.nsteps,1)];
Index: /issm/branches/trunk-jpl-damage/test/NightlyRun/test340.m
===================================================================
--- /issm/branches/trunk-jpl-damage/test/NightlyRun/test340.m	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/test/NightlyRun/test340.m	(revision 12872)
@@ -10,5 +10,4 @@
 md.inversion.min_parameters=1*ones(md.mesh.numberofvertices,1);
 md.inversion.max_parameters=200*ones(md.mesh.numberofvertices,1);
-md.inversion.thresh_parameters=md.inversion.min_parameters;
 md.inversion.nsteps=2;
 md.inversion.cost_functions=[103*ones(md.inversion.nsteps,1)  501*ones(md.inversion.nsteps,1)];
Index: /issm/branches/trunk-jpl-damage/test/NightlyRun/test342.m
===================================================================
--- /issm/branches/trunk-jpl-damage/test/NightlyRun/test342.m	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/test/NightlyRun/test342.m	(revision 12872)
@@ -10,5 +10,4 @@
 md.inversion.min_parameters=1*ones(md.mesh.numberofvertices,1);
 md.inversion.max_parameters=200*ones(md.mesh.numberofvertices,1);
-md.inversion.thresh_parameters=md.inversion.min_parameters;
 md.inversion.nsteps=2;
 md.inversion.cost_functions=[102*ones(md.inversion.nsteps,1)  501*ones(md.inversion.nsteps,1)];
Index: /issm/branches/trunk-jpl-damage/test/NightlyRun/test344.m
===================================================================
--- /issm/branches/trunk-jpl-damage/test/NightlyRun/test344.m	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/test/NightlyRun/test344.m	(revision 12872)
@@ -10,5 +10,4 @@
 md.inversion.min_parameters=1*ones(md.mesh.numberofvertices,1);
 md.inversion.max_parameters=200*ones(md.mesh.numberofvertices,1);
-md.inversion.thresh_parameters=md.inversion.min_parameters;
 md.inversion.nsteps=2;
 md.inversion.cost_functions=[104*ones(md.inversion.nsteps,1)  501*ones(md.inversion.nsteps,1)];
Index: /issm/branches/trunk-jpl-damage/test/NightlyRun/test430.m
===================================================================
--- /issm/branches/trunk-jpl-damage/test/NightlyRun/test430.m	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/test/NightlyRun/test430.m	(revision 12872)
@@ -10,5 +10,4 @@
 md.inversion.min_parameters=1*ones(md.mesh.numberofvertices,1);
 md.inversion.max_parameters=200*ones(md.mesh.numberofvertices,1);
-md.inversion.thresh_parameters=md.inversion.min_parameters;
 md.inversion.nsteps=2;
 md.inversion.cost_functions=[103*ones(md.inversion.nsteps,1)  501*ones(md.inversion.nsteps,1)];
Index: /issm/branches/trunk-jpl-damage/test/NightlyRun/test432.m
===================================================================
--- /issm/branches/trunk-jpl-damage/test/NightlyRun/test432.m	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/test/NightlyRun/test432.m	(revision 12872)
@@ -10,5 +10,4 @@
 md.inversion.min_parameters=1*ones(md.mesh.numberofvertices,1);
 md.inversion.max_parameters=200*ones(md.mesh.numberofvertices,1);
-md.inversion.thresh_parameters=md.inversion.min_parameters;
 md.inversion.nsteps=2;
 md.inversion.cost_functions=[102*ones(md.inversion.nsteps,1)  501*ones(md.inversion.nsteps,1)];
Index: /issm/branches/trunk-jpl-damage/test/NightlyRun/test522.m
===================================================================
--- /issm/branches/trunk-jpl-damage/test/NightlyRun/test522.m	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/test/NightlyRun/test522.m	(revision 12872)
@@ -15,5 +15,4 @@
 md.inversion.min_parameters=10^6*ones(md.mesh.numberofvertices,1);
 md.inversion.max_parameters=2*10^9*ones(md.mesh.numberofvertices,1);
-md.inversion.thresh_parameters=md.inversion.min_parameters;
 md.inversion.nsteps=2;
 md.inversion.cost_functions=101*ones(md.inversion.nsteps,1);
Index: /issm/branches/trunk-jpl-damage/test/NightlyRun/test524.m
===================================================================
--- /issm/branches/trunk-jpl-damage/test/NightlyRun/test524.m	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/test/NightlyRun/test524.m	(revision 12872)
@@ -10,5 +10,4 @@
 md.inversion.min_parameters=1*ones(md.mesh.numberofvertices,1);
 md.inversion.max_parameters=200*ones(md.mesh.numberofvertices,1);
-md.inversion.thresh_parameters=md.inversion.min_parameters;
 md.inversion.nsteps=2;
 md.inversion.cost_functions=[103*ones(md.inversion.nsteps,1)  501*ones(md.inversion.nsteps,1)];
Index: /issm/branches/trunk-jpl-damage/test/NightlyRun/test526.m
===================================================================
--- /issm/branches/trunk-jpl-damage/test/NightlyRun/test526.m	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/test/NightlyRun/test526.m	(revision 12872)
@@ -10,5 +10,4 @@
 md.inversion.min_parameters=1*ones(md.mesh.numberofvertices,1);
 md.inversion.max_parameters=200*ones(md.mesh.numberofvertices,1);
-md.inversion.thresh_parameters=md.inversion.min_parameters;
 md.inversion.nsteps=2;
 md.inversion.cost_functions=[103*ones(md.inversion.nsteps,1)  501*ones(md.inversion.nsteps,1)];
Index: /issm/branches/trunk-jpl-damage/test/NightlyRun/test622.m
===================================================================
--- /issm/branches/trunk-jpl-damage/test/NightlyRun/test622.m	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/test/NightlyRun/test622.m	(revision 12872)
@@ -12,5 +12,4 @@
 md.inversion.min_parameters=-50*ones(md.mesh.numberofvertices,1);
 md.inversion.max_parameters=50*ones(md.mesh.numberofvertices,1);
-md.inversion.thresh_parameters=md.inversion.min_parameters;
 md.inversion.cost_functions=201*ones(md.inversion.nsteps,1);
 md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
Index: /issm/branches/trunk-jpl-damage/test/NightlyRun/test624.m
===================================================================
--- /issm/branches/trunk-jpl-damage/test/NightlyRun/test624.m	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/test/NightlyRun/test624.m	(revision 12872)
@@ -13,5 +13,4 @@
 md.inversion.min_parameters=-50*ones(md.mesh.numberofvertices,1);
 md.inversion.max_parameters=50*ones(md.mesh.numberofvertices,1);
-md.inversion.thresh_parameters=md.inversion.min_parameters; 
 md.inversion.cost_functions=201*ones(md.inversion.nsteps,1);
 md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
Index: /issm/branches/trunk-jpl-damage/test/NightlyRun/test626.m
===================================================================
--- /issm/branches/trunk-jpl-damage/test/NightlyRun/test626.m	(revision 12871)
+++ /issm/branches/trunk-jpl-damage/test/NightlyRun/test626.m	(revision 12872)
@@ -20,5 +20,4 @@
 md.inversion.min_parameters=[-2000*ones(md.mesh.numberofvertices,1) -2000*ones(md.mesh.numberofvertices,1)];
 md.inversion.max_parameters=[+2000*ones(md.mesh.numberofvertices,1) +2000*ones(md.mesh.numberofvertices,1)];
-md.inversion.thresh_parameters=md.inversion.min_parameters; 
 md.inversion.cost_functions=201*ones(md.inversion.nsteps,1);
 md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
