Index: /issm/trunk-jpl/src/c/Makefile.am
===================================================================
--- /issm/trunk-jpl/src/c/Makefile.am	(revision 21930)
+++ /issm/trunk-jpl/src/c/Makefile.am	(revision 21931)
@@ -294,5 +294,4 @@
 					./cores/surfaceslope_core.cpp\
 					./cores/bedslope_core.cpp\
-					./cores/meshdeformation_core.cpp\
 					./cores/damage_core.cpp\
 					./cores/levelsetfunctionslope_core.cpp\
@@ -447,7 +446,4 @@
 if SMOOTH
 issm_sources += ./analyses/SmoothAnalysis.cpp
-endif
-if MESHDEFORMATION
-issm_sources += ./analyses/MeshdeformationAnalysis.cpp
 endif
 if LEVELSET
Index: /issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp	(revision 21930)
+++ /issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp	(revision 21931)
@@ -110,7 +110,4 @@
 		case EsaAnalysisEnum : return new EsaAnalysis();
 		#endif
-		#ifdef _HAVE_MESHDEFORMATION_
-		case MeshdeformationAnalysisEnum : return new MeshdeformationAnalysis();
-		#endif
 		#ifdef _HAVE_LEVELSET_
 		case LevelsetAnalysisEnum : return new LevelsetAnalysis();
Index: /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 21930)
+++ /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 21931)
@@ -552,60 +552,4 @@
 	}
 }/*}}}*/
-void           LevelsetAnalysis::SetDistanceOnIntersectedElements(FemModel* femmodel){/*{{{*/
-
-	/* Intermediaries */
-	int i,k;
-	IssmDouble dmaxp=0.,dmaxm=0,val=0.;
-
-	/*Initialize vector with number of vertices*/
-	int numvertices=femmodel->vertices->NumberOfVertices();
-	Element* element;
-
-	Vector<IssmDouble>* vec_dist_zerolevelset = NULL;
-	GetVectorFromInputsx(&vec_dist_zerolevelset, femmodel, MaskIceLevelsetEnum, VertexPIdEnum);
-	
-	/* set NaN on elements intersected by zero levelset */
-	for(i=0;i<femmodel->elements->Size();i++){
-		element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
-		if(element->IsZeroLevelset(MaskIceLevelsetEnum))
-			for(k=0;k<element->GetNumberOfVertices();k++)
-				vec_dist_zerolevelset->SetValue(element->vertices[k]->Sid(),NAN,INS_VAL); 
-	}
-
-	/* set distance on elements intersected by zero levelset */
-	for(i=0;i<femmodel->elements->Size();i++){
-		element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
-		if(element->IsZeroLevelset(MaskIceLevelsetEnum)){
-			SetDistanceToZeroLevelsetElement(vec_dist_zerolevelset, element);
-
-			/* Get maximum distance to interface along vertices */
-			for(k=0;k<element->GetNumberOfVertices();k++){
-					vec_dist_zerolevelset->GetValue(&val,element->vertices[k]->Sid()); 
-					if((val>0.) && (val>dmaxp))
-						 dmaxp=val;
-					else if((val<0.) && (val<dmaxm))
-						 dmaxm=val;
-			}
-		}
-	}
-
-	/* set all none intersected vertices to max/min distance */
-	for(i=0;i<numvertices;i++){
-		vec_dist_zerolevelset->GetValue(&val,i);
-		if(val==1.) //FIXME: improve check
-			vec_dist_zerolevelset->SetValue(i,3.*dmaxp,INS_VAL);
-		else if(val==-1.)
-			vec_dist_zerolevelset->SetValue(i,3.*dmaxm,INS_VAL);
-	}
-
-	/*Assemble vector and serialize */
-	vec_dist_zerolevelset->Assemble();
-	IssmDouble* dist_zerolevelset=vec_dist_zerolevelset->ToMPISerial();
-	InputUpdateFromVectorx(femmodel,dist_zerolevelset,MaskIceLevelsetEnum,VertexSIdEnum);
-
-	/*Clean up and return*/
-	delete vec_dist_zerolevelset;
-	delete dist_zerolevelset;
-}/*}}}*/
 void           LevelsetAnalysis::SetDistanceToZeroLevelsetElement(Vector<IssmDouble>* vec_signed_dist, Element* element){/*{{{*/
 
Index: /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.h	(revision 21930)
+++ /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.h	(revision 21931)
@@ -32,5 +32,4 @@
 		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
 		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
-		void           SetDistanceOnIntersectedElements(FemModel* femmodel);
 		void           SetDistanceToZeroLevelsetElement(Vector<IssmDouble>* vec_signed_dist, Element* element);
 		void           UpdateConstraints(FemModel* femmodel);
Index: sm/trunk-jpl/src/c/analyses/MeshdeformationAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MeshdeformationAnalysis.cpp	(revision 21930)
+++ 	(revision )
@@ -1,56 +1,0 @@
-#include "./MeshdeformationAnalysis.h"
-#include "../toolkits/toolkits.h"
-#include "../classes/classes.h"
-#include "../shared/shared.h"
-#include "../modules/modules.h"
-
-/*Model processing*/
-void MeshdeformationAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
-	   _error_("not implemented yet");
-}/*}}}*/
-void MeshdeformationAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
-	   _error_("not implemented yet");
-}/*}}}*/
-void MeshdeformationAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
-	   _error_("not implemented yet");
-}/*}}}*/
-int  MeshdeformationAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
-	_error_("not implemented");
-}/*}}}*/
-void MeshdeformationAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
-	   _error_("not implemented yet");
-}/*}}}*/
-void MeshdeformationAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
-	   _error_("not implemented yet");
-}/*}}}*/
-
-/*Finite Element Analysis*/
-void           MeshdeformationAnalysis::Core(FemModel* femmodel){/*{{{*/
-	_error_("not implemented");
-}/*}}}*/
-ElementVector* MeshdeformationAnalysis::CreateDVector(Element* element){/*{{{*/
-	/*Default, return NULL*/
-	return NULL;
-}/*}}}*/
-ElementMatrix* MeshdeformationAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
-_error_("Not implemented");
-}/*}}}*/
-ElementMatrix* MeshdeformationAnalysis::CreateKMatrix(Element* element){/*{{{*/
-	_error_("not implemented yet");
-}/*}}}*/
-ElementVector* MeshdeformationAnalysis::CreatePVector(Element* element){/*{{{*/
-_error_("not implemented yet");
-}/*}}}*/
-void           MeshdeformationAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
-	   _error_("not implemented yet");
-}/*}}}*/
-void           MeshdeformationAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
-	_error_("Not implemented yet");
-}/*}}}*/
-void           MeshdeformationAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
-	_error_("not implemented yet");
-}/*}}}*/
-void           MeshdeformationAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
-	/*Default, do nothing*/
-	return;
-}/*}}}*/
Index: sm/trunk-jpl/src/c/analyses/MeshdeformationAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MeshdeformationAnalysis.h	(revision 21930)
+++ 	(revision )
@@ -1,33 +1,0 @@
-/*! \file MeshdeformationAnalysis.h 
- *  \brief: header file for generic external result object
- */
-
-#ifndef _MeshdeformationAnalysis_
-#define _MeshdeformationAnalysis_
-
-/*Headers*/
-#include "./Analysis.h"
-
-class MeshdeformationAnalysis: public Analysis{
-
-	public:
-		/*Model processing*/
-		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
-		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
-		int  DofsPerNode(int** doflist,int domaintype,int approximation);
-		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
-
-		/*Finite element Analysis*/
-		void           Core(FemModel* femmodel);
-		ElementVector* CreateDVector(Element* element);
-		ElementMatrix* CreateJacobianMatrix(Element* element);
-		ElementMatrix* CreateKMatrix(Element* element);
-		ElementVector* CreatePVector(Element* element);
-		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
-		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
-		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
-		void           UpdateConstraints(FemModel* femmodel);
-};
-#endif
Index: /issm/trunk-jpl/src/c/analyses/analyses.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/analyses.h	(revision 21930)
+++ /issm/trunk-jpl/src/c/analyses/analyses.h	(revision 21931)
@@ -34,5 +34,4 @@
 #include "./SealevelriseAnalysis.h"
 #include "./MeltingAnalysis.h"
-#include "./MeshdeformationAnalysis.h"
 #include "./SmoothAnalysis.h"
 #include "./StressbalanceAnalysis.h"
Index: /issm/trunk-jpl/src/c/bamg/GeomEdge.cpp
===================================================================
--- /issm/trunk-jpl/src/c/bamg/GeomEdge.cpp	(revision 21930)
+++ /issm/trunk-jpl/src/c/bamg/GeomEdge.cpp	(revision 21931)
@@ -63,75 +63,4 @@
 		return type &16; 
 	}/*}}}*/
-	double GeomEdge::R1tg(double theta,R2 & t) const{/*{{{*/
-		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/R1tg)*/
-		// 1/R of radius of cuvature
-
-		R2 A=v[0]->r,B=v[1]->r;
-		double dca,dcb,dcta,dctb;
-		double ddca,ddcb,ddcta,ddctb;
-		double tt = theta*theta;
-
-		//check theta
-		_assert_(theta>=0 && theta<=1);
-
-		if (TgA()){ 
-			if (TgB()){
-				// Tangent A and B provided:
-				// interpolation d'hermite
-				dcb = 6*theta*(1-theta);
-				ddcb = 6*(1-2*theta);
-				dca = -dcb;
-				ddca = -ddcb;
-				dcta =  (3*theta - 4)*theta + 1;
-				ddcta=6*theta-4;
-				dctb = 3*tt - 2*theta;
-				ddctb = 6*theta-2;
-			}
-			else {
-				//Tangent A provided but tangent B not provided
-				// 1-t*t, t-t*t, t*t
-				double t = theta;
-				dcb = 2*t;
-				ddcb = 2;
-				dca = -dcb;
-				ddca = -2;
-				dcta = 1-dcb;
-				ddcta = -ddcb;
-				dctb=0;    
-				ddctb=0;    
-			}
-		}
-		else{
-			if (TgB()){
-				//Tangent B provided but tangent A not provided
-				double t = 1-theta;
-				dca = -2*t;
-				ddca = 2;
-				dcb = -dca;
-				ddcb = -2;
-				dctb = 1+dca;
-				ddctb= ddca;
-				dcta =0;
-				ddcta =0;
-			}
-			else {
-				//Neither thangent A nor tangent B provided
-				// lagrange P1
-				t=B-A;
-				return 0;
-			} 
-		}
-		R2 d  =  A*dca  + B*dcb  + tg[0]* dcta  + tg[1] * dctb;
-		R2 dd =  A*ddca + B*ddcb + tg[0]* ddcta + tg[1] * ddctb;
-		double d2=(d,d);
-		double sd2 = sqrt(d2);
-		t=d;
-		if(d2>1.0e-20){
-			t/=sd2;
-			return Abs(Det(d,dd))/(d2*sd2);
-		}
-		else return 0;
-	}
-	/*}}}*/
 	int    GeomEdge::Required()       {/*{{{*/
 		return type &64; 
Index: /issm/trunk-jpl/src/c/bamg/GeomEdge.h
===================================================================
--- /issm/trunk-jpl/src/c/bamg/GeomEdge.h	(revision 21930)
+++ /issm/trunk-jpl/src/c/bamg/GeomEdge.h	(revision 21931)
@@ -27,5 +27,4 @@
 			//Methods
 			R2     F(double theta) const ; // parametrization of the curve edge
-			double R1tg(double theta,R2 &t) const ; // 1/radius of curvature + tangente
 			int    Cracked() const;
 			int    TgA()     const;
Index: /issm/trunk-jpl/src/c/bamg/Mesh.cpp
===================================================================
--- /issm/trunk-jpl/src/c/bamg/Mesh.cpp	(revision 21930)
+++ /issm/trunk-jpl/src/c/bamg/Mesh.cpp	(revision 21931)
@@ -1594,5 +1594,8 @@
 			long i1 = GetId(triangles[it][VerticesOfTriangularEdge[j][1]]);
 			k = edge4->SortAndFind(i0,i1);
-			_assert_(k>=0);
+			if(k<0){
+				delete [] colorV;
+				_error_("This should not happen");
+			}
 			subdomains[i].direction = (vertices + i0 == edges[k].v[0]) ? 1 : -1;
 			subdomains[i].edge = edges+k;
@@ -2054,5 +2057,13 @@
 					else if (xy==1) dd=dxdy;
 					else if (xy==2) dd=dydy;
-					else    _error_("not supported yet");
+					else{
+						delete [] detT;
+						delete [] Mmass;
+						delete [] workT;
+						delete [] workV;
+						delete [] Mmassxx;
+						delete [] OnBoundary;
+						_error_("not supported yet");
+					}
 					// do leat 2 iteration for boundary problem
 					for (int ijacobi=0;ijacobi<Max(NbJacobi,2);ijacobi++){
@@ -2103,8 +2114,8 @@
 		delete [] dxdy;
 		delete [] dydy;
-		delete []  workT;
+		delete [] workT;
 		delete [] workV;
 		delete [] Mmassxx;
-		delete []  OnBoundary;
+		delete [] OnBoundary;
 
 	}
@@ -2394,4 +2405,5 @@
 			if (nbt == nbtout ||  !NbSubDomTot) {
 				delete [] HeapArete;
+				delete [] HeapTriangle;
 				_error_("The boundary is not close: all triangles are outside");
 			}
@@ -2883,5 +2895,8 @@
 			}
 		}
-		if(kk) _error_("See above");
+		if(kk){
+			delete [] e;
+			_error_("See above");
+		}
 
 		return e;
@@ -4398,4 +4413,5 @@
 		printf("\n");
 		if(NbVerticesOnGeomVertex >= maxnbv){
+			delete [] bcurve;
 			_error_("too many vertices on geometry: " << NbVerticesOnGeomVertex << " >= " << maxnbv);
 		}
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 21930)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 21931)
@@ -222,8 +222,6 @@
 		virtual IssmDouble IceVolume(void)=0;
 		virtual IssmDouble IceVolumeAboveFloatation(void)=0;
-		virtual void       InputControlUpdate(IssmDouble scalar,bool save_parameter)=0;
 		virtual void       InputDepthAverageAtBase(int enum_type,int average_enum_type)=0;
 		virtual void       InputExtrude(int input_enum,int start)=0;
-		virtual void       InputScale(int enum_type,IssmDouble scale_factor)=0;
 		virtual void       InputUpdateFromSolutionOneDofCollapsed(IssmDouble* solution,int inputenum)=0;
 		virtual void       InputUpdateFromSolutionOneDof(IssmDouble* solution,int inputenum)=0;
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 21930)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 21931)
@@ -1220,47 +1220,4 @@
 	/*Return: */
 	return base*(surface - bed + min( rho_water/rho_ice * bathymetry, 0.) );
-}
-/*}}}*/
-void       Penta::InputControlUpdate(IssmDouble scalar,bool save_parameter){/*{{{*/
-
-	/*Intermediary*/
-	int    num_controls;
-	int*   control_type=NULL;
-	Input* input=NULL;
-
-	/*retrieve some parameters: */
-	this->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
-	this->parameters->FindParam(&control_type,NULL,InversionControlParametersEnum);
-
-	for(int i=0;i<num_controls;i++){
-
-		if(control_type[i]==MaterialsRheologyBbarEnum){
-			if (!IsOnBase()) goto cleanup_and_return;
-			input=(Input*)this->inputs->GetInput(MaterialsRheologyBEnum); _assert_(input);
-		}
-		else if(control_type[i]==DamageDbarEnum){
-			if (!IsOnBase()) goto cleanup_and_return;
-			input=(Input*)this->inputs->GetInput(DamageDEnum); _assert_(input);
-		}
-		else{
-			input=(Input*)this->inputs->GetInput(control_type[i]); _assert_(input);
-		}
-		if(input->ObjectEnum()!=ControlInputEnum) _error_("input " << EnumToStringx(control_type[i]) << " is not a ControlInput");
-
-		((ControlInput*)input)->UpdateValue(scalar);
-		((ControlInput*)input)->Constrain();
-		if (save_parameter) ((ControlInput*)input)->SaveValue();
-
-		if(control_type[i]==MaterialsRheologyBbarEnum){
-			this->InputExtrude(MaterialsRheologyBEnum,-1);
-		}
-		else if(control_type[i]==DamageDbarEnum){
-			this->InputExtrude(DamageDEnum,-1);
-		}
-	}
-
-	/*Clean up and return*/
-cleanup_and_return:
-	xDelete<int>(control_type);
 }
 /*}}}*/
@@ -1366,16 +1323,4 @@
 		if(start==+1 && penta->IsOnBase())    break;
 	}
-}
-/*}}}*/
-void       Penta::InputScale(int enum_type,IssmDouble scale_factor){/*{{{*/
-
-	Input* input=NULL;
-
-	/*Make a copy of the original input: */
-	input=(Input*)this->inputs->GetInput(enum_type);
-	if(!input)_error_("could not find old input with enum: " << EnumToStringx(enum_type));
-
-	/*Scale: */
-	input->Scale(scale_factor);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 21930)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 21931)
@@ -91,8 +91,6 @@
 		IssmDouble     IceVolume(void);
 		IssmDouble     IceVolumeAboveFloatation(void);
-		void           InputControlUpdate(IssmDouble scalar,bool save_parameter);
 		void           InputDepthAverageAtBase(int enum_type,int average_enum_type);
 		void	         InputExtrude(int enum_type,int start);
-		void           InputScale(int enum_type,IssmDouble scale_factor);
 		void           InputUpdateFromIoModel(int index, IoModel* iomodel);
 		void           InputUpdateFromSolutionOneDof(IssmDouble* solutiong,int enum_type);
Index: /issm/trunk-jpl/src/c/classes/Elements/Seg.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 21930)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 21931)
@@ -79,8 +79,6 @@
 		IssmDouble  IceVolume(void){_error_("not implemented yet");};
 		IssmDouble  IceVolumeAboveFloatation(void){_error_("not implemented yet");};
-		void        InputControlUpdate(IssmDouble scalar,bool save_parameter){_error_("not implemented yet");};
 		void        InputDepthAverageAtBase(int enum_type,int average_enum_type){_error_("not implemented yet");};
 		void        InputExtrude(int enum_type,int start){_error_("not implemented"); /*For penta only*/};
-		void        InputScale(int enum_type,IssmDouble scale_factor){_error_("not implemented yet");};
 		void        InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
 		void        InputUpdateFromSolutionOneDof(IssmDouble* solution,int inputenum){_error_("not implemented yet");};
Index: /issm/trunk-jpl/src/c/classes/Elements/Tetra.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 21930)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 21931)
@@ -93,8 +93,6 @@
 		bool        IsOnSurface();
 		bool        IsZeroLevelset(int levelset_enum){_error_("not implemented");};
-		void        InputControlUpdate(IssmDouble scalar,bool save_parameter){_error_("not implemented yet");};
 		void        InputDepthAverageAtBase(int enum_type,int average_enum_type){_error_("not implemented yet");};
 		void        InputExtrude(int enum_type,int start){_error_("not implemented"); /*For penta only*/};
-		void        InputScale(int enum_type,IssmDouble scale_factor){_error_("not implemented yet");};
 		void        InputUpdateFromIoModel(int index, IoModel* iomodel);
 		void        InputUpdateFromSolutionOneDof(IssmDouble* solution,int inputenum);
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 21930)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 21931)
@@ -1367,5 +1367,5 @@
 
 	bool               negative=true;
-	int                point;
+	int                point=0;
 	const IssmPDouble  epsilon= 1.e-15;
 	IssmDouble         f1,f2;
@@ -1404,4 +1404,7 @@
 			f1=gl[1]/(gl[1]-gl[2]);
 			f2=gl[1]/(gl[1]-gl[0]);
+		}
+		else{
+			_error_("This case should NOT be happening");
 		}
 	}
@@ -1661,31 +1664,4 @@
 }
 /*}}}*/
-void       Tria::InputControlUpdate(IssmDouble scalar,bool save_parameter){/*{{{*/
-
-	/*Intermediary*/
-	int    num_controls;
-	int*   control_type=NULL;
-	Input* input=NULL;
-
-	/*retrieve some parameters: */
-	this->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
-	this->parameters->FindParam(&control_type,NULL,InversionControlParametersEnum);
-
-	for(int i=0;i<num_controls;i++){
-		input=(Input*)this->inputs->GetInput(control_type[i]);   _assert_(input);
-		if (input->ObjectEnum()!=ControlInputEnum){
-			_error_("input " << EnumToStringx(control_type[i]) << " is not a ControlInput");
-		}
-
-		((ControlInput*)input)->UpdateValue(scalar);
-		((ControlInput*)input)->Constrain();
-		if (save_parameter) ((ControlInput*)input)->SaveValue();
-
-	}
-
-	/*Clean up and return*/
-	xDelete<int>(control_type);
-}
-/*}}}*/
 void       Tria::InputDepthAverageAtBase(int enum_type,int average_enum_type){/*{{{*/
 
@@ -1704,16 +1680,4 @@
 	/*Add new input to current element*/
 	this->inputs->AddInput((Input*)newinput);
-}
-/*}}}*/
-void       Tria::InputScale(int enum_type,IssmDouble scale_factor){/*{{{*/
-
-	Input* input=NULL;
-
-	/*Make a copy of the original input: */
-	input=(Input*)this->inputs->GetInput(enum_type);
-	if(!input)_error_("could not find old input with enum: " << EnumToStringx(enum_type));
-
-	/*Scale: */
-	input->Scale(scale_factor);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 21930)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 21931)
@@ -91,8 +91,6 @@
 		IssmDouble  IceVolume(void);
 		IssmDouble  IceVolumeAboveFloatation(void);
-		void        InputControlUpdate(IssmDouble scalar,bool save_parameter);
 		void        InputDepthAverageAtBase(int enum_type,int average_enum_type);
 		void        InputExtrude(int enum_type,int start){_error_("not implemented"); /*For penta only*/};
-		void        InputScale(int enum_type,IssmDouble scale_factor);
 		bool	   	IsFaceOnBoundary(void);
 		bool	   	IsIcefront(void);
Index: /issm/trunk-jpl/src/c/classes/Inputs/ControlInput.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/ControlInput.cpp	(revision 21930)
+++ /issm/trunk-jpl/src/c/classes/Inputs/ControlInput.cpp	(revision 21931)
@@ -236,8 +236,4 @@
 	this->savedvalues=xDynamicCast<Input*>(this->values->copy());
 }/*}}}*/
-void ControlInput::ScaleGradient(IssmDouble scaling_factor){/*{{{*/
-	if(!gradient) _error_("Gradient of ControlInput " << EnumToStringx(enum_type) << " not found");
-	gradient->Scale(scaling_factor);
-}/*}}}*/
 void ControlInput::SetGradient(Input* gradient_in){/*{{{*/
 
Index: /issm/trunk-jpl/src/c/classes/Inputs/ControlInput.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/ControlInput.h	(revision 21930)
+++ /issm/trunk-jpl/src/c/classes/Inputs/ControlInput.h	(revision 21931)
@@ -81,5 +81,4 @@
 		void SaveValue(void);
 		void Scale(IssmDouble scale_factor){_error_("not implemented yet");};
-		void ScaleGradient(IssmDouble scale);
 		void Set(IssmDouble setvalue){_error_("Set not implemented yet");};
 		void SetGradient(Input* gradient_in);
Index: /issm/trunk-jpl/src/c/classes/Inputs/DatasetInput.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/DatasetInput.h	(revision 21930)
+++ /issm/trunk-jpl/src/c/classes/Inputs/DatasetInput.h	(revision 21931)
@@ -77,5 +77,4 @@
 		void SaveValue(void){_error_("not implemented yet");};
 		void Scale(IssmDouble scale_factor){_error_("not implemented yet");};
-		void ScaleGradient(IssmDouble scale){_error_("not implemented yet");};
 		void Set(IssmDouble setvalue){_error_("Set not implemented yet");};
 		void SetGradient(Input* gradient_in){_error_("not implemented yet");};
Index: sm/trunk-jpl/src/c/cores/meshdeformation_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/meshdeformation_core.cpp	(revision 21930)
+++ 	(revision )
@@ -1,30 +1,0 @@
-/*!\file: meshdeformation_core.cpp
- * \brief: core of the slope solution 
- */ 
-
-#include "./cores.h"
-#include "../toolkits/toolkits.h"
-#include "../classes/classes.h"
-#include "../shared/shared.h"
-#include "../solutionsequences/solutionsequences.h"
-#include "../modules/modules.h"
-
-void meshdeformation_core(FemModel* femmodel){
-
-	/*parameters: */
-	bool save_results;
-
-	/*Recover some parameters: */
-	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
-
-	if(VerboseSolution()) _printf0_("computing mesh deformation (elasticity)...\n");
-
-	/*Call on core computations: */
-	femmodel->SetCurrentConfiguration(MeshdeformationAnalysisEnum);
-	solutionsequence_linear(femmodel);
-
-	if(save_results){
-		if(VerboseSolution()) _printf0_("saving results:\n");
-	}
-
-}
Index: /issm/trunk-jpl/src/c/modules/ExpToLevelSetx/ExpToLevelSetxt.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ExpToLevelSetx/ExpToLevelSetxt.cpp	(revision 21930)
+++ /issm/trunk-jpl/src/c/modules/ExpToLevelSetx/ExpToLevelSetxt.cpp	(revision 21931)
@@ -68,16 +68,6 @@
 
 }
-double ddistance(double x1,double y1,double x2,double y2){
-	return sqrt(pow(x2-x1,2)+pow(y2-y1,2));
-}
-double ddot(double x1, double y1, double x2, double y2){
-	return x1*x2+y1*y2;
-}
-
-bool isPointLeftOfRay(double x, double y, double raySx, double raySy, double rayEx, double rayEy) {
-	  return (y-raySy)*(rayEx-raySx)
-		    >      (x-raySx)*(rayEy-raySy); 
-}
-
+double ddistance(double x1,double y1,double x2,double y2){ return sqrt(pow(x2-x1,2)+pow(y2-y1,2)); }
+double ddot(double x1, double y1, double x2, double y2){ return x1*x2+y1*y2; }
 double minimum_distance(double x1, double y1, double x2, double y2, double x0, double y0){
 	
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 21930)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 21931)
@@ -985,5 +985,4 @@
 	EsaSolutionEnum,
 	EsaAnalysisEnum,
-	MeshdeformationAnalysisEnum,
 	LevelsetAnalysisEnum,
 	ExtrapolationAnalysisEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 21930)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 21931)
@@ -953,5 +953,4 @@
 		case EsaSolutionEnum : return "EsaSolution";
 		case EsaAnalysisEnum : return "EsaAnalysis";
-		case MeshdeformationAnalysisEnum : return "MeshdeformationAnalysis";
 		case LevelsetAnalysisEnum : return "LevelsetAnalysis";
 		case ExtrapolationAnalysisEnum : return "ExtrapolationAnalysis";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 21930)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 21931)
@@ -974,5 +974,4 @@
 	      else if (strcmp(name,"EsaSolution")==0) return EsaSolutionEnum;
 	      else if (strcmp(name,"EsaAnalysis")==0) return EsaAnalysisEnum;
-	      else if (strcmp(name,"MeshdeformationAnalysis")==0) return MeshdeformationAnalysisEnum;
 	      else if (strcmp(name,"LevelsetAnalysis")==0) return LevelsetAnalysisEnum;
 	      else if (strcmp(name,"ExtrapolationAnalysis")==0) return ExtrapolationAnalysisEnum;
@@ -998,9 +997,9 @@
 	      else if (strcmp(name,"MinVel")==0) return MinVelEnum;
 	      else if (strcmp(name,"MaxVel")==0) return MaxVelEnum;
+	      else if (strcmp(name,"MinVx")==0) return MinVxEnum;
          else stage=9;
    }
    if(stage==9){
-	      if (strcmp(name,"MinVx")==0) return MinVxEnum;
-	      else if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
+	      if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
 	      else if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum;
 	      else if (strcmp(name,"MinVy")==0) return MinVyEnum;
Index: /issm/trunk-jpl/src/c/shared/Numerics/GaussPoints.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Numerics/GaussPoints.cpp	(revision 21930)
+++ /issm/trunk-jpl/src/c/shared/Numerics/GaussPoints.cpp	(revision 21931)
@@ -1691,19 +1691,2 @@
 
 }/*}}}*/
-
-/*Element Gauss points TO BE REMOVED*/
-void gaussQuad( IssmPDouble** pxgaus, IssmPDouble** pxwgt, IssmPDouble** pegaus, IssmPDouble** pewgt, int nigaus, int njgaus ) {/*{{{*/
-	/*Gauss quadrature points for the quadrilaterial.*/
-
-	/*get the gauss points using the product of two line rules  */
-	GaussLegendreLinear(pxgaus, pxwgt, nigaus);
-	GaussLegendreLinear(pegaus, pewgt, njgaus);
-}/*}}}*/
-void gaussHexa( IssmPDouble** pxgaus, IssmPDouble** pxwgt, IssmPDouble** pegaus, IssmPDouble** pewgt, IssmPDouble** pzgaus, IssmPDouble ** pzwgt, int nigaus, int njgaus, int nkgaus ) {/*{{{*/
-	/*Gauss quadrature points for the hexahedron.*/
-
-	/*  get the gauss points using the product of three line rules  */
-	GaussLegendreLinear(pxgaus, pxwgt, nigaus);
-	GaussLegendreLinear(pegaus, pewgt, njgaus);
-	GaussLegendreLinear(pzgaus, pzwgt, nkgaus);
-}/*}}}*/
Index: /issm/trunk-jpl/src/c/shared/Numerics/GaussPoints.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Numerics/GaussPoints.h	(revision 21930)
+++ /issm/trunk-jpl/src/c/shared/Numerics/GaussPoints.h	(revision 21931)
@@ -18,6 +18,3 @@
 void GaussRecur(IssmPDouble* zero, IssmPDouble* weight, int n, IssmPDouble* alpha, IssmPDouble* beta);
 
-void gaussQuad(IssmPDouble** pxgaus, IssmPDouble** pxwgt, IssmPDouble** pegaus, IssmPDouble** pewgt, int nigaus, int njgaus);
-void gaussHexa(IssmPDouble** pxgaus, IssmPDouble** pxwgt, IssmPDouble** pegaus, IssmPDouble** pewgt, IssmPDouble** pzgaus, IssmPDouble ** pzwgt, int nigaus, int njgaus, int nkgaus);
-
 #endif
