Index: /issm/trunk/src/c/Bamgx/Bamgx.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/Bamgx.cpp	(revision 3712)
+++ /issm/trunk/src/c/Bamgx/Bamgx.cpp	(revision 3713)
@@ -3,7 +3,9 @@
  */
 #include "./Bamgx.h"
+#include "../objects/objects.h"
 #include "../shared/shared.h"
 #include "../include/macros.h"
 #include "../toolkits/toolkits.h"
+#include "./objects/BamgObjects.h"
 
 using namespace bamg;
Index: /issm/trunk/src/c/EnumDefinitions/EnumAsString.cpp
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumAsString.cpp	(revision 3712)
+++ /issm/trunk/src/c/EnumDefinitions/EnumAsString.cpp	(revision 3713)
@@ -10,5 +10,5 @@
 #include "../shared/shared.h"
 #include "../include/macros.h"
-#include "./EnumDefinition.h"
+#include "./EnumDefinitions.h"
 
 char* EnumAsString(int en){
@@ -370,4 +370,10 @@
 		case VerboseEnum :
 			return "Verbose";
+		case EpsResEnum :
+			return "EpsRes";
+		case EpsRelEnum :
+			return "EpsRel";
+		case EpsAbsEnum :
+			return "EpsAbs";
 		case EpsCmEnum :
 			return "EpsCm";
Index: /issm/trunk/src/c/EnumDefinitions/StringAsEnum.cpp
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/StringAsEnum.cpp	(revision 3712)
+++ /issm/trunk/src/c/EnumDefinitions/StringAsEnum.cpp	(revision 3713)
@@ -10,5 +10,5 @@
 #include "../shared/shared.h"
 #include "../include/macros.h"
-#include "./EnumDefinition.h"
+#include "./EnumDefinitions.h"
 
 int  StringAsEnum(char* name){
@@ -191,4 +191,7 @@
 	else if (strcmp(name,"IsStokes")==0) return IsStokesEnum;
 	else if (strcmp(name,"Verbose")==0) return VerboseEnum;
+	else if (strcmp(name,"EpsRes")==0) return EpsResEnum;
+	else if (strcmp(name,"EpsRel")==0) return EpsRelEnum;
+	else if (strcmp(name,"EpsAbs")==0) return EpsAbsEnum;
 	else if (strcmp(name,"EpsCm")==0) return EpsCmEnum;
 	else if (strcmp(name,"MaxNonlinearIterations")==0) return MaxNonlinearIterationsEnum;
@@ -233,5 +236,5 @@
 	else if (strcmp(name,"ResponseDescriptors")==0) return ResponseDescriptorsEnum;
 	else if (strcmp(name,"DakotaParameter")==0) return DakotaParameterEnum;
-	else ISSMERROR("Enum %i not found",en);
+	else ISSMERROR("Enum %i not found",name);
 
 }
Index: /issm/trunk/src/c/EnumDefinitions/SynchronizeStrings.sh
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/SynchronizeStrings.sh	(revision 3712)
+++ /issm/trunk/src/c/EnumDefinitions/SynchronizeStrings.sh	(revision 3713)
@@ -22,5 +22,5 @@
 #include "../shared/shared.h"
 #include "../include/macros.h"
-#include "./EnumDefinition.h"
+#include "./EnumDefinitions.h"
 
 char* EnumAsString(int en){
@@ -43,5 +43,5 @@
 #include "../shared/shared.h"
 #include "../include/macros.h"
-#include "./EnumDefinition.h"
+#include "./EnumDefinitions.h"
 
 int  StringAsEnum(char* name){
@@ -110,5 +110,5 @@
 #Add footer of of StringAsEnum.cpp{{{1
 cat <<END >> StringAsEnum.cpp
-	else ISSMERROR("Enum %i not found",en);
+	else ISSMERROR("Enum %i not found",name);
 
 }
Index: /issm/trunk/src/c/ModelProcessorx/Control/CreateParametersControl.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 3712)
+++ /issm/trunk/src/c/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 3713)
@@ -33,6 +33,6 @@
 		 ISSMERROR("control_type %s not supported yet!",iomodel->control_type);
 
-		parameters->AddObject(new   BoolParam(ControlSteadyEnum,false));
-		parameters->AddObject(new    IntParam(NSteps,iomodel->nsteps));
+		parameters->AddObject(new BoolParam(ControlSteadyEnum,false));
+		parameters->AddObject(new IntParam(NSteps,iomodel->nsteps));
 		parameters->AddObject(new DoubleParam(TolXEnum,iomodel->tolx));
 		parameters->AddObject(new DoubleParam(EpsCmEnum,iomodel->eps_cm));
@@ -45,5 +45,5 @@
 		parameters->AddObject(new DoubleParam(CmMinEnum,iomodel->cm_min));
 		parameters->AddObject(new DoubleParam(CmMaxEnum,iomodel->cm_max));
-		parameters->AddObject(new   BoolParam(CmGradientEnum,iomodel->cm_gradient));
+		parameters->AddObject(new BoolParam(CmGradientEnum,iomodel->cm_gradient));
 
 		/*Now, recover fit, optscal and maxiter as vectors: */
Index: /issm/trunk/src/c/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/CreateParameters.cpp	(revision 3712)
+++ /issm/trunk/src/c/ModelProcessorx/CreateParameters.cpp	(revision 3713)
@@ -67,5 +67,5 @@
 				iomodel->analysis_type==Balancedthickness2AnalysisEnum
 				)
-	 parameters->AddObject(new    IntParam(NumberOfNodesEnum,3*iomodel->numberofelements));
+		parameters->AddObject(new    IntParam(NumberOfNodesEnum,3*iomodel->numberofelements));
 	else parameters->AddObject(new    IntParam(NumberOfNodesEnum,iomodel->numberofvertices));
 
Index: /issm/trunk/src/c/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp	(revision 3712)
+++ /issm/trunk/src/c/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp	(revision 3713)
@@ -9,11 +9,11 @@
 #endif
 
-#include "./IoModel.h"
 #include "../shared/shared.h"
+#include "../io/io.h"
 #include "../include/macros.h"
 #include "../include/typedefs.h"
 #include "./ModelProcessorx.h"
 
-CreateSingleNodeToElementConnectivity(IoModel* iomodel){
+void CreateSingleNodeToElementConnectivity(IoModel* iomodel){
 
 	/*Intermediary*/
@@ -30,10 +30,10 @@
 
 	/*Allocate ouput*/
-	connectivity=(double*)xcalloc(iomodel->numberofvertices*sizeof(double));
+	connectivity=(double*)xcalloc(iomodel->numberofvertices,sizeof(double));
 
 	if (strcmp(iomodel->meshtype,"2d")==0){
 		for (i=0;i<iomodel->numberofelements;i++){
 			for (j=0;j<3;j++){
-				vertexid=iomodel->elements[3*i+j];
+				vertexid=(int)iomodel->elements[3*i+j];
 				ISSMASSERT(vertexid-1<iomodel->numberofvertices);
 				connectivity[vertexid-1]=i;
@@ -44,5 +44,5 @@
 		for (i=0;i<iomodel->numberofelements;i++){
 			for (j=0;j<6;j++){
-				vertexid=iomodel->elements[6*i+j];
+				vertexid=(int)iomodel->elements[6*i+j];
 				ISSMASSERT(vertexid-1<iomodel->numberofvertices);
 				connectivity[vertexid-1]=i;
Index: /issm/trunk/src/c/ModelProcessorx/ModelProcessorx.h
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/ModelProcessorx.h	(revision 3712)
+++ /issm/trunk/src/c/ModelProcessorx/ModelProcessorx.h	(revision 3713)
@@ -7,4 +7,10 @@
 
 #define RIFTINFOSIZE 11
+
+class DataSet;
+class IoModel;
+class Parameters;
+#include "../io/io.h"
+
 
 /*Creation of fem datasets: general drivers*/
Index: /issm/trunk/src/c/ProcessParamsx/ProcessParamsx.cpp
===================================================================
--- /issm/trunk/src/c/ProcessParamsx/ProcessParamsx.cpp	(revision 3712)
+++ /issm/trunk/src/c/ProcessParamsx/ProcessParamsx.cpp	(revision 3713)
@@ -18,18 +18,10 @@
 
 	
-	double* partition=NULL;
-	Param*  param=NULL;
+	int     i;
+	double *partition        = NULL;
+	int     numberofvertices;
+	Param  *param            = NULL;
 
-	/*diverse: */
-	int numberofvertices;
-	int i,j,k;
-	int ndof;
-	int param_type;
-
-	/*processing of parameters: */
-	double* parameter=NULL;
-	double* new_parameter=NULL;
-
-	/*Some parameters needed: */
+	/*Need number of vertices to repartition DoubleVecParam objects: */
 	parameters->FindParam(&numberofvertices,NumberOfVerticesEnum);
 
@@ -39,41 +31,10 @@
 	for(i=0;i<parameters->Size();i++){
 
-		param_type=parameters->GetEnum(i);
+		param=(Param*)parameters->GetObjectByOffset(i);
+		param->Process(partition,numberofvertices);
 
-		if(param_type==ParamEnum){
+	}
 
-			Param* param=(Param*)parameters->GetObjectByOffset(i);
-
-			if (param->GetType()==DOUBLEVEC){
-
-				ndof=param->GetNdof();
-
-				if (ndof!=0){ /*ok, we are dealing with a parameter that needs to be repartitioned, for ndof degrees of freedom: */
-
-					new_parameter=(double*)xcalloc(numberofvertices*ndof,sizeof(double));
-					param->GetParameterValue(&parameter);
-
-					for(j=0;j<ndof;j++){
-
-						for(k=0;k<numberofvertices;k++){
-						
-							new_parameter[(int)(ndof*partition[k]+j)]=parameter[ndof*k+j];
-
-						}
-
-					}
-				
-					
-					/*Now, replace old parameter with new parameter: */
-					param->SetDoubleVec(new_parameter,ndof*numberofvertices,ndof);
-
-					/*Free ressources: */
-					xfree((void**)&new_parameter);
-					xfree((void**)&parameter);
-
-				}
-			}
-		}
-	}
+	/*Free ressources:*/
 	xfree((void**)&partition);
 
Index: /issm/trunk/src/c/io/FetchParams.cpp
===================================================================
--- /issm/trunk/src/c/io/FetchParams.cpp	(revision 3712)
+++ /issm/trunk/src/c/io/FetchParams.cpp	(revision 3713)
@@ -18,5 +18,5 @@
 #include "../EnumDefinitions/EnumDefinitions.h"
 
-void FetchParams(DataSet** pparameters, DataHandle dataref){
+void FetchParams(Parameters** pparameters, DataHandle dataref){
 
 	int i,j;
Index: /issm/trunk/src/c/io/io.h
===================================================================
--- /issm/trunk/src/c/io/io.h	(revision 3712)
+++ /issm/trunk/src/c/io/io.h	(revision 3713)
@@ -52,5 +52,5 @@
 
 void FetchNodeSets(NodeSets** pnodesets,ConstDataHandle dataref);
-void FetchParams(DataSet** pparameters, DataHandle dataref);
+void FetchParams(Parameters** pparameters, DataHandle dataref);
 
 #endif
Index: /issm/trunk/src/c/objects/Params/BoolParam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Params/BoolParam.cpp	(revision 3712)
+++ /issm/trunk/src/c/objects/Params/BoolParam.cpp	(revision 3713)
@@ -140,2 +140,6 @@
 }
 /*}}}*/
+/*FUNCTION BoolParam::ProcessParams(double* partition,int numberofvertices);{{{1*/
+void  BoolParam::Process(double* partition,int numberofvertices){
+}
+/*}}}*/
Index: /issm/trunk/src/c/objects/Params/BoolParam.h
===================================================================
--- /issm/trunk/src/c/objects/Params/BoolParam.h	(revision 3712)
+++ /issm/trunk/src/c/objects/Params/BoolParam.h	(revision 3713)
@@ -56,4 +56,5 @@
 		char* GetParameterName(void);
 		void  SetMatlabField(mxArray* dataref);
+		void  Process(double* partition,int numberofvertices);
 		/*}}}*/
 };
Index: /issm/trunk/src/c/objects/Params/DoubleMatParam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Params/DoubleMatParam.cpp	(revision 3712)
+++ /issm/trunk/src/c/objects/Params/DoubleMatParam.cpp	(revision 3713)
@@ -195,2 +195,6 @@
 }
 /*}}}*/
+/*FUNCTION DoubleMatParam::ProcessParams(double* partition,int numberofvertices);{{{1*/
+void  DoubleMatParam::Process(double* partition,int numberofvertices){
+}
+/*}}}*/
Index: /issm/trunk/src/c/objects/Params/DoubleMatParam.h
===================================================================
--- /issm/trunk/src/c/objects/Params/DoubleMatParam.h	(revision 3712)
+++ /issm/trunk/src/c/objects/Params/DoubleMatParam.h	(revision 3713)
@@ -58,4 +58,5 @@
 		char* GetParameterName(void);
 		void  SetMatlabField(mxArray* dataref);
+		void  Process(double* partition,int numberofvertices);
 		/*}}}*/
 };
Index: /issm/trunk/src/c/objects/Params/DoubleParam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Params/DoubleParam.cpp	(revision 3712)
+++ /issm/trunk/src/c/objects/Params/DoubleParam.cpp	(revision 3713)
@@ -138,2 +138,6 @@
 }
 /*}}}*/
+/*FUNCTION DoubleParam::ProcessParams(double* partition,int numberofvertices);{{{1*/
+void  DoubleParam::Process(double* partition,int numberofvertices){
+}
+/*}}}*/
Index: /issm/trunk/src/c/objects/Params/DoubleParam.h
===================================================================
--- /issm/trunk/src/c/objects/Params/DoubleParam.h	(revision 3712)
+++ /issm/trunk/src/c/objects/Params/DoubleParam.h	(revision 3713)
@@ -56,4 +56,5 @@
 		char* GetParameterName(void);
 		void  SetMatlabField(mxArray* dataref);
+		void  Process(double* partition,int numberofvertices);
 		/*}}}*/
 };
Index: /issm/trunk/src/c/objects/Params/DoubleVecParam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Params/DoubleVecParam.cpp	(revision 3712)
+++ /issm/trunk/src/c/objects/Params/DoubleVecParam.cpp	(revision 3713)
@@ -145,5 +145,5 @@
 void  DoubleVecParam::GetParameterValue(double** pdoublearray,int* pM){
 	double* output=NULL;
-	double M;
+	int M;
 
 
@@ -185,2 +185,26 @@
 }
 /*}}}*/
+/*FUNCTION DoubleVecParam::ProcessParams(double* partition,int numberofvertices);{{{1*/
+void  DoubleVecParam::Process(double* partition,int numberofvertices) {
+
+	int i;
+	double* newvalue=NULL;
+
+	/*This param holds a vector of size numberofvertices, which means we are being asked to 
+	 * repartition it: */
+	
+	if(this->M==numberofvertices){
+
+		newvalue=(double*)xmalloc(this->M*sizeof(double));
+				
+		for(i=0;i<this->M;i++){
+			newvalue[(int)(partition[i])]=this->value[i];
+		}
+
+		/*Reassign value to new value: */
+		xfree((void**)&this->value);
+		this->value=newvalue;
+	}
+
+}
+/*}}}*/
Index: /issm/trunk/src/c/objects/Params/DoubleVecParam.h
===================================================================
--- /issm/trunk/src/c/objects/Params/DoubleVecParam.h	(revision 3712)
+++ /issm/trunk/src/c/objects/Params/DoubleVecParam.h	(revision 3713)
@@ -56,4 +56,5 @@
 		char* GetParameterName(void);
 		void  SetMatlabField(mxArray* dataref);
+		void  Process(double* partition,int numberofvertices);
 		/*}}}*/
 };
Index: /issm/trunk/src/c/objects/Params/IntParam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Params/IntParam.cpp	(revision 3712)
+++ /issm/trunk/src/c/objects/Params/IntParam.cpp	(revision 3713)
@@ -142,2 +142,6 @@
 }
 /*}}}*/
+/*FUNCTION IntParam::ProcessParams(double* partition,int numberofvertices);{{{1*/
+void  IntParam::Process(double* partition,int numberofvertices){
+}
+/*}}}*/
Index: /issm/trunk/src/c/objects/Params/IntParam.h
===================================================================
--- /issm/trunk/src/c/objects/Params/IntParam.h	(revision 3712)
+++ /issm/trunk/src/c/objects/Params/IntParam.h	(revision 3713)
@@ -56,4 +56,5 @@
 		char* GetParameterName(void);
 		void  SetMatlabField(mxArray* dataref);
+		void  Process(double* partition,int numberofvertices);
 		/*}}}*/
 };
Index: /issm/trunk/src/c/objects/Params/Param.h
===================================================================
--- /issm/trunk/src/c/objects/Params/Param.h	(revision 3712)
+++ /issm/trunk/src/c/objects/Params/Param.h	(revision 3713)
@@ -32,4 +32,5 @@
 		virtual char* GetParameterName(void)=0;
 		virtual void  SetMatlabField(mxArray* dataref)=0;
+		virtual void  Process(double* partition,int numberofvertices)=0;
 
 		/*}}}*/
Index: /issm/trunk/src/c/objects/Params/PetscMatParam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Params/PetscMatParam.cpp	(revision 3712)
+++ /issm/trunk/src/c/objects/Params/PetscMatParam.cpp	(revision 3713)
@@ -223,2 +223,6 @@
 }
 /*}}}*/
+/*FUNCTION PetscMatParam::ProcessParams(double* partition,int numberofvertices);{{{1*/
+void  PetscMatParam::Process(double* partition,int numberofvertices){
+}
+/*}}}*/
Index: /issm/trunk/src/c/objects/Params/PetscMatParam.h
===================================================================
--- /issm/trunk/src/c/objects/Params/PetscMatParam.h	(revision 3712)
+++ /issm/trunk/src/c/objects/Params/PetscMatParam.h	(revision 3713)
@@ -56,4 +56,5 @@
 		char* GetParameterName(void);
 		void  SetMatlabField(mxArray* dataref);
+		void  Process(double* partition,int numberofvertices);
 		/*}}}*/
 };
Index: /issm/trunk/src/c/objects/Params/PetscVecParam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Params/PetscVecParam.cpp	(revision 3712)
+++ /issm/trunk/src/c/objects/Params/PetscVecParam.cpp	(revision 3713)
@@ -217,2 +217,6 @@
 }
 /*}}}*/
+/*FUNCTION PetscVecParam::ProcessParams(double* partition,int numberofvertices);{{{1*/
+void  PetscVecParam::Process(double* partition,int numberofvertices){
+}
+/*}}}*/
Index: /issm/trunk/src/c/objects/Params/PetscVecParam.h
===================================================================
--- /issm/trunk/src/c/objects/Params/PetscVecParam.h	(revision 3712)
+++ /issm/trunk/src/c/objects/Params/PetscVecParam.h	(revision 3713)
@@ -56,4 +56,5 @@
 		char* GetParameterName(void);
 		void  SetMatlabField(mxArray* dataref);
+		void  Process(double* partition,int numberofvertices);
 		/*}}}*/
 };
Index: /issm/trunk/src/c/objects/Params/StringArrayParam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Params/StringArrayParam.cpp	(revision 3712)
+++ /issm/trunk/src/c/objects/Params/StringArrayParam.cpp	(revision 3713)
@@ -249,2 +249,6 @@
 }
 /*}}}*/
+/*FUNCTION StringArrayParam::ProcessParams(double* partition,int numberofvertices);{{{1*/
+void  StringArrayParam::Process(double* partition,int numberofvertices){
+}
+/*}}}*/
Index: /issm/trunk/src/c/objects/Params/StringArrayParam.h
===================================================================
--- /issm/trunk/src/c/objects/Params/StringArrayParam.h	(revision 3712)
+++ /issm/trunk/src/c/objects/Params/StringArrayParam.h	(revision 3713)
@@ -58,4 +58,5 @@
 		char* GetParameterName(void);
 		void  SetMatlabField(mxArray* dataref);
+		void  Process(double* partition,int numberofvertices);
 		/*}}}*/
 };
Index: /issm/trunk/src/c/objects/Params/StringParam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Params/StringParam.cpp	(revision 3712)
+++ /issm/trunk/src/c/objects/Params/StringParam.cpp	(revision 3713)
@@ -176,2 +176,6 @@
 }
 /*}}}*/
+/*FUNCTION StringParam::ProcessParams(double* partition,int numberofvertices);{{{1*/
+void  StringParam::Process(double* partition,int numberofvertices){
+}
+/*}}}*/
Index: /issm/trunk/src/c/objects/Params/StringParam.h
===================================================================
--- /issm/trunk/src/c/objects/Params/StringParam.h	(revision 3712)
+++ /issm/trunk/src/c/objects/Params/StringParam.h	(revision 3713)
@@ -56,4 +56,5 @@
 		char* GetParameterName(void);
 		void  SetMatlabField(mxArray* dataref);
+		void  Process(double* partition,int numberofvertices);
 		/*}}}*/
 };
Index: sm/trunk/src/m/enum/NumparEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NumparEnum.m	(revision 3712)
+++ 	(revision )
@@ -1,9 +1,0 @@
-function macro=NumparEnum()
-%NUMPARENUM - Enum of Numpar
-%
-%   file generated by src/c/EnumDefinitions/SynchronizeMatlabEnum
-%
-%   Usage:
-%      macro=NumparEnum()
-
-macro=68;
