Index: /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp	(revision 24715)
+++ /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp	(revision 24716)
@@ -376,11 +376,11 @@
 	element->FindParam(&responses,NULL,InversionCostFunctionsEnum);
 	DatasetInput2* weights_input = element->GetDatasetInput2(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
-	Input2* vx_input      = element->GetInput2(VxEnum);                                 _assert_(vx_input);
-	Input2* vxobs_input   = element->GetInput2(InversionVxObsEnum);                     _assert_(vxobs_input);
+	Input2* vx_input      = element->GetInput2(VxEnum);             _assert_(vx_input);
+	Input2* vxobs_input   = element->GetInput2(InversionVxObsEnum); _assert_(vxobs_input);
 	Input2* vy_input    = NULL;
 	Input2* vyobs_input = NULL;
 	if(domaintype!=Domain2DverticalEnum){
-		vy_input      = element->GetInput2(VyEnum);                                 _assert_(vy_input);
-		vyobs_input   = element->GetInput2(InversionVyObsEnum);                     _assert_(vyobs_input);
+		vy_input      = element->GetInput2(VyEnum);             _assert_(vy_input);
+		vyobs_input   = element->GetInput2(InversionVyObsEnum); _assert_(vyobs_input);
 	}
 	IssmDouble epsvel  = 2.220446049250313e-16;
@@ -388,7 +388,8 @@
 
 	/*Get Surface if required by one response*/
+	Input2* S_input = NULL;
 	for(int resp=0;resp<num_responses;resp++){
 		if(responses[resp]==SurfaceAverageVelMisfitEnum){
-			element->GetInputValue(&S,SurfaceAreaEnum); break;
+			S_input = element->GetInput2(SurfaceAreaEnum);  _assert_(S_input); break;
 		}
 	}
@@ -507,4 +508,5 @@
 					 *        du      S  2 sqrt(...)           obs
 					 */
+					S_input->GetInputValue(&S,gauss);
 					for(i=0;i<vnumnodes;i++){
 						if (domaintype!=Domain2DverticalEnum){
@@ -625,7 +627,8 @@
 
 	/*Get Surface if required by one response*/
+	Input2* S_input = NULL;
 	for(int resp=0;resp<num_responses;resp++){
 		if(responses[resp]==SurfaceAverageVelMisfitEnum){
-			element->GetInputValue(&S,SurfaceAreaEnum); break;
+			S_input = element->GetInput2(SurfaceAreaEnum);  _assert_(S_input); break;
 		}
 	}
@@ -742,4 +745,5 @@
 					 *        du      S  2 sqrt(...)           obs
 					 */
+					S_input->GetInputValue(&S,gauss);
 					for(i=0;i<numnodes;i++){
 						if(domaintype!=Domain2DverticalEnum){
@@ -876,7 +880,8 @@
 
 	/*Get Surface if required by one response*/
+	Input2* S_input = NULL;
 	for(int resp=0;resp<num_responses;resp++){
 		if(responses[resp]==SurfaceAverageVelMisfitEnum){
-			basalelement->GetInputValue(&S,SurfaceAreaEnum); break;
+			S_input = element->GetInput2(SurfaceAreaEnum);  _assert_(S_input); break;
 		}
 	}
@@ -993,4 +998,5 @@
 					 *        du      S  2 sqrt(...)           obs
 					 */
+					S_input->GetInputValue(&S,gauss);
 					for(i=0;i<numnodes;i++){
 						if(domaintype!=Domain2DverticalEnum){
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 24715)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 24716)
@@ -1191,10 +1191,4 @@
 
 	this->inputs2->GetInputValue(pvalue,inputenum,this->lid);
-
-}/*}}}*/
-void       Element::GetInputValue(IssmDouble* pvalue,int inputenum){/*{{{*/
-
-	/*FIXME: function to delete!*/
-	_error_("Gauss point should be provided (Trying to fetch \""<<EnumToStringx(inputenum)<<"\", this function should be deleted)");
 
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 24715)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 24716)
@@ -102,5 +102,4 @@
 		void               GetInput2Value(bool* pvalue,int enum_type);
 		void               GetInput2Value(int* pvalue,int enum_type);
-		void               GetInputValue(IssmDouble* pvalue,int enum_type);
 		void               GetInputValue(IssmDouble* pvalue,Gauss* gauss,int enum_type);
 		Node*              GetNode(int nodeindex);
Index: /issm/trunk-jpl/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp	(revision 24715)
+++ /issm/trunk-jpl/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp	(revision 24716)
@@ -67,8 +67,8 @@
 
 	/*Retrieve all inputs we will be needing: */
-	topelement->GetInputValue(&S,SurfaceAreaEnum);
 	DatasetInput2* weights_input=topelement->GetDatasetInput2(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
-	Input2* vx_input     =topelement->GetInput2(VxEnum);                                 _assert_(vx_input);
-	Input2* vxobs_input  =topelement->GetInput2(InversionVxObsEnum);                     _assert_(vxobs_input);
+	Input2* S_input      = topelement->GetInput2(SurfaceAreaEnum);     _assert_(S_input);
+	Input2* vx_input     = topelement->GetInput2(VxEnum);              _assert_(vx_input);
+	Input2* vxobs_input  = topelement->GetInput2(InversionVxObsEnum);  _assert_(vxobs_input);
 	Input2* vy_input     = NULL;
 	Input2* vyobs_input  = NULL;
@@ -89,4 +89,5 @@
 		/*Get all parameters at gaussian point*/
 		weights_input->GetInputValue(&weight,gauss,SurfaceAverageVelMisfitEnum);
+		S_input->GetInputValue(&S,gauss);
 		vx_input->GetInputValue(&vx,gauss);
 		vxobs_input->GetInputValue(&vxobs,gauss);
