Index: /issm/trunk-jpl/src/c/Container/Elements.cpp
===================================================================
--- /issm/trunk-jpl/src/c/Container/Elements.cpp	(revision 10989)
+++ /issm/trunk-jpl/src/c/Container/Elements.cpp	(revision 10990)
@@ -204,5 +204,5 @@
 			for(int j=0;j<this->Size();j++){
 				Element* element=(Element*)this->GetObjectByOffset(j);
-				element->GetVectorFromResults(vector,i);
+				element->GetVectorFromResults(vector,i,resultssize[i]);
 			}
 			VecAssemblyBegin(vector);
Index: /issm/trunk-jpl/src/c/objects/ElementResults/BoolElementResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/ElementResults/BoolElementResult.cpp	(revision 10989)
+++ /issm/trunk-jpl/src/c/objects/ElementResults/BoolElementResult.cpp	(revision 10990)
@@ -198,2 +198,7 @@
 	xfree((void**)&doublevalues);
 } /*}}}*/
+/*FUNCTION BoolElementResult::GetElementVectorFromResults{{{1*/
+void BoolElementResult::GetElementVectorFromResults(Vec vector,int dof){
+
+	VecSetValue(vector,dof,(double)value,INSERT_VALUES);
+} /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/ElementResults/BoolElementResult.h
===================================================================
--- /issm/trunk-jpl/src/c/objects/ElementResults/BoolElementResult.h	(revision 10989)
+++ /issm/trunk-jpl/src/c/objects/ElementResults/BoolElementResult.h	(revision 10990)
@@ -54,4 +54,5 @@
 		int   InstanceEnum();
 		void GetVectorFromResults(Vec vector,int* doflist,int numdofs);
+		void GetElementVectorFromResults(Vec vector,int dof);
 		/*}}}*/
 };
Index: /issm/trunk-jpl/src/c/objects/ElementResults/DoubleElementResult.h
===================================================================
--- /issm/trunk-jpl/src/c/objects/ElementResults/DoubleElementResult.h	(revision 10989)
+++ /issm/trunk-jpl/src/c/objects/ElementResults/DoubleElementResult.h	(revision 10990)
@@ -54,4 +54,5 @@
 		int   InstanceEnum();
 		void GetVectorFromResults(Vec vector,int* doflist,int numdofs){_error_("not implemented");};
+		void GetElementVectorFromResults(Vec vector,int dof){_error_("not implemented");};
 		/*}}}*/
 };
Index: /issm/trunk-jpl/src/c/objects/ElementResults/ElementResult.h
===================================================================
--- /issm/trunk-jpl/src/c/objects/ElementResults/ElementResult.h	(revision 10989)
+++ /issm/trunk-jpl/src/c/objects/ElementResults/ElementResult.h	(revision 10990)
@@ -26,4 +26,5 @@
 		virtual int     InstanceEnum()=0;
 		virtual void    GetVectorFromResults(Vec vector,int* doflist,int numdof)=0;
+		virtual void    GetElementVectorFromResults(Vec vector,int dof)=0;
 
 };
Index: /issm/trunk-jpl/src/c/objects/ElementResults/PentaVertexElementResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/ElementResults/PentaVertexElementResult.cpp	(revision 10989)
+++ /issm/trunk-jpl/src/c/objects/ElementResults/PentaVertexElementResult.cpp	(revision 10990)
@@ -201,2 +201,7 @@
 
 } /*}}}*/
+/*FUNCTION PentaVertexElementResult::GetElementVectorFromResults{{{1*/
+void PentaVertexElementResult::GetElementVectorFromResults(Vec vector,int dof){
+
+	_error_("Result %s is a PentaVertexElementResult and should not write vector of size numberofelemenrs",EnumToStringx(enum_type));
+} /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/ElementResults/PentaVertexElementResult.h
===================================================================
--- /issm/trunk-jpl/src/c/objects/ElementResults/PentaVertexElementResult.h	(revision 10989)
+++ /issm/trunk-jpl/src/c/objects/ElementResults/PentaVertexElementResult.h	(revision 10990)
@@ -53,4 +53,5 @@
 		int   InstanceEnum();
 		void GetVectorFromResults(Vec vector,int* doflist,int numdofs);
+		void GetElementVectorFromResults(Vec vector,int dof);
 		/*}}}*/
 
Index: /issm/trunk-jpl/src/c/objects/ElementResults/TriaVertexElementResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/ElementResults/TriaVertexElementResult.cpp	(revision 10989)
+++ /issm/trunk-jpl/src/c/objects/ElementResults/TriaVertexElementResult.cpp	(revision 10990)
@@ -190,2 +190,7 @@
 
 } /*}}}*/
+/*FUNCTION TriaVertexElementResult::GetElementVectorFromResults{{{1*/
+void TriaVertexElementResult::GetElementVectorFromResults(Vec vector,int dof){
+
+	_error_("Result %s is a TriaVertexElementResult and should not write vector of size numberofelemenrs",EnumToStringx(enum_type));
+} /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/ElementResults/TriaVertexElementResult.h
===================================================================
--- /issm/trunk-jpl/src/c/objects/ElementResults/TriaVertexElementResult.h	(revision 10989)
+++ /issm/trunk-jpl/src/c/objects/ElementResults/TriaVertexElementResult.h	(revision 10990)
@@ -52,4 +52,5 @@
 		int   InstanceEnum();
 		void GetVectorFromResults(Vec vector,int* doflist,int numdofs);
+		void GetElementVectorFromResults(Vec vector,int dof);
 		/*}}}*/
 
Index: /issm/trunk-jpl/src/c/objects/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/objects/Elements/Element.h	(revision 10989)
+++ /issm/trunk-jpl/src/c/objects/Elements/Element.h	(revision 10990)
@@ -59,5 +59,5 @@
 		virtual void   InputScale(int enum_type,double scale_factor)=0;
 		virtual void   GetVectorFromInputs(Vec vector, int name_enum)=0;
-		virtual void   GetVectorFromResults(Vec vector,int id)=0;
+		virtual void   GetVectorFromResults(Vec vector,int id,int interp)=0;
 		virtual void   InputArtificialNoise(int enum_type,double min,double max)=0;
 		virtual bool   InputConvergence(double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums)=0;
Index: /issm/trunk-jpl/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Elements/Penta.cpp	(revision 10989)
+++ /issm/trunk-jpl/src/c/objects/Elements/Penta.cpp	(revision 10990)
@@ -1139,14 +1139,21 @@
 /*}}}*/
 /*FUNCTION Penta::GetVectorFromResults{{{1*/
-void  Penta::GetVectorFromResults(Vec vector,int offset){
-
+void  Penta::GetVectorFromResults(Vec vector,int offset,int interp){
+
+	/*Prepare index list*/
 	int doflist1[NUMVERTICES];
-
-	/*Prepare index list*/
 	this->GetSidList(&doflist1[0]);
 
 	/*Get result*/
 	ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(offset);
-	elementresult->GetVectorFromResults(vector,&doflist1[0],NUMVERTICES);
+	if(interp==P1Enum){
+		elementresult->GetVectorFromResults(vector,&doflist1[0],NUMVERTICES);
+	}
+	else if(interp==P0Enum){
+		elementresult->GetElementVectorFromResults(vector,sid);
+	}
+	else{
+		printf("Interpolation %s not supported\n",EnumToStringx(interp));
+	}
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/objects/Elements/Penta.h	(revision 10989)
+++ /issm/trunk-jpl/src/c/objects/Elements/Penta.h	(revision 10990)
@@ -92,5 +92,5 @@
 		double GetZcoord(GaussPenta* gauss);
 		void   GetVectorFromInputs(Vec vector,int name_enum);
-		void   GetVectorFromResults(Vec vector,int offset);
+		void   GetVectorFromResults(Vec vector,int offset,int interp);
 		
 		int    Sid();
Index: /issm/trunk-jpl/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Elements/Tria.cpp	(revision 10989)
+++ /issm/trunk-jpl/src/c/objects/Elements/Tria.cpp	(revision 10990)
@@ -1240,5 +1240,5 @@
 
 	/*Get out if this is not an element input*/
-	if (!IsInput(input_enum)) return;
+	if(!IsInput(input_enum)) return;
 
 	/*Prepare index list*/
@@ -1254,14 +1254,21 @@
 /*}}}*/
 /*FUNCTION Tria::GetVectorFromResults{{{1*/
-void  Tria::GetVectorFromResults(Vec vector,int offset){
-
+void  Tria::GetVectorFromResults(Vec vector,int offset,int interp){
+
+	/*Prepare index list*/
 	int doflist1[NUMVERTICES];
-
-	/*Prepare index list*/
 	this->GetSidList(&doflist1[0]);
 
 	/*Get result*/
 	ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(offset);
-	elementresult->GetVectorFromResults(vector,&doflist1[0],NUMVERTICES);
+	if(interp==P1Enum){
+		elementresult->GetVectorFromResults(vector,&doflist1[0],NUMVERTICES);
+	}
+	else if(interp==P0Enum){
+		elementresult->GetElementVectorFromResults(vector,sid);
+	}
+	else{
+		printf("Interpolation %s not supported\n",EnumToStringx(interp));
+	}
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/objects/Elements/Tria.h	(revision 10989)
+++ /issm/trunk-jpl/src/c/objects/Elements/Tria.h	(revision 10990)
@@ -92,5 +92,5 @@
 		void   GetSolutionFromInputs(Vec solution);
 		void   GetVectorFromInputs(Vec vector, int name_enum);
-		void   GetVectorFromResults(Vec vector,int offset);
+		void   GetVectorFromResults(Vec vector,int offset,int interp);
 		void   InputArtificialNoise(int enum_type,double min, double max);
 		bool   InputConvergence(double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);
