Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 21885)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 21886)
@@ -1191,4 +1191,36 @@
 	 *    = 4 * mu * eps_eff ^2*/
 	*phi=4.*epsilon_eff*epsilon_eff*viscosity;
+}
+/*}}}*/
+void       Element::GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution, int enum_type){/*{{{*/
+
+	int        *doflist = NULL;
+	IssmDouble  value;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->GetNumberOfNodes();
+
+	/*Fetch dof list and allocate solution vector*/
+	GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values = xNew<IssmDouble>(numnodes);
+
+	/*Get inputs*/
+	Input* enum_input=inputs->GetInput(enum_type); _assert_(enum_input);
+
+	/*Ok, we have the values, fill in the array: */
+	Gauss* gauss=this->NewGauss();
+	for(int i=0;i<numnodes;i++){
+		gauss->GaussNode(this->element_type,i);
+
+		enum_input->GetInputValue(&value,gauss);
+		values[i]=value;
+	}
+
+	solution->SetValues(numnodes,doflist,values,INS_VAL);
+
+	/*Free ressources:*/
+	xDelete<int>(doflist);
+	xDelete<IssmDouble>(values);
+	delete gauss;
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 21885)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 21886)
@@ -101,4 +101,5 @@
 		void               GetNodesSidList(int* sidlist);
 		void               GetPhi(IssmDouble* phi, IssmDouble*  epsilon, IssmDouble viscosity);
+		void               GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int solutionenum);
 		void               GetVectorFromInputs(Vector<IssmDouble>* vector, int name_enum, int type);
 		void	             GetVertexPidList(int* pidlist);
@@ -215,5 +216,4 @@
 		virtual int        GetNumberOfNodes(int enum_type)=0;
 		virtual int        GetNumberOfVertices(void)=0;
-		virtual void       GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int solutionenum)=0;
 		virtual void       GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,bool onsid)=0;
 		virtual void       GetVerticesCoordinatesBase(IssmDouble** xyz_list)=0;
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 21885)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 21886)
@@ -1095,34 +1095,4 @@
 int        Penta::GetNumberOfVertices(void){/*{{{*/
 	return NUMVERTICES; 
-}
-/*}}}*/
-void       Penta::GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution, int enum_type){/*{{{*/
-
-	const int    numdof=NDOF1*NUMVERTICES;
-
-	int          i;
-	int*         doflist=NULL;
-	IssmDouble   values[numdof];
-	IssmDouble   enum_value;
-	GaussPenta   *gauss=NULL;
-
-	/*Get dof list: */
-	GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
-	Input* enum_input=inputs->GetInput(enum_type); _assert_(enum_input);
-
-	gauss=new GaussPenta();
-	for(i=0;i<NUMVERTICES;i++){
-		/*Recover temperature*/
-		gauss->GaussVertex(i);
-		enum_input->GetInputValue(&enum_value,gauss);
-		values[i]=enum_value;
-	}
-
-	/*Add value to global vector*/
-	solution->SetValues(numdof,doflist,values,INS_VAL);
-
-	/*Free ressources:*/
-	delete gauss;
-	xDelete<int>(doflist);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 21885)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 21886)
@@ -84,5 +84,4 @@
 		int            GetNumberOfVertices(void);
 		Penta*         GetLowerPenta(void);
-		void           GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int enum_type);
 		Penta*         GetUpperPenta(void);
 		void           GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,bool onsid);
Index: /issm/trunk-jpl/src/c/classes/Elements/Seg.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 21885)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 21886)
@@ -72,5 +72,4 @@
 		int         GetNumberOfNodes(int enum_type){_error_("not implemented yet");};
 		int         GetNumberOfVertices(void);
-		void        GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int enum_type){_error_("not implemented yet");};
 		void        GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,bool onsid){_error_("not implemented yet");};
 		void        GetVerticesCoordinates(IssmDouble** pxyz_list);
Index: /issm/trunk-jpl/src/c/classes/Elements/Tetra.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 21885)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 21886)
@@ -78,5 +78,4 @@
 		int         GetNumberOfNodes(int enum_type){_error_("not implemented yet");};
 		int         GetNumberOfVertices(void);
-		void        GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int enum_type){_error_("not implemented yet");};
 		void        GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,bool onsid){_error_("not implemented yet");};
 		void        GetVerticesCoordinatesBase(IssmDouble** pxyz_list);
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 21885)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 21886)
@@ -1437,36 +1437,4 @@
 int        Tria::GetNumberOfVertices(void){/*{{{*/
 	return NUMVERTICES;
-}
-/*}}}*/
-void       Tria::GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution, int enum_type){/*{{{*/
-
-	int        *doflist = NULL;
-	IssmDouble  value;
-
-	/*Fetch number of nodes for this finite element*/
-	int numnodes = this->NumberofNodes(this->element_type);
-
-	/*Fetch dof list and allocate solution vector*/
-	GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
-	IssmDouble* values = xNew<IssmDouble>(numnodes);
-
-	/*Get inputs*/
-	Input* enum_input=inputs->GetInput(enum_type); _assert_(enum_input);
-
-	/*Ok, we have the values, fill in the array: */
-	GaussTria* gauss=new GaussTria();
-	for(int i=0;i<numnodes;i++){
-		gauss->GaussNode(this->element_type,i);
-
-		enum_input->GetInputValue(&value,gauss);
-		values[i]=value;
-	}
-
-	solution->SetValues(numnodes,doflist,values,INS_VAL);
-
-	/*Free ressources:*/
-	xDelete<int>(doflist);
-	xDelete<IssmDouble>(values);
-	delete gauss;
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 21885)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 21886)
@@ -83,5 +83,4 @@
 		int         GetNumberOfNodes(int enum_type);
 		int         GetNumberOfVertices(void);
-		void        GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int enum_type);
 		void        GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,bool onsid);
 		void        GetVerticesCoordinatesBase(IssmDouble** pxyz_list);
