Index: /issm/trunk/src/mex/Makefile.am
===================================================================
--- /issm/trunk/src/mex/Makefile.am	(revision 8800)
+++ /issm/trunk/src/mex/Makefile.am	(revision 8801)
@@ -9,5 +9,4 @@
 				BamgMesher\
 				BamgConvertMesh\
-				BuildNodeSets\
 				Chaco\
 				ComputeBasalStress\
@@ -63,6 +62,4 @@
 				Qmu\
 				Reduceload\
-				Reduceloadfromgtof\
-				Reducematrixfromgtof\
 				Reducevectorgtos\
 				Reducevectorgtof\
@@ -86,4 +83,5 @@
 				InputUpdateFromVector\
 				UpdateVertexPositions\
+				UpdateSpcs\
 				VerticesDof
 
@@ -114,7 +112,4 @@
 					AddExternalResult/AddExternalResult.h
 
-BuildNodeSets_SOURCES = BuildNodeSets/BuildNodeSets.cpp\
-			  BuildNodeSets/BuildNodeSets.h
-
 BamgMesher_SOURCES = BamgMesher/BamgMesher.cpp\
 					BamgMesher/BamgMesher.h
@@ -285,10 +280,4 @@
 			  Reduceload/Reduceload.h
 
-Reducematrixfromgtof_SOURCES = Reducematrixfromgtof/Reducematrixfromgtof.cpp\
-			  Reducematrixfromgtof/Reducematrixfromgtof.h
-
-Reduceloadfromgtof_SOURCES = Reduceloadfromgtof/Reduceloadfromgtof.cpp\
-			  Reduceloadfromgtof/Reduceloadfromgtof.h
-
 Reducevectorgtos_SOURCES = Reducevectorgtos/Reducevectorgtos.cpp\
 			  Reducevectorgtos/Reducevectorgtos.h
@@ -351,4 +340,7 @@
 			  UpdateVertexPositions/UpdateVertexPositions.h
 
+UpdateSpcs_SOURCES = UpdateSpcs/UpdateSpcs.cpp\
+			  UpdateSpcs/UpdateSpcs.h
+
 ParsePetscOptions_SOURCES = ParsePetscOptions/ParsePetscOptions.cpp\
 			  ParsePetscOptions/ParsePetscOptions.h
@@ -358,3 +350,2 @@
 			  VerticesDof/VerticesDof.h
 
-
Index: /issm/trunk/src/mex/Mergesolutionfromftog/Mergesolutionfromftog.cpp
===================================================================
--- /issm/trunk/src/mex/Mergesolutionfromftog/Mergesolutionfromftog.cpp	(revision 8800)
+++ /issm/trunk/src/mex/Mergesolutionfromftog/Mergesolutionfromftog.cpp	(revision 8801)
@@ -11,5 +11,6 @@
 	Vec         uf         = NULL;
 	Vec         ys         = NULL;
-	NodeSets   *nodesets   = NULL;
+	Nodes*      nodes   = NULL;
+	Parameters* parameters   = NULL;
 
 	/* output datasets: */
@@ -20,5 +21,5 @@
 
 	/*checks on arguments on the matlab side: */
-	if((nlhs!=NLHS) || (nrhs!=3 && nrhs!=4)){
+	if((nlhs!=NLHS) || (nrhs!=4 && nrhs!=5)){
 		MergesolutionfromftogUsage();
 		_error_(" usage. See above");
@@ -28,13 +29,14 @@
 	FetchData(&uf,UF);
 	FetchData(&ys,YS);
-	FetchNodeSets(&nodesets,NODESETS);
+	FetchData((DataSet**)&nodes,NODES);
+	FetchParams(&parameters,PARAMETERS);
 
 	/*!Reduce vector: */
-	if (nrhs==3){
-		Mergesolutionfromftogx(&ug, uf,ys,nodesets);
+	if (nrhs==4){
+		Mergesolutionfromftogx(&ug, uf,ys,nodes,parameters);
 	}
 	else{
 		FetchData(&flag_ys0,YSFLAG);
-		Mergesolutionfromftogx(&ug, uf,ys,nodesets,flag_ys0);
+		Mergesolutionfromftogx(&ug, uf,ys,nodes,parameters,flag_ys0);
 	}
 
@@ -46,5 +48,6 @@
 	VecFree(&ug);
 	VecFree(&ys);
-	delete nodesets;
+	delete nodes;
+	delete parameters;
 
 	/*end module: */
@@ -55,5 +58,5 @@
 {
 	_printf_(true,"\n");
-	_printf_(true,"   usage: [ug] = %s(uf,ys,nodesets,[flag_ys0]);\n",__FUNCT__);
+	_printf_(true,"   usage: [ug] = %s(uf,ys,nodes,parameters,[flag_ys0]);\n",__FUNCT__);
 	_printf_(true,"\n");
 }
Index: /issm/trunk/src/mex/Mergesolutionfromftog/Mergesolutionfromftog.h
===================================================================
--- /issm/trunk/src/mex/Mergesolutionfromftog/Mergesolutionfromftog.h	(revision 8800)
+++ /issm/trunk/src/mex/Mergesolutionfromftog/Mergesolutionfromftog.h	(revision 8801)
@@ -21,6 +21,7 @@
 #define UF (mxArray*)prhs[0]
 #define YS (mxArray*)prhs[1]
-#define NODESETS (mxArray*)prhs[2]
-#define YSFLAG (mxArray*)prhs[3]
+#define NODES (mxArray*)prhs[2]
+#define PARAMETERS (mxArray*)prhs[3]
+#define YSFLAG (mxArray*)prhs[4]
 
 /* serial output macros: */
@@ -31,5 +32,5 @@
 #define NLHS  1
 #undef NRHS
-#define NRHS  4
+#define NRHS  5
 
 #endif  /* _MERGESOLUTIONFROMFTOG_H */
Index: /issm/trunk/src/mex/Reducevectorgtof/Reducevectorgtof.cpp
===================================================================
--- /issm/trunk/src/mex/Reducevectorgtof/Reducevectorgtof.cpp	(revision 8800)
+++ /issm/trunk/src/mex/Reducevectorgtof/Reducevectorgtof.cpp	(revision 8801)
@@ -9,5 +9,5 @@
 	/*input datasets: */
 	Vec ug=NULL;
-	NodeSets* nodesets=NULL;
+	Nodes* nodes=NULL;
 	Parameters* parameters=NULL;
 
@@ -23,9 +23,9 @@
 	/*Input datasets: */
 	FetchData(&ug,UG);
-	FetchNodeSets(&nodesets,NODESETS);
+	FetchData((DataSet**)&nodes,NODES);
 	FetchParams(&parameters,PARAMETERS);
 
 	/*!Reduce vector: */
-	Reducevectorgtofx(&uf,ug,nodesets,parameters);
+	Reducevectorgtofx(&uf,ug,nodes,parameters);
 
 	/*write output datasets: */
@@ -33,5 +33,5 @@
 
 	/*Free ressources: */
-	delete nodesets;
+	delete nodes;
 	delete parameters;
 	VecFree(&ug);
@@ -45,5 +45,5 @@
 {
 	_printf_(true,"\n");
-	_printf_(true,"   usage: uf = %s(ug,nodesets,parameters);\n",__FUNCT__);
+	_printf_(true,"   usage: uf = %s(ug,nodes,parameters);\n",__FUNCT__);
 	_printf_(true,"\n");
 }
Index: /issm/trunk/src/mex/Reducevectorgtof/Reducevectorgtof.h
===================================================================
--- /issm/trunk/src/mex/Reducevectorgtof/Reducevectorgtof.h	(revision 8800)
+++ /issm/trunk/src/mex/Reducevectorgtof/Reducevectorgtof.h	(revision 8801)
@@ -20,5 +20,5 @@
 /* serial input macros: */
 #define UG (mxArray*)prhs[0]
-#define NODESETS (mxArray*)prhs[1]
+#define NODES (mxArray*)prhs[1]
 #define PARAMETERS (mxArray*)prhs[2]
 
Index: /issm/trunk/src/mex/Reducevectorgtos/Reducevectorgtos.cpp
===================================================================
--- /issm/trunk/src/mex/Reducevectorgtos/Reducevectorgtos.cpp	(revision 8800)
+++ /issm/trunk/src/mex/Reducevectorgtos/Reducevectorgtos.cpp	(revision 8801)
@@ -9,5 +9,5 @@
 	/*input datasets: */
 	Vec yg=NULL;
-	NodeSets* nodesets=NULL;
+	Nodes* nodes=NULL;
 	Parameters* parameters=NULL;
 
@@ -23,9 +23,9 @@
 	/*Input datasets: */
 	FetchData(&yg,YG);
-	FetchNodeSets(&nodesets,NODESETS);
+	FetchData((DataSet**)&nodes,NODES);
 	FetchParams(&parameters,PARAMETERS);
 
 	/*!Reduce vector: */
-	Reducevectorgtosx(&ys,yg,nodesets,parameters);
+	Reducevectorgtosx(&ys,yg,nodes,parameters);
 
 	/*write output datasets: */
@@ -33,5 +33,5 @@
 
 	/*Free ressources: */
-	delete nodesets;
+	delete nodes;
 	delete parameters;
 	VecFree(&yg);
@@ -45,5 +45,5 @@
 {
 	_printf_(true,"\n");
-	_printf_(true,"   usage: ys = %s(yg,nodesets,parameters);\n",__FUNCT__);
+	_printf_(true,"   usage: ys = %s(yg,nodes,parameters);\n",__FUNCT__);
 	_printf_(true,"\n");
 }
Index: /issm/trunk/src/mex/Reducevectorgtos/Reducevectorgtos.h
===================================================================
--- /issm/trunk/src/mex/Reducevectorgtos/Reducevectorgtos.h	(revision 8800)
+++ /issm/trunk/src/mex/Reducevectorgtos/Reducevectorgtos.h	(revision 8801)
@@ -18,5 +18,5 @@
 /* serial input macros: */
 #define YG (mxArray*)prhs[0]
-#define NODESETS (mxArray*)prhs[1]
+#define NODES (mxArray*)prhs[1]
 #define PARAMETERS (mxArray*)prhs[2]
 
Index: /issm/trunk/src/mex/SystemMatrices/SystemMatrices.cpp
===================================================================
--- /issm/trunk/src/mex/SystemMatrices/SystemMatrices.cpp	(revision 8800)
+++ /issm/trunk/src/mex/SystemMatrices/SystemMatrices.cpp	(revision 8801)
@@ -17,10 +17,7 @@
 	
 	/* output datasets: */
-	Mat    Kgg  = NULL;
 	Mat    Kff  = NULL;
 	Mat    Kfs  = NULL;
-	Vec    pg   = NULL;
 	Vec    pf   = NULL;
-	Vec    dg   = NULL;
 	Vec    df   = NULL;
 
@@ -56,16 +53,13 @@
 		FetchData(&penalty_kflag,PENALTYKFLAG);
 		FetchData(&penalty_pflag,PENALTYPFLAG);
-		SystemMatricesx(&Kgg,&Kff,&Kfs,&pg,&pf,&dg,&df,&kmax,elements,nodes,vertices,loads,materials,parameters,kflag,pflag,penalty_kflag,penalty_pflag);
+		SystemMatricesx(&Kff,&Kfs,&pf,&df,&kmax,elements,nodes,vertices,loads,materials,parameters,kflag,pflag,penalty_kflag,penalty_pflag);
 	}
 	else
-	 SystemMatricesx(&Kgg,&Kff,&Kfs,&pg,&pf,&dg,&df,&kmax,elements,nodes,vertices,loads,materials,parameters);
+	 SystemMatricesx(&Kff,&Kfs,&pf,&df,&kmax,elements,nodes,vertices,loads,materials,parameters);
 
 	/*write output datasets: */
-	WriteData(KGG,Kgg);
 	WriteData(KFF,Kff);
 	WriteData(KFS,Kfs);
-	WriteData(PG,pg);
 	WriteData(PF,pf);
-	WriteData(DG,dg);
 	WriteData(DF,df);
 	WriteData(KMAX,kmax);
@@ -78,10 +72,7 @@
 	delete materials;
 	delete parameters;
-	MatFree(&Kgg);
 	MatFree(&Kff);
 	MatFree(&Kfs);
-	VecFree(&pg);
 	VecFree(&pf);
-	VecFree(&dg);
 	VecFree(&df);
 
@@ -93,6 +84,6 @@
 {
 	_printf_(true,"\n");
-	_printf_(true,"   usage: [Kgg,Kff,Kfs,pg,pf,dg,df,kmax] = %s(elements,nodes,vertices,loads,materials,parameters);\n",__FUNCT__);
-	_printf_(true,"   usage: [Kgg,Kff,Kfs,pg,pf,dg,df,kmax] = %s(elements,nodes,vertices,loads,materials,parameters,kflag,pflag,penalty_kflag,penalty_pflag);\n",__FUNCT__);
+	_printf_(true,"   usage: [Kff,Kfs,pf,df,kmax] = %s(elements,nodes,vertices,loads,materials,parameters);\n",__FUNCT__);
+	_printf_(true,"   usage: [Kff,Kfs,pf,df,kmax] = %s(elements,nodes,vertices,loads,materials,parameters,kflag,pflag,penalty_kflag,penalty_pflag);\n",__FUNCT__);
 	_printf_(true,"\n");
 }
Index: /issm/trunk/src/mex/SystemMatrices/SystemMatrices.h
===================================================================
--- /issm/trunk/src/mex/SystemMatrices/SystemMatrices.h	(revision 8800)
+++ /issm/trunk/src/mex/SystemMatrices/SystemMatrices.h	(revision 8801)
@@ -30,16 +30,13 @@
 
 /* serial output macros: */
-#define KGG  (mxArray**)&plhs[0]
-#define KFF  (mxArray**)&plhs[1]
-#define KFS  (mxArray**)&plhs[2]
-#define PG   (mxArray**)&plhs[3]
-#define PF   (mxArray**)&plhs[4]
-#define DG   (mxArray**)&plhs[5]
-#define DF   (mxArray**)&plhs[6]
-#define KMAX (mxArray**)&plhs[7]
+#define KFF  (mxArray**)&plhs[0]
+#define KFS  (mxArray**)&plhs[1]
+#define PF   (mxArray**)&plhs[2]
+#define DF   (mxArray**)&plhs[3]
+#define KMAX (mxArray**)&plhs[4]
 
 /* serial arg counts: */
 #undef NLHS
-#define NLHS  8
+#define NLHS  5
 #undef NRHS
 #define NRHS  10
Index: /issm/trunk/src/mex/UpdateSpcs/UpdateSpcs.cpp
===================================================================
--- /issm/trunk/src/mex/UpdateSpcs/UpdateSpcs.cpp	(revision 8801)
+++ /issm/trunk/src/mex/UpdateSpcs/UpdateSpcs.cpp	(revision 8801)
@@ -0,0 +1,45 @@
+/*\file UpdateSpcs.c
+ *\brief: update single point constraints inside nodes out of constrain vector ys
+ */
+
+#include "./UpdateSpcs.h"
+
+
+void mexFunction( int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]){
+
+	/*input datasets: */
+	Nodes* nodes=NULL;
+	Parameters* parameters=NULL;
+	Vec ys=NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&UpdateSpcsUsage);
+
+	/*Input datasets: */
+	FetchData((DataSet**)&nodes,NODESIN);
+	FetchParams((Parameters**)&parameters,PARAMETERS);
+	FetchData(&ys,YS);
+	
+	/*!Generate internal degree of freedom numbers: */
+	UpdateSpcsx(nodes,parameters,ys);
+
+	/*write output datasets: */
+	WriteData(NODESOUT,nodes);
+
+	/*Free ressources: */
+	delete nodes;
+	delete parameters;
+
+	/*end module: */
+	MODULEEND();
+}
+
+void UpdateSpcsUsage(void)
+{
+	_printf_(true,"\n");
+	_printf_(true,"   usage: m.nodes=%s(m.nodes,m.parameters,ys);\n",__FUNCT__);
+	_printf_(true,"\n");
+}
Index: /issm/trunk/src/mex/UpdateSpcs/UpdateSpcs.h
===================================================================
--- /issm/trunk/src/mex/UpdateSpcs/UpdateSpcs.h	(revision 8801)
+++ /issm/trunk/src/mex/UpdateSpcs/UpdateSpcs.h	(revision 8801)
@@ -0,0 +1,36 @@
+
+/*
+	UpdateSpcs.h
+*/
+
+
+#ifndef _UPDATESPCS_H
+#define _UPDATESPCS_H
+
+/* local prototypes: */
+void UpdateSpcsUsage(void);
+
+#include "../../c/modules/modules.h"
+#include "../../c/Container/Container.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "UpdateSpcs"
+
+/* serial input macros: */
+#define NODESIN (mxArray*)prhs[0]
+#define PARAMETERS (mxArray*)prhs[1]
+#define YS (mxArray*)prhs[2]
+
+/* serial output macros: */
+#define NODESOUT (mxArray**)&plhs[0]
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  3
+
+
+#endif  /* _UPDATESPCS_H */
+
