Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 21517)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 21518)
@@ -1162,43 +1162,50 @@
 	int         numnodes    = this->GetNumberOfNodes();
 	int*        doflist     = NULL;
+	IssmDouble  value;
 	IssmDouble* values      = NULL;
+	Input*      input       = NULL;
 
 	switch(type){
-	case VertexPIdEnum:
-		doflist = xNew<int>(numvertices);
-		values = xNew<IssmDouble>(numvertices);
-		/*Fill in values*/
-		this->GetVertexPidList(doflist);
-		this->GetInputListOnVertices(values,input_enum);
-		vector->SetValues(numvertices,doflist,values,INS_VAL);
-		break;
-	case VertexSIdEnum:
-		doflist = xNew<int>(numvertices);
-		values = xNew<IssmDouble>(numvertices);
-		/*Fill in values*/
-		this->GetVerticesSidList(doflist);
-		this->GetInputListOnVertices(values,input_enum);
-		vector->SetValues(numvertices,doflist,values,INS_VAL);
-		break;
-	case NodesEnum:
-		doflist = xNew<int>(numnodes);
-		values = xNew<IssmDouble>(numnodes);
-		/*Fill in values*/
-		this->GetInputListOnNodes(values,input_enum);
-		this->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
-		vector->SetValues(numnodes,doflist,values,INS_VAL);
-		break;
-	case NodeSIdEnum:
-		doflist = xNew<int>(numnodes);
-		values = xNew<IssmDouble>(numnodes);
-		/*Fill in values*/
-		this->GetNodesSidList(doflist);
-		this->GetInputListOnNodes(values,input_enum);
-		vector->SetValues(numnodes,doflist,values,INS_VAL);
-		break;
-	default:
-		_error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
-	}
-	
+		case ElementSIdEnum:
+			input=inputs->GetInput(input_enum); _assert_(input);
+			input->GetInputAverage(&value);
+			vector->SetValue(this->sid,value,INS_VAL);
+			break;
+		case VertexPIdEnum:
+			doflist = xNew<int>(numvertices);
+			values = xNew<IssmDouble>(numvertices);
+			/*Fill in values*/
+			this->GetVertexPidList(doflist);
+			this->GetInputListOnVertices(values,input_enum);
+			vector->SetValues(numvertices,doflist,values,INS_VAL);
+			break;
+		case VertexSIdEnum:
+			doflist = xNew<int>(numvertices);
+			values = xNew<IssmDouble>(numvertices);
+			/*Fill in values*/
+			this->GetVerticesSidList(doflist);
+			this->GetInputListOnVertices(values,input_enum);
+			vector->SetValues(numvertices,doflist,values,INS_VAL);
+			break;
+		case NodesEnum:
+			doflist = xNew<int>(numnodes);
+			values = xNew<IssmDouble>(numnodes);
+			/*Fill in values*/
+			this->GetInputListOnNodes(values,input_enum);
+			this->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+			vector->SetValues(numnodes,doflist,values,INS_VAL);
+			break;
+		case NodeSIdEnum:
+			doflist = xNew<int>(numnodes);
+			values = xNew<IssmDouble>(numnodes);
+			/*Fill in values*/
+			this->GetNodesSidList(doflist);
+			this->GetInputListOnNodes(values,input_enum);
+			vector->SetValues(numnodes,doflist,values,INS_VAL);
+			break;
+		default:
+			_error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
+	}
+
 	/*Clean up*/
 	xDelete<int>(doflist);
Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 21517)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 21518)
@@ -15,5 +15,4 @@
 #include "./modules/modules.h"
 #include "../shared/Enum/Enum.h"
-
 #include "../analyses/analyses.h"
 
@@ -3202,8 +3201,16 @@
 	IssmDouble* P0inputsold = xNew<IssmDouble>(numelementsold*numP0inputs);
 	IssmDouble* P0inputsnew = NULL;
+	IssmDouble* vector      = NULL;
 
 	for(int i=0;i<numP0inputs;i++){
 		printf("Dealing with %s (type: %s)\n",EnumToStringx(P0input_enums[i]),EnumToStringx(P0input_interp[i]));
-	}
+		GetVectorFromInputsx(&vector,this,P0input_enums[i],ElementSIdEnum);
+
+		/*Copy vector in matrix*/
+		xMemCpy<int>(&P0inputsold[i*numelementsold],vector,numelementsold);
+		xDelete<IssmDouble>(vector);
+	}
+	printf("Printing array to make sure it looks alright\n");
+	printarray(P0inputsold,numelementsold,numP0inputs);
 
 	_error_("stop");
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 21517)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 21518)
@@ -853,4 +853,5 @@
 	MassconaxpbyEnum,
 	NodeSIdEnum,
+	ElementSIdEnum,
 	VectorParamEnum,
 	RiftfrontEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 21517)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 21518)
@@ -827,4 +827,5 @@
 		case MassconaxpbyEnum : return "Massconaxpby";
 		case NodeSIdEnum : return "NodeSId";
+		case ElementSIdEnum : return "ElementSId";
 		case VectorParamEnum : return "VectorParam";
 		case RiftfrontEnum : return "Riftfront";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 21517)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 21518)
@@ -845,4 +845,5 @@
 	      else if (strcmp(name,"Massconaxpby")==0) return MassconaxpbyEnum;
 	      else if (strcmp(name,"NodeSId")==0) return NodeSIdEnum;
+	      else if (strcmp(name,"ElementSId")==0) return ElementSIdEnum;
 	      else if (strcmp(name,"VectorParam")==0) return VectorParamEnum;
 	      else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;
@@ -874,9 +875,9 @@
 	      else if (strcmp(name,"DefaultAnalysis")==0) return DefaultAnalysisEnum;
 	      else if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum;
-	      else if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum;
          else stage=8;
    }
    if(stage==8){
-	      if (strcmp(name,"Balancethickness2Analysis")==0) return Balancethickness2AnalysisEnum;
+	      if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum;
+	      else if (strcmp(name,"Balancethickness2Analysis")==0) return Balancethickness2AnalysisEnum;
 	      else if (strcmp(name,"Balancethickness2Solution")==0) return Balancethickness2SolutionEnum;
 	      else if (strcmp(name,"BalancethicknessSoftAnalysis")==0) return BalancethicknessSoftAnalysisEnum;
@@ -997,9 +998,9 @@
 	      else if (strcmp(name,"Nodes")==0) return NodesEnum;
 	      else if (strcmp(name,"Contours")==0) return ContoursEnum;
-	      else if (strcmp(name,"Parameters")==0) return ParametersEnum;
          else stage=9;
    }
    if(stage==9){
-	      if (strcmp(name,"Vertices")==0) return VerticesEnum;
+	      if (strcmp(name,"Parameters")==0) return ParametersEnum;
+	      else if (strcmp(name,"Vertices")==0) return VerticesEnum;
 	      else if (strcmp(name,"Results")==0) return ResultsEnum;
 	      else if (strcmp(name,"MaximumNumberOfDefinitions")==0) return MaximumNumberOfDefinitionsEnum;
