Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 16680)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 16681)
@@ -48,5 +48,4 @@
 		virtual void	GetDofListVelocity(int** pdoflist,int setenum)=0;
 		virtual void	GetDofListPressure(int** pdoflist,int setenum)=0;
-		virtual void   GetSolutionFromInputs(Vector<IssmDouble>* solution)=0;
 		virtual void   GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int solutionenum)=0;
 		virtual int    GetNodeIndex(Node* node)=0;
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16680)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16681)
@@ -1527,56 +1527,4 @@
 
 	for(int i=0;i<3;i++) normal[i]=normal[i]/norm;
-}
-/*}}}*/
-/*FUNCTION Penta::GetSolutionFromInputs{{{*/
-void  Penta::GetSolutionFromInputs(Vector<IssmDouble>* solution){
-
-	int analysis_type;
-
-	/*retrive parameters: */
-	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
-
-	/*Just branch to the correct InputUpdateFromSolution generator, according to the type of analysis we are carrying out: */
-	switch(analysis_type){
-	#ifdef _HAVE_STRESSBALANCE_
-	case StressbalanceAnalysisEnum:
-		int approximation;
-		inputs->GetInputValue(&approximation,ApproximationEnum);
-		if(approximation==FSApproximationEnum || approximation==NoneApproximationEnum){
-			GetSolutionFromInputsStressbalanceFS(solution);
-		}
-		else if (approximation==SSAApproximationEnum || approximation==HOApproximationEnum || approximation==SIAApproximationEnum){
-			GetSolutionFromInputsStressbalanceHoriz(solution);
-		}
-		else if (approximation==SSAHOApproximationEnum || approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
-			return; //the elements around will create the solution
-		}
-		break;
-	case StressbalanceSIAAnalysisEnum:
-		GetSolutionFromInputsStressbalanceSIA(solution);
-		break;
-	case StressbalanceVerticalAnalysisEnum:
-		GetSolutionFromInputsOneDof(solution, VzEnum);
-		break;
-	#endif
-	#ifdef _HAVE_THERMAL_
-	case ThermalAnalysisEnum:
-		GetSolutionFromInputsOneDof(solution, TemperatureEnum);
-		break;
-	case EnthalpyAnalysisEnum:
-		GetSolutionFromInputsOneDof(solution, EnthalpyEnum);
-		break;
-	#endif
-	#ifdef _HAVE_HYDROLOGY_
-	case HydrologyDCInefficientAnalysisEnum:
-		GetSolutionFromInputsOneDof(solution, SedimentHeadEnum);
-		break;
-	case HydrologyDCEfficientAnalysisEnum:
-		GetSolutionFromInputsOneDof(solution, EplHeadEnum);
-		break;
-  #endif
-	default:
-		_error_("analysis: " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
-	}
 }
 /*}}}*/
@@ -9705,139 +9653,4 @@
 }
 /*}}}*/
-/*FUNCTION Penta::GetSolutionFromInputsStressbalanceHoriz{{{*/
-void  Penta::GetSolutionFromInputsStressbalanceHoriz(Vector<IssmDouble>* solution){
-
-	int         approximation;
-	int        *doflist = NULL;
-	IssmDouble  vx,vy;
-
-	/*Fetch number of nodes and dof for this finite element*/
-	int numnodes = this->NumberofNodes();
-	int numdof   = numnodes*NDOF2;
-
-	/*Get approximation enum and dof list: */
-	inputs->GetInputValue(&approximation,ApproximationEnum);
-	Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);
-	Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);
-
-	/*Fetch dof list and allocate solution vectors*/
-	GetDofList(&doflist,approximation,GsetEnum);
-	IssmDouble* values = xNew<IssmDouble>(numdof);
-
-	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
-	GaussPenta* gauss=new GaussPenta();
-	for(int i=0;i<numnodes;i++){
-		gauss->GaussNode(this->element_type,i);
-
-		/*Recover vx and vy*/
-		vx_input->GetInputValue(&vx,gauss);
-		vy_input->GetInputValue(&vy,gauss);
-		values[i*NDOF2+0]=vx;
-		values[i*NDOF2+1]=vy;
-	}
-
-	/*Add value to global vector*/
-	solution->SetValues(numdof,doflist,values,INS_VAL);
-
-	/*Free ressources:*/
-	delete gauss;
-	xDelete<IssmDouble>(values);
-	xDelete<int>(doflist);
-}
-/*}}}*/
-/*FUNCTION Penta::GetSolutionFromInputsStressbalanceSIA{{{*/
-void  Penta::GetSolutionFromInputsStressbalanceSIA(Vector<IssmDouble>* solution){
-
-	const int    numdof=NDOF2*NUMVERTICES;
-
-	int          i;
-	int*         doflist=NULL;
-	IssmDouble       vx,vy;
-	IssmDouble       values[numdof];
-	GaussPenta*  gauss=NULL;
-
-	/*Get dof list: */
-	GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
-	Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);
-	Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);
-
-	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
-	/*P1 element only for now*/
-	gauss=new GaussPenta();
-	for(i=0;i<NUMVERTICES;i++){
-		/*Recover vx and vy*/
-		gauss->GaussVertex(i);
-		vx_input->GetInputValue(&vx,gauss);
-		vy_input->GetInputValue(&vy,gauss);
-		values[i*NDOF2+0]=vx;
-		values[i*NDOF2+1]=vy;
-	}
-
-	/*Add value to global vector*/
-	solution->SetValues(numdof,doflist,values,INS_VAL);
-
-	/*Free ressources:*/
-	delete gauss;
-	xDelete<int>(doflist);
-}
-/*}}}*/
-/*FUNCTION Penta::GetSolutionFromInputsStressbalanceFS{{{*/
-void  Penta::GetSolutionFromInputsStressbalanceFS(Vector<IssmDouble>* solution){
-
-	int*         vdoflist=NULL;
-	int*         pdoflist=NULL;
-	IssmDouble   vx,vy,vz,p;
-	IssmDouble   FSreconditioning;
-	GaussPenta  *gauss;
-
-	/*Fetch number of nodes and dof for this finite element*/
-	int vnumnodes = this->NumberofNodesVelocity();
-	int pnumnodes = this->NumberofNodesPressure();
-	int vnumdof   = vnumnodes*NDOF3;
-	int pnumdof   = pnumnodes*NDOF1;
-
-	/*Initialize values*/
-	IssmDouble* vvalues = xNew<IssmDouble>(vnumdof);
-	IssmDouble* pvalues = xNew<IssmDouble>(pnumdof);
-
-	/*Get dof list: */
-	GetDofListVelocity(&vdoflist,GsetEnum);
-	GetDofListPressure(&pdoflist,GsetEnum);
-	Input* vx_input=inputs->GetInput(VxEnum);       _assert_(vx_input);
-	Input* vy_input=inputs->GetInput(VyEnum);       _assert_(vy_input);
-	Input* vz_input=inputs->GetInput(VzEnum);       _assert_(vz_input);
-	Input* p_input =inputs->GetInput(PressureEnum); _assert_(p_input);
-
-	this->parameters->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
-
-	/*Ok, we have vx vy vz in values, fill in vx vy vz arrays: */
-	gauss = new GaussPenta();
-	for(int i=0;i<vnumnodes;i++){
-		gauss->GaussNode(this->VelocityInterpolation(),i);
-		vx_input->GetInputValue(&vx,gauss);
-		vy_input->GetInputValue(&vy,gauss);
-		vz_input->GetInputValue(&vz,gauss);
-		vvalues[i*NDOF3+0]=vx;
-		vvalues[i*NDOF3+1]=vy;
-		vvalues[i*NDOF3+2]=vz;
-	}
-	for(int i=0;i<pnumnodes;i++){
-		gauss->GaussNode(this->PressureInterpolation(),i);
-		p_input ->GetInputValue(&p ,gauss);
-		pvalues[i]=p/FSreconditioning;
-	}
-
-	/*Add value to global vector*/
-	solution->SetValues(vnumdof,vdoflist,vvalues,INS_VAL);
-	solution->SetValues(pnumdof,pdoflist,pvalues,INS_VAL);
-
-	/*Free ressources:*/
-	delete gauss;
-	xDelete<int>(pdoflist);
-	xDelete<int>(vdoflist);
-	xDelete<IssmDouble>(pvalues);
-	xDelete<IssmDouble>(vvalues);
-}
-/*}}}*/
 /*FUNCTION Penta::GetL1L2Viscosity{{{*/
 void Penta::GetL1L2Viscosity(IssmDouble* pviscosity,IssmDouble* xyz_list, GaussPenta* gauss, Input* vx_input, Input* vy_input,Input* surface_input){
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 16680)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 16681)
@@ -91,5 +91,4 @@
 		void   GetNodesLidList(int* lidlist);
 		int    GetNumberOfNodes(void);
-		void   GetSolutionFromInputs(Vector<IssmDouble>* solution);
 		void   GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int enum_type);
 		IssmDouble GetZcoord(GaussPenta* gauss);
@@ -284,7 +283,4 @@
 		void           InputUpdateFromSolutionStressbalanceVert( IssmDouble* solutiong);
 		void           InputUpdateFromSolutionStressbalanceFS( IssmDouble* solutiong);
-		void	         GetSolutionFromInputsStressbalanceHoriz(Vector<IssmDouble>* solutiong);
-		void	         GetSolutionFromInputsStressbalanceSIA(Vector<IssmDouble>* solutiong);
-		void	         GetSolutionFromInputsStressbalanceFS(Vector<IssmDouble>* solutiong);
 		ElementVector* CreatePVectorCouplingSSAFS(void);
 		ElementVector* CreatePVectorCouplingSSAFSViscous(void);
Index: /issm/trunk-jpl/src/c/classes/Elements/Seg.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 16680)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 16681)
@@ -118,5 +118,4 @@
 		void    ComputeEPLThickness(void){_error_("not implemented yet");};
 		#endif
-		void        GetSolutionFromInputs(Vector<IssmDouble>* solution){_error_("not implemented yet");};
 		void        GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int enum_type){_error_("not implemented yet");};
 		void        GetVectorFromInputs(Vector<IssmDouble>* vector, int name_enum){_error_("not implemented yet");};
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16680)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16681)
@@ -1503,48 +1503,4 @@
 }
 /*}}}*/
-/*FUNCTION Tria::GetSolutionFromInputs{{{*/
-void  Tria::GetSolutionFromInputs(Vector<IssmDouble>* solution){
-
-	/*retrive parameters: */
-	int analysis_type;
-	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
-
-	/*Just branch to the correct InputUpdateFromSolution generator, according to the type of analysis we are carrying out: */
-	switch(analysis_type){
-	#ifdef _HAVE_STRESSBALANCE_
-	case StressbalanceAnalysisEnum:
-		int approximation;
-		inputs->GetInputValue(&approximation,ApproximationEnum);
-		if(approximation==FSApproximationEnum || approximation==NoneApproximationEnum){
-			GetSolutionFromInputsStressbalanceFS(solution);
-		}
-		else if (approximation==SSAApproximationEnum || approximation==SIAApproximationEnum){
-			GetSolutionFromInputsStressbalanceHoriz(solution);
-		}
-		else{
-			_error_("approximation not supported yet");
-		}
-		break;
-	case StressbalanceSIAAnalysisEnum:
-		GetSolutionFromInputsStressbalanceSIA(solution);
-		break;
-	#endif
-	#ifdef _HAVE_HYDROLOGY_
-	case HydrologyShreveAnalysisEnum:
-		GetSolutionFromInputsOneDof(solution,WatercolumnEnum);
-		break;
-	case HydrologyDCInefficientAnalysisEnum:
-		GetSolutionFromInputsOneDof(solution,SedimentHeadEnum);
-		break;
-	case HydrologyDCEfficientAnalysisEnum:
-		GetSolutionFromInputsOneDof(solution,EplHeadEnum);
-		break;
-	#endif
-	default:
-		_error_("analysis: " << EnumToStringx(analysis_type) << " not supported yet");
-	}
-
-}
-/*}}}*/
 /*FUNCTION Tria::GetStrainRate2d(IssmDouble* epsilon,IssmDouble* xyz_list, GaussTria* gauss, Input* vx_input, Input* vy_input){{{*/
 void Tria::GetStrainRate2d(IssmDouble* epsilon,IssmDouble* xyz_list, GaussTria* gauss, Input* vx_input, Input* vy_input){
@@ -4324,137 +4280,4 @@
 	delete gauss;
 	return Ke;
-}
-/*}}}*/
-/*FUNCTION Tria::GetSolutionFromInputsStressbalanceFS{{{*/
-void  Tria::GetSolutionFromInputsStressbalanceFS(Vector<IssmDouble>* solution){
-
-	int*         vdoflist=NULL;
-	int*         pdoflist=NULL;
-	IssmDouble   vx,vy,p;
-	IssmDouble   FSreconditioning;
-	GaussTria   *gauss;
-
-	/*Fetch number of nodes and dof for this finite element*/
-	int vnumnodes = this->NumberofNodesVelocity();
-	int pnumnodes = this->NumberofNodesPressure();
-	int vnumdof   = vnumnodes*NDOF2;
-	int pnumdof   = pnumnodes*NDOF1;
-
-	/*Initialize values*/
-	IssmDouble* vvalues = xNew<IssmDouble>(vnumdof);
-	IssmDouble* pvalues = xNew<IssmDouble>(pnumdof);
-
-	/*Get dof list: */
-	GetDofListVelocity(&vdoflist,GsetEnum);
-	GetDofListPressure(&pdoflist,GsetEnum);
-	Input* vx_input=inputs->GetInput(VxEnum);       _assert_(vx_input);
-	Input* vy_input=inputs->GetInput(VyEnum);       _assert_(vy_input);
-	Input* p_input =inputs->GetInput(PressureEnum); _assert_(p_input);
-
-	this->parameters->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
-
-	/*Ok, we have vx vy vz in values, fill in vx vy vz arrays: */
-	gauss = new GaussTria();
-	for(int i=0;i<vnumnodes;i++){
-		gauss->GaussNode(this->VelocityInterpolation(),i);
-		vx_input->GetInputValue(&vx,gauss);
-		vy_input->GetInputValue(&vy,gauss);
-		vvalues[i*NDOF2+0]=vx;
-		vvalues[i*NDOF2+1]=vy;
-	}
-	for(int i=0;i<pnumnodes;i++){
-		gauss->GaussNode(this->PressureInterpolation(),i);
-		p_input->GetInputValue(&p ,gauss);
-		pvalues[i]=p/FSreconditioning;
-	}
-
-	/*Add value to global vector*/
-	solution->SetValues(vnumdof,vdoflist,vvalues,INS_VAL);
-	solution->SetValues(pnumdof,pdoflist,pvalues,INS_VAL);
-
-	/*Free ressources:*/
-	delete gauss;
-	xDelete<int>(pdoflist);
-	xDelete<int>(vdoflist);
-	xDelete<IssmDouble>(pvalues);
-	xDelete<IssmDouble>(vvalues);
-}
-/*}}}*/
-/*FUNCTION Tria::GetSolutionFromInputsStressbalanceHoriz{{{*/
-void  Tria::GetSolutionFromInputsStressbalanceHoriz(Vector<IssmDouble>* solution){
-
-	IssmDouble   vx,vy;
-	int*         doflist = NULL;
-	GaussTria*   gauss   = NULL;
-
-	/*Fetch number of nodes and dof for this finite element*/
-	int numnodes = this->NumberofNodes();
-	int numdof   = numnodes*NDOF2;
-
-	/*Fetch dof list and allocate solution vector*/
-	GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
-	IssmDouble* values = xNew<IssmDouble>(numdof);
-
-	/*Get inputs*/
-	Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);
-	Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);
-
-	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
-	gauss=new GaussTria();
-	for(int i=0;i<numnodes;i++){
-		gauss->GaussNode(this->element_type,i);
-
-		/*Recover vx and vy*/
-		vx_input->GetInputValue(&vx,gauss);
-		vy_input->GetInputValue(&vy,gauss);
-		values[i*NDOF2+0]=vx;
-		values[i*NDOF2+1]=vy;
-	}
-
-	solution->SetValues(numdof,doflist,values,INS_VAL);
-
-	/*Free ressources:*/
-	delete gauss;
-	xDelete<IssmDouble>(values);
-	xDelete<int>(doflist);
-}
-/*}}}*/
-/*FUNCTION Tria::GetSolutionFromInputsStressbalanceSIA{{{*/
-void  Tria::GetSolutionFromInputsStressbalanceSIA(Vector<IssmDouble>* solution){
-
-	const int    numdof=NDOF2*NUMVERTICES;
-
-	int        i;
-	IssmDouble     vx,vy;
-	IssmDouble     values[numdof];
-	int       *doflist = NULL;
-	GaussTria *gauss   = NULL;
-
-	/*Get dof list: */
-	GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
-
-	/*Get inputs*/
-	Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);
-	Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);
-
-	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
-	/*P1 element only for now*/
-	gauss=new GaussTria();
-	for(i=0;i<NUMVERTICES;i++){
-
-		gauss->GaussVertex(i);
-
-		/*Recover vx and vy*/
-		vx_input->GetInputValue(&vx,gauss);
-		vy_input->GetInputValue(&vy,gauss);
-		values[i*NDOF2+0]=vx;
-		values[i*NDOF2+1]=vy;
-	}
-
-	solution->SetValues(numdof,doflist,values,INS_VAL);
-
-	/*Free ressources:*/
-	delete gauss;
-	xDelete<int>(doflist);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 16680)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 16681)
@@ -104,5 +104,4 @@
 		int         NumberofNodesPressure(void);
 		bool        NoIceInElement();
-		void        GetSolutionFromInputs(Vector<IssmDouble>* solution);
 		void        GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int enum_type);
 		void        GetVectorFromInputs(Vector<IssmDouble>* vector, int name_enum);
@@ -276,7 +275,4 @@
 		ElementVector* CreatePVectorStressbalanceFSShelf(void);
 		ElementMatrix* CreateJacobianStressbalanceSSA(void);
-		void	         GetSolutionFromInputsStressbalanceFS(Vector<IssmDouble>* solution);
-		void	         GetSolutionFromInputsStressbalanceHoriz(Vector<IssmDouble>* solution);
-		void	         GetSolutionFromInputsStressbalanceSIA(Vector<IssmDouble>* solution);
 		IssmDouble     GetYcoord(GaussTria* gauss);
 		void	         InputUpdateFromSolutionStressbalanceHoriz( IssmDouble* solution);
