Index: /issm/trunk/src/c/EnumDefinitions/EnumAsString.cpp
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumAsString.cpp	(revision 4038)
+++ /issm/trunk/src/c/EnumDefinitions/EnumAsString.cpp	(revision 4039)
@@ -31,4 +31,5 @@
 		case AnalysisTypeEnum : return "AnalysisType";
 		case SubAnalysisTypeEnum : return "SubAnalysisType";
+		case AnalysisCounterEnum : return "AnalysisCounter";
 		case DiagnosticAnalysisEnum : return "DiagnosticAnalysis";
 		case DiagnosticHorizAnalysisEnum : return "DiagnosticHorizAnalysis";
@@ -201,7 +202,9 @@
 		case P0Enum : return "P0";
 		case P1Enum : return "P1";
-		case StringResultEnum : return "StringResult";
-		case DoubleVecResultEnum : return "DoubleVecResult";
-		case DoubleMatResultEnum : return "DoubleMatResult";
+		case DoubleResultEnum : return "DoubleResult";
+		case TriaVertexResultEnum : return "TriaVertexResult";
+		case PentaVertexResultEnum : return "PentaVertexResult";
+		case SingVertexResultEnum : return "SingVertexResult";
+		case BeamVertexResultEnum : return "BeamVertexResult";
 		case BetaEnum : return "Beta";
 		case CmGradientEnum : return "CmGradient";
Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 4038)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 4039)
@@ -238,4 +238,6 @@
 	TriaVertexResultEnum,
 	PentaVertexResultEnum,
+	SingVertexResultEnum,
+	BeamVertexResultEnum,
 	/*}}}*/
 	/*Parameters{{{1*/
Index: /issm/trunk/src/c/EnumDefinitions/StringAsEnum.cpp
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/StringAsEnum.cpp	(revision 4038)
+++ /issm/trunk/src/c/EnumDefinitions/StringAsEnum.cpp	(revision 4039)
@@ -29,4 +29,5 @@
 	else if (strcmp(name,"AnalysisType")==0) return AnalysisTypeEnum;
 	else if (strcmp(name,"SubAnalysisType")==0) return SubAnalysisTypeEnum;
+	else if (strcmp(name,"AnalysisCounter")==0) return AnalysisCounterEnum;
 	else if (strcmp(name,"DiagnosticAnalysis")==0) return DiagnosticAnalysisEnum;
 	else if (strcmp(name,"DiagnosticHorizAnalysis")==0) return DiagnosticHorizAnalysisEnum;
@@ -199,7 +200,9 @@
 	else if (strcmp(name,"P0")==0) return P0Enum;
 	else if (strcmp(name,"P1")==0) return P1Enum;
-	else if (strcmp(name,"StringResult")==0) return StringResultEnum;
-	else if (strcmp(name,"DoubleVecResult")==0) return DoubleVecResultEnum;
-	else if (strcmp(name,"DoubleMatResult")==0) return DoubleMatResultEnum;
+	else if (strcmp(name,"DoubleResult")==0) return DoubleResultEnum;
+	else if (strcmp(name,"TriaVertexResult")==0) return TriaVertexResultEnum;
+	else if (strcmp(name,"PentaVertexResult")==0) return PentaVertexResultEnum;
+	else if (strcmp(name,"SingVertexResult")==0) return SingVertexResultEnum;
+	else if (strcmp(name,"BeamVertexResult")==0) return BeamVertexResultEnum;
 	else if (strcmp(name,"Beta")==0) return BetaEnum;
 	else if (strcmp(name,"CmGradient")==0) return CmGradientEnum;
Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 4038)
+++ /issm/trunk/src/c/Makefile.am	(revision 4039)
@@ -103,10 +103,16 @@
 					./objects/Node.h\
 					./objects/Node.cpp\
-					./objects/Results/DoubleResults.h\
-					./objects/Results/DoubleResults.cpp\
-					./objects/Results/TriaVertexResults.h\
-					./objects/Results/TriaVertexResults.cpp\
-					./objects/Results/PentaVertexResults.h\
-					./objects/Results/PentaVertexResults.cpp\
+					./objects/Results/ResultLocal.h\
+					./objects/Results/NodalValuesUnitConversion.cpp\
+					./objects/Results/DoubleResult.h\
+					./objects/Results/DoubleResult.cpp\
+					./objects/Results/TriaVertexResult.h\
+					./objects/Results/TriaVertexResult.cpp\
+					./objects/Results/PentaVertexResult.h\
+					./objects/Results/PentaVertexResult.cpp\
+					./objects/Results/SingVertexResult.h\
+					./objects/Results/SingVertexResult.cpp\
+					./objects/Results/BeamVertexResult.h\
+					./objects/Results/BeamVertexResult.cpp\
 					./objects/Elements/Tria.h\
 					./objects/Elements/Tria.cpp\
@@ -131,5 +137,4 @@
 					./objects/Inputs/DoubleInput.h\
 					./objects/Inputs/DoubleInput.cpp\
-					./objects/Inputs/ProcessResults.cpp\
 					./objects/Elements/Sing.h\
 					./objects/Elements/Sing.cpp\
@@ -518,5 +523,4 @@
 					./objects/Bamg/GeometricalVertex.h\
 					./objects/Bamg/GeometricalVertex.cpp\
-					./objects/Bamg/Geometry.cpp\
 					./objects/Bamg/Geometry.h\
 					./objects/Bamg/ListofIntersectionTriangles.cpp\
@@ -536,5 +540,4 @@
 					./objects/Bamg/Triangle.cpp\
 					./objects/Bamg/Triangle.h\
-					./objects/Bamg/Triangles.cpp\
 					./objects/Bamg/Triangles.h\
 					./objects/Bamg/MeshVertex.cpp\
@@ -571,10 +574,16 @@
 					./objects/Hook.h\
 					./objects/Hook.cpp\
-					./objects/Results/DoubleResults.h\
-					./objects/Results/DoubleResults.cpp\
-					./objects/Results/TriaVertexResults.h\
-					./objects/Results/TriaVertexResults.cpp\
-					./objects/Results/PentaVertexResults.h\
-					./objects/Results/PentaVertexResults.cpp\
+					./objects/Results/ResultLocal.h\
+					./objects/Results/NodalValuesUnitConversion.cpp\
+					./objects/Results/DoubleResult.h\
+					./objects/Results/DoubleResult.cpp\
+					./objects/Results/TriaVertexResult.h\
+					./objects/Results/TriaVertexResult.cpp\
+					./objects/Results/PentaVertexResult.h\
+					./objects/Results/PentaVertexResult.cpp\
+					./objects/Results/SingVertexResult.h\
+					./objects/Results/SingVertexResult.cpp\
+					./objects/Results/BeamVertexResult.h\
+					./objects/Results/BeamVertexResult.cpp\
 					./objects/Elements/Tria.h\
 					./objects/Elements/Tria.cpp\
@@ -599,5 +608,4 @@
 					./objects/Inputs/DoubleInput.h\
 					./objects/Inputs/DoubleInput.cpp\
-					./objects/Inputs/ProcessResults.cpp\
 					./objects/Elements/Sing.h\
 					./objects/Elements/Sing.cpp\
Index: /issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.cpp
===================================================================
--- /issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.cpp	(revision 4038)
+++ /issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.cpp	(revision 4039)
@@ -1,4 +1,5 @@
 /*!\file:  OutputResults.cpp
- * \brief: go through results dataset, and for each result, write it to disk.
+ * \brief: go through our finite elements, and see what results they have stored within. 
+ * Then output them into serialized patch arrays, and dump to disk.
  */ 
 
@@ -14,39 +15,82 @@
 #include "../../objects/objects.h"
 		
-void OutputResults(FemModel* femmodel, char* filename,int analysis_type){
+void OutputResults(FemModel* femmodel, char* filename){
 
+	int solutiontype;
+	int numrows;
+	int numvertices;
+	int numnodes;
+	int max_numvertices;
+	int max_numnodes;
 
-	ISSMERROR(" not supported yet!");
+	/*First, configure elements*/
+	femmodel->elements->Configure(elements,loads, nodes,vertices, materials,parameters);
+
+	//Recover solutiontype which will be output to disk: 
+	femmodel->parameters->FindParam(&solutiontype,SolutionTypeEnum);
+
+	//Process results to be output in the correct units
+	for(i=0;i<femmodel->elements->Size();i++){
+		Element* element=femmodel->elements->GetObjectByOffset(i);
+		element->ProcessResultsUnits();
+	}
+
+	/*We are going to extract from the results within the elements, the desired results , and create a table 
+	 * of patch information, that will hold, for each element that computed the result that 
+	 * we desire, the enum_type of the result, the step and time, the id of the element, the interpolation type, the vertices ids, and the values 
+	 * at the nodes (could be different from the vertices). This will be used for visualization purposes. 
+	 * For example, we could build the following patch table, for velocities: 
+	 * 
+	 * VxEnum 1  .5  1 P0  1 2       4.5 NaN  NaN //on a Beam element, Vx, at step 1, time .5, element id 1, interpolation type P0 (constant value on a beam element), vertices ids 1 and 2, one constant value 4.5
+	 * VzEnum 2  .8  2 P1  1 3 4     4.5 3.2  2.5 //on a Tria element, Vz, at step 2, time .8, element id 2, interpolation type P1  (linear values on a tria element), vertices ids 1 3 and 4, with values at 3 nodes 4.5, 3.2, 2.5
+	 * ... etc ...
+	 *
+	 * So what do we need to build the table: the maximum number of vertices included in the table, 
+	 * and the maximum number of nodal values, as well as the number of rows. Once we have that, 
+	 * we ask the elements to fill their own row in the table, by looping on the elememnts. 
+	 *
+	 * We will use the Patch object, which will store all of the information needed, and will be able 
+	 * to output itself to disk on its own. See object/Patch.h for format of this object.*/
 	
-	
-//	
-//	
-//	int i;
-//	Result* result=NULL;
-//	FILE* fid=NULL;
-//	extern int my_rank;
-//
-//	/* Open output file to write raw binary data: */
-//	if(my_rank==0){
-//		fid=pfopen(filename,"wb");
-//
-//		for(i=0;i<results->Size();i++){
-//			result=(Result*)results->GetObjectByOffset(i);
-//
-//			/*write result to disk: */
-//			result->WriteData(fid);
-//		}
-//		
-//		/*Close file: */
-//		pfclose(fid,filename);
-//	}
-//
-//
-//	/*output if we have rifts: */
-//	if(numrifts){
-//		OutputRiftsx( &riftproperties,fem_dh->loads,numrifts);
-//		results->AddObject(new Result(results->Size()+1,0,1,"riftproperties",riftproperties));
-//	}
-//
+	/*First, determine maximum number of vertices, nodes, and number of results: */
+	numrows=0;
+	numvertices=0;
+	numnodes=0;
+
+	for(i=0;i<femmodel->elements->Size();i++){
+		Element* element=femmodel->elements->GetObjectByOffset(i);
+		element->PatchSize(&element_numrows,&element_numvertices,&element_numnodes);
+
+		numrows+=element_numrows;
+		if(element_numvertices>numvertices)numvertices=element_numvertices;
+		if(element_numnodes>numnodes)numnodes=element_numnodes;
+	}
+
+	#ifdef _PARALLEL_
+	/*Synchronize across cluster, so as to not end up with different sizes for each patch on each cpu: */
+	MPI_Reduce (&numvertices,&max_numvertices,1,MPI_INT,MPI_MAX,0,MPI_COMM_WORLD );
+	MPI_Bcast(&max_numvertices,1,MPI_INT,0,MPI_COMM_WORLD);
+	numvertices=max_numvertices;
+
+	MPI_Reduce (&numnodes,&max_numnodes,1,MPI_INT,MPI_MAX,0,MPI_COMM_WORLD );
+	MPI_Bcast(&max_numnodes,1,MPI_INT,0,MPI_COMM_WORLD);
+	numnodes=max_numnodes;
+	#endif
+
+	/*Ok, initialize Patch object: */
+	patch=new Patch(numrows,numvertices,numnodes);
+
+	/*Now, go through elements, and fill the Patch object: */
+	count=0;
+	for(i=0;i<elements->Size();i++){
+		Element* element=(Element*)elements->GetObjectByOffset(i);
+		element->PatchFill(&count,patch);
+	}
+
+	/*Now, gather patch onto node 0, so that we do not dump to disk from every node: */
+	patch->MPI_Gather();
+
+	/*Write to disk:*/
+	patch->WriteToDisk(solutiontype,filename);
 
 }
Index: /issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.h
===================================================================
--- /issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.h	(revision 4038)
+++ /issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.h	(revision 4039)
@@ -9,5 +9,5 @@
 
 /* local prototypes: */
-void OutputResults(FemModel* femmodel, char* filename,int analysis_type);
+void OutputResults(FemModel* femmodel, char* filename);
 
 #endif  /* _OUTPUTRESULTS_H */
Index: /issm/trunk/src/c/objects/Elements/Beam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Beam.cpp	(revision 4038)
+++ /issm/trunk/src/c/objects/Elements/Beam.cpp	(revision 4039)
@@ -142,4 +142,9 @@
 /*FUNCTION Beam::InputToResult(int enum_type,int step,double time){{{1*/
 void  Beam::InputToResult(int enum_type,int step,double time){
+	ISSMERROR(" not supported yet!");
+}
+/*}}}*/
+/*FUNCTION Beam::ProcessResultsUnits(void){{{1*/
+void  Beam::ProcessResultsUnits(void){
 	ISSMERROR(" not supported yet!");
 }
@@ -618,41 +623,22 @@
 }
 /*}}}*/
-/*FUNCTION Beam::PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes, int enum_type){{{1*/
-void  Beam::PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes, int enum_type){
-
-	int    i;
-	Input *input       = NULL;
-	bool   found       = false;
-	int    numrows;
-	int    numvertices;
-	int    numnodes;
-
-	/*Recover counter: */
-	numrows=*pnumrows;
-
-	/*Go through all the input objects, and find the one corresponding to enum_type, if it exists: */
-	for (i=0;i<this->inputs->Size();i++){
-		input=(Input*)this->inputs->GetObjectByOffset(i);
-		if (input->EnumType()==enum_type){
-			found=true;
-			break;
-		}
-	}
-
-	if (!found){
-		/*Ok, the input looked for does not exist. No problem. Just be sure numvertices and numnodes
-		 * are 0, so that they do not increase the size of the patches array. Also, do not increase 
-		 * the counter, as this element has nothing to do with results: */
-		numvertices=0;
-		numnodes=0;
-	}
-	else{
-		/*Ok, we found an input with the correct enum_type. Ask it to tell us how many nodal values it 
-		 * holds. : */
-		numnodes=input->PatchSize();
-		/*We know the number of vertices from this element: */
-		numvertices=2;
-		/*Increase counter, because this element does hold a result in its inputs: */
+/*FUNCTION Beam::PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes){{{1*/
+void  Beam::PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes){
+
+	int     i;
+	
+	/*output: */
+	int     numrows     = 0;
+	int     numvertices = 0;
+	int     numnodes    = 0;
+
+	/*Go through all the results objects, and update the counters: */
+	for (i=0;i<this->results->Size();i++){
+		Result* result=(Result*)this->results->GetObjectByOffset(i);
+		/*first, we have one more result: */
 		numrows++;
+		/*now, how many vertices and how many nodal values for this result? :*/
+		numvertices=2; //this is a beam element, with 2 vertices
+		numnodes=result->NumberOfNodalValues(); //ask result object.
 	}
 
@@ -664,64 +650,31 @@
 }
 /*}}}*/
-/*FUNCTION Beam::PatchFill(int* pcount, double* patches,int numcols,int max_vertices,int enum_type){{{1*/
-void  Beam::PatchFill(int* pcount, double* patches,int numcols,int max_vertices,int enum_type){
-
-	/*A patch is made of the following information: 
-	 * element_id  interpolation_type  vertex_ids    values. 
-	 * For example: 
-
-	 1 P0  1 2       4.5 NaN 
-	 2 P1  1 3       4.5 3.2
-	 3 P0  1 5       5.5 NaN
-	 4 P1  2 4       4.5 3.2
-
-	 Here, we will provide the nodal values, after having processed them, can provide: id, and vertices ids. 
-	 Then go find an input with enum_type. If we find it, fill in the values at the nodal points. 
-	 If we don't find an input, get out of here doing nothing, as this element is not involved in 
-	 outputting results. 
-	 */
-
-	int      i;
-	Input   *input      = NULL;
-	bool     found      = false;
-	int      count      = 0;
-	double  *this_patch = NULL;
-
-
-	/*Go through all the input objects, and find the one corresponding to enum_type, if it exists: */
-	for (i=0;i<this->inputs->Size();i++){
-		input=(Input*)this->inputs->GetObjectByOffset(i);
-		if (input->EnumType()==enum_type){
-			found=true;
-			break;
-		}
-	}
-
-	if (!found){
-		/*Ok, the input looked for does not exist. No problem. Just return :*/
-	}
-	else{
+/*FUNCTION Beam::PatchFill(int* pcount, Patch* patch){{{1*/
+void  Beam::PatchFill(int* pcount, Patch* patch){
+
+	int i;
+	int count;
+	int vertices_ids[2];
+
+
+	/*recover pointer: */
+	count=*pcount;
 		
-		/*First, recover the patches row where we will plug in the information: */
-		count=*pcount;
-
-		/*set this_patch to point at the beginning of the patches row, where we will plug our information :*/
-		this_patch=patches+numcols*count;
-
-		/*Fill in id: */
-		this_patch[0]=this->id;
-
-		/*Fill in vertices ids: */
-		for(i=0;i<2;i++) this_patch[2+i]=nodes[i]->GetVertexId(); //vertices id start at column 3 of the patch.
-
-		/*We found the input, get it to fill the interpolation type, and the nodal values:*/
-		input->PatchFill(this_patch,max_vertices,this->parameters);
-		
-		/*Increase counter, so that next time, we don't point to the same patches row: */
+	/*will be needed later: */
+	for(i=0;i<2;i++) vertices_ids[i]=nodes[i]->GetVertexId(); //vertices id start at column 3 of the patch.
+
+	for(i=0;i<this->results->Size();i++){
+		Result* result=(Result*)this->results->GetObjectByOffset(i);
+
+		/*For this result,fill the information in the Patch object (element id + vertices ids), and then hand 
+		 *it to the result object, to fill the rest: */
+		patch->fillelementinfo(count,this->id,vertices_ids,2);
+		result->PatchFill(count,patch);
+
+		/*increment counter: */
 		count++;
-
-		/*Assign output pointers:*/
-		*pcount=count;
-	}
-}
-/*}}}*/
+	}
+
+	/*Assign output pointers:*/
+	*pcount=count;
+}
Index: /issm/trunk/src/c/objects/Elements/Beam.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Beam.h	(revision 4038)
+++ /issm/trunk/src/c/objects/Elements/Beam.h	(revision 4039)
@@ -64,4 +64,5 @@
 		void  DepthAverageInputAtBase(int enum_type){ISSMERROR("not implemented yet");};
 		void  InputToResult(int enum_type,int step,double time);
+		void   ProcessResultsUnits(void);
 		/*}}}*/
 		/*numerics: {{{1*/
@@ -80,6 +81,6 @@
 		void  ComputeStrainRate(Vec eps,int analysis_type,int sub_analysis_type);
 		void  GetNodes(void** vpnodes);
-		void  PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes,int enum_type);
-		void  PatchFill(int* pcount, double* patches,int numcols,int max_vertices,int enum_type);
+		void  PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes);
+		void  PatchFill(int* pcount, Patch* patch);
 
 		/*}}}*/
Index: /issm/trunk/src/c/objects/Elements/Element.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Element.h	(revision 4038)
+++ /issm/trunk/src/c/objects/Elements/Element.h	(revision 4039)
@@ -15,4 +15,5 @@
 class DataSet;
 class Parameters;
+class Patch;
 
 #include "../../toolkits/toolkits.h"
@@ -47,8 +48,9 @@
 		virtual void   ComputeStrainRate(Vec eps,     int analysis_type,int sub_analysis_type)=0;
 		virtual double MassFlux(double* segment,double* ug)=0;
-		virtual void   PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes,int enum_type)=0;
-		virtual void   PatchFill(int* pcount, double* patches,int numcols,int max_vertices,int enum_type)=0;
+		virtual void   PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes)=0;
+		virtual void   PatchFill(int* pcount, Patch* patch)=0;
 		virtual void   Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type)=0;
-		virtual void   InputToResult(int enum_type,int step,double time);
+		virtual void   InputToResult(int enum_type,int step,double time)=0;
+		virtual void   ProcessResultsUnits(void)=0;
 
 		/*Implementation: */
Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4038)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4039)
@@ -613,4 +613,16 @@
 	 * object out of the input, with the additional step and time information: */
 	this->results->AddObject(input->SpawnResult(step,time));
+
+}
+/*}}}*/
+/*FUNCTION Penta::ProcessResultsUnits(void){{{1*/
+void  Penta::ProcessResultsUnits(void){
+
+	int i;
+
+	for(i=0;i<this->results->Size();i++){
+		Result* result=this->results->GetObjectByOffset(i);
+		result->ProcessUnits(this->parameters);
+	}
 
 }
@@ -4885,41 +4897,22 @@
 }
 /*}}}*/
-/*FUNCTION Penta::PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes, int enum_type){{{1*/
-void  Penta::PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes, int enum_type){
-
-	int    i;
-	Input *input       = NULL;
-	bool   found       = false;
-	int    numrows;
-	int    numvertices;
-	int    numnodes;
-
-	/*Recover counter: */
-	numrows=*pnumrows;
-
-	/*Go through all the input objects, and find the one corresponding to enum_type, if it exists: */
-	for (i=0;i<this->inputs->Size();i++){
-		input=(Input*)this->inputs->GetObjectByOffset(i);
-		if (input->EnumType()==enum_type){
-			found=true;
-			break;
-		}
-	}
-
-	if (!found){
-		/*Ok, the input looked for does not exist. No problem. Just be sure numvertices and numnodes
-		 * are 0, so that they do not increase the size of the patches array. Also, do not increase 
-		 * the counter, as this element has nothing to do with results: */
-		numvertices=0;
-		numnodes=0;
-	}
-	else{
-		/*Ok, we found an input with the correct enum_type. Ask it to tell us how many nodal values it 
-		 * holds. : */
-		numnodes=input->PatchSize();
-		/*We know the number of vertices from this element: */
-		numvertices=6;
-		/*Increase counter, because this element does hold a result in its inputs: */
+/*FUNCTION Penta::PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes){{{1*/
+void  Penta::PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes){
+
+	int     i;
+	
+	/*output: */
+	int     numrows     = 0;
+	int     numvertices = 0;
+	int     numnodes    = 0;
+
+	/*Go through all the results objects, and update the counters: */
+	for (i=0;i<this->results->Size();i++){
+		Result* result=(Result*)this->results->GetObjectByOffset(i);
+		/*first, we have one more result: */
 		numrows++;
+		/*now, how many vertices and how many nodal values for this result? :*/
+		numvertices=6; //this is a penta element, with 6 vertices
+		numnodes=result->NumberOfNodalValues(); //ask result object.
 	}
 
@@ -4931,65 +4924,31 @@
 }
 /*}}}*/
-/*FUNCTION Penta::PatchFill(int* pcount, double* patches,int numcols,int max_vertices);{{{1*/
-void  Penta::PatchFill(int* pcount, double* patches,int numcols,int max_vertices,int enum_type){
-
-	/*A patch is made of the following information: 
-	 * element_id  interpolation_type  vertex_ids    values. 
-	 * For example: 
-
-	 1 P0  1 2 4 11 12 14      4.5  NaN  NaN    NaN NaN NaN
-	 2 P1  2 4 5 12 14 15      4.5  23.3 23.3   4.2 4.2 3.2
-	 3 P0  5 2 1 15 12 11      5.5  NaN  NaN    NaN NaN NaN
-	 4 P1  2 3 5 12 13 15      4.5  30.2 322.2  4.2 3.2 8.3
-	 ...
-
-	 Here, we can provide: id, and vertices ids. 
-	 Then go find an input with enum_type. If we find it, fill in the values at the nodal points. 
-	 If we don't find an input, get out of here doing nothing, as this element is not involved in 
-	 outputting results. 
-	 */
-
-	int      i;
-	Input   *input      = NULL;
-	bool     found      = false;
-	int      count      = 0;
-	double  *this_patch = NULL;
-
-
-	/*Go through all the input objects, and find the one corresponding to enum_type, if it exists: */
-	for (i=0;i<this->inputs->Size();i++){
-		input=(Input*)this->inputs->GetObjectByOffset(i);
-		if (input->EnumType()==enum_type){
-			found=true;
-			break;
-		}
-	}
-
-	if (!found){
-		/*Ok, the input looked for does not exist. No problem. Just return :*/
-	}
-	else{
+/*FUNCTION Penta::PatchFill(int* pcount, Patch* patch){{{1*/
+void  Penta::PatchFill(int* pcount, Patch* patch){
+
+	int i;
+	int count;
+	int vertices_ids[6];
+
+
+	/*recover pointer: */
+	count=*pcount;
 		
-		/*First, recover the patches row where we will plug in the information: */
-		count=*pcount;
-
-		/*set this_patch to point at the beginning of the patches row, where we will plug our information :*/
-		this_patch=patches+numcols*count;
-
-		/*Fill in id: */
-		this_patch[0]=this->id;
-
-		/*Fill in vertices ids: */
-		for(i=0;i<6;i++) this_patch[2+i]=this->nodes[i]->GetVertexId(); //vertices id start at column 3 of the patch.
-
-		/*We found the input, get it to fill the interpolation type, and the nodal values:*/
-		input->PatchFill(this_patch,max_vertices,this->parameters);
-		
-		/*Increase counter, so that next time, we don't point to the same patches row: */
+	/*will be needed later: */
+	for(i=0;i<6;i++) vertices_ids[i]=nodes[i]->GetVertexId(); //vertices id start at column 3 of the patch.
+
+	for(i=0;i<this->results->Size();i++){
+		Result* result=(Result*)this->results->GetObjectByOffset(i);
+
+		/*For this result,fill the information in the Patch object (element id + vertices ids), and then hand 
+		 *it to the result object, to fill the rest: */
+		patch->fillelementinfo(count,this->id,vertices_ids,6);
+		result->PatchFill(count,patch);
+
+		/*increment counter: */
 		count++;
-
-		/*Assign output pointers:*/
-		*pcount=count;
-	}
-}
-/*}}}*/
+	}
+
+	/*Assign output pointers:*/
+	*pcount=count;
+}
Index: /issm/trunk/src/c/objects/Elements/Penta.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.h	(revision 4038)
+++ /issm/trunk/src/c/objects/Elements/Penta.h	(revision 4039)
@@ -67,5 +67,5 @@
 		double* GaussFromNode(Node* node);
 		void  InputToResult(int enum_type,int step,double time);
-
+		void   ProcessResultsUnits(void);
 		/*}}}*/
 		/*FUNCTION element numerical routines {{{1*/
@@ -150,6 +150,6 @@
 		void  GetPhi(double* phi, double*  epsilon, double viscosity);
 		double MassFlux(double* segment,double* ug);
-		void  PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes,int enum_type);
-		void  PatchFill(int* pcount, double* patches,int numcols,int max_vertices,int enum_type);
+		void  PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes);
+		void  PatchFill(int* pcount, Patch* patch);
 
 		/*updates: */
Index: /issm/trunk/src/c/objects/Elements/Sing.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Sing.cpp	(revision 4038)
+++ /issm/trunk/src/c/objects/Elements/Sing.cpp	(revision 4039)
@@ -139,4 +139,9 @@
 /*FUNCTION Sing::InputToResult(int enum_type,int step,double time){{{1*/
 void  Sing::InputToResult(int enum_type,int step,double time){
+	ISSMERROR(" not supported yet!");
+}
+/*}}}*/
+/*FUNCTION Sing::ProcessResultsUnits(void){{{1*/
+void  Sing::ProcessResultsUnits(void){
 	ISSMERROR(" not supported yet!");
 }
@@ -442,41 +447,22 @@
 }
 /*}}}*/
-/*FUNCTION Sing::PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes, int enum_type){{{1*/
-void  Sing::PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes, int enum_type){
-
-	int    i;
-	Input *input       = NULL;
-	bool   found       = false;
-	int    numrows;
-	int    numvertices;
-	int    numnodes;
-
-	/*Recover counter: */
-	numrows=*pnumrows;
-
-	/*Go through all the input objects, and find the one corresponding to enum_type, if it exists: */
-	for (i=0;i<this->inputs->Size();i++){
-		input=(Input*)this->inputs->GetObjectByOffset(i);
-		if (input->EnumType()==enum_type){
-			found=true;
-			break;
-		}
-	}
-
-	if (!found){
-		/*Ok, the input looked for does not exist. No problem. Just be sure numvertices and numnodes
-		 * are 0, so that they do not increase the size of the patches array. Also, do not increase 
-		 * the counter, as this element has nothing to do with results: */
-		numvertices=0;
-		numnodes=0;
-	}
-	else{
-		/*Ok, we found an input with the correct enum_type. Ask it to tell us how many nodal values it 
-		 * holds. : */
-		numnodes=input->PatchSize();
-		/*We know the number of vertices from this element: */
-		numvertices=1;
-		/*Increase counter, because this element does hold a result in its inputs: */
+/*FUNCTION Sing::PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes){{{1*/
+void  Sing::PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes){
+
+	int     i;
+	
+	/*output: */
+	int     numrows     = 0;
+	int     numvertices = 0;
+	int     numnodes    = 0;
+
+	/*Go through all the results objects, and update the counters: */
+	for (i=0;i<this->results->Size();i++){
+		Result* result=(Result*)this->results->GetObjectByOffset(i);
+		/*first, we have one more result: */
 		numrows++;
+		/*now, how many vertices and how many nodal values for this result? :*/
+		numvertices=1; //this is a sing element, with 1 vertex
+		numnodes=result->NumberOfNodalValues(); //ask result object.
 	}
 
@@ -485,66 +471,34 @@
 	*pnumvertices=numvertices;
 	*pnumnodes=numnodes;
-}
-	
-/*FUNCTION Sing::PatchFill(int* pcount, double* patches,int numcols,int max_vertices,int enum_type){{{1*/
-void  Sing::PatchFill(int* pcount, double* patches,int numcols,int max_vertices,int enum_type){
-
-	/*A patch is made of the following information: 
-	 * element_id  interpolation_type  vertex_ids    values. 
-	 * For example: 
-
-	 1 P0  1       4.5 
-	 2 P1  3       4.5
-	 3 P0  5       5.5
-	 4 P1  4       4.5
-
-	 Here, we will provide the nodal values, after having processed them, can provide: id, and vertices ids. 
-	 Then go find an input with enum_type. If we find it, fill in the values at the nodal points. 
-	 If we don't find an input, get out of here doing nothing, as this element is not involved in 
-	 outputting results. 
-	 */
-
-	int      i;
-	Input   *input      = NULL;
-	bool     found      = false;
-	int      count      = 0;
-	double  *this_patch = NULL;
-
-
-	/*Go through all the input objects, and find the one corresponding to enum_type, if it exists: */
-	for (i=0;i<this->inputs->Size();i++){
-		input=(Input*)this->inputs->GetObjectByOffset(i);
-		if (input->EnumType()==enum_type){
-			found=true;
-			break;
-		}
-	}
-
-	if (!found){
-		/*Ok, the input looked for does not exist. No problem. Just return :*/
-	}
-	else{
+	
+}
+/*}}}*/
+/*FUNCTION Sing::PatchFill(int* pcount, Patch* patch){{{1*/
+void  Sing::PatchFill(int* pcount, Patch* patch){
+
+	int i;
+	int count;
+	int vertices_ids[1];
+
+
+	/*recover pointer: */
+	count=*pcount;
 		
-		/*First, recover the patches row where we will plug in the information: */
-		count=*pcount;
-
-		/*set this_patch to point at the beginning of the patches row, where we will plug our information :*/
-		this_patch=patches+numcols*count;
-
-		/*Fill in id: */
-		this_patch[0]=this->id;
-
-		/*Fill in vertices ids: */
-		for(i=0;i<1;i++) this_patch[2+i]=node->GetVertexId(); //vertices id start at column 3 of the patch.
-
-		/*We found the input, get it to fill the interpolation type, and the nodal values:*/
-		input->PatchFill(this_patch,max_vertices,this->parameters);
-		
-		/*Increase counter, so that next time, we don't point to the same patches row: */
+	/*will be needed later: */
+	for(i=0;i<1;i++) vertices_ids[i]=nodes[i]->GetVertexId(); //vertices id start at column 3 of the patch.
+
+	for(i=0;i<this->results->Size();i++){
+		Result* result=(Result*)this->results->GetObjectByOffset(i);
+
+		/*For this result,fill the information in the Patch object (element id + vertices ids), and then hand 
+		 *it to the result object, to fill the rest: */
+		patch->fillelementinfo(count,this->id,vertices_ids,1);
+		result->PatchFill(count,patch);
+
+		/*increment counter: */
 		count++;
-
-		/*Assign output pointers:*/
-		*pcount=count;
-	}
-}
-/*}}}*/
+	}
+
+	/*Assign output pointers:*/
+	*pcount=count;
+}
Index: /issm/trunk/src/c/objects/Elements/Sing.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Sing.h	(revision 4038)
+++ /issm/trunk/src/c/objects/Elements/Sing.h	(revision 4039)
@@ -64,4 +64,5 @@
 		void  DepthAverageInputAtBase(int enum_type){ISSMERROR("not implemented yet");};
 		void  InputToResult(int enum_type,int step,double time);
+		void   ProcessResultsUnits(void);
 		/*}}}*/
 		/*numerics: {{{1*/
@@ -79,6 +80,6 @@
 		void  ComputeStrainRate(Vec eps,int analysis_type,int sub_analysis_type);
 		void  GetNodes(void** vpnodes);
-		void  PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes,int enum_type);
-		void  PatchFill(int* pcount, double* patches,int numcols,int max_vertices,int enum_type);
+		void  PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes);
+		void  PatchFill(int* pcount, Patch* patch);
 
 		/*}}}*/
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 4038)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 4039)
@@ -509,4 +509,16 @@
 	 * object out of the input, with the additional step and time information: */
 	this->results->AddObject(input->SpawnResult(step,time));
+
+}
+/*}}}*/
+/*FUNCTION Tria::ProcessResultsUnits(void){{{1*/
+void  Tria::ProcessResultsUnits(void){
+
+	int i;
+
+	for(i=0;i<this->results->Size();i++){
+		Result* result=this->results->GetObjectByOffset(i);
+		result->ProcessUnits(this->parameters);
+	}
 
 }
@@ -4997,41 +5009,22 @@
 }
 /*}}}*/
-/*FUNCTION Tria::PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes, int enum_type){{{1*/
-void  Tria::PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes, int enum_type){
-
-	int    i;
-	Input *input       = NULL;
-	bool   found       = false;
-	int    numrows;
-	int    numvertices;
-	int    numnodes;
-
-	/*Recover counter: */
-	numrows=*pnumrows;
-
-	/*Go through all the input objects, and find the one corresponding to enum_type, if it exists: */
-	for (i=0;i<this->inputs->Size();i++){
-		input=(Input*)this->inputs->GetObjectByOffset(i);
-		if (input->EnumType()==enum_type){
-			found=true;
-			break;
-		}
-	}
-
-	if (!found){
-		/*Ok, the input looked for does not exist. No problem. Just be sure numvertices and numnodes
-		 * are 0, so that they do not increase the size of the patches array. Also, do not increase 
-		 * the counter, as this element has nothing to do with results: */
-		numvertices=0;
-		numnodes=0;
-	}
-	else{
-		/*Ok, we found an input with the correct enum_type. Ask it to tell us how many nodal values it 
-		 * holds. : */
-		numnodes=input->PatchSize();
-		/*We know the number of vertices from this element: */
-		numvertices=3;
-		/*Increase counter, because this element does hold a result in its inputs: */
+/*FUNCTION Tria::PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes){{{1*/
+void  Tria::PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes){
+
+	int     i;
+	
+	/*output: */
+	int     numrows     = 0;
+	int     numvertices = 0;
+	int     numnodes    = 0;
+
+	/*Go through all the results objects, and update the counters: */
+	for (i=0;i<this->results->Size();i++){
+		Result* result=(Result*)this->results->GetObjectByOffset(i);
+		/*first, we have one more result: */
 		numrows++;
+		/*now, how many vertices and how many nodal values for this result? :*/
+		numvertices=3; //this is a tria element, with 3 vertices
+		numnodes=result->NumberOfNodalValues(); //ask result object.
 	}
 
@@ -5043,65 +5036,31 @@
 }
 /*}}}*/
-/*FUNCTION Tria::PatchFill(int* pcount, double* patches,int numcols,int max_vertices);{{{1*/
-void  Tria::PatchFill(int* pcount, double* patches,int numcols,int max_vertices,int enum_type){
-
-	/*A patch is made of the following information: 
-	 * element_id  interpolation_type  vertex_ids    values. 
-	 * For example: 
-
-	 1 P0  1 2 4       4.5  NaN  NaN 
-	 2 P1  2 4 5       4.5  23.3 23.3
-	 3 P0  5 2 1       5.5  NaN  NaN
-	 4 P1  2 3 5       4.5  30.2 322.2 
-	 ...
-
-	 Here, we can provide: id, and vertices ids. 
-	 Then go find an input with enum_type. If we find it, fill in the values at the nodal points. 
-	 If we don't find an input, get out of here doing nothing, as this element is not involved in 
-	 outputting results. 
-	 */
-
-	int      i;
-	Input   *input      = NULL;
-	bool     found      = false;
-	int      count      = 0;
-	double  *this_patch = NULL;
-
-
-	/*Go through all the input objects, and find the one corresponding to enum_type, if it exists: */
-	for (i=0;i<this->inputs->Size();i++){
-		input=(Input*)this->inputs->GetObjectByOffset(i);
-		if (input->EnumType()==enum_type){
-			found=true;
-			break;
-		}
-	}
-
-	if (!found){
-		/*Ok, the input looked for does not exist. No problem. Just return :*/
-	}
-	else{
+/*FUNCTION Tria::PatchFill(int* prow, Patch* patch){{{1*/
+void  Tria::PatchFill(int* prow, Patch* patch){
+
+	int i;
+	int row;
+	int vertices_ids[3];
+
+
+	/*recover pointer: */
+	row=*prow;
 		
-		/*First, recover the patches row where we will plug in the information: */
-		count=*pcount;
-
-		/*set this_patch to point at the beginning of the patches row, where we will plug our information :*/
-		this_patch=patches+numcols*count;
-
-		/*Fill in id: */
-		this_patch[0]=this->id;
-
-		/*Fill in vertices ids: */
-		for(i=0;i<3;i++) this_patch[2+i]=this->nodes[i]->GetVertexId(); //vertices id start at column 3 of the patch.
-
-		/*We found the input, get it to fill the interpolation type, and the nodal values:*/
-		input->PatchFill(this_patch,max_vertices,this->parameters);
-		
-		/*Increase counter, so that next time, we don't point to the same patches row: */
-		count++;
-
-		/*Assign output pointers:*/
-		*pcount=count;
-	}
-}
-/*}}}*/
+	/*will be needed later: */
+	for(i=0;i<3;i++) vertices_ids[i]=nodes[i]->GetVertexId(); //vertices id start at column 3 of the patch.
+
+	for(i=0;i<this->results->Size();i++){
+		Result* result=(Result*)this->results->GetObjectByOffset(i);
+
+		/*For this result,fill the information in the Patch object (element id + vertices ids), and then hand 
+		 *it to the result object, to fill the rest: */
+		patch->fillelementinfo(row,this->id,vertices_ids,3);
+		result->PatchFill(row,patch);
+
+		/*increment rower: */
+		row++;
+	}
+
+	/*Assign output pointers:*/
+	*prow=row;
+}
Index: /issm/trunk/src/c/objects/Elements/Tria.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.h	(revision 4038)
+++ /issm/trunk/src/c/objects/Elements/Tria.h	(revision 4039)
@@ -59,4 +59,5 @@
 		void*  SpawnBeam(int g0, int g1);
 		void  InputToResult(int enum_type,int step,double time);
+		void   ProcessResultsUnits(void);
 		/*}}}*/
 		/*FUNCTION element numerical routines {{{1*/
@@ -125,6 +126,6 @@
 		double GetArea(void);
 		double GetAreaCoordinate(double x, double y, int which_one);
-		void  PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes,int enum_type);
-		void  PatchFill(int* pcount, double* patches,int numcols,int max_vertices,int enum_type);
+		void  PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes);
+		void  PatchFill(int* pcount, Patch* patch);
 
 		/*}}}*/
Index: /issm/trunk/src/c/objects/Inputs/BeamVertexInput.cpp
===================================================================
--- /issm/trunk/src/c/objects/Inputs/BeamVertexInput.cpp	(revision 4038)
+++ /issm/trunk/src/c/objects/Inputs/BeamVertexInput.cpp	(revision 4039)
@@ -11,5 +11,4 @@
 #include "stdio.h"
 #include <string.h>
-#include "./InputLocal.h"
 #include "../objects.h"
 #include "../../EnumDefinitions/EnumDefinitions.h"
@@ -228,34 +227,2 @@
 }
 /*}}}*/
-/*FUNCTION BeamVertexInput::PatchSize(void);{{{1*/
-int BeamVertexInput::PatchSize(void){
-
-	/*Return the number of nodal values this input holds, so that 
-	 * results can be correctl dimensionned. See InputToResultsx 
-	 * module for more explanations: */
-	return 2;
-}
-/*}}}*/
-/*FUNCTION BeamVertexInput::PatchFill(double* patches, int max_vertices,Parameters* parameters);{{{1*/
-void BeamVertexInput::PatchFill(double* patches, int max_vertices,Parameters* parameters){
-	
-	/*A patch is made of the following information: 
-	 * element_id  interpolation_type  vertex_ids    values. 
-	 * For example: 
-
-	 1 P0  1 2       4.5 NaN 
-	 2 P1  1 3       4.5 3.2
-	 3 P0  1 5       5.5 NaN
-	 4 P1  2 4       4.5 3.2
-
-	 Here, we fill the info relevant to the input, ie interpolation_type and nodal values: */
-	int i;
-
-	patches[1]=P1Enum;
-	for(i=0;i<2;i++)patches[2+max_vertices+i]=values[i]; //start of nodal values is at position 2+max_vertices (2 for id and interpolation_type) and max_vertices for vertices ids.
-
-	/*Now, post-processing (essentially, unit conversion): */
-	ProcessResults(patches+2+max_vertices,2,this->enum_type,parameters);
-
-}
-/*}}}*/
Index: /issm/trunk/src/c/objects/Inputs/BeamVertexInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/BeamVertexInput.h	(revision 4038)
+++ /issm/trunk/src/c/objects/Inputs/BeamVertexInput.h	(revision 4039)
@@ -15,10 +15,8 @@
 class BeamVertexInput: public Input{
 
-	private: 
+	public:
 		/*just hold 2 values for 2 vertices: */
 		int    enum_type;
 		double values[2];
-
-	public:
 
 		/*constructors, destructors: {{{1*/
@@ -75,6 +73,4 @@
 		void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
 		void ChangeEnum(int newenumtype);
-		int  PatchSize(void);
-		void PatchFill(double* patches, int max_vertices,Parameters* parameters);
 		/*}}}*/
 
Index: /issm/trunk/src/c/objects/Inputs/BoolInput.cpp
===================================================================
--- /issm/trunk/src/c/objects/Inputs/BoolInput.cpp	(revision 4038)
+++ /issm/trunk/src/c/objects/Inputs/BoolInput.cpp	(revision 4039)
@@ -11,5 +11,4 @@
 #include "stdio.h"
 #include <string.h>
-#include "./InputLocal.h"
 #include "../objects.h"
 #include "../../EnumDefinitions/EnumDefinitions.h"
@@ -218,17 +217,2 @@
 }
 /*}}}*/
-/*FUNCTION BoolInput::PatchSize(void);{{{1*/
-int BoolInput::PatchSize(void){
-
-	/*Return the number of nodal values this input holds, so that 
-	 * results can be correctl dimensionned. See InputToResultsx 
-	 * module for more explanations: */
-	return 1;
-}
-/*}}}*/
-/*FUNCTION BoolInput::PatchFill(double* patches, int max_vertices,Parameters* parameters);{{{1*/
-void BoolInput::PatchFill(double* patches, int max_vertices,Parameters* parameters){
-
-	ISSMERROR(" not supported yet!");
-}
-/*}}}*/
Index: /issm/trunk/src/c/objects/Inputs/BoolInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/BoolInput.h	(revision 4038)
+++ /issm/trunk/src/c/objects/Inputs/BoolInput.h	(revision 4039)
@@ -15,10 +15,8 @@
 class BoolInput: public Input{
 
-	private: 
+	public:
 		/*just hold 3 values for 3 vertices: */
 		int    enum_type;
 		IssmBool value;
-
-	public:
 
 		/*constructors, destructors: {{{1*/
@@ -75,6 +73,4 @@
 		void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
 		void ChangeEnum(int newenumtype);
-		int  PatchSize(void);
-		void PatchFill(double* patches, int max_vertices,Parameters* parameters);
 		/*}}}*/
 
Index: /issm/trunk/src/c/objects/Inputs/DoubleInput.cpp
===================================================================
--- /issm/trunk/src/c/objects/Inputs/DoubleInput.cpp	(revision 4038)
+++ /issm/trunk/src/c/objects/Inputs/DoubleInput.cpp	(revision 4039)
@@ -11,5 +11,4 @@
 #include "stdio.h"
 #include <string.h>
-#include "./InputLocal.h"
 #include "../objects.h"
 #include "../../EnumDefinitions/EnumDefinitions.h"
@@ -228,17 +227,2 @@
 }
 /*}}}*/
-/*FUNCTION DoubleInput::PatchSize(void);{{{1*/
-int DoubleInput::PatchSize(void){
-
-	/*Return the number of nodal values this input holds, so that 
-	 * results can be correctl dimensionned. See InputToResultsx 
-	 * module for more explanations: */
-	return 1;
-}
-/*}}}*/
-/*FUNCTION DoubleInput::PatchFill(double* patches, int max_vertices,Parameters* parameters);{{{1*/
-void DoubleInput::PatchFill(double* patches, int max_vertices,Parameters* parameters){
-
-	ISSMERROR(" not supported yet!");
-}
-/*}}}*/
Index: /issm/trunk/src/c/objects/Inputs/DoubleInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/DoubleInput.h	(revision 4038)
+++ /issm/trunk/src/c/objects/Inputs/DoubleInput.h	(revision 4039)
@@ -15,10 +15,9 @@
 class DoubleInput: public Input{
 
-	private: 
+	public:
+
 		/*just hold 3 values for 3 vertices: */
 		int    enum_type;
 		IssmDouble value;
-
-	public:
 
 		/*constructors, destructors: {{{1*/
@@ -38,4 +37,5 @@
 		Object* copy();
 		int   EnumType();
+
 		void    UpdateInputsFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
 		void    UpdateInputsFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
@@ -44,5 +44,4 @@
 		void    UpdateInputsFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
 		void    UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-
 		void    UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
 
@@ -75,6 +74,4 @@
 		void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
 		void ChangeEnum(int newenumtype);
-		int  PatchSize(void);
-		void PatchFill(double* patches, int max_vertices,Parameters* parameters);
 		/*}}}*/
 
Index: /issm/trunk/src/c/objects/Inputs/Input.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/Input.h	(revision 4038)
+++ /issm/trunk/src/c/objects/Inputs/Input.h	(revision 4039)
@@ -50,6 +50,4 @@
 		virtual Input* SpawnTriaInput(int* indices)=0;
 		virtual Result* SpawnResult(int step, double time)=0;
-		virtual int  PatchSize(void)=0;
-		virtual void PatchFill(double* patch, int max_vertices,Parameters* parameters)=0;
 
 
Index: sm/trunk/src/c/objects/Inputs/InputLocal.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/InputLocal.h	(revision 4038)
+++ 	(revision )
@@ -1,14 +1,0 @@
-/*!\file: InputLocal.h
- * \brief prototypes for InputLocal.h
- */ 
-
-#ifndef _INPUTLOCAL_H_
-#define  _INPUTLOCAL_H_
-
-class Parameters;
-
-void ProcessResults(double* patch, int patch_size,int enum_type,Parameters* parameters);
-
-
-#endif //ifndef _INPUTLOCAL_H_
-
Index: /issm/trunk/src/c/objects/Inputs/IntInput.cpp
===================================================================
--- /issm/trunk/src/c/objects/Inputs/IntInput.cpp	(revision 4038)
+++ /issm/trunk/src/c/objects/Inputs/IntInput.cpp	(revision 4039)
@@ -11,5 +11,4 @@
 #include "stdio.h"
 #include <string.h>
-#include "./InputLocal.h"
 #include "../objects.h"
 #include "../../EnumDefinitions/EnumDefinitions.h"
@@ -215,17 +214,2 @@
 }
 /*}}}*/
-/*FUNCTION IntInput::PatchSize(void);{{{1*/
-int IntInput::PatchSize(void){
-
-	/*Return the number of nodal values this input holds, so that 
-	 * results can be correctl dimensionned. See InputToResultsx 
-	 * module for more explanations: */
-	return 1;
-}
-/*}}}*/
-/*FUNCTION IntInput::PatchFill(double* patches, int max_vertices,Parameters* parameters);{{{1*/
-void IntInput::PatchFill(double* patches, int max_vertices,Parameters* parameters){
-
-	ISSMERROR(" not supported yet!");
-}
-/*}}}*/
Index: /issm/trunk/src/c/objects/Inputs/IntInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/IntInput.h	(revision 4038)
+++ /issm/trunk/src/c/objects/Inputs/IntInput.h	(revision 4039)
@@ -15,10 +15,8 @@
 class IntInput: public Input{
 
-	private: 
+	public:
 		/*just hold 3 values for 3 vertices: */
 		int    enum_type;
 		IssmInt value;
-
-	public:
 
 		/*constructors, destructors: {{{1*/
@@ -75,6 +73,4 @@
 		void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
 		void ChangeEnum(int newenumtype);
-		int  PatchSize(void);
-		void PatchFill(double* patches, int max_vertices,Parameters* parameters);
 		/*}}}*/
 
Index: /issm/trunk/src/c/objects/Inputs/PentaVertexInput.cpp
===================================================================
--- /issm/trunk/src/c/objects/Inputs/PentaVertexInput.cpp	(revision 4038)
+++ /issm/trunk/src/c/objects/Inputs/PentaVertexInput.cpp	(revision 4039)
@@ -11,5 +11,4 @@
 #include "stdio.h"
 #include <string.h>
-#include "./InputLocal.h"
 #include "../objects.h"
 #include "../../EnumDefinitions/EnumDefinitions.h"
@@ -877,39 +876,2 @@
 }
 /*}}}*/
-/*FUNCTION PentaVertexInput::PatchSize(void);{{{1*/
-int PentaVertexInput::PatchSize(void){
-
-	/*Return the number of nodal values this input holds, so that 
-	 * results can be correctl dimensionned. See InputToResultsx 
-	 * module for more explanations: */
-	return 6;
-}
-/*}}}*/
-/*FUNCTION PentaVertexInput::PatchFill(double* patches, int max_vertices,Parameters* parameters);{{{1*/
-void PentaVertexInput::PatchFill(double* patches, int max_vertices,Parameters* parameters){
-	
-	/*A patch is made of the following information: 
-	 * element_id  interpolation_type  vertex_ids    values. 
-	 * For example: 
-
-	 1 P0  1 2 4 11 12 14      4.5  NaN  NaN    NaN NaN NaN
-	 2 P1  2 4 5 12 14 15      4.5  23.3 23.3   4.2 4.2 3.2
-	 3 P0  5 2 1 15 12 11      5.5  NaN  NaN    NaN NaN NaN
-	 4 P1  2 3 5 12 13 15      4.5  30.2 322.2  4.2 3.2 8.3
-	 ...
-	 
-	 Here, we fill the info relevant to the input, ie interpolation_type and nodal values: */
-
-	int i;
-
-
-	patches[1]=P1Enum;
-	for(i=0;i<6;i++)patches[2+max_vertices+i]=values[i]; //start of nodal values is at position 2+max_vertices (2 for id and interpolation_type) and max_vertices for vertices ids.
-
-	/*Now, post-processing (essentially, unit conversion): */
-	ProcessResults(patches+2+max_vertices,6,this->enum_type,parameters);
-
-}
-/*}}}*/
-
-
Index: /issm/trunk/src/c/objects/Inputs/PentaVertexInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/PentaVertexInput.h	(revision 4038)
+++ /issm/trunk/src/c/objects/Inputs/PentaVertexInput.h	(revision 4039)
@@ -14,10 +14,8 @@
 class PentaVertexInput: public Input{
 
-	private: 
+	public:
 		/*just hold 3 values for 3 vertices: */
 		int    enum_type;
 		double values[6];
-
-	public:
 
 		/*constructors, destructors: {{{1*/
@@ -84,6 +82,4 @@
 		void GetBPattyn(double* B, double* xyz_list, double* gauss_coord);
 		void GetBStokes(double* B, double* xyz_list, double* gauss_coord);
-		int  PatchSize(void);
-		void PatchFill(double* patches, int max_vertices,Parameters* parameters);
 		/*}}}*/
 
Index: sm/trunk/src/c/objects/Inputs/ProcessResults.cpp
===================================================================
--- /issm/trunk/src/c/objects/Inputs/ProcessResults.cpp	(revision 4038)
+++ 	(revision )
@@ -1,36 +1,0 @@
-/*!\file:  ProcessResults.cpp
- * \brief: process nodal_values that were created by an input.
- * For example, velocities need to be in m/yr, melting rates in m/yr, etc ...
- * This centralizes all post-processing of inputs when they are being output to 
- * results.
- *
- */ 
-
-#ifdef HAVE_CONFIG_H
-	#include "config.h"
-#else
-#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
-#endif
-
-#include "./InputLocal.h"
-#include "../../DataSet/DataSet.h"
-#include "../../objects/objects.h"
-#include "../../EnumDefinitions/EnumDefinitions.h"
-#include "../../shared/shared.h"
-
-void ProcessResults(double* nodal_values, int num_nodal_values,int enum_type,Parameters* parameters){
-
-	int i;
-	double yts;
-
-	/*Gete some values from parameters, that are often needed: */
-	parameters->FindParam(&yts,YtsEnum);
-
-	switch(enum_type){
-		case VxEnum: for(i=0;i<num_nodal_values;i++)nodal_values[i]=nodal_values[i]/yts;break;
-		case VyEnum: for(i=0;i<num_nodal_values;i++)nodal_values[i]=nodal_values[i]/yts;break;
-		case VzEnum: for(i=0;i<num_nodal_values;i++)nodal_values[i]=nodal_values[i]/yts;break;
-		case MeltingRateEnum: for(i=0;i<num_nodal_values;i++)nodal_values[i]=nodal_values[i]/yts;break;
-		default: break;
-	}
-}
Index: /issm/trunk/src/c/objects/Inputs/SingVertexInput.cpp
===================================================================
--- /issm/trunk/src/c/objects/Inputs/SingVertexInput.cpp	(revision 4038)
+++ /issm/trunk/src/c/objects/Inputs/SingVertexInput.cpp	(revision 4039)
@@ -11,5 +11,4 @@
 #include "stdio.h"
 #include <string.h>
-#include "./InputLocal.h"
 #include "../objects.h"
 #include "../../EnumDefinitions/EnumDefinitions.h"
@@ -206,34 +205,2 @@
 }
 /*}}}*/
-/*FUNCTION SingVertexInput::PatchSize(void);{{{1*/
-int SingVertexInput::PatchSize(void){
-
-	/*Return the number of nodal values this input holds, so that 
-	 * results can be correctl dimensionned. See InputToResultsx 
-	 * module for more explanations: */
-	return 1;
-}
-/*}}}*/
-/*FUNCTION SingVertexInput::PatchFill(double* patches, int max_vertices,Parameters* parameters);{{{1*/
-void SingVertexInput::PatchFill(double* patches, int max_vertices,Parameters* parameters){
-	
-	/*A patch is made of the following information: 
-	 * element_id  interpolation_type  vertex_ids    values. 
-	 * For example: 
-
-	 1 P0   2       4.5 
-	 2 P1   3       4.5
-	 3 P0   5       5.5 
-	 4 P1   4       4.5 
-
-	 Here, we fill the info relevant to the input, ie interpolation_type and nodal values: */
-	int i;
-
-	patches[1]=P1Enum;
-	patches[2+max_vertices+0]=value; //start of nodal values is at position 2+max_vertices (2 for id and interpolation_type) and max_vertices for vertices ids.
-
-	/*Now, post-processing (essentially, unit conversion): */
-	ProcessResults(patches+2+max_vertices,1,this->enum_type,parameters);
-
-}
-/*}}}*/
Index: /issm/trunk/src/c/objects/Inputs/SingVertexInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/SingVertexInput.h	(revision 4038)
+++ /issm/trunk/src/c/objects/Inputs/SingVertexInput.h	(revision 4039)
@@ -14,10 +14,8 @@
 class SingVertexInput: public Input{
 
-	private: 
+	public:
 		/*just hold 1 value for 1 vertex: */
 		int    enum_type;
 		double value;
-
-	public:
 
 		/*constructors, destructors: {{{1*/
@@ -74,6 +72,4 @@
 		void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
 		void ChangeEnum(int newenumtype);
-		int  PatchSize(void);
-		void PatchFill(double* patches, int max_vertices,Parameters* parameters);
 		/*}}}*/
 
Index: /issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp
===================================================================
--- /issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp	(revision 4038)
+++ /issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp	(revision 4039)
@@ -11,5 +11,4 @@
 #include "stdio.h"
 #include <string.h>
-#include "./InputLocal.h"
 #include "../objects.h"
 #include "../../EnumDefinitions/EnumDefinitions.h"
@@ -451,36 +450,2 @@
 }
 /*}}}*/
-/*FUNCTION TriaVertexInput::PatchSize(void);{{{1*/
-int TriaVertexInput::PatchSize(void){
-
-	/*Return the number of nodal values this input holds, so that 
-	 * results can be correctl dimensionned. See InputToResultsx 
-	 * module for more explanations: */
-	return 3;
-}
-/*}}}*/
-/*FUNCTION TriaVertexInput::PatchFill(double* patches, int max_vertices,Parameters* parameters);{{{1*/
-void TriaVertexInput::PatchFill(double* patches, int max_vertices,Parameters* parameters){
-	
-	/*A patch is made of the following information: 
-	 * element_id  interpolation_type  vertex_ids    values. 
-	 * For example: 
-
-	 1 P0  1 2 4       4.5  NaN  NaN 
-	 2 P1  2 4 5       4.5  23.3 23.3
-	 3 P0  5 2 1       5.5  NaN  NaN
-	 4 P1  2 3 5       4.5  30.2 322.2 
-	 ...
-	 
-	 Here, we fill the info relevant to the input, ie interpolation_type and nodal values: */
-
-	int i;
-
-	patches[1]=P1Enum;
-	for(i=0;i<3;i++)patches[2+max_vertices+i]=values[i]; //start of nodal values is at position 2+max_vertices (2 for id and interpolation_type) and max_vertices for vertices ids.
-
-	/*Now, post-processing (essentially, unit conversion): */
-	ProcessResults(patches+2+max_vertices,3,this->enum_type,parameters);
-
-}
-/*}}}*/
Index: /issm/trunk/src/c/objects/Inputs/TriaVertexInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/TriaVertexInput.h	(revision 4038)
+++ /issm/trunk/src/c/objects/Inputs/TriaVertexInput.h	(revision 4039)
@@ -15,10 +15,8 @@
 class TriaVertexInput: public Input,public TriaRef{
 
-	private: 
+	public:
 		/*just hold 3 values for 3 vertices: */
 		int    enum_type;
 		double values[3];
-
-	public:
 
 		/*constructors, destructors: {{{1*/
@@ -81,6 +79,4 @@
 		void GetJacobian(double* J, double* xyz_list,double* gauss);
 		void GetJacobianInvert(double*  Jinv, double* xyz_list,double* gauss);
-		int  PatchSize(void);
-		void PatchFill(double* patches, int max_vertices,Parameters* parameters);
 		/*}}}*/
 
Index: /issm/trunk/src/c/objects/Patch.cpp
===================================================================
--- /issm/trunk/src/c/objects/Patch.cpp	(revision 4039)
+++ /issm/trunk/src/c/objects/Patch.cpp	(revision 4039)
@@ -0,0 +1,186 @@
+/*!\file Patch.c
+ * \brief: implementation of the Patch object
+ */
+
+/*Include files: {{{1*/
+#ifdef HAVE_CONFIG_H
+	#include "config.h"
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "stdio.h"
+#include <string.h>
+#include "./objects.h"
+#include "../DataSet/DataSet.h"
+#include "../EnumDefinitions/EnumDefinitions.h"
+#include "../shared/shared.h"
+#include "../include/include.h"
+/*}}}*/
+
+/*Object constructors and destructors:*/
+/*FUNCTION Patch::Patch() default constructor {{{1*/
+Patch::Patch(){
+	this->numrows=0;
+	this->numcols=0;
+	this->maxvertices=0;
+	this->maxnodes=0;
+	this->values=NULL:
+}
+/*}}}*/
+/*FUNCTION Patch::Patch(int numrows, int maxvertices, int maxnodes){{{1*/
+Patch::Patch(int in_numrows, int in_maxvertices, int in_maxnodes){
+
+	this->numrows=in_numrows;
+	this->maxvertices=in_maxvertices;
+	this->maxnodes=in_maxnodes;
+    
+	this->numcols=1  //enum_type
+		+1           //step
+		+1           //time 
+		+1           //element id
+		+1           //interpolation type
+		+maxvertices //vertices
+		+maxnodes;   //nodes
+
+	//allocate and fill with NaN:
+	this->values=xmalloc(this->numcols*this->numrows*sizeof(double));
+	for(i=0;i<this->numcols;i++){
+		for(j=0;j<this->nurows;j++){
+			*(this->values+i*this->numcols+j)=NAN;
+		}
+	}
+
+}
+/*}}}*/
+/*FUNCTION Patch::~Patch(){{{1*/
+Patch::~Patch(){
+	xfree((void**)&values);
+}
+/*}}}*/
+/*FUNCTION Patch::fillelementinfo(int row, int element_id, int vertices_ids, int num_vertices);{{{1*/
+void Patch::fillelementinfo(int count, int element_id, int vertices_ids, int num_vertices){
+
+	int i;
+	double* row=NULL;
+
+	/*point to the start of the row: */
+	row=this->values+count*this->numcols;
+
+	/*Let's remember what is on a row: 
+	 enum_type step time element_id interpolation vertices_ids nodal_values
+	 */
+	row[3]=element_id;
+	for(i=0;i<num_vertices;i++){
+		row[5+i]=vertices_ids[i];
+	}
+
+}
+/*}}}*/
+/*FUNCTION Patch::fillresultinfo(int row,int enum_type,int step, double time, int interpolation, double* nodal_values, int num_nodes){{{1*/
+void Patch::fillresultinfo(int count,int enum_type,int step, double time, int interpolation, double* nodal_values, int num_nodes){
+
+	int i;
+	double* row=NULL;
+
+	/*point to the start of the row: */
+	row=this->values+count*this->numcols;
+
+	/*Let's remember what is on a row: 
+	 enum_type step time element_id interpolation vertices_ids nodal_values
+	 */
+	row[0]=enum_type;
+	row[1]=(double)step;
+	row[2]=time;
+	row[4]=interpolation;
+	for(i=0;i<num_nodes;i++){
+		row[5+this->maxvertices+i]=nodal_values[i];
+	}
+
+}
+/*}}}*/
+/*FUNCTION Patch::MPI_Gather(void){{{1*/
+void Patch::MPI_Gather(void){
+
+
+	int         i;
+	extern int  my_rank;
+	extern int  num_procs;
+	int         total_numrows;
+	int         node_numrows;
+	double     *total_values  = NULL;
+
+	#ifdef _SERIAL_
+	return; //nothing to be done
+	#endif
+	
+	
+	/*First, figure out total number of rows combining all the cpus: */
+	MPI_Reduce(&this->numrows,&total_numrows,1,MPI_INT,MPI_SUM,0,MPI_COMM_WORLD );
+	MPI_Bcast(&total_numrows,1,MPI_INT,0,MPI_COMM_WORLD);
+
+	/*Now, allocate buffer to holds all the values, on node 0: */
+	if(my_rank==0)total_values=(double*)xmalloc(this->numcols*total_numrows*sizeof(double));
+
+	/*Start by copying node 0 values onto total_values: */
+	if(my_rank==0){
+		count=0;
+		memcpy(total_values+count,this->values,this->numcols*this->numrifts*sizeof(double));
+		count+=this->numrows*this->numcols;
+	}
+
+	/*Now, ask other nodes to send their values: */
+	for (i=1;i<num_procs;i++){
+		if (my_rank==i){ 
+			MPI_Send(&this->numrows,1,MPI_INT,0,1,MPI_COMM_WORLD);   
+			if (this->numrows)MPI_Send(this->values,this->numrows*this->numcols,MPI_DOUBLE,0,1,MPI_COMM_WORLD); 
+		}
+		if (my_rank==0){
+			MPI_Recv(&node_numrows,1,MPI_INT,i,1,MPI_COMM_WORLD,&status); 
+			if (node_numrows)MPI_Recv(total_values+count,node_numrows*this->numcols,MPI_DOUBLE,i,1,MPI_COMM_WORLD,&status);
+			count+=node_numrows*this->numcols;
+		}
+	}	
+
+
+	/*Now, node 0 has total_values, of size total_numrows*this->numcols. Update the fields in the patch, to reflect this new 
+	 * reality. For other cpus, no point in keeping their data anymore: */
+	if(my_rank==0){
+		this->numrows=total_numrows;
+		xfree((void**)&this->values);
+		this->values=total_values;
+	}
+	else{
+		this->numrows=0;
+		xfree((void**)&this->values);
+	}
+
+}
+/*}}}*/
+/*FUNCTION Patch::WriteToDisk(int solutiontype,char* filename);{{{1*/
+void WriteToDisk(int solutiontype,char* filename){
+
+	extern int my_rank;
+	FILE* fid=NULL;
+
+	
+	if(my_rank!=0)return; //do not output on other nodes!
+
+	/* Open output file to write raw binary data: */
+	fid=pfopen(filename,"wb");
+
+	/*Now, write solutiontype: */
+	fwrite(&solutiontype,sizeof(int),1,fid);
+
+	/*Write dimensions of patch: */
+	fwrite(&this->numrows,sizeof(int),1,fid);
+	fwrite(&this->numcols,sizeof(int),1,fid);
+
+	/*Write patch: */
+	fwrite(this->values,this->numrows*this->numcols*sizeof(double),1,fid);
+	
+	/*Close file: */
+	pfclose(fid,filename);
+
+}
+/*}}}*/
Index: /issm/trunk/src/c/objects/Patch.h
===================================================================
--- /issm/trunk/src/c/objects/Patch.h	(revision 4039)
+++ /issm/trunk/src/c/objects/Patch.h	(revision 4039)
@@ -0,0 +1,53 @@
+/*!\file: Patch.h
+ * \brief prototypes for Patch.h
+ */ 
+
+
+/*
+	A Patch object is used to store all results held in elements, in a serial way, and to dump them to disk. 
+	
+	Each row of the Patch object is made of the following information: 
+	the result enum_type, the step and time, the id of the element, the interpolation type, the vertices ids, and the values
+	at the nodes (could be different from the vertices). For ex: 
+
+	VxEnum 1  .5  1 P0  1 2       4.5 NaN  NaN //on a Beam element, Vx, at step 1, time .5, element id 1, interpolation type P0 (constant value on a beam element), vertices ids 1 and 2, one constant value 4.5
+	VzEnum 2  .8  2 P1  1 3 4     4.5 3.2  2.5 //on a Tria element, Vz, at step 2, time .8, element id 2, interpolation type P1  (linear values on a tria element), vertices ids 1 3 and 4, with values at 3 nodes 4.5, 3.2, 2.5
+	... etc ...
+
+*/
+
+
+#ifndef _PATCH_H_
+#define  _PATCH_H_
+
+/*Headers:*/
+/*{{{1*/
+/*}}}*/
+
+class Patch{
+
+	public:
+
+		int     numrows; //number of results held in Patch object
+		int     numcols; //number of columns
+		int     maxvertices; //maxvertices corresponds to largest amount of vertices on a given element, determined by the geometry.
+		int     maxnodes;    // maxnodes corresponds to the largest amout of nodes on a given element, determined by the interpolation type.
+		
+		double* values;  //result values
+				
+
+		Patch();
+		Patch(int numrows, int maxvertices, int maxnodes);
+		~Patch();
+		void fillelementinfo(int row, int element_id, int vertices_ids, int num_vertices);
+		void fillresultinfo(int row,int enum_type,int step, double time, int interpolation, double* nodal_values, int num_nodes);
+		void MPI_Gather(void);
+		void WriteToDisk(int solutiontype,char* filename);
+
+
+
+};
+
+
+#endif //ifndef _PATCH_H_
+
Index: /issm/trunk/src/c/objects/Results/BeamVertexResult.cpp
===================================================================
--- /issm/trunk/src/c/objects/Results/BeamVertexResult.cpp	(revision 4039)
+++ /issm/trunk/src/c/objects/Results/BeamVertexResult.cpp	(revision 4039)
@@ -0,0 +1,163 @@
+/*!\file BeamVertexResult.c
+ * \brief: implementation of the BeamVertexResult object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include "config.h"
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "stdio.h"
+#include <string.h>
+#include "./ResultLocal.h"
+#include "../objects.h"
+#include "../../EnumDefinitions/EnumDefinitions.h"
+#include "../../shared/shared.h"
+#include "../../DataSet/DataSet.h"
+#include "../../include/include.h"
+
+/*Object constructors and destructor*/
+/*FUNCTION BeamVertexResult::BeamVertexResult(){{{1*/
+BeamVertexResult::BeamVertexResult(){
+	return;
+}
+/*}}}*/
+/*FUNCTION BeamVertexResult::BeamVertexResult(int in_enum_type,double* in_values,int in_step, double in_time){{{1*/
+BeamVertexResult::BeamVertexResult(int in_enum_type,double* in_values,int in_step, double in_time):BeamVertexInput(in_enum_type,in_values){
+
+	step=in_step;
+	time=in_time;
+}
+/*}}}*/
+/*FUNCTION BeamVertexResult::~BeamVertexResult(){{{1*/
+BeamVertexResult::~BeamVertexResult(){
+	return;
+}
+/*}}}*/
+
+/*Object management*/
+/*FUNCTION BeamVertexResult::copy{{{1*/
+Object* BeamVertexResult::copy() {
+	
+	return new BeamVertexResult(this->enum_type,this->values,this->step,this->time);
+
+}
+/*}}}*/
+/*FUNCTION BeamVertexResult::DeepEcho{{{1*/
+void BeamVertexResult::DeepEcho(void){
+		
+	printf("BeamVertexResult:\n");
+	BeamVertexResult::DeepEcho();
+	printf("   step: %i\n",this->step);
+	printf("   time: %g\n",this->time);
+
+}
+/*}}}*/
+/*FUNCTION BeamVertexResult::Demarshall{{{1*/
+void  BeamVertexResult::Demarshall(char** pmarshalled_dataset){
+
+	char* marshalled_dataset=NULL;
+	int   i;
+
+	/*recover marshalled_dataset: */
+	marshalled_dataset=*pmarshalled_dataset;
+
+	/*this time, no need to get enum type, the pointer directly points to the beginning of the 
+	 *object data (thanks to DataSet::Demarshall):*/
+	memcpy(&enum_type,marshalled_dataset,sizeof(enum_type));marshalled_dataset+=sizeof(enum_type);
+	memcpy(&values,marshalled_dataset,sizeof(values));marshalled_dataset+=sizeof(values);
+	memcpy(&time,marshalled_dataset,sizeof(time));marshalled_dataset+=sizeof(time);
+	memcpy(&step,marshalled_dataset,sizeof(step));marshalled_dataset+=sizeof(step);
+
+	/*return: */
+	*pmarshalled_dataset=marshalled_dataset;
+	return;
+}
+/*}}}*/
+/*FUNCTION BeamVertexResult::Echo {{{1*/
+void BeamVertexResult::Echo(void){
+	this->DeepEcho();
+}
+/*}}}*/
+/*FUNCTION BeamVertexResult::Enum{{{1*/
+int BeamVertexResult::Enum(void){
+
+	return BeamVertexResultEnum;
+
+}
+/*}}}*/
+/*FUNCTION BeamVertexResult::EnumType{{{1*/
+int BeamVertexResult::EnumType(void){
+
+	return this->enum_type;
+
+}
+/*}}}*/
+/*FUNCTION BeamVertexResult::Id{{{1*/
+int    BeamVertexResult::Id(void){ return -1; }
+/*}}}*/
+/*FUNCTION BeamVertexResult::Marshall{{{1*/
+void  BeamVertexResult::Marshall(char** pmarshalled_dataset){
+
+	char* marshalled_dataset=NULL;
+	int   enum_value=0;
+
+	/*recover marshalled_dataset: */
+	marshalled_dataset=*pmarshalled_dataset;
+
+	/*get enum value of BeamVertexResult: */
+	enum_value=BeamVertexResultEnum;
+	
+	/*marshall enum: */
+	memcpy(marshalled_dataset,&enum_value,sizeof(enum_value));marshalled_dataset+=sizeof(enum_value);
+	
+	/*marshall BeamVertexResult data: */
+	memcpy(marshalled_dataset,&enum_type,sizeof(enum_type));marshalled_dataset+=sizeof(enum_type);
+	memcpy(marshalled_dataset,&values,sizeof(values));marshalled_dataset+=sizeof(values);
+	memcpy(marshalled_dataset,&time,sizeof(time));marshalled_dataset+=sizeof(time);
+	memcpy(marshalled_dataset,&step,sizeof(step));marshalled_dataset+=sizeof(step);
+
+	*pmarshalled_dataset=marshalled_dataset;
+}
+/*}}}*/
+/*FUNCTION BeamVertexResult::MarshallSize{{{1*/
+int   BeamVertexResult::MarshallSize(){
+	
+	return sizeof(values)+
+		+sizeof(enum_type)
+		+sizeof(time)
+		+sizeof(step)
+		+sizeof(int); //sizeof(int) for enum value
+}
+/*}}}*/
+/*FUNCTION BeamVertexResult::MyRank{{{1*/
+int    BeamVertexResult::MyRank(void){ 
+	extern int my_rank;
+	return my_rank; 
+}
+/*}}}*/
+
+/*Result functions*/
+/*FUNCTION BeamVertexResult::ProcessUnits(Parameters* parameters){{{1*/
+Result* BeamVertexResult::ProcessUnits(Parameters* parameters){
+	
+	NodalValuesUnitConversion(this->values,2,this->enum_type,parameters);
+
+}
+/*}}}*/
+/*FUNCTION BeamVertexResult::NumberOfNodalValues(void){{{1*/
+int BeamVertexResult::NumberOfNodalValues(void){
+	return 2;
+}
+/*}}}*/
+/*FUNCTION BeamVertexResult::BeamVertexResult::PatchFill(int row, Patch* patch){{{1*/
+void BeamVertexResult::PatchFill(int row, Patch* patch){
+	
+	 /*Here, we fill the result information into the patch object. First, let's remember what is in a row 
+	  * of the patch object: enum_type step time element_id interpolation vertices_ids nodal_values
+	  * Here, we will supply the enum_type, step, time, interpolation and nodal_values: */
+	patch->fillresultinfo(row,this->enum_type,this->step,this->time,P1Enum,this->values,2);
+
+}
+/*}}}*/
Index: /issm/trunk/src/c/objects/Results/BeamVertexResult.h
===================================================================
--- /issm/trunk/src/c/objects/Results/BeamVertexResult.h	(revision 4039)
+++ /issm/trunk/src/c/objects/Results/BeamVertexResult.h	(revision 4039)
@@ -0,0 +1,59 @@
+/*! \file BeamVertexResult.h 
+ *  \brief: header file for triavertexresult object
+ */
+
+
+#ifndef _BEAMVERTEXRESULT_H_
+#define _BEAMVERTEXRESULT_H_
+
+/*Headers:*/
+/*{{{1*/
+#include "../Inputs/Input.h"
+#include "../../include/include.h"
+/*}}}*/
+
+class BeamVertexResult: public BeamVertexInput,public Result{
+
+	private: 
+		int    step;
+		double time;
+
+	public:
+
+		/*constructors, destructors: {{{1*/
+		BeamVertexResult();
+		BeamVertexResult(int enum_type,double* values,int step,double time);
+		~BeamVertexResult();
+		/*}}}*/
+		/*object management: {{{1*/
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void  Marshall(char** pmarshalled_dataset);
+		int   MarshallSize();
+		void  Demarshall(char** pmarshalled_dataset);
+		int   Enum();
+		int   MyRank();
+		Object* copy();
+		int   EnumType();
+		
+		void    UpdateInputsFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
+
+		/*}}}*/
+		/*result virtual functions: {{{1*/
+		Result* SpawnSingResult(int  index){ISSMERROR("Not implemented yet!");}
+		Result* SpawnBeamResult(int* indices){ISSMERROR("Not implemented yet!");}
+		Result* SpawnTriaResult(int* indices){ISSMERROR("Not implemented yet!");}
+		void    ProcessUnits(Parameters* parameters);
+		int     NumberOfNodalValues(void);
+		void    PatchFill(int row, Patch* patch);
+		/*}}}*/
+
+};
+#endif  /* _BEAMVERTEXRESULT_H */
Index: /issm/trunk/src/c/objects/Results/DoubleResult.cpp
===================================================================
--- /issm/trunk/src/c/objects/Results/DoubleResult.cpp	(revision 4038)
+++ /issm/trunk/src/c/objects/Results/DoubleResult.cpp	(revision 4039)
@@ -40,6 +40,8 @@
 /*FUNCTION DoubleResult::copy{{{1*/
 Object* DoubleResult::copy() {
-	
-	return new DoubleResult(this->enum_type,this->value,this->step,this->time);
+
+	DoubleResult* result=new DoubleResult(this->enum_type,this->value,this->step,this->time);
+	return (Object*)result;
+	//return new DoubleResult(this->enum_type,this->value,this->step,this->time);
 
 }
@@ -191,3 +193,24 @@
 }
 /*}}}*/
-
+/*FUNCTION DoubleResult::ProcessUnits(Parameters* parameters){{{1*/
+void DoubleResult::ProcessUnits(Parameters* parameters){
+	
+	NodalValuesUnitConversion(&this->value,1,this->enum_type,parameters);
+
+}
+/*}}}*/
+/*FUNCTION DoubleResult::NumberOfNodalValues(void){{{1*/
+int DoubleResult::NumberOfNodalValues(void){
+	return 1;
+}
+/*}}}*/
+/*FUNCTION DoubleResult::DoubleResult::PatchFill(int row, Patch* patch){{{1*/
+void DoubleResult::PatchFill(int row, Patch* patch){
+	
+	 /*Here, we fill the result information into the patch object. First, let's remember what is in a row 
+	  * of the patch object: enum_type step time element_id interpolation vertices_ids nodal_values
+	  * Here, we will supply the enum_type, step, time, interpolation and nodal_values: */
+	patch->fillresultinfo(row,this->enum_type,this->step,this->time,P0Enum,&this->value,1);
+
+}
+/*}}}*/
Index: /issm/trunk/src/c/objects/Results/DoubleResult.h
===================================================================
--- /issm/trunk/src/c/objects/Results/DoubleResult.h	(revision 4038)
+++ /issm/trunk/src/c/objects/Results/DoubleResult.h	(revision 4039)
@@ -12,4 +12,5 @@
 #include "../Inputs/Input.h"
 #include "../../include/include.h"
+class Parameters;
 /*}}}*/
 
@@ -38,4 +39,13 @@
 		Object* copy();
 		int   EnumType();
+
+		void    UpdateInputsFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
+
 				/*}}}*/
 		/*result virtual functions: {{{1*/
@@ -43,4 +53,7 @@
 		Result* SpawnBeamResult(int* indices);
 		Result* SpawnTriaResult(int* indices);
+		void    ProcessUnits(Parameters* parameters);
+		int     NumberOfNodalValues(void);
+		void    PatchFill(int row, Patch* patch);
 		/*}}}*/
 
Index: /issm/trunk/src/c/objects/Results/NodalValuesUnitConversion.cpp
===================================================================
--- /issm/trunk/src/c/objects/Results/NodalValuesUnitConversion.cpp	(revision 4039)
+++ /issm/trunk/src/c/objects/Results/NodalValuesUnitConversion.cpp	(revision 4039)
@@ -0,0 +1,33 @@
+/*!\file:  NodalValuesUnitConversion.cpp
+ * \brief: process nodal_values held in a Result object.
+ * For example, velocities need to be in m/yr, melting rates in m/yr, etc ...
+ * This centralizes all post-processing of results when they are being output.
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include "config.h"
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../DataSet/DataSet.h"
+#include "../../objects/objects.h"
+#include "../../EnumDefinitions/EnumDefinitions.h"
+#include "../../shared/shared.h"
+
+void NodalValuesUnitConversion(double* nodal_values, int num_nodal_values,int enum_type,Parameters* parameters){
+
+	int i;
+	double yts;
+
+	/*Gete some values from parameters, that are often needed: */
+	parameters->FindParam(&yts,YtsEnum);
+
+	switch(enum_type){
+		case VxEnum: for(i=0;i<num_nodal_values;i++)nodal_values[i]=nodal_values[i]/yts;break;
+		case VyEnum: for(i=0;i<num_nodal_values;i++)nodal_values[i]=nodal_values[i]/yts;break;
+		case VzEnum: for(i=0;i<num_nodal_values;i++)nodal_values[i]=nodal_values[i]/yts;break;
+		case MeltingRateEnum: for(i=0;i<num_nodal_values;i++)nodal_values[i]=nodal_values[i]/yts;break;
+		default: break;
+	}
+}
Index: /issm/trunk/src/c/objects/Results/PentaVertexResult.cpp
===================================================================
--- /issm/trunk/src/c/objects/Results/PentaVertexResult.cpp	(revision 4038)
+++ /issm/trunk/src/c/objects/Results/PentaVertexResult.cpp	(revision 4039)
@@ -205,3 +205,24 @@
 }
 /*}}}*/
-
+/*FUNCTION PentaVertexResult::ProcessUnits(Parameters* parameters){{{1*/
+Result* PentaVertexResult::ProcessUnits(Parameters* parameters){
+	
+	NodalValuesUnitConversion(this->values,6,this->enum_type,parameters);
+
+}
+/*}}}*/
+/*FUNCTION PentaVertexResult::NumberOfNodalValues(void){{{1*/
+int PentaVertexResult::NumberOfNodalValues(void){
+	return 6;
+}
+/*}}}*/
+/*FUNCTION PentaVertexResult::PentaVertexResult::PatchFill(int row, Patch* patch){{{1*/
+void PentaVertexResult::PatchFill(int row, Patch* patch){
+	
+	 /*Here, we fill the result information into the patch object. First, let's remember what is in a row 
+	  * of the patch object: enum_type step time element_id interpolation vertices_ids nodal_values
+	  * Here, we will supply the enum_type, step, time, interpolation and nodal_values: */
+	patch->fillresultinfo(row,this->enum_type,this->step,this->time,P1Enum,this->values,6);
+
+}
+/*}}}*/
Index: /issm/trunk/src/c/objects/Results/PentaVertexResult.h
===================================================================
--- /issm/trunk/src/c/objects/Results/PentaVertexResult.h	(revision 4038)
+++ /issm/trunk/src/c/objects/Results/PentaVertexResult.h	(revision 4039)
@@ -38,4 +38,13 @@
 		Object* copy();
 		int   EnumType();
+		
+		void    UpdateInputsFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
+
 		/*}}}*/
 		/*result virtual functions: {{{1*/
@@ -43,4 +52,7 @@
 		Result* SpawnBeamResult(int* indices);
 		Result* SpawnTriaResult(int* indices);
+		void    ProcessUnits(Parameters* parameters);
+		int     NumberOfNodalValues(void);
+		void    PatchFill(int row, Patch* patch);
 		/*}}}*/
 
Index: /issm/trunk/src/c/objects/Results/Result.h
===================================================================
--- /issm/trunk/src/c/objects/Results/Result.h	(revision 4038)
+++ /issm/trunk/src/c/objects/Results/Result.h	(revision 4039)
@@ -12,5 +12,5 @@
 /*}}}*/
 
-class Result: public Object{
+class Result{
 
 	public: 
@@ -21,4 +21,7 @@
 		virtual Result* SpawnBeamResult(int* indices)=0;
 		virtual Result* SpawnTriaResult(int* indices)=0;
+		virtual void    ProcessUnits(Parameters* parameters)=0;
+		virtual int     NumberOfNodalValues(void)=0;
+		virtual void    PatchFill(int row, Patch* patch)=0;
 
 };
Index: /issm/trunk/src/c/objects/Results/ResultLocal.h
===================================================================
--- /issm/trunk/src/c/objects/Results/ResultLocal.h	(revision 4039)
+++ /issm/trunk/src/c/objects/Results/ResultLocal.h	(revision 4039)
@@ -0,0 +1,13 @@
+/*!\file: ResultLocal.h
+ * \brief prototypes for ResultLocal.h
+ */ 
+
+#ifndef _RESULTLOCAL_H_
+#define  _RESULTLOCAL_H_
+
+class Parameters;
+
+void NodalValuesUnitConversion(double* patch, int patch_size,int enum_type,Parameters* parameters);
+
+#endif //ifndef _RESULTLOCAL_H_
+
Index: /issm/trunk/src/c/objects/Results/SingVertexResult.cpp
===================================================================
--- /issm/trunk/src/c/objects/Results/SingVertexResult.cpp	(revision 4039)
+++ /issm/trunk/src/c/objects/Results/SingVertexResult.cpp	(revision 4039)
@@ -0,0 +1,163 @@
+/*!\file SingVertexResult.c
+ * \brief: implementation of the SingVertexResult object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include "config.h"
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "stdio.h"
+#include <string.h>
+#include "./ResultLocal.h"
+#include "../objects.h"
+#include "../../EnumDefinitions/EnumDefinitions.h"
+#include "../../shared/shared.h"
+#include "../../DataSet/DataSet.h"
+#include "../../include/include.h"
+
+/*Object constructors and destructor*/
+/*FUNCTION SingVertexResult::SingVertexResult(){{{1*/
+SingVertexResult::SingVertexResult(){
+	return;
+}
+/*}}}*/
+/*FUNCTION SingVertexResult::SingVertexResult(int in_enum_type,double* in_values,int in_step, double in_time){{{1*/
+SingVertexResult::SingVertexResult(int in_enum_type,double in_value,int in_step, double in_time):SingVertexInput(in_enum_type,in_value){
+
+	step=in_step;
+	time=in_time;
+}
+/*}}}*/
+/*FUNCTION SingVertexResult::~SingVertexResult(){{{1*/
+SingVertexResult::~SingVertexResult(){
+	return;
+}
+/*}}}*/
+
+/*Object management*/
+/*FUNCTION SingVertexResult::copy{{{1*/
+Object* SingVertexResult::copy() {
+	
+	return new SingVertexResult(this->enum_type,this->value,this->step,this->time);
+
+}
+/*}}}*/
+/*FUNCTION SingVertexResult::DeepEcho{{{1*/
+void SingVertexResult::DeepEcho(void){
+		
+	printf("SingVertexResult:\n");
+	SingVertexResult::DeepEcho();
+	printf("   step: %i\n",this->step);
+	printf("   time: %g\n",this->time);
+
+}
+/*}}}*/
+/*FUNCTION SingVertexResult::Demarshall{{{1*/
+void  SingVertexResult::Demarshall(char** pmarshalled_dataset){
+
+	char* marshalled_dataset=NULL;
+	int   i;
+
+	/*recover marshalled_dataset: */
+	marshalled_dataset=*pmarshalled_dataset;
+
+	/*this time, no need to get enum type, the pointer directly points to the beginning of the 
+	 *object data (thanks to DataSet::Demarshall):*/
+	memcpy(&enum_type,marshalled_dataset,sizeof(enum_type));marshalled_dataset+=sizeof(enum_type);
+	memcpy(&value,marshalled_dataset,sizeof(value));marshalled_dataset+=sizeof(value);
+	memcpy(&time,marshalled_dataset,sizeof(time));marshalled_dataset+=sizeof(time);
+	memcpy(&step,marshalled_dataset,sizeof(step));marshalled_dataset+=sizeof(step);
+
+	/*return: */
+	*pmarshalled_dataset=marshalled_dataset;
+	return;
+}
+/*}}}*/
+/*FUNCTION SingVertexResult::Echo {{{1*/
+void SingVertexResult::Echo(void){
+	this->DeepEcho();
+}
+/*}}}*/
+/*FUNCTION SingVertexResult::Enum{{{1*/
+int SingVertexResult::Enum(void){
+
+	return SingVertexResultEnum;
+
+}
+/*}}}*/
+/*FUNCTION SingVertexResult::EnumType{{{1*/
+int SingVertexResult::EnumType(void){
+
+	return this->enum_type;
+
+}
+/*}}}*/
+/*FUNCTION SingVertexResult::Id{{{1*/
+int    SingVertexResult::Id(void){ return -1; }
+/*}}}*/
+/*FUNCTION SingVertexResult::Marshall{{{1*/
+void  SingVertexResult::Marshall(char** pmarshalled_dataset){
+
+	char* marshalled_dataset=NULL;
+	int   enum_value=0;
+
+	/*recover marshalled_dataset: */
+	marshalled_dataset=*pmarshalled_dataset;
+
+	/*get enum value of SingVertexResult: */
+	enum_value=SingVertexResultEnum;
+	
+	/*marshall enum: */
+	memcpy(marshalled_dataset,&enum_value,sizeof(enum_value));marshalled_dataset+=sizeof(enum_value);
+	
+	/*marshall SingVertexResult data: */
+	memcpy(marshalled_dataset,&enum_type,sizeof(enum_type));marshalled_dataset+=sizeof(enum_type);
+	memcpy(marshalled_dataset,&value,sizeof(value));marshalled_dataset+=sizeof(value);
+	memcpy(marshalled_dataset,&time,sizeof(time));marshalled_dataset+=sizeof(time);
+	memcpy(marshalled_dataset,&step,sizeof(step));marshalled_dataset+=sizeof(step);
+
+	*pmarshalled_dataset=marshalled_dataset;
+}
+/*}}}*/
+/*FUNCTION SingVertexResult::MarshallSize{{{1*/
+int   SingVertexResult::MarshallSize(){
+	
+	return sizeof(value)+
+		+sizeof(enum_type)
+		+sizeof(time)
+		+sizeof(step)
+		+sizeof(int); //sizeof(int) for enum value
+}
+/*}}}*/
+/*FUNCTION SingVertexResult::MyRank{{{1*/
+int    SingVertexResult::MyRank(void){ 
+	extern int my_rank;
+	return my_rank; 
+}
+/*}}}*/
+
+/*Result functions*/
+/*FUNCTION SingVertexResult::ProcessUnits(Parameters* parameters){{{1*/
+Result* SingVertexResult::ProcessUnits(Parameters* parameters){
+	
+	NodalValuesUnitConversion(this->value,1,this->enum_type,parameters);
+
+}
+/*}}}*/
+/*FUNCTION SingVertexResult::NumberOfNodalValues(void){{{1*/
+int SingVertexResult::NumberOfNodalValues(void){
+	return 1;
+}
+/*}}}*/
+/*FUNCTION SingVertexResult::SingVertexResult::PatchFill(int row, Patch* patch){{{1*/
+void SingVertexResult::PatchFill(int row, Patch* patch){
+	
+	 /*Here, we fill the result information into the patch object. First, let's remember what is in a row 
+	  * of the patch object: enum_type step time element_id interpolation vertices_ids nodal_values
+	  * Here, we will supply the enum_type, step, time, interpolation and nodal_values: */
+	patch->fillresultinfo(row,this->enum_type,this->step,this->time,P0Enum,this->value,1);
+
+}
+/*}}}*/
Index: /issm/trunk/src/c/objects/Results/SingVertexResult.h
===================================================================
--- /issm/trunk/src/c/objects/Results/SingVertexResult.h	(revision 4039)
+++ /issm/trunk/src/c/objects/Results/SingVertexResult.h	(revision 4039)
@@ -0,0 +1,59 @@
+/*! \file SingVertexResult.h 
+ *  \brief: header file for triavertexresult object
+ */
+
+
+#ifndef _SINGVERTEXRESULT_H_
+#define _SINGVERTEXRESULT_H_
+
+/*Headers:*/
+/*{{{1*/
+#include "../Inputs/Input.h"
+#include "../../include/include.h"
+/*}}}*/
+
+class SingVertexResult: public SingVertexInput,public Result{
+
+	private: 
+		int    step;
+		double time;
+
+	public:
+
+		/*constructors, destructors: {{{1*/
+		SingVertexResult();
+		SingVertexResult(int enum_type,double value,int step,double time);
+		~SingVertexResult();
+		/*}}}*/
+		/*object management: {{{1*/
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void  Marshall(char** pmarshalled_dataset);
+		int   MarshallSize();
+		void  Demarshall(char** pmarshalled_dataset);
+		int   Enum();
+		int   MyRank();
+		Object* copy();
+		int   EnumType();
+		
+		void    UpdateInputsFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
+
+		/*}}}*/
+		/*result virtual functions: {{{1*/
+		Result* SpawnSingResult(int  index){ISSMERROR("Not implemented yet!");}
+		Result* SpawnBeamResult(int* indices){ISSMERROR("Not implemented yet!");}
+		Result* SpawnTriaResult(int* indices){ISSMERROR("Not implemented yet!");}
+		void    ProcessUnits(Parameters* parameters);
+		int     NumberOfNodalValues(void);
+		void    PatchFill(int row, Patch* patch);
+		/*}}}*/
+
+};
+#endif  /* _SINGVERTEXRESULT_H */
Index: /issm/trunk/src/c/objects/Results/TriaVertexResult.cpp
===================================================================
--- /issm/trunk/src/c/objects/Results/TriaVertexResult.cpp	(revision 4038)
+++ /issm/trunk/src/c/objects/Results/TriaVertexResult.cpp	(revision 4039)
@@ -194,3 +194,24 @@
 }
 /*}}}*/
-
+/*FUNCTION TriaVertexResult::ProcessUnits(Parameters* parameters){{{1*/
+Result* TriaVertexResult::ProcessUnits(Parameters* parameters){
+	
+	NodalValuesUnitConversion(this->values,3,this->enum_type,parameters);
+
+}
+/*}}}*/
+/*FUNCTION TriaVertexResult::NumberOfNodalValues(void){{{1*/
+int TriaVertexResult::NumberOfNodalValues(void){
+	return 3;
+}
+/*}}}*/
+/*FUNCTION TriaVertexResult::TriaVertexResult::PatchFill(int row, Patch* patch){{{1*/
+void TriaVertexResult::PatchFill(int row, Patch* patch){
+	
+	 /*Here, we fill the result information into the patch object. First, let's remember what is in a row 
+	  * of the patch object: enum_type step time element_id interpolation vertices_ids nodal_values
+	  * Here, we will supply the enum_type, step, time, interpolation and nodal_values: */
+	patch->fillresultinfo(row,this->enum_type,this->step,this->time,P1Enum,this->values,3);
+
+}
+/*}}}*/
Index: /issm/trunk/src/c/objects/Results/TriaVertexResult.h
===================================================================
--- /issm/trunk/src/c/objects/Results/TriaVertexResult.h	(revision 4038)
+++ /issm/trunk/src/c/objects/Results/TriaVertexResult.h	(revision 4039)
@@ -37,4 +37,13 @@
 		Object* copy();
 		int   EnumType();
+		
+		void    UpdateInputsFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
+		void    UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
+
 		/*}}}*/
 		/*result virtual functions: {{{1*/
@@ -42,4 +51,7 @@
 		Result* SpawnBeamResult(int* indices);
 		Result* SpawnTriaResult(int* indices);
+		void    ProcessUnits(Parameters* parameters);
+		int     NumberOfNodalValues(void);
+		void    PatchFill(int row, Patch* patch);
 		/*}}}*/
 
Index: /issm/trunk/src/c/objects/objects.h
===================================================================
--- /issm/trunk/src/c/objects/objects.h	(revision 4038)
+++ /issm/trunk/src/c/objects/objects.h	(revision 4039)
@@ -16,4 +16,5 @@
 #include "./NodeSets.h"
 #include "./IoModel.h"
+#include "./Patch.h"
 
 /*Constraints: */
@@ -54,4 +55,6 @@
 #include "./Results/TriaVertexResult.h"
 #include "./Results/PentaVertexResult.h"
+#include "./Results/SingVertexResult.h"
+#include "./Results/BeamVertexResult.h"
 
 /*Materials: */
Index: /issm/trunk/src/c/solutions/diagnostic.cpp
===================================================================
--- /issm/trunk/src/c/solutions/diagnostic.cpp	(revision 4038)
+++ /issm/trunk/src/c/solutions/diagnostic.cpp	(revision 4039)
@@ -94,5 +94,5 @@
 
 		_printf_("write results to disk:\n");
-		OutputResults(femmodel,outputfilename,DiagnosticSolutionEnum);
+		OutputResults(femmodel,outputfilename);
 	}
 	else{
Index: /issm/trunk/src/c/solutions/thermal.cpp
===================================================================
--- /issm/trunk/src/c/solutions/thermal.cpp	(revision 4038)
+++ /issm/trunk/src/c/solutions/thermal.cpp	(revision 4039)
@@ -85,5 +85,5 @@
 		
 		_printf_("write results to disk:\n");
-		OutputResults(femmodel,outputfilename,ThermalSolutionEnum);
+		OutputResults(femmodel,outputfilename);
 
 	}
Index: /issm/trunk/src/m/enum/AccumulationRateEnum.m
===================================================================
--- /issm/trunk/src/m/enum/AccumulationRateEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/AccumulationRateEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=AccumulationRateEnum()
 
-macro=106;
+macro=107;
Index: /issm/trunk/src/m/enum/AdjointAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/AdjointAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/AdjointAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=AdjointAnalysisEnum()
 
-macro=24;
+macro=25;
Index: /issm/trunk/src/m/enum/AdjointxEnum.m
===================================================================
--- /issm/trunk/src/m/enum/AdjointxEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/AdjointxEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=AdjointxEnum()
 
-macro=107;
+macro=108;
Index: /issm/trunk/src/m/enum/AdjointyEnum.m
===================================================================
--- /issm/trunk/src/m/enum/AdjointyEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/AdjointyEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=AdjointyEnum()
 
-macro=108;
+macro=109;
Index: /issm/trunk/src/m/enum/AdjointzEnum.m
===================================================================
--- /issm/trunk/src/m/enum/AdjointzEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/AdjointzEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=AdjointzEnum()
 
-macro=109;
+macro=110;
Index: /issm/trunk/src/m/enum/AirEnum.m
===================================================================
--- /issm/trunk/src/m/enum/AirEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/AirEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=AirEnum()
 
-macro=104;
+macro=105;
Index: /issm/trunk/src/m/enum/AnalysisCounterEnum.m
===================================================================
--- /issm/trunk/src/m/enum/AnalysisCounterEnum.m	(revision 4039)
+++ /issm/trunk/src/m/enum/AnalysisCounterEnum.m	(revision 4039)
@@ -0,0 +1,11 @@
+function macro=AnalysisCounterEnum()
+%ANALYSISCOUNTERENUM - Enum of AnalysisCounter
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/SynchronizeMatlabEnum
+%            Please read src/c/README for more information
+%
+%   Usage:
+%      macro=AnalysisCounterEnum()
+
+macro=15;
Index: /issm/trunk/src/m/enum/ArtDiffEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ArtDiffEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ArtDiffEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ArtDiffEnum()
 
-macro=110;
+macro=111;
Index: /issm/trunk/src/m/enum/Balancedthickness2AnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/Balancedthickness2AnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/Balancedthickness2AnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=Balancedthickness2AnalysisEnum()
 
-macro=36;
+macro=37;
Index: /issm/trunk/src/m/enum/BalancedthicknessAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BalancedthicknessAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/BalancedthicknessAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=BalancedthicknessAnalysisEnum()
 
-macro=37;
+macro=38;
Index: /issm/trunk/src/m/enum/BalancedvelocitiesAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BalancedvelocitiesAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/BalancedvelocitiesAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=BalancedvelocitiesAnalysisEnum()
 
-macro=38;
+macro=39;
Index: /issm/trunk/src/m/enum/BeamEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BeamEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/BeamEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=BeamEnum()
 
-macro=55;
+macro=56;
Index: /issm/trunk/src/m/enum/BeamVertexInputEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BeamVertexInputEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/BeamVertexInputEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=BeamVertexInputEnum()
 
-macro=78;
+macro=79;
Index: /issm/trunk/src/m/enum/BeamVertexResultEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BeamVertexResultEnum.m	(revision 4039)
+++ /issm/trunk/src/m/enum/BeamVertexResultEnum.m	(revision 4039)
@@ -0,0 +1,11 @@
+function macro=BeamVertexResultEnum()
+%BEAMVERTEXRESULTENUM - Enum of BeamVertexResult
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/SynchronizeMatlabEnum
+%            Please read src/c/README for more information
+%
+%   Usage:
+%      macro=BeamVertexResultEnum()
+
+macro=190;
Index: /issm/trunk/src/m/enum/BedEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BedEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/BedEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=BedEnum()
 
-macro=111;
+macro=112;
Index: /issm/trunk/src/m/enum/BedSlopeXAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BedSlopeXAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/BedSlopeXAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=BedSlopeXAnalysisEnum()
 
-macro=32;
+macro=33;
Index: /issm/trunk/src/m/enum/BedSlopeXEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BedSlopeXEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/BedSlopeXEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=BedSlopeXEnum()
 
-macro=112;
+macro=113;
Index: /issm/trunk/src/m/enum/BedSlopeYAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BedSlopeYAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/BedSlopeYAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=BedSlopeYAnalysisEnum()
 
-macro=33;
+macro=34;
Index: /issm/trunk/src/m/enum/BedSlopeYEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BedSlopeYEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/BedSlopeYEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=BedSlopeYEnum()
 
-macro=113;
+macro=114;
Index: /issm/trunk/src/m/enum/BetaEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BetaEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/BetaEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=BetaEnum()
 
-macro=188;
+macro=191;
Index: /issm/trunk/src/m/enum/BoolInputEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BoolInputEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/BoolInputEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=BoolInputEnum()
 
-macro=79;
+macro=80;
Index: /issm/trunk/src/m/enum/BoolParamEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BoolParamEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/BoolParamEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=BoolParamEnum()
 
-macro=86;
+macro=87;
Index: /issm/trunk/src/m/enum/BoundaryEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BoundaryEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/BoundaryEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=BoundaryEnum()
 
-macro=114;
+macro=115;
Index: /issm/trunk/src/m/enum/CmGradientEnum.m
===================================================================
--- /issm/trunk/src/m/enum/CmGradientEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/CmGradientEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=CmGradientEnum()
 
-macro=189;
+macro=192;
Index: /issm/trunk/src/m/enum/CmJumpEnum.m
===================================================================
--- /issm/trunk/src/m/enum/CmJumpEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/CmJumpEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=CmJumpEnum()
 
-macro=190;
+macro=193;
Index: /issm/trunk/src/m/enum/CmMaxDmpSlopeEnum.m
===================================================================
--- /issm/trunk/src/m/enum/CmMaxDmpSlopeEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/CmMaxDmpSlopeEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=CmMaxDmpSlopeEnum()
 
-macro=115;
+macro=116;
Index: /issm/trunk/src/m/enum/CmMaxDmpValueEnum.m
===================================================================
--- /issm/trunk/src/m/enum/CmMaxDmpValueEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/CmMaxDmpValueEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=CmMaxDmpValueEnum()
 
-macro=116;
+macro=117;
Index: /issm/trunk/src/m/enum/CmMaxEnum.m
===================================================================
--- /issm/trunk/src/m/enum/CmMaxEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/CmMaxEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=CmMaxEnum()
 
-macro=191;
+macro=194;
Index: /issm/trunk/src/m/enum/CmMinDmpSlopeEnum.m
===================================================================
--- /issm/trunk/src/m/enum/CmMinDmpSlopeEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/CmMinDmpSlopeEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=CmMinDmpSlopeEnum()
 
-macro=117;
+macro=118;
Index: /issm/trunk/src/m/enum/CmMinDmpValueEnum.m
===================================================================
--- /issm/trunk/src/m/enum/CmMinDmpValueEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/CmMinDmpValueEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=CmMinDmpValueEnum()
 
-macro=118;
+macro=119;
Index: /issm/trunk/src/m/enum/CmMinEnum.m
===================================================================
--- /issm/trunk/src/m/enum/CmMinEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/CmMinEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=CmMinEnum()
 
-macro=192;
+macro=195;
Index: /issm/trunk/src/m/enum/CmNoiseDmpEnum.m
===================================================================
--- /issm/trunk/src/m/enum/CmNoiseDmpEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/CmNoiseDmpEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=CmNoiseDmpEnum()
 
-macro=119;
+macro=120;
Index: /issm/trunk/src/m/enum/CollapseEnum.m
===================================================================
--- /issm/trunk/src/m/enum/CollapseEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/CollapseEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=CollapseEnum()
 
-macro=120;
+macro=121;
Index: /issm/trunk/src/m/enum/ConnectivityEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ConnectivityEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ConnectivityEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ConnectivityEnum()
 
-macro=193;
+macro=196;
Index: /issm/trunk/src/m/enum/ConstantEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ConstantEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ConstantEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ConstantEnum()
 
-macro=121;
+macro=122;
Index: /issm/trunk/src/m/enum/ControlAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ControlAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ControlAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ControlAnalysisEnum()
 
-macro=25;
+macro=26;
Index: /issm/trunk/src/m/enum/ControlParameterEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ControlParameterEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ControlParameterEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ControlParameterEnum()
 
-macro=194;
+macro=197;
Index: /issm/trunk/src/m/enum/ControlSteadyEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ControlSteadyEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ControlSteadyEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ControlSteadyEnum()
 
-macro=195;
+macro=198;
Index: /issm/trunk/src/m/enum/ControlTypeEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ControlTypeEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ControlTypeEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ControlTypeEnum()
 
-macro=122;
+macro=123;
Index: /issm/trunk/src/m/enum/ConvergedEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ConvergedEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ConvergedEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ConvergedEnum()
 
-macro=123;
+macro=124;
Index: /issm/trunk/src/m/enum/DakotaParameterEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DakotaParameterEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/DakotaParameterEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=DakotaParameterEnum()
 
-macro=196;
+macro=199;
Index: /issm/trunk/src/m/enum/DhDtEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DhDtEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/DhDtEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=DhDtEnum()
 
-macro=124;
+macro=125;
Index: /issm/trunk/src/m/enum/DiagnosticAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/DiagnosticAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=DiagnosticAnalysisEnum()
 
-macro=15;
+macro=16;
Index: /issm/trunk/src/m/enum/DiagnosticHorizAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticHorizAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/DiagnosticHorizAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=DiagnosticHorizAnalysisEnum()
 
-macro=16;
+macro=17;
Index: /issm/trunk/src/m/enum/DiagnosticHutterAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticHutterAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/DiagnosticHutterAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=DiagnosticHutterAnalysisEnum()
 
-macro=18;
+macro=19;
Index: /issm/trunk/src/m/enum/DiagnosticStokesAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticStokesAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/DiagnosticStokesAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=DiagnosticStokesAnalysisEnum()
 
-macro=19;
+macro=20;
Index: /issm/trunk/src/m/enum/DiagnosticVertAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticVertAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/DiagnosticVertAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=DiagnosticVertAnalysisEnum()
 
-macro=17;
+macro=18;
Index: /issm/trunk/src/m/enum/DimEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DimEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/DimEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=DimEnum()
 
-macro=197;
+macro=200;
Index: /issm/trunk/src/m/enum/DofIndexingEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DofIndexingEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/DofIndexingEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=DofIndexingEnum()
 
-macro=56;
+macro=57;
Index: /issm/trunk/src/m/enum/DofVecEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DofVecEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/DofVecEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=DofVecEnum()
 
-macro=98;
+macro=99;
Index: /issm/trunk/src/m/enum/DoubleInputEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DoubleInputEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/DoubleInputEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=DoubleInputEnum()
 
-macro=80;
+macro=81;
Index: /issm/trunk/src/m/enum/DoubleMatParamEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DoubleMatParamEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/DoubleMatParamEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=DoubleMatParamEnum()
 
-macro=87;
+macro=88;
Index: sm/trunk/src/m/enum/DoubleMatResultEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DoubleMatResultEnum.m	(revision 4038)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=DoubleMatResultEnum()
-%DOUBLEMATRESULTENUM - Enum of DoubleMatResult
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/SynchronizeMatlabEnum
-%            Please read src/c/README for more information
-%
-%   Usage:
-%      macro=DoubleMatResultEnum()
-
-macro=187;
Index: /issm/trunk/src/m/enum/DoubleParamEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DoubleParamEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/DoubleParamEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=DoubleParamEnum()
 
-macro=88;
+macro=89;
Index: /issm/trunk/src/m/enum/DoubleResultEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DoubleResultEnum.m	(revision 4039)
+++ /issm/trunk/src/m/enum/DoubleResultEnum.m	(revision 4039)
@@ -0,0 +1,11 @@
+function macro=DoubleResultEnum()
+%DOUBLERESULTENUM - Enum of DoubleResult
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/SynchronizeMatlabEnum
+%            Please read src/c/README for more information
+%
+%   Usage:
+%      macro=DoubleResultEnum()
+
+macro=186;
Index: /issm/trunk/src/m/enum/DoubleVecParamEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DoubleVecParamEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/DoubleVecParamEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=DoubleVecParamEnum()
 
-macro=89;
+macro=90;
Index: sm/trunk/src/m/enum/DoubleVecResultEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DoubleVecResultEnum.m	(revision 4038)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=DoubleVecResultEnum()
-%DOUBLEVECRESULTENUM - Enum of DoubleVecResult
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/SynchronizeMatlabEnum
-%            Please read src/c/README for more information
-%
-%   Usage:
-%      macro=DoubleVecResultEnum()
-
-macro=186;
Index: /issm/trunk/src/m/enum/DragCoefficientEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DragCoefficientEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/DragCoefficientEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=DragCoefficientEnum()
 
-macro=125;
+macro=126;
Index: /issm/trunk/src/m/enum/DragPEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DragPEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/DragPEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=DragPEnum()
 
-macro=126;
+macro=127;
Index: /issm/trunk/src/m/enum/DragQEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DragQEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/DragQEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=DragQEnum()
 
-macro=127;
+macro=128;
Index: /issm/trunk/src/m/enum/DragTypeEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DragTypeEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/DragTypeEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=DragTypeEnum()
 
-macro=128;
+macro=129;
Index: /issm/trunk/src/m/enum/DtEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DtEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/DtEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=DtEnum()
 
-macro=129;
+macro=130;
Index: /issm/trunk/src/m/enum/ElementEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ElementEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ElementEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ElementEnum()
 
-macro=54;
+macro=55;
Index: /issm/trunk/src/m/enum/ElementOnBedEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ElementOnBedEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ElementOnBedEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ElementOnBedEnum()
 
-macro=130;
+macro=131;
Index: /issm/trunk/src/m/enum/ElementOnIceShelfEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ElementOnIceShelfEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ElementOnIceShelfEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ElementOnIceShelfEnum()
 
-macro=131;
+macro=132;
Index: /issm/trunk/src/m/enum/ElementOnSurfaceEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ElementOnSurfaceEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ElementOnSurfaceEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ElementOnSurfaceEnum()
 
-macro=132;
+macro=133;
Index: /issm/trunk/src/m/enum/ElementOnWaterEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ElementOnWaterEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ElementOnWaterEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ElementOnWaterEnum()
 
-macro=133;
+macro=134;
Index: /issm/trunk/src/m/enum/ElementPropertiesEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ElementPropertiesEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ElementPropertiesEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ElementPropertiesEnum()
 
-macro=57;
+macro=58;
Index: /issm/trunk/src/m/enum/EnumAsString.m
===================================================================
--- /issm/trunk/src/m/enum/EnumAsString.m	(revision 4038)
+++ /issm/trunk/src/m/enum/EnumAsString.m	(revision 4039)
@@ -26,4 +26,5 @@
 	case AnalysisTypeEnum(), string='AnalysisType'; return
 	case SubAnalysisTypeEnum(), string='SubAnalysisType'; return
+	case AnalysisCounterEnum(), string='AnalysisCounter'; return
 	case DiagnosticAnalysisEnum(), string='DiagnosticAnalysis'; return
 	case DiagnosticHorizAnalysisEnum(), string='DiagnosticHorizAnalysis'; return
@@ -196,7 +197,9 @@
 	case P0Enum(), string='P0'; return
 	case P1Enum(), string='P1'; return
-	case StringResultEnum(), string='StringResult'; return
-	case DoubleVecResultEnum(), string='DoubleVecResult'; return
-	case DoubleMatResultEnum(), string='DoubleMatResult'; return
+	case DoubleResultEnum(), string='DoubleResult'; return
+	case TriaVertexResultEnum(), string='TriaVertexResult'; return
+	case PentaVertexResultEnum(), string='PentaVertexResult'; return
+	case SingVertexResultEnum(), string='SingVertexResult'; return
+	case BeamVertexResultEnum(), string='BeamVertexResult'; return
 	case BetaEnum(), string='Beta'; return
 	case CmGradientEnum(), string='CmGradient'; return
Index: /issm/trunk/src/m/enum/EpsAbsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/EpsAbsEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/EpsAbsEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=EpsAbsEnum()
 
-macro=198;
+macro=201;
Index: /issm/trunk/src/m/enum/EpsCmEnum.m
===================================================================
--- /issm/trunk/src/m/enum/EpsCmEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/EpsCmEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=EpsCmEnum()
 
-macro=199;
+macro=202;
Index: /issm/trunk/src/m/enum/EpsRelEnum.m
===================================================================
--- /issm/trunk/src/m/enum/EpsRelEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/EpsRelEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=EpsRelEnum()
 
-macro=200;
+macro=203;
Index: /issm/trunk/src/m/enum/EpsResEnum.m
===================================================================
--- /issm/trunk/src/m/enum/EpsResEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/EpsResEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=EpsResEnum()
 
-macro=201;
+macro=204;
Index: /issm/trunk/src/m/enum/EpsVelEnum.m
===================================================================
--- /issm/trunk/src/m/enum/EpsVelEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/EpsVelEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=EpsVelEnum()
 
-macro=134;
+macro=135;
Index: /issm/trunk/src/m/enum/ExtrudeParamEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ExtrudeParamEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ExtrudeParamEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ExtrudeParamEnum()
 
-macro=202;
+macro=205;
Index: /issm/trunk/src/m/enum/FillEnum.m
===================================================================
--- /issm/trunk/src/m/enum/FillEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/FillEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=FillEnum()
 
-macro=135;
+macro=136;
Index: /issm/trunk/src/m/enum/FitEnum.m
===================================================================
--- /issm/trunk/src/m/enum/FitEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/FitEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=FitEnum()
 
-macro=136;
+macro=137;
Index: /issm/trunk/src/m/enum/FormulationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/FormulationEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/FormulationEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=FormulationEnum()
 
-macro=46;
+macro=47;
Index: /issm/trunk/src/m/enum/FractionIncrementEnum.m
===================================================================
--- /issm/trunk/src/m/enum/FractionIncrementEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/FractionIncrementEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=FractionIncrementEnum()
 
-macro=137;
+macro=138;
Index: /issm/trunk/src/m/enum/FrictionEnum.m
===================================================================
--- /issm/trunk/src/m/enum/FrictionEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/FrictionEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=FrictionEnum()
 
-macro=138;
+macro=139;
Index: /issm/trunk/src/m/enum/GeographyEnum.m
===================================================================
--- /issm/trunk/src/m/enum/GeographyEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/GeographyEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=GeographyEnum()
 
-macro=99;
+macro=100;
Index: /issm/trunk/src/m/enum/GeothermalFluxEnum.m
===================================================================
--- /issm/trunk/src/m/enum/GeothermalFluxEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/GeothermalFluxEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=GeothermalFluxEnum()
 
-macro=139;
+macro=140;
Index: /issm/trunk/src/m/enum/GradientAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/GradientAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/GradientAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=GradientAnalysisEnum()
 
-macro=26;
+macro=27;
Index: /issm/trunk/src/m/enum/HeatCapacityEnum.m
===================================================================
--- /issm/trunk/src/m/enum/HeatCapacityEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/HeatCapacityEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=HeatCapacityEnum()
 
-macro=203;
+macro=206;
Index: /issm/trunk/src/m/enum/HookEnum.m
===================================================================
--- /issm/trunk/src/m/enum/HookEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/HookEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=HookEnum()
 
-macro=53;
+macro=54;
Index: /issm/trunk/src/m/enum/HorizAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/HorizAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/HorizAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=HorizAnalysisEnum()
 
-macro=20;
+macro=21;
Index: /issm/trunk/src/m/enum/HutterAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/HutterAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/HutterAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=HutterAnalysisEnum()
 
-macro=21;
+macro=22;
Index: /issm/trunk/src/m/enum/HutterFormulationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/HutterFormulationEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/HutterFormulationEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=HutterFormulationEnum()
 
-macro=47;
+macro=48;
Index: /issm/trunk/src/m/enum/IceEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IceEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/IceEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=IceEnum()
 
-macro=103;
+macro=104;
Index: /issm/trunk/src/m/enum/IceSheetEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IceSheetEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/IceSheetEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=IceSheetEnum()
 
-macro=100;
+macro=101;
Index: /issm/trunk/src/m/enum/IceShelfEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IceShelfEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/IceShelfEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=IceShelfEnum()
 
-macro=101;
+macro=102;
Index: /issm/trunk/src/m/enum/IcefrontEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IcefrontEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/IcefrontEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=IcefrontEnum()
 
-macro=65;
+macro=66;
Index: /issm/trunk/src/m/enum/InputEnum.m
===================================================================
--- /issm/trunk/src/m/enum/InputEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/InputEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=InputEnum()
 
-macro=77;
+macro=78;
Index: /issm/trunk/src/m/enum/IntInputEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IntInputEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/IntInputEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=IntInputEnum()
 
-macro=81;
+macro=82;
Index: /issm/trunk/src/m/enum/IntParamEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IntParamEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/IntParamEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=IntParamEnum()
 
-macro=90;
+macro=91;
Index: /issm/trunk/src/m/enum/InternalEnum.m
===================================================================
--- /issm/trunk/src/m/enum/InternalEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/InternalEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=InternalEnum()
 
-macro=140;
+macro=141;
Index: /issm/trunk/src/m/enum/InverseAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/InverseAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/InverseAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=InverseAnalysisEnum()
 
-macro=27;
+macro=28;
Index: /issm/trunk/src/m/enum/IsHutterEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IsHutterEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/IsHutterEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=IsHutterEnum()
 
-macro=204;
+macro=207;
Index: /issm/trunk/src/m/enum/IsMacAyealPattynEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IsMacAyealPattynEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/IsMacAyealPattynEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=IsMacAyealPattynEnum()
 
-macro=205;
+macro=208;
Index: /issm/trunk/src/m/enum/IsStokesEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IsStokesEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/IsStokesEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=IsStokesEnum()
 
-macro=206;
+macro=209;
Index: /issm/trunk/src/m/enum/KflagEnum.m
===================================================================
--- /issm/trunk/src/m/enum/KflagEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/KflagEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=KflagEnum()
 
-macro=141;
+macro=142;
Index: /issm/trunk/src/m/enum/LatentHeatEnum.m
===================================================================
--- /issm/trunk/src/m/enum/LatentHeatEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/LatentHeatEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=LatentHeatEnum()
 
-macro=207;
+macro=210;
Index: /issm/trunk/src/m/enum/LoadEnum.m
===================================================================
--- /issm/trunk/src/m/enum/LoadEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/LoadEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=LoadEnum()
 
-macro=64;
+macro=65;
Index: /issm/trunk/src/m/enum/LowmemEnum.m
===================================================================
--- /issm/trunk/src/m/enum/LowmemEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/LowmemEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=LowmemEnum()
 
-macro=208;
+macro=211;
Index: /issm/trunk/src/m/enum/MacAyealFormulationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MacAyealFormulationEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/MacAyealFormulationEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=MacAyealFormulationEnum()
 
-macro=48;
+macro=49;
Index: /issm/trunk/src/m/enum/MaterialEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MaterialEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/MaterialEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=MaterialEnum()
 
-macro=74;
+macro=75;
Index: /issm/trunk/src/m/enum/MaticeEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MaticeEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/MaticeEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=MaticeEnum()
 
-macro=75;
+macro=76;
Index: /issm/trunk/src/m/enum/MatparEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MatparEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/MatparEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=MatparEnum()
 
-macro=76;
+macro=77;
Index: /issm/trunk/src/m/enum/MaxIterEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MaxIterEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/MaxIterEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=MaxIterEnum()
 
-macro=209;
+macro=212;
Index: /issm/trunk/src/m/enum/MaxNonlinearIterationsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MaxNonlinearIterationsEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/MaxNonlinearIterationsEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=MaxNonlinearIterationsEnum()
 
-macro=210;
+macro=213;
Index: /issm/trunk/src/m/enum/MaxPenetrationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MaxPenetrationEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/MaxPenetrationEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=MaxPenetrationEnum()
 
-macro=142;
+macro=143;
Index: /issm/trunk/src/m/enum/MeanVelEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MeanVelEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/MeanVelEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=MeanVelEnum()
 
-macro=143;
+macro=144;
Index: /issm/trunk/src/m/enum/MelangeEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MelangeEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/MelangeEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=MelangeEnum()
 
-macro=105;
+macro=106;
Index: /issm/trunk/src/m/enum/MeltingAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MeltingAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/MeltingAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=MeltingAnalysisEnum()
 
-macro=41;
+macro=42;
Index: /issm/trunk/src/m/enum/MeltingOffsetEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MeltingOffsetEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/MeltingOffsetEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=MeltingOffsetEnum()
 
-macro=144;
+macro=145;
Index: /issm/trunk/src/m/enum/MeltingPointEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MeltingPointEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/MeltingPointEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=MeltingPointEnum()
 
-macro=211;
+macro=214;
Index: /issm/trunk/src/m/enum/MeltingRateEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MeltingRateEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/MeltingRateEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=MeltingRateEnum()
 
-macro=145;
+macro=146;
Index: /issm/trunk/src/m/enum/Mesh2gridAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/Mesh2gridAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/Mesh2gridAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=Mesh2gridAnalysisEnum()
 
-macro=42;
+macro=43;
Index: /issm/trunk/src/m/enum/MinMechanicalConstraintsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MinMechanicalConstraintsEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/MinMechanicalConstraintsEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=MinMechanicalConstraintsEnum()
 
-macro=212;
+macro=215;
Index: /issm/trunk/src/m/enum/MinThermalConstraintsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MinThermalConstraintsEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/MinThermalConstraintsEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=MinThermalConstraintsEnum()
 
-macro=213;
+macro=216;
Index: /issm/trunk/src/m/enum/NStepsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NStepsEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/NStepsEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=NStepsEnum()
 
-macro=214;
+macro=217;
Index: /issm/trunk/src/m/enum/NdtEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NdtEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/NdtEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=NdtEnum()
 
-macro=215;
+macro=218;
Index: /issm/trunk/src/m/enum/NodeEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NodeEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/NodeEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=NodeEnum()
 
-macro=62;
+macro=63;
Index: /issm/trunk/src/m/enum/NodeOnBedEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NodeOnBedEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/NodeOnBedEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=NodeOnBedEnum()
 
-macro=146;
+macro=147;
Index: /issm/trunk/src/m/enum/NodeOnIceSheetEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NodeOnIceSheetEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/NodeOnIceSheetEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=NodeOnIceSheetEnum()
 
-macro=147;
+macro=148;
Index: /issm/trunk/src/m/enum/NodeOnIceShelfEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NodeOnIceShelfEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/NodeOnIceShelfEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=NodeOnIceShelfEnum()
 
-macro=148;
+macro=149;
Index: /issm/trunk/src/m/enum/NodeOnSurfaceEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NodeOnSurfaceEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/NodeOnSurfaceEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=NodeOnSurfaceEnum()
 
-macro=149;
+macro=150;
Index: /issm/trunk/src/m/enum/NodePropertiesEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NodePropertiesEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/NodePropertiesEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=NodePropertiesEnum()
 
-macro=58;
+macro=59;
Index: /issm/trunk/src/m/enum/NoneAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NoneAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/NoneAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=NoneAnalysisEnum()
 
-macro=45;
+macro=46;
Index: /issm/trunk/src/m/enum/NoneFormulationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NoneFormulationEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/NoneFormulationEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=NoneFormulationEnum()
 
-macro=49;
+macro=50;
Index: /issm/trunk/src/m/enum/NumOutputEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NumOutputEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/NumOutputEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=NumOutputEnum()
 
-macro=216;
+macro=219;
Index: /issm/trunk/src/m/enum/NumRiftsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NumRiftsEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/NumRiftsEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=NumRiftsEnum()
 
-macro=217;
+macro=220;
Index: /issm/trunk/src/m/enum/NumberNodeToElementConnectivityEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NumberNodeToElementConnectivityEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/NumberNodeToElementConnectivityEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=NumberNodeToElementConnectivityEnum()
 
-macro=150;
+macro=151;
Index: /issm/trunk/src/m/enum/NumberOfDofsPerNodeEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NumberOfDofsPerNodeEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/NumberOfDofsPerNodeEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=NumberOfDofsPerNodeEnum()
 
-macro=218;
+macro=221;
Index: /issm/trunk/src/m/enum/NumberOfElementsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NumberOfElementsEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/NumberOfElementsEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=NumberOfElementsEnum()
 
-macro=219;
+macro=222;
Index: /issm/trunk/src/m/enum/NumberOfNodesEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NumberOfNodesEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/NumberOfNodesEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=NumberOfNodesEnum()
 
-macro=220;
+macro=223;
Index: /issm/trunk/src/m/enum/NumberOfVerticesEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NumberOfVerticesEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/NumberOfVerticesEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=NumberOfVerticesEnum()
 
-macro=221;
+macro=224;
Index: /issm/trunk/src/m/enum/NumericalfluxEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NumericalfluxEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/NumericalfluxEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=NumericalfluxEnum()
 
-macro=66;
+macro=67;
Index: /issm/trunk/src/m/enum/ObjectEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ObjectEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ObjectEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ObjectEnum()
 
-macro=52;
+macro=53;
Index: /issm/trunk/src/m/enum/OptScalEnum.m
===================================================================
--- /issm/trunk/src/m/enum/OptScalEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/OptScalEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=OptScalEnum()
 
-macro=222;
+macro=225;
Index: /issm/trunk/src/m/enum/OutputFileNameEnum.m
===================================================================
--- /issm/trunk/src/m/enum/OutputFileNameEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/OutputFileNameEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=OutputFileNameEnum()
 
-macro=223;
+macro=226;
Index: /issm/trunk/src/m/enum/P0Enum.m
===================================================================
--- /issm/trunk/src/m/enum/P0Enum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/P0Enum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=P0Enum()
 
-macro=183;
+macro=184;
Index: /issm/trunk/src/m/enum/P1Enum.m
===================================================================
--- /issm/trunk/src/m/enum/P1Enum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/P1Enum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=P1Enum()
 
-macro=184;
+macro=185;
Index: /issm/trunk/src/m/enum/ParamEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ParamEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ParamEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ParamEnum()
 
-macro=85;
+macro=86;
Index: /issm/trunk/src/m/enum/ParameterOutputEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ParameterOutputEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ParameterOutputEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ParameterOutputEnum()
 
-macro=224;
+macro=227;
Index: /issm/trunk/src/m/enum/ParametersAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ParametersAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ParametersAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ParametersAnalysisEnum()
 
-macro=43;
+macro=44;
Index: /issm/trunk/src/m/enum/PattynFormulationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PattynFormulationEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/PattynFormulationEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=PattynFormulationEnum()
 
-macro=50;
+macro=51;
Index: /issm/trunk/src/m/enum/PenaltyMeltingEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PenaltyMeltingEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/PenaltyMeltingEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=PenaltyMeltingEnum()
 
-macro=225;
+macro=228;
Index: /issm/trunk/src/m/enum/PenaltyOffsetEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PenaltyOffsetEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/PenaltyOffsetEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=PenaltyOffsetEnum()
 
-macro=151;
+macro=152;
Index: /issm/trunk/src/m/enum/PengridEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PengridEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/PengridEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=PengridEnum()
 
-macro=67;
+macro=68;
Index: /issm/trunk/src/m/enum/PenpairEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PenpairEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/PenpairEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=PenpairEnum()
 
-macro=68;
+macro=69;
Index: /issm/trunk/src/m/enum/PentaEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PentaEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/PentaEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=PentaEnum()
 
-macro=59;
+macro=60;
Index: /issm/trunk/src/m/enum/PentaVertexInputEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PentaVertexInputEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/PentaVertexInputEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=PentaVertexInputEnum()
 
-macro=82;
+macro=83;
Index: /issm/trunk/src/m/enum/PentaVertexResultEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PentaVertexResultEnum.m	(revision 4039)
+++ /issm/trunk/src/m/enum/PentaVertexResultEnum.m	(revision 4039)
@@ -0,0 +1,11 @@
+function macro=PentaVertexResultEnum()
+%PENTAVERTEXRESULTENUM - Enum of PentaVertexResult
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/SynchronizeMatlabEnum
+%            Please read src/c/README for more information
+%
+%   Usage:
+%      macro=PentaVertexResultEnum()
+
+macro=188;
Index: /issm/trunk/src/m/enum/PetscMatParamEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PetscMatParamEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/PetscMatParamEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=PetscMatParamEnum()
 
-macro=91;
+macro=92;
Index: /issm/trunk/src/m/enum/PetscVecParamEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PetscVecParamEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/PetscVecParamEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=PetscVecParamEnum()
 
-macro=92;
+macro=93;
Index: /issm/trunk/src/m/enum/PflagEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PflagEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/PflagEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=PflagEnum()
 
-macro=152;
+macro=153;
Index: /issm/trunk/src/m/enum/PressureEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PressureEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/PressureEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=PressureEnum()
 
-macro=153;
+macro=154;
Index: /issm/trunk/src/m/enum/PressureOldEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PressureOldEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/PressureOldEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=PressureOldEnum()
 
-macro=154;
+macro=155;
Index: /issm/trunk/src/m/enum/Prognostic2AnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/Prognostic2AnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/Prognostic2AnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=Prognostic2AnalysisEnum()
 
-macro=39;
+macro=40;
Index: /issm/trunk/src/m/enum/PrognosticAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PrognosticAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/PrognosticAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=PrognosticAnalysisEnum()
 
-macro=40;
+macro=41;
Index: /issm/trunk/src/m/enum/QmuAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/QmuAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/QmuAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=QmuAnalysisEnum()
 
-macro=226;
+macro=229;
Index: /issm/trunk/src/m/enum/QmuErrNameEnum.m
===================================================================
--- /issm/trunk/src/m/enum/QmuErrNameEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/QmuErrNameEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=QmuErrNameEnum()
 
-macro=227;
+macro=230;
Index: /issm/trunk/src/m/enum/QmuInNameEnum.m
===================================================================
--- /issm/trunk/src/m/enum/QmuInNameEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/QmuInNameEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=QmuInNameEnum()
 
-macro=228;
+macro=231;
Index: /issm/trunk/src/m/enum/QmuMassFluxSegmentsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/QmuMassFluxSegmentsEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/QmuMassFluxSegmentsEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=QmuMassFluxSegmentsEnum()
 
-macro=229;
+macro=232;
Index: /issm/trunk/src/m/enum/QmuNPartEnum.m
===================================================================
--- /issm/trunk/src/m/enum/QmuNPartEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/QmuNPartEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=QmuNPartEnum()
 
-macro=230;
+macro=233;
Index: /issm/trunk/src/m/enum/QmuOutNameEnum.m
===================================================================
--- /issm/trunk/src/m/enum/QmuOutNameEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/QmuOutNameEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=QmuOutNameEnum()
 
-macro=231;
+macro=234;
Index: /issm/trunk/src/m/enum/QmuPartEnum.m
===================================================================
--- /issm/trunk/src/m/enum/QmuPartEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/QmuPartEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=QmuPartEnum()
 
-macro=232;
+macro=235;
Index: /issm/trunk/src/m/enum/QuadIceFrontEnum.m
===================================================================
--- /issm/trunk/src/m/enum/QuadIceFrontEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/QuadIceFrontEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=QuadIceFrontEnum()
 
-macro=69;
+macro=70;
Index: /issm/trunk/src/m/enum/QuadRiftFrontEnum.m
===================================================================
--- /issm/trunk/src/m/enum/QuadRiftFrontEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/QuadRiftFrontEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=QuadRiftFrontEnum()
 
-macro=70;
+macro=71;
Index: /issm/trunk/src/m/enum/ResetPenaltiesEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ResetPenaltiesEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ResetPenaltiesEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ResetPenaltiesEnum()
 
-macro=155;
+macro=156;
Index: /issm/trunk/src/m/enum/ResponseDescriptorsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ResponseDescriptorsEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ResponseDescriptorsEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ResponseDescriptorsEnum()
 
-macro=233;
+macro=236;
Index: /issm/trunk/src/m/enum/ResultEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ResultEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ResultEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ResultEnum()
 
-macro=95;
+macro=96;
Index: /issm/trunk/src/m/enum/RgbEnum.m
===================================================================
--- /issm/trunk/src/m/enum/RgbEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/RgbEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=RgbEnum()
 
-macro=96;
+macro=97;
Index: /issm/trunk/src/m/enum/RheologyBEnum.m
===================================================================
--- /issm/trunk/src/m/enum/RheologyBEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/RheologyBEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=RheologyBEnum()
 
-macro=156;
+macro=157;
Index: /issm/trunk/src/m/enum/RheologyNEnum.m
===================================================================
--- /issm/trunk/src/m/enum/RheologyNEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/RheologyNEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=RheologyNEnum()
 
-macro=157;
+macro=158;
Index: /issm/trunk/src/m/enum/RiftfrontEnum.m
===================================================================
--- /issm/trunk/src/m/enum/RiftfrontEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/RiftfrontEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=RiftfrontEnum()
 
-macro=71;
+macro=72;
Index: /issm/trunk/src/m/enum/SegmentIcefrontEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SegmentIcefrontEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/SegmentIcefrontEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=SegmentIcefrontEnum()
 
-macro=72;
+macro=73;
Index: /issm/trunk/src/m/enum/SegmentOnIceShelfEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SegmentOnIceShelfEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/SegmentOnIceShelfEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=SegmentOnIceShelfEnum()
 
-macro=158;
+macro=159;
Index: /issm/trunk/src/m/enum/SegmentRiftfrontEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SegmentRiftfrontEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/SegmentRiftfrontEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=SegmentRiftfrontEnum()
 
-macro=73;
+macro=74;
Index: /issm/trunk/src/m/enum/SingEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SingEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/SingEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=SingEnum()
 
-macro=60;
+macro=61;
Index: /issm/trunk/src/m/enum/SingVertexInputEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SingVertexInputEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/SingVertexInputEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=SingVertexInputEnum()
 
-macro=83;
+macro=84;
Index: /issm/trunk/src/m/enum/SingVertexResultEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SingVertexResultEnum.m	(revision 4039)
+++ /issm/trunk/src/m/enum/SingVertexResultEnum.m	(revision 4039)
@@ -0,0 +1,11 @@
+function macro=SingVertexResultEnum()
+%SINGVERTEXRESULTENUM - Enum of SingVertexResult
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/SynchronizeMatlabEnum
+%            Please read src/c/README for more information
+%
+%   Usage:
+%      macro=SingVertexResultEnum()
+
+macro=189;
Index: /issm/trunk/src/m/enum/SlopeComputeAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SlopeComputeAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/SlopeComputeAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=SlopeComputeAnalysisEnum()
 
-macro=31;
+macro=32;
Index: /issm/trunk/src/m/enum/SolverStringEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SolverStringEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/SolverStringEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=SolverStringEnum()
 
-macro=234;
+macro=237;
Index: /issm/trunk/src/m/enum/SparsityEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SparsityEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/SparsityEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=SparsityEnum()
 
-macro=235;
+macro=238;
Index: /issm/trunk/src/m/enum/SpcEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SpcEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/SpcEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=SpcEnum()
 
-macro=97;
+macro=98;
Index: /issm/trunk/src/m/enum/StabilizeConstraintsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/StabilizeConstraintsEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/StabilizeConstraintsEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=StabilizeConstraintsEnum()
 
-macro=159;
+macro=160;
Index: /issm/trunk/src/m/enum/SteadyAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SteadyAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/SteadyAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=SteadyAnalysisEnum()
 
-macro=30;
+macro=31;
Index: /issm/trunk/src/m/enum/SteadystateAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SteadystateAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/SteadystateAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=SteadystateAnalysisEnum()
 
-macro=44;
+macro=45;
Index: /issm/trunk/src/m/enum/StokesAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/StokesAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/StokesAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=StokesAnalysisEnum()
 
-macro=22;
+macro=23;
Index: /issm/trunk/src/m/enum/StokesFormulationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/StokesFormulationEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/StokesFormulationEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=StokesFormulationEnum()
 
-macro=51;
+macro=52;
Index: /issm/trunk/src/m/enum/StokesReconditioningEnum.m
===================================================================
--- /issm/trunk/src/m/enum/StokesReconditioningEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/StokesReconditioningEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=StokesReconditioningEnum()
 
-macro=160;
+macro=161;
Index: /issm/trunk/src/m/enum/StringArrayParamEnum.m
===================================================================
--- /issm/trunk/src/m/enum/StringArrayParamEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/StringArrayParamEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=StringArrayParamEnum()
 
-macro=93;
+macro=94;
Index: /issm/trunk/src/m/enum/StringAsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/StringAsEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/StringAsEnum.m	(revision 4039)
@@ -24,4 +24,5 @@
 elseif (strcmpi(name,'AnalysisType')), enum=AnalysisTypeEnum(); return
 elseif (strcmpi(name,'SubAnalysisType')), enum=SubAnalysisTypeEnum(); return
+elseif (strcmpi(name,'AnalysisCounter')), enum=AnalysisCounterEnum(); return
 elseif (strcmpi(name,'DiagnosticAnalysis')), enum=DiagnosticAnalysisEnum(); return
 elseif (strcmpi(name,'DiagnosticHorizAnalysis')), enum=DiagnosticHorizAnalysisEnum(); return
@@ -194,7 +195,9 @@
 elseif (strcmpi(name,'P0')), enum=P0Enum(); return
 elseif (strcmpi(name,'P1')), enum=P1Enum(); return
-elseif (strcmpi(name,'StringResult')), enum=StringResultEnum(); return
-elseif (strcmpi(name,'DoubleVecResult')), enum=DoubleVecResultEnum(); return
-elseif (strcmpi(name,'DoubleMatResult')), enum=DoubleMatResultEnum(); return
+elseif (strcmpi(name,'DoubleResult')), enum=DoubleResultEnum(); return
+elseif (strcmpi(name,'TriaVertexResult')), enum=TriaVertexResultEnum(); return
+elseif (strcmpi(name,'PentaVertexResult')), enum=PentaVertexResultEnum(); return
+elseif (strcmpi(name,'SingVertexResult')), enum=SingVertexResultEnum(); return
+elseif (strcmpi(name,'BeamVertexResult')), enum=BeamVertexResultEnum(); return
 elseif (strcmpi(name,'Beta')), enum=BetaEnum(); return
 elseif (strcmpi(name,'CmGradient')), enum=CmGradientEnum(); return
Index: /issm/trunk/src/m/enum/StringParamEnum.m
===================================================================
--- /issm/trunk/src/m/enum/StringParamEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/StringParamEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=StringParamEnum()
 
-macro=94;
+macro=95;
Index: sm/trunk/src/m/enum/StringResultEnum.m
===================================================================
--- /issm/trunk/src/m/enum/StringResultEnum.m	(revision 4038)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=StringResultEnum()
-%STRINGRESULTENUM - Enum of StringResult
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/SynchronizeMatlabEnum
-%            Please read src/c/README for more information
-%
-%   Usage:
-%      macro=StringResultEnum()
-
-macro=185;
Index: /issm/trunk/src/m/enum/SurfaceAreaEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceAreaEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/SurfaceAreaEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=SurfaceAreaEnum()
 
-macro=161;
+macro=162;
Index: /issm/trunk/src/m/enum/SurfaceEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/SurfaceEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=SurfaceEnum()
 
-macro=162;
+macro=163;
Index: /issm/trunk/src/m/enum/SurfaceSlopeXAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceSlopeXAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/SurfaceSlopeXAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=SurfaceSlopeXAnalysisEnum()
 
-macro=34;
+macro=35;
Index: /issm/trunk/src/m/enum/SurfaceSlopeXEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceSlopeXEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/SurfaceSlopeXEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=SurfaceSlopeXEnum()
 
-macro=163;
+macro=164;
Index: /issm/trunk/src/m/enum/SurfaceSlopeYAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceSlopeYAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/SurfaceSlopeYAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=SurfaceSlopeYAnalysisEnum()
 
-macro=35;
+macro=36;
Index: /issm/trunk/src/m/enum/SurfaceSlopeYEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceSlopeYEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/SurfaceSlopeYEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=SurfaceSlopeYEnum()
 
-macro=164;
+macro=165;
Index: /issm/trunk/src/m/enum/TemperatureAverageEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TemperatureAverageEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/TemperatureAverageEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=TemperatureAverageEnum()
 
-macro=166;
+macro=167;
Index: /issm/trunk/src/m/enum/TemperatureEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TemperatureEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/TemperatureEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=TemperatureEnum()
 
-macro=165;
+macro=166;
Index: /issm/trunk/src/m/enum/ThermalAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ThermalAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ThermalAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ThermalAnalysisEnum()
 
-macro=28;
+macro=29;
Index: /issm/trunk/src/m/enum/ThicknessEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ThicknessEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ThicknessEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ThicknessEnum()
 
-macro=167;
+macro=168;
Index: /issm/trunk/src/m/enum/TolXEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TolXEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/TolXEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=TolXEnum()
 
-macro=236;
+macro=239;
Index: /issm/trunk/src/m/enum/TransientAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TransientAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/TransientAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=TransientAnalysisEnum()
 
-macro=29;
+macro=30;
Index: /issm/trunk/src/m/enum/TriaEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TriaEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/TriaEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=TriaEnum()
 
-macro=61;
+macro=62;
Index: /issm/trunk/src/m/enum/TriaVertexInputEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TriaVertexInputEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/TriaVertexInputEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=TriaVertexInputEnum()
 
-macro=84;
+macro=85;
Index: /issm/trunk/src/m/enum/TriaVertexResultEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TriaVertexResultEnum.m	(revision 4039)
+++ /issm/trunk/src/m/enum/TriaVertexResultEnum.m	(revision 4039)
@@ -0,0 +1,11 @@
+function macro=TriaVertexResultEnum()
+%TRIAVERTEXRESULTENUM - Enum of TriaVertexResult
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/SynchronizeMatlabEnum
+%            Please read src/c/README for more information
+%
+%   Usage:
+%      macro=TriaVertexResultEnum()
+
+macro=187;
Index: /issm/trunk/src/m/enum/TypeEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TypeEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/TypeEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=TypeEnum()
 
-macro=168;
+macro=169;
Index: /issm/trunk/src/m/enum/VariableDescriptorsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VariableDescriptorsEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/VariableDescriptorsEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=VariableDescriptorsEnum()
 
-macro=237;
+macro=240;
Index: /issm/trunk/src/m/enum/VerboseEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VerboseEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/VerboseEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=VerboseEnum()
 
-macro=238;
+macro=241;
Index: /issm/trunk/src/m/enum/VertAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VertAnalysisEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/VertAnalysisEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=VertAnalysisEnum()
 
-macro=23;
+macro=24;
Index: /issm/trunk/src/m/enum/VertexEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VertexEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/VertexEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=VertexEnum()
 
-macro=63;
+macro=64;
Index: /issm/trunk/src/m/enum/ViscosityOvershootEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ViscosityOvershootEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/ViscosityOvershootEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=ViscosityOvershootEnum()
 
-macro=169;
+macro=170;
Index: /issm/trunk/src/m/enum/VxAverageEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VxAverageEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/VxAverageEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=VxAverageEnum()
 
-macro=170;
+macro=171;
Index: /issm/trunk/src/m/enum/VxEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VxEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/VxEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=VxEnum()
 
-macro=171;
+macro=172;
Index: /issm/trunk/src/m/enum/VxObsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VxObsEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/VxObsEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=VxObsEnum()
 
-macro=172;
+macro=173;
Index: /issm/trunk/src/m/enum/VxOldEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VxOldEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/VxOldEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=VxOldEnum()
 
-macro=173;
+macro=174;
Index: /issm/trunk/src/m/enum/VyAverageEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VyAverageEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/VyAverageEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=VyAverageEnum()
 
-macro=174;
+macro=175;
Index: /issm/trunk/src/m/enum/VyEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VyEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/VyEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=VyEnum()
 
-macro=175;
+macro=176;
Index: /issm/trunk/src/m/enum/VyObsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VyObsEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/VyObsEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=VyObsEnum()
 
-macro=176;
+macro=177;
Index: /issm/trunk/src/m/enum/VyOldEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VyOldEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/VyOldEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=VyOldEnum()
 
-macro=177;
+macro=178;
Index: /issm/trunk/src/m/enum/VzAverageEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VzAverageEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/VzAverageEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=VzAverageEnum()
 
-macro=178;
+macro=179;
Index: /issm/trunk/src/m/enum/VzEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VzEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/VzEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=VzEnum()
 
-macro=179;
+macro=180;
Index: /issm/trunk/src/m/enum/VzObsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VzObsEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/VzObsEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=VzObsEnum()
 
-macro=180;
+macro=181;
Index: /issm/trunk/src/m/enum/VzOldEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VzOldEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/VzOldEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=VzOldEnum()
 
-macro=181;
+macro=182;
Index: /issm/trunk/src/m/enum/WaitOnLockEnum.m
===================================================================
--- /issm/trunk/src/m/enum/WaitOnLockEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/WaitOnLockEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=WaitOnLockEnum()
 
-macro=239;
+macro=242;
Index: /issm/trunk/src/m/enum/WaterEnum.m
===================================================================
--- /issm/trunk/src/m/enum/WaterEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/WaterEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=WaterEnum()
 
-macro=102;
+macro=103;
Index: /issm/trunk/src/m/enum/WeightsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/WeightsEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/WeightsEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=WeightsEnum()
 
-macro=182;
+macro=183;
Index: /issm/trunk/src/m/enum/YtsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/YtsEnum.m	(revision 4038)
+++ /issm/trunk/src/m/enum/YtsEnum.m	(revision 4039)
@@ -9,3 +9,3 @@
 %      macro=YtsEnum()
 
-macro=240;
+macro=243;
Index: /issm/trunk/todo
===================================================================
--- /issm/trunk/todo	(revision 4038)
+++ /issm/trunk/todo	(revision 4039)
@@ -87,2 +87,12 @@
 test commit
 test2
+
+
+
+
+transfer slope computation scripts in serial, to reflect new scripts in parallel.  
+md=solve(md,'SolutionType','DiagnosticSolutionEnum'); instead of md=solve(md,'AnalysisType','DiagnosticSolutionEnum');  do the work of transferring
+
+
+
+
