Index: /issm/trunk/src/c/Container/Constraints.cpp
===================================================================
--- /issm/trunk/src/c/Container/Constraints.cpp	(revision 5056)
+++ /issm/trunk/src/c/Container/Constraints.cpp	(revision 5057)
@@ -43,25 +43,4 @@
 
 /*Numerics: */
-/*FUNCTION Constraints::NumberOfLocalRgbs{{{1*/
-int   Constraints::NumberOfLocalRgbs(int analysis_type){
-
-	int i;
-	int  count=0;
-
-	for(i=0;i<this->Size();i++){
-
-		Object* object=(Object*)this->GetObjectByOffset(i);
-
-		/*Check this is a single point constraint (spc): */
-		if (object->Enum()==RgbEnum){
-
-			Rgb* rgb=(Rgb*)object;
-			if(rgb->InAnalysis(analysis_type))count++;
-		}
-	}
-
-	return count;
-}
-/*}}}*/
 /*FUNCTION Constraints::NumberOfConstraints{{{1*/
 int Constraints::NumberOfConstraints(void){
@@ -127,76 +106,2 @@
 }
 /*}}}*/
-/*FUNCTION Constraints::SetupMpcs{{{1*/
-void Constraints::SetupMpcs(Mat Rmg,Nodes* nodes,int analysis_type){
-
-	int i;
-
-	int  nodeid1;
-	int  nodeid2;
-	int  dof;
-
-	int  dof1;
-	int  dof2;
-
-
-	Node* node1=NULL;
-	Node* node2=NULL;
-
-	int count=-1;
-
-	for(i=0;i<this->Size();i++){
-
-		Object* object=(Object*)this->GetObjectByOffset(i);
-
-		/*Check this is a mutiple point constraint (spc): */
-		if(object->Enum()==RgbEnum){
-
-			Rgb* rgb=(Rgb*)object;
-
-			if(rgb->InAnalysis(analysis_type)){
-
-				/*we found an rgb, increment counter, so that row index for Rmg is up to date: */
-				count++;
-
-
-				nodeid1=rgb->GetNodeId1();
-				nodeid2=rgb->GetNodeId2();
-				dof=rgb->GetDof();
-
-				/*For this rgb, find the nodes that go with it: */
-				node1=(Node*)nodes->GetObjectById(NULL,nodeid1);
-				node2=(Node*)nodes->GetObjectById(NULL,nodeid2);
-
-				if ((node1 && !node2) || (!node1 && node2)){
-					/*we are missing one node, not good!*/
-					ISSMERROR("%s%p%s%p"," in Rgb, missing one node. node1: ",node1," node2: ",node2);
-				}
-
-				if(!node1 && !node2){
-					/*That's ok, this Rgb can't find those nodes, so leave them alone. They are probably not on this 
-					 * cpu!*/
-				}
-				else{
-					/*Ok, this cpu owns both nodes. Put dof for node1 into m set, unless it is already there, 
-					 * in which case node2 gets into the m set: */
-					if(node1->DofIsInMSet(dof-1)){
-						node2->DofInMSet(dof-1);
-					}
-					else{
-						node1->DofInMSet(dof-1);
-					}
-
-					/*Plug values into Rmg. We essentially want dofs from node1 and node2 to be the 
-					 *same: */
-					dof1=node1->GetDof(dof-1); //matlab indexing
-					dof2=node2->GetDof(dof-1); //matlab indexing
-
-					MatSetValue(Rmg,count,dof1,1.0,INSERT_VALUES);
-					MatSetValue(Rmg,count,dof2,-1.0,INSERT_VALUES);
-
-				}
-			}
-		}
-	}
-}
-/*}}}*/
Index: /issm/trunk/src/c/Container/Constraints.h
===================================================================
--- /issm/trunk/src/c/Container/Constraints.h	(revision 5056)
+++ /issm/trunk/src/c/Container/Constraints.h	(revision 5057)
@@ -27,8 +27,6 @@
 		/*}}}*/
 		/*numerics: {{{1*/
-		int   NumberOfLocalRgbs(int analysis_type);
 		int   NumberOfConstraints(void);
 		void  SetupSpcs(Nodes* nodes,Vec yg,int analysis_type);
-		void  SetupMpcs(Mat Rmg,Nodes* nodes,int analysis_type);
 		/*}}}*/
 
Index: /issm/trunk/src/c/Container/DataSet.cpp
===================================================================
--- /issm/trunk/src/c/Container/DataSet.cpp	(revision 5056)
+++ /issm/trunk/src/c/Container/DataSet.cpp	(revision 5057)
@@ -294,10 +294,4 @@
 			dataset->AddObject(numericalflux);
 		}
-		else if(enum_type==RgbEnum){
-			Rgb* rgb=NULL;
-			rgb=new Rgb();
-			rgb->Demarshall(&marshalled_dataset);
-			dataset->AddObject(rgb);
-		}
 		else if(enum_type==RiftfrontEnum){
 			Riftfront* riftfront=NULL;
Index: /issm/trunk/src/c/Container/Nodes.cpp
===================================================================
--- /issm/trunk/src/c/Container/Nodes.cpp	(revision 5056)
+++ /issm/trunk/src/c/Container/Nodes.cpp	(revision 5057)
@@ -174,5 +174,5 @@
 /*}}}*/
 /*FUNCTION Nodes::FlagNodeSets{{{1*/
-void Nodes::FlagNodeSets(Vec pv_g, Vec pv_m, Vec pv_n, Vec pv_f, Vec pv_s,int analysis_type){
+void Nodes::FlagNodeSets(Vec pv_g, Vec pv_f, Vec pv_s,int analysis_type){
 
 	int i;
@@ -186,5 +186,5 @@
 
 			/*Plug set values intp our 4 set vectors: */
-			node->CreateVecSets(pv_g,pv_m,pv_n,pv_f,pv_s);
+			node->CreateVecSets(pv_g,pv_f,pv_s);
 		}
 	}
@@ -193,10 +193,4 @@
 	VecAssemblyBegin(pv_g);
 	VecAssemblyEnd(pv_g);
-
-	VecAssemblyBegin(pv_m);
-	VecAssemblyEnd(pv_m);
-
-	VecAssemblyBegin(pv_n);
-	VecAssemblyEnd(pv_n);
 
 	VecAssemblyBegin(pv_f);
Index: /issm/trunk/src/c/Container/Nodes.h
===================================================================
--- /issm/trunk/src/c/Container/Nodes.h	(revision 5056)
+++ /issm/trunk/src/c/Container/Nodes.h	(revision 5057)
@@ -21,5 +21,5 @@
 		void  DistributeDofs(int numberofnodes,int numdofspernode,int analysis_type);
 		void  FlagClones(int numberofnodes,int analysis_type);
-		void  FlagNodeSets(Vec pv_g, Vec pv_m, Vec pv_n, Vec pv_f, Vec pv_s,int analysis_type);
+		void  FlagNodeSets(Vec pv_g, Vec pv_f, Vec pv_s,int analysis_type);
 		int   NumberOfDofs(int analysis_type);
 		int   NumberOfNodes(int analysis_type);
Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 5056)
+++ /issm/trunk/src/c/Makefile.am	(revision 5057)
@@ -161,6 +161,4 @@
 					./objects/Constraints/Spc.cpp\
 					./objects/Constraints/Spc.h\
-					./objects/Constraints/Rgb.cpp\
-					./objects/Constraints/Rgb.h\
 					./objects/Loads/Penpair.cpp\
 					./objects/Loads/Penpair.h\
@@ -474,6 +472,4 @@
 					./modules/SpcNodesx/SpcNodesx.h\
 					./modules/SpcNodesx/SpcNodesx.cpp\
-					./modules/MpcNodesx/MpcNodesx.h\
-					./modules/MpcNodesx/MpcNodesx.cpp\
 					./modules/InterpFromGridToMeshx/InterpFromGridToMeshx.cpp\
 					./modules/InterpFromGridToMeshx/InterpFromGridToMeshx.h\
@@ -510,10 +506,7 @@
 					./modules/Reducevectorgtofx/Reducevectorgtofx.h\
 					./modules/Reducematrixfromgtofx/Reducematrixfromgtofx.cpp\
-					./modules/Reducematrixfromgtofx/Reducematrixfromgton.cpp\
 					./modules/Reducematrixfromgtofx/Reducematrixfromgtofx.h\
 					./modules/Reduceloadfromgtofx/Reduceloadfromgtofx.h\
 					./modules/Reduceloadfromgtofx/Reduceloadfromgtofx.cpp\
-					./modules/NormalizeConstraintsx/NormalizeConstraintsx.cpp\
-					./modules/NormalizeConstraintsx/NormalizeConstraintsx.h\
 					./modules/NodeConnectivityx/NodeConnectivityx.cpp\
 					./modules/NodeConnectivityx/NodeConnectivityx.h\
@@ -703,6 +696,4 @@
 					./objects/Constraints/Spc.cpp\
 					./objects/Constraints/Spc.h\
-					./objects/Constraints/Rgb.cpp\
-					./objects/Constraints/Rgb.h\
 					./objects/Loads/Penpair.cpp\
 					./objects/Loads/Penpair.h\
@@ -1013,6 +1004,4 @@
 					./modules/SpcNodesx/SpcNodesx.h\
 					./modules/SpcNodesx/SpcNodesx.cpp\
-					./modules/MpcNodesx/MpcNodesx.h\
-					./modules/MpcNodesx/MpcNodesx.cpp\
 					./modules/InterpFromGridToMeshx/InterpFromGridToMeshx.cpp\
 					./modules/InterpFromGridToMeshx/InterpFromGridToMeshx.h\
@@ -1047,10 +1036,7 @@
 					./modules/Reducevectorgtofx/Reducevectorgtofx.h\
 					./modules/Reducematrixfromgtofx/Reducematrixfromgtofx.cpp\
-					./modules/Reducematrixfromgtofx/Reducematrixfromgton.cpp\
 					./modules/Reducematrixfromgtofx/Reducematrixfromgtofx.h\
 					./modules/Reduceloadfromgtofx/Reduceloadfromgtofx.h\
 					./modules/Reduceloadfromgtofx/Reduceloadfromgtofx.cpp\
-					./modules/NormalizeConstraintsx/NormalizeConstraintsx.cpp\
-					./modules/NormalizeConstraintsx/NormalizeConstraintsx.h\
 					./modules/MassFluxx/MassFluxx.cpp\
 					./modules/MassFluxx/MassFluxx.h\
Index: /issm/trunk/src/c/io/FetchNodeSets.cpp
===================================================================
--- /issm/trunk/src/c/io/FetchNodeSets.cpp	(revision 5056)
+++ /issm/trunk/src/c/io/FetchNodeSets.cpp	(revision 5057)
@@ -19,11 +19,7 @@
 	/*output: */
 	NodeSets* nodesets=NULL;
-	double* pv_m=NULL;
-	double* pv_n=NULL;
 	double* pv_f=NULL;
 	double* pv_s=NULL;
 	int gsize;
-	int msize;
-	int nsize;
 	int fsize;
 	int ssize;
@@ -34,16 +30,12 @@
 	else{
 
-		FetchData(&pv_m,NULL,mxGetField(dataref,0,"pv_m"));
-		FetchData(&pv_n,NULL,mxGetField(dataref,0,"pv_n"));
 		FetchData(&pv_f,NULL,mxGetField(dataref,0,"pv_f"));
 		FetchData(&pv_s,NULL,mxGetField(dataref,0,"pv_s"));
 		
 		gsize=(int)mxGetScalar(mxGetField(dataref,0,"gsize"));
-		msize=(int)mxGetScalar(mxGetField(dataref,0,"msize"));
-		nsize=(int)mxGetScalar(mxGetField(dataref,0,"nsize"));
 		fsize=(int)mxGetScalar(mxGetField(dataref,0,"fsize"));
 		ssize=(int)mxGetScalar(mxGetField(dataref,0,"ssize"));
 
-		nodesets=new NodeSets( pv_m,pv_n,pv_f,pv_s,gsize,msize,nsize,fsize,ssize);
+		nodesets=new NodeSets( pv_f,pv_s,gsize,fsize,ssize);
 	}
 
Index: /issm/trunk/src/c/io/WriteNodeSets.cpp
===================================================================
--- /issm/trunk/src/c/io/WriteNodeSets.cpp	(revision 5056)
+++ /issm/trunk/src/c/io/WriteNodeSets.cpp	(revision 5057)
@@ -21,9 +21,7 @@
 	mxArray* dataref=NULL;
 	int gsize=0;
-	int msize=0;
-	int nsize=0;
 	int fsize=0;
 	int ssize=0;
-	const mwSize nfields=9;
+	const mwSize nfields=5;
 	const	char*	fnames[nfields];
 	mwSize		onebyone[2] = {1,1};
@@ -32,6 +30,4 @@
 	
 	/*intermediary: */
-	double* pv_m=NULL;
-	double* pv_n=NULL;
 	double* pv_f=NULL;
 	double* pv_s=NULL;
@@ -41,17 +37,7 @@
 		/*Recover data from the nodesets class: */
 		gsize=nodesets->GetGSize();
-		msize=nodesets->GetMSize();
-		nsize=nodesets->GetNSize();
 		fsize=nodesets->GetFSize();
 		ssize=nodesets->GetSSize();
 
-		if(msize){
-			pv_m=(double*)xmalloc(msize*sizeof(double));
-			memcpy(pv_m,nodesets->GetPV_M(),msize*sizeof(double));
-		}
-		if(nsize){
-			pv_n=(double*)xmalloc(nsize*sizeof(double));
-			memcpy(pv_n,nodesets->GetPV_N(),nsize*sizeof(double));
-		}
 		if(fsize){
 			pv_f=(double*)xmalloc(fsize*sizeof(double));
@@ -65,40 +51,15 @@
 		/*Build structure in matlab workspace with all these fields: */
 		fnames[0] = "gsize";
-		fnames[1] = "msize";
-		fnames[2] = "nsize";
-		fnames[3] = "fsize";
-		fnames[4] = "ssize";
-		fnames[5] = "pv_m";
-		fnames[6] = "pv_n";
-		fnames[7] = "pv_f";
-		fnames[8] = "pv_s";
+		fnames[1] = "fsize";
+		fnames[2] = "ssize";
+		fnames[3] = "pv_f";
+		fnames[4] = "pv_s";
 
 		dataref=mxCreateStructArray( ndim,onebyone,nfields,fnames);
 		
 		mxSetField( dataref, 0, "gsize",mxCreateDoubleScalar((double)gsize));
-		mxSetField( dataref, 0, "msize",mxCreateDoubleScalar((double)msize));
-		mxSetField( dataref, 0, "nsize",mxCreateDoubleScalar((double)nsize));
 		mxSetField( dataref, 0, "fsize",mxCreateDoubleScalar((double)fsize));
 		mxSetField( dataref, 0, "ssize",mxCreateDoubleScalar((double)ssize));
 
-		if(msize){
-			field = mxCreateDoubleMatrix(0,0,mxREAL);
-			mxSetM(field,msize); mxSetN(field,1); mxSetPr(field,pv_m);
-		}
-		else{
-			field = mxCreateDoubleMatrix(0,0,mxREAL);
-		}
-		mxSetField( dataref, 0, "pv_m",field);
-
-		if(nsize){
-			field = mxCreateDoubleMatrix(0,0,mxREAL);
-			mxSetM(field,nsize); mxSetN(field,1); mxSetPr(field,pv_n);
-		}
-		else{
-			field = mxCreateDoubleMatrix(0,0,mxREAL);
-		}
-		mxSetField( dataref, 0, "pv_n",field);
-
-		
 		if(fsize){
 			field = mxCreateDoubleMatrix(0,0,mxREAL);
Index: /issm/trunk/src/c/modules/BuildNodeSetsx/BuildNodeSetsx.cpp
===================================================================
--- /issm/trunk/src/c/modules/BuildNodeSetsx/BuildNodeSetsx.cpp	(revision 5056)
+++ /issm/trunk/src/c/modules/BuildNodeSetsx/BuildNodeSetsx.cpp	(revision 5057)
@@ -16,19 +16,13 @@
 	/*output: */
 	NodeSets* nodesets=NULL;
-	int gsize,msize,nsize,fsize,ssize;
-	double* pv_m=NULL;
-	double* pv_n=NULL;
+	int gsize,fsize,ssize;
 	double* pv_f=NULL;
 	double* pv_s=NULL;
 	
 	/*intermdiary flags: */
-	Vec vec_pv_m=NULL;
-	Vec vec_pv_n=NULL;
 	Vec vec_pv_f=NULL;
 	Vec vec_pv_s=NULL;
 	
 	Vec flag_pv_g=NULL;
-	Vec flag_pv_m=NULL;
-	Vec flag_pv_n=NULL;
 	Vec flag_pv_f=NULL;
 	Vec flag_pv_s=NULL;
@@ -41,42 +35,31 @@
 		/*Now, allocate parallel vectors for all the sets: */
 		flag_pv_g=NewVec(gsize);
-		flag_pv_m=NewVec(gsize);
-		flag_pv_n=NewVec(gsize);
 		flag_pv_f=NewVec(gsize);
 		flag_pv_s=NewVec(gsize);
 
 		/*Now, go through all nodes and have every node plug into 
-		 * pv_m, pv_n, pv_f and pv_s, their own set flags, for each dof: */
-		nodes->FlagNodeSets(flag_pv_g,flag_pv_m,flag_pv_n,flag_pv_f,flag_pv_s,analysis_type);
+		 * pv_f and pv_s, their own set flags, for each dof: */
+		nodes->FlagNodeSets(flag_pv_g,flag_pv_f,flag_pv_s,analysis_type);
 
-		/*Now, every cpu has 4 flag vectors, of size gsize. Create partition vectors (like a pos=find(flag_pv_g) in matlab*/
-		PartitionSets(&vec_pv_m,&vec_pv_n,flag_pv_g,flag_pv_m,flag_pv_n,gsize); /*! split g set into m and n sets*/
-		PartitionSets(&vec_pv_f,&vec_pv_s,flag_pv_n,flag_pv_f,flag_pv_s,gsize); /*! split n set into f and s sets*/
+		/*Now, every cpu has 2 flag vectors, of size gsize. Create partition vectors (like a pos=find(flag_pv_g) in matlab*/
+		PartitionSets(&vec_pv_f,&vec_pv_s,flag_pv_g,flag_pv_f,flag_pv_s,gsize); /*! split g set into f and s sets*/
 		
 		/*Free ressources:*/
 		VecFree(&flag_pv_g);
-		VecFree(&flag_pv_m);
-		VecFree(&flag_pv_n);
 		VecFree(&flag_pv_f);
 		VecFree(&flag_pv_s);
 
 		/*Serialize vectors: */
-		VecGetSize(vec_pv_m,&msize);
-		VecGetSize(vec_pv_n,&nsize);
 		VecGetSize(vec_pv_f,&fsize);
 		VecGetSize(vec_pv_s,&ssize);
-		VecToMPISerial(&pv_m,vec_pv_m);
-		VecToMPISerial(&pv_n,vec_pv_n);
 		VecToMPISerial(&pv_f,vec_pv_f);
 		VecToMPISerial(&pv_s,vec_pv_s);
 
 		/*Free ressources:*/
-		VecFree(&vec_pv_m);
-		VecFree(&vec_pv_n);
 		VecFree(&vec_pv_f);
 		VecFree(&vec_pv_s);
 
 		/*Create NodeSets* object: */
-		nodesets=new NodeSets(pv_m,pv_n,pv_f,pv_s,gsize,msize,nsize,fsize,ssize);
+		nodesets=new NodeSets(pv_f,pv_s,gsize,fsize,ssize);
 	}
 
Index: /issm/trunk/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp
===================================================================
--- /issm/trunk/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp	(revision 5056)
+++ /issm/trunk/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp	(revision 5057)
@@ -5,5 +5,5 @@
 #include "./Mergesolutionfromftogx.h"
 
-void	Mergesolutionfromftogx( Vec* pug, Vec uf, Mat Gmn, Vec ys, NodeSets* nodesets,bool flag_ys0){
+void	Mergesolutionfromftogx( Vec* pug, Vec uf, Vec ys, NodeSets* nodesets,bool flag_ys0){
 
 	/*output: */
@@ -13,15 +13,10 @@
 	/*intermediary*/
 	Vec ys0=NULL;
-	Vec u_m=NULL;
-	Vec u_n=NULL;
-	int u_n_local_size;
-	int Gmn_localm,Gmn_localn;
 	
-	
-	/*Merge f set back into n set: */
-	u_n=NewVec(nodesets->GetNSize());
-	if(uf) VecMerge(u_n,uf,nodesets->GetPV_F(),nodesets->GetFSize());
+	/*Merge f set back into g set: */
+	ug=NewVec(nodesets->GetGSize());
+	if(uf) VecMerge(ug,uf,nodesets->GetPV_F(),nodesets->GetFSize());
 
-	/*merge single point constraints into n set: */
+	/*merge single point constraints into g set: */
 	if(ys){
 		if (flag_ys0){
@@ -33,28 +28,13 @@
 			VecAssemblyEnd(ys0);
 
-			VecMerge(u_n,ys0,nodesets->GetPV_S(),nodesets->GetSSize());
+			VecMerge(ug,ys0,nodesets->GetPV_S(),nodesets->GetSSize());
 		}
 		else{
-			VecMerge(u_n,ys,nodesets->GetPV_S(),nodesets->GetSSize());
+			VecMerge(ug,ys,nodesets->GetPV_S(),nodesets->GetSSize());
 		}
 	}
 
-	/* Merge n_set and m_set to g_set:*/
-	ug=NewVec(nodesets->GetGSize());
-	VecMerge(ug,u_n,nodesets->GetPV_N(),nodesets->GetNSize());
-
-	/*Merge m set into g set: */
-	if(nodesets->GetMSize()){
-		MatGetLocalSize(Gmn,&Gmn_localm,&Gmn_localn);
-		u_m=NewVecFromLocalSize(Gmn_localm);
-		MatMultPatch(Gmn,u_n,u_m);
-		VecMerge(ug,u_m,nodesets->GetPV_M(),nodesets->GetMSize());
-	}
-	
-		
 	/*Free ressources:*/
 	VecFree(&ys0);
-	VecFree(&u_m);
-	VecFree(&u_n);
 
 	/*Assign correct pointer*/
Index: /issm/trunk/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.h
===================================================================
--- /issm/trunk/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.h	(revision 5056)
+++ /issm/trunk/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.h	(revision 5057)
@@ -9,5 +9,5 @@
 
 /* local prototypes: */
-void	Mergesolutionfromftogx( Vec* pug, Vec uf, Mat Gmn, Vec ys, NodeSets* nodesets,bool flag_ys0=false);
+void	Mergesolutionfromftogx( Vec* pug, Vec uf,Vec ys, NodeSets* nodesets,bool flag_ys0=false);
 
 #endif  /* _MERGESOLUTIONFROMFTOGX_H */
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp	(revision 5056)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp	(revision 5057)
@@ -20,5 +20,4 @@
 	Constraints* constraints = NULL;
 	Spc*    spc  = NULL;
-	Rgb*    rgb  = NULL;
 	int     node1,node2;
 
@@ -65,24 +64,4 @@
 	count=0;
 
-//	if(iomodel->numpenalties){
-//
-//		for (i=0;i<iomodel->numpenalties;i++){
-//
-//			for(j=1;j<iomodel->numlayers;j++){
-//	
-//				/*We are pairing nodes along a vertical profile.*/
-//				node1=(int)*(iomodel->penalties+iomodel->numlayers*i)+iomodel->nodecounter;
-//				node2=(int)*(iomodel->penalties+iomodel->numlayers*i+j)+iomodel->nodecounter;
-//
-//				constraints->AddObject(new Rgb(iomodel->constraintcounter+count+1,node1,node2,1,DiagnosticHorizAnalysisEnum));  //add count'th Rgb on dof 1 between node1 and node2
-//				
-//				count++;
-//				
-//				constraints->AddObject(new Rgb(iomodel->constraintcounter+count+1,node1,node2,2,DiagnosticHorizAnalysisEnum));  //add count'th Rgb on dof 1 between node1 and node2
-//
-//			}
-//		}
-//	}
-
 	/*Free data: */
 	xfree((void**)&iomodel->penalties);
Index: /issm/trunk/src/c/modules/Reduceloadfromgtofx/Reduceloadfromgtofx.cpp
===================================================================
--- /issm/trunk/src/c/modules/Reduceloadfromgtofx/Reduceloadfromgtofx.cpp	(revision 5056)
+++ /issm/trunk/src/c/modules/Reduceloadfromgtofx/Reduceloadfromgtofx.cpp	(revision 5057)
@@ -11,5 +11,5 @@
 #include "./Reduceloadfromgtofx.h"
 
-void	Reduceloadfromgtofx( Vec* ppf, Vec pg, Mat G_mn, Mat Kfs, Vec y_s, NodeSets* nodesets,bool flag_ys0){
+void	Reduceloadfromgtofx( Vec* ppf, Vec pg, Mat Kfs, Vec y_s, NodeSets* nodesets,bool flag_ys0){
 
 	/*output: */
@@ -19,8 +19,4 @@
 	Vec y_s0=NULL;
 	Vec pn=NULL;
-	Vec pm=NULL;
-	Mat tG_mn=NULL;
-	int tG_mnm,tG_mnn;
-	Vec tG_mnpm=NULL;
 	Vec Kfsy_s=NULL;
 	int Kfsm,Kfsn;
@@ -34,29 +30,6 @@
 
 		/* Reduce pg to pn:*/
-		if (nodesets->GetMSize()){
-
-			VecPartition(&pn, pg, nodesets->GetPV_N(), nodesets->GetNSize());
-			VecPartition(&pm, pg, nodesets->GetPV_M(), nodesets->GetMSize());
-		
-			/*Create G_mn'*/
-			#if _PETSC_VERSION_ == 2
-			MatTranspose(G_mn,&tG_mn);  
-			#else
-			MatTranspose(G_mn,MAT_INITIAL_MATRIX,&tG_mn);  
-			#endif
-
-			/*Create G_mn' * pm*/
-			MatGetLocalSize(tG_mn,&tG_mnm,&tG_mnn);
-			tG_mnpm=NewVecFromLocalSize(tG_mnm);
-			MatMultPatch(tG_mn,pm,tG_mnpm);
-
-			/*add pn to G_mn' * pm*/ 
-			a=1;
-			VecAXPY(pn,a,tG_mnpm);  
-		}
-		else{
-			VecDuplicate(pg,&pn);  
-			VecCopy(pg,pn);  
-		}
+		VecDuplicate(pg,&pn);  
+		VecCopy(pg,pn);  
 		
 		/*% Reduce pn to pf:*/
@@ -105,7 +78,4 @@
 	VecFree(&y_s0);
 	VecFree(&pn);
-	VecFree(&pm);
-	MatFree(&tG_mn);
-	VecFree(&tG_mnpm);
 	VecFree(&Kfsy_s);
 
Index: /issm/trunk/src/c/modules/Reduceloadfromgtofx/Reduceloadfromgtofx.h
===================================================================
--- /issm/trunk/src/c/modules/Reduceloadfromgtofx/Reduceloadfromgtofx.h	(revision 5056)
+++ /issm/trunk/src/c/modules/Reduceloadfromgtofx/Reduceloadfromgtofx.h	(revision 5057)
@@ -9,5 +9,5 @@
 
 /* local prototypes: */
-void	Reduceloadfromgtofx( Vec* ppf, Vec pg, Mat Gmn, Mat Kfs, Vec ys, NodeSets* nodesets, bool flag_ys0=false);
+void	Reduceloadfromgtofx( Vec* ppf, Vec pg, Mat Kfs, Vec ys, NodeSets* nodesets, bool flag_ys0=false);
 
 #endif  /* _REDUCELOADFROMGTOFX_H */
Index: /issm/trunk/src/c/modules/Reducematrixfromgtofx/Reducematrixfromgtofx.cpp
===================================================================
--- /issm/trunk/src/c/modules/Reducematrixfromgtofx/Reducematrixfromgtofx.cpp	(revision 5056)
+++ /issm/trunk/src/c/modules/Reducematrixfromgtofx/Reducematrixfromgtofx.cpp	(revision 5057)
@@ -5,5 +5,5 @@
 #include "./Reducematrixfromgtofx.h"
 
-void Reducematrixfromgtofx( Mat* pKff, Mat* pKfs,Mat Kgg,Mat Gmn,NodeSets* nodesets){
+void Reducematrixfromgtofx( Mat* pKff, Mat* pKfs,Mat Kgg,NodeSets* nodesets){
 
 	/*output: */
@@ -11,26 +11,17 @@
 	Mat Kfs=NULL;
 
-	/*intermediary: */
-	Mat Knn=NULL;
-	
-	/*Reduce to n set: */
-	Reducematrixfromgton( &Knn, Kgg, Gmn, nodesets->GetPV_M(), nodesets->GetMSize(),nodesets->GetPV_N(),nodesets->GetNSize(), 2 );
-
-	//Reduce matrix from n-size to f-size
+	//Reduce matrix from g-size to f-size
 	if(nodesets->GetSSize()){
 
 		if(nodesets->GetFSize()){
-			MatPartition(&Kff, Knn, nodesets->GetPV_F(),nodesets->GetFSize(),nodesets->GetPV_F(),nodesets->GetFSize()); 
-			MatPartition(&Kfs, Knn, nodesets->GetPV_F(),nodesets->GetFSize(),nodesets->GetPV_S(),nodesets->GetSSize()); 
+			MatPartition(&Kff, Kgg, nodesets->GetPV_F(),nodesets->GetFSize(),nodesets->GetPV_F(),nodesets->GetFSize()); 
+			MatPartition(&Kfs, Kgg, nodesets->GetPV_F(),nodesets->GetFSize(),nodesets->GetPV_S(),nodesets->GetSSize()); 
 		}
 	}
 	else{
-		MatDuplicate(Knn,MAT_COPY_VALUES,&Kff);
+		MatDuplicate(Kgg,MAT_COPY_VALUES,&Kff);
 		Kfs=NULL;
 	}
 
-	/*Free ressources:*/
-	MatFree(&Knn);
-	
 	/*Assign output pointers:*/
 	*pKff=Kff;
Index: /issm/trunk/src/c/modules/Reducematrixfromgtofx/Reducematrixfromgtofx.h
===================================================================
--- /issm/trunk/src/c/modules/Reducematrixfromgtofx/Reducematrixfromgtofx.h	(revision 5056)
+++ /issm/trunk/src/c/modules/Reducematrixfromgtofx/Reducematrixfromgtofx.h	(revision 5057)
@@ -10,6 +10,5 @@
 
 /* local prototypes: */
-void	Reducematrixfromgtofx( Mat* pKff, Mat* pKfs,Mat Kgg,Mat Gmn,NodeSets* nodesets);
-void    Reducematrixfromgton(Mat* pKnn,Mat Kgg,Mat Gmn,double* pv_m,int msize, double* pv_n,int nsize,int flag);
+void	Reducematrixfromgtofx( Mat* pKff, Mat* pKfs,Mat Kgg,NodeSets* nodesets);
 
 #endif  /* _REDUCEMATRIXFROMGTOFX_H */
Index: sm/trunk/src/c/modules/Reducematrixfromgtofx/Reducematrixfromgton.cpp
===================================================================
--- /issm/trunk/src/c/modules/Reducematrixfromgtofx/Reducematrixfromgton.cpp	(revision 5056)
+++ 	(revision )
@@ -1,73 +1,0 @@
-/*!\file: Reducematrixfromgton
- * \brief
- */ 
-
-#ifdef HAVE_CONFIG_H
-	#include "config.h"
-#else
-#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
-#endif
-
-#include "../../toolkits/toolkits.h"
-
-void  Reducematrixfromgton(Mat* pKnn,Mat Kgg,Mat Gmn,double* pv_m,int msize, double* pv_n,int nsize,int flag){
-
-
-	/*output: */
-	Mat Knn=NULL;
-
-	/*intermediary: */
-	Mat Kmm=NULL;
-	Mat Kmn=NULL;
-	Mat Knm=NULL;
-	Mat KnmGmn=NULL;
-	Mat KmmGmn=NULL;
-	Mat tGmn=NULL;
-	Mat tGmnKmn=NULL;
-	PetscScalar a=1;
-
-	if (msize){
-		
-		/*Partition K_gg*/
-		MatPartition(&Kmm, Kgg, pv_m,msize,pv_m,msize); 
-		MatPartition(&Kmn, Kgg, pv_m,msize,pv_n,nsize); 
-		MatPartition(&Knm, Kgg, pv_n,nsize,pv_m,msize); 
-		MatPartition(&Knn, Kgg, pv_n,nsize,pv_n,nsize);
-	
-		/*Reduce K_gg to K_nn*/
-		//K_nn = K_nn + K_nm * G_mn;
-		MatMatMult(Knm,Gmn,MAT_INITIAL_MATRIX,PETSC_DEFAULT,&KnmGmn);
-		MatAXPY(Knn,a,KnmGmn,DIFFERENT_NONZERO_PATTERN);
-
-		if (flag!=1){
-			//K_mn = K_mn + K_mm * G_mn;
-			MatMatMult(Kmm,Gmn,MAT_INITIAL_MATRIX,PETSC_DEFAULT,&KmmGmn);
-			MatAXPY(Kmn,a,KmmGmn,DIFFERENT_NONZERO_PATTERN);
-			
-			//K_nn = K_nn + G_mn' * K_mn;
-			#if _PETSC_VERSION_ == 2
-			MatTranspose(Gmn,&tGmn);
-			#else
-			MatTranspose(Gmn,MAT_INITIAL_MATRIX,&tGmn);
-			#endif
-			MatMatMult(tGmn,Kmn,MAT_INITIAL_MATRIX,PETSC_DEFAULT,&tGmnKmn);
-			MatAXPY(Knn,a,tGmnKmn,DIFFERENT_NONZERO_PATTERN);
-		}
-	}
-	else{
-		/*msize=0 just return input*/
-		MatDuplicate(Kgg,MAT_COPY_VALUES,&Knn);
-	}	
-
-	/*Free ressources:*/
-	MatFree(&Kmm);
-	MatFree(&Kmn);
-	MatFree(&Knm);
-	MatFree(&KnmGmn);
-	MatFree(&KmmGmn);
-	MatFree(&tGmn);
-	MatFree(&tGmnKmn);
-	
-	/*Assign output pointers:*/
-	*pKnn=Knn;
-}
Index: /issm/trunk/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp
===================================================================
--- /issm/trunk/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp	(revision 5056)
+++ /issm/trunk/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp	(revision 5057)
@@ -11,20 +11,12 @@
 	Vec uf=NULL;
 
-	/*intermediary: */
-	Vec un=NULL;
-
 	if(nodesets){
 
 
-		if (nodesets->GetNSize() && nodesets->GetFSize()){
+		if (nodesets->GetGSize() && nodesets->GetFSize()){
 
-			VecPartition(&un,ug,nodesets->GetPV_N(),nodesets->GetNSize());
-		
-			VecPartition(&uf,un,nodesets->GetPV_F(),nodesets->GetFSize());
+			VecPartition(&uf,ug,nodesets->GetPV_F(),nodesets->GetFSize());
 		
 		}
-
-		/*Free ressources:*/
-		VecFree(&un);
 	}
 	
Index: /issm/trunk/src/c/modules/Reducevectorgtosx/Reducevectorgtosx.cpp
===================================================================
--- /issm/trunk/src/c/modules/Reducevectorgtosx/Reducevectorgtosx.cpp	(revision 5056)
+++ /issm/trunk/src/c/modules/Reducevectorgtosx/Reducevectorgtosx.cpp	(revision 5057)
@@ -11,20 +11,8 @@
 	Vec ys=NULL;
 
-	/*intermediary: */
-	Vec yn=NULL;
-
 	if(nodesets){
-
-
-		if (nodesets->GetNSize() && nodesets->GetSSize()){
-
-			VecPartition(&yn,yg,nodesets->GetPV_N(),nodesets->GetNSize());
-		
-			VecPartition(&ys,yn,nodesets->GetPV_S(),nodesets->GetSSize());
-		
+		if (nodesets->GetGSize() && nodesets->GetSSize()){
+			VecPartition(&ys,yg,nodesets->GetPV_S(),nodesets->GetSSize());
 		}
-
-		/*Free ressources:*/
-		VecFree(&yn);
 	}
 	
Index: /issm/trunk/src/c/modules/modules.h
===================================================================
--- /issm/trunk/src/c/modules/modules.h	(revision 5056)
+++ /issm/trunk/src/c/modules/modules.h	(revision 5057)
@@ -57,8 +57,6 @@
 #include "./Misfitx/Misfitx.h"
 #include "./ModelProcessorx/ModelProcessorx.h"
-#include "./MpcNodesx/MpcNodesx.h"
 #include "./NodeConnectivityx/NodeConnectivityx.h"
 #include "./NodesDofx/NodesDofx.h"
-#include "./NormalizeConstraintsx/NormalizeConstraintsx.h"
 #include "./Orthx/Orthx.h"
 #include "./OutputResultsx/OutputResultsx.h"
Index: sm/trunk/src/c/objects/Constraints/Rgb.cpp
===================================================================
--- /issm/trunk/src/c/objects/Constraints/Rgb.cpp	(revision 5056)
+++ 	(revision )
@@ -1,172 +1,0 @@
-/*!\file Rgb.c
- * \brief: implementation of the Rgb 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 "../../EnumDefinitions/EnumDefinitions.h"
-#include "../../Container/Container.h"
-#include "../../shared/shared.h"
-#include "../../include/include.h"
-#include "../objects.h"
-
-/*Rgb constructors and destructor*/
-/*FUNCTION Rgb::Rgb(){{{1*/
-Rgb::Rgb(){
-	return;
-}
-/*}}}1*/
-/*FUNCTION Rgb::Rgb(int rgb_id,int rgb_nodeid1,...){{{1*/
-Rgb::Rgb(int rgb_id,int rgb_nodeid1,int rgb_nodeid2, int rgb_dof,int rgb_analysis_type){
-
-	id=rgb_id;
-	nodeid1=rgb_nodeid1;
-	nodeid2=rgb_nodeid2;
-	dof=rgb_dof;
-	analysis_type=rgb_analysis_type;
-
-	return;
-}
-/*}}}1*/
-/*FUNCTION Rgb::~Rgb{{{1*/
-Rgb::~Rgb(){
-	return;
-}
-/*}}}1*/
-		
-/*Object virtual functions definitions:*/
-/*FUNCTION Rgb::Echo {{{1*/
-void Rgb::Echo(void){
-
-	printf("Rgb:\n");
-	printf("   id: %i\n",id);
-	printf("   nodeid1: %i\n",nodeid1);
-	printf("   nodeid2: %i\n",nodeid2);
-	printf("   dof: %i\n",dof);
-	printf("   analysis_type: %s\n",EnumAsString(analysis_type));
-	return;
-}
-/*}}}1*/
-/*FUNCTION Rgb::DeepEcho {{{1*/
-void Rgb::DeepEcho(void){
-
-	printf("Rgb:\n");
-	printf("   id: %i\n",id);
-	printf("   nodeid1: %i\n",nodeid1);
-	printf("   nodeid2: %i\n",nodeid2);
-	printf("   dof: %i\n",dof);
-	printf("   analysis_type: %s\n",EnumAsString(analysis_type));
-	return;
-}		
-/*}}}1*/
-/*FUNCTION Rgb::Id {{{1*/
-int    Rgb::Id(void){ return id; }
-/*}}}1*/
-/*FUNCTION Rgb::MyRank {{{1*/
-int    Rgb::MyRank(void){ 
-	extern int my_rank;
-	return my_rank; 
-}
-/*}}}1*/
-/*FUNCTION Rgb::Marshall {{{1*/
-void  Rgb::Marshall(char** pmarshalled_dataset){
-
-	char* marshalled_dataset=NULL;
-	int   enum_type=0;
-
-	/*recover marshalled_dataset: */
-	marshalled_dataset=*pmarshalled_dataset;
-
-	/*get enum type of Rgb: */
-	enum_type=RgbEnum;
-	
-	/*marshall enum: */
-	memcpy(marshalled_dataset,&enum_type,sizeof(enum_type));marshalled_dataset+=sizeof(enum_type);
-	
-	/*marshall Rgb data: */
-	memcpy(marshalled_dataset,&id,sizeof(id));marshalled_dataset+=sizeof(id);
-	memcpy(marshalled_dataset,&nodeid1,sizeof(nodeid1));marshalled_dataset+=sizeof(nodeid1);
-	memcpy(marshalled_dataset,&nodeid2,sizeof(nodeid2));marshalled_dataset+=sizeof(nodeid2);
-	memcpy(marshalled_dataset,&dof,sizeof(dof));marshalled_dataset+=sizeof(dof);
-	memcpy(marshalled_dataset,&analysis_type,sizeof(analysis_type));marshalled_dataset+=sizeof(analysis_type);
-
-	*pmarshalled_dataset=marshalled_dataset;
-	return;
-}
-/*}}}1*/
-/*FUNCTION Rgb::MarshallSize {{{1*/
-int   Rgb::MarshallSize(){
-
-	return sizeof(id)+
-		sizeof(nodeid1)+
-		sizeof(nodeid2)+
-		sizeof(dof)+
-		sizeof(analysis_type)+
-		sizeof(int); //sizeof(int) for enum type
-}
-/*}}}1*/
-/*FUNCTION Rgb::Demarshall {{{1*/
-void  Rgb::Demarshall(char** pmarshalled_dataset){
-
-	char* marshalled_dataset=NULL;
-
-	/*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(&id,marshalled_dataset,sizeof(id));marshalled_dataset+=sizeof(id);
-	memcpy(&nodeid1,marshalled_dataset,sizeof(nodeid1));marshalled_dataset+=sizeof(nodeid1);
-	memcpy(&nodeid2,marshalled_dataset,sizeof(nodeid2));marshalled_dataset+=sizeof(nodeid2);
-	memcpy(&dof,marshalled_dataset,sizeof(dof));marshalled_dataset+=sizeof(dof);
-	memcpy(&analysis_type,marshalled_dataset,sizeof(analysis_type));marshalled_dataset+=sizeof(analysis_type);
-
-	/*return: */
-	*pmarshalled_dataset=marshalled_dataset;
-	return;
-}
-/*}}}1*/
-/*FUNCTION Rgb::Enum {{{1*/
-int Rgb::Enum(void){
-
-	return RgbEnum;
-
-}
-/*}}}1*/
-/*FUNCTION Rgb::copy {{{1*/
-Object* Rgb::copy() {
-	return new Rgb(*this); 
-}
-/*}}}1*/
-
-/*Rgb functions*/
-/*FUNCTION Rgb::GetNodeId1{{{1*/
-int   Rgb::GetNodeId1(){
-	
-	return nodeid1;
-}
-/*}}}1*/
-/*FUNCTION Rgb::GetNodeId2 {{{1*/
-int   Rgb::GetNodeId2(){
-	
-	return nodeid2;
-}
-/*}}}1*/
-/*FUNCTION Rgb::GetDof {{{1*/
-int Rgb::GetDof(){
-	return dof;
-}
-/*}}}1*/
-/*FUNCTION Rgb::InAnalysis{{{1*/
-bool Rgb::InAnalysis(int in_analysis_type){
-	if (in_analysis_type==this->analysis_type)return true;
-	else return false;
-}
-/*}}}*/
Index: sm/trunk/src/c/objects/Constraints/Rgb.h
===================================================================
--- /issm/trunk/src/c/objects/Constraints/Rgb.h	(revision 5056)
+++ 	(revision )
@@ -1,51 +1,0 @@
-/*!\file Rgb.h
- * \brief: header file for rgb object
- */
-
-#ifndef _RGB_H_
-#define _RGB_H_
-
-/*Headers:*/
-/*{{{1*/
-#include "../Object.h"
-class DataSet;
-/*}}}*/
-
-class Rgb: public Object{
-
-	private: 
-		int	id; /*! id, to track it*/
-		int	nodeid1; 
-		int	nodeid2; 
-		int dof; /*!component*/
-		int analysis_type;
-
-	public:
-
-		/*Rgb constructors, destructors:{{{1*/
-		Rgb();
-		Rgb(int rgb_id,int rgb_nodeid1,int rgb_nodeid2, int rgb_dof,int analysis_type);
-		~Rgb();
-		/*}}}*/
-		/*Object virtual functions definitions:{{{1 */
-		void  Echo();
-		void  DeepEcho();
-		int   Id(); 
-		int   MyRank();
-		void  Marshall(char** pmarshalled_dataset);
-		int   MarshallSize();
-		void  Demarshall(char** pmarshalled_dataset);
-		int   Enum();
-		Object* copy();
-		/*}}}*/
-		/*Rgb management: {{{1*/
-		int    GetNodeId1();
-		int    GetNodeId2();
-		int    GetDof();
-		bool   InAnalysis(int analysis_type);
-		/*}}}*/
-
-
-};
-
-#endif  /* _RGB_H_ */
Index: /issm/trunk/src/c/objects/DofIndexing.cpp
===================================================================
--- /issm/trunk/src/c/objects/DofIndexing.cpp	(revision 5056)
+++ /issm/trunk/src/c/objects/DofIndexing.cpp	(revision 5057)
@@ -27,6 +27,4 @@
 	for (i=0;i<MAXDOFSPERNODE;i++){
 		/*assume dof is free, no constraints, no rigid body constraint: */
-		this->m_set[i]=0;
-		this->n_set[i]=1;
 		this->f_set[i]=1;
 		this->s_set[i]=0;
@@ -48,6 +46,4 @@
 
 	for(i=0;i<MAXDOFSPERNODE;i++){
-		this->m_set[i]=in->m_set[i];
-		this->n_set[i]=in->n_set[i];
 		this->f_set[i]=in->f_set[i];
 		this->s_set[i]=in->s_set[i];
@@ -69,6 +65,4 @@
 	for (i=0;i<MAXDOFSPERNODE;i++){
 		/*assume dof is free, no constraints, no rigid body constraint: */
-		this->m_set[i]=0;
-		this->n_set[i]=1;
 		this->f_set[i]=1;
 		this->s_set[i]=0;
@@ -98,8 +92,8 @@
 	printf("   clone: %i\n",clone);
 	
-	printf("   set membership: m,n,f,s sets \n");
+	printf("   set membership: f,s sets \n");
 	for(i=0;i<numberofdofs;i++){
 		if(i>MAXDOFSPERNODE)break;
-		printf("      dof %i: %i %i %i %i\n",i,m_set[i],n_set[i],f_set[i],s_set[i]);
+		printf("      dof %i: %i %i\n",i,f_set[i],s_set[i]);
 	}
 	printf("\n");
@@ -128,6 +122,4 @@
 	memcpy(&numberofdofs,marshalled_dataset,sizeof(numberofdofs));marshalled_dataset+=sizeof(numberofdofs);
 	memcpy(&clone,marshalled_dataset,sizeof(clone));marshalled_dataset+=sizeof(clone);
-	memcpy(&m_set,marshalled_dataset,sizeof(m_set));marshalled_dataset+=sizeof(m_set);
-	memcpy(&n_set,marshalled_dataset,sizeof(n_set));marshalled_dataset+=sizeof(n_set);
 	memcpy(&f_set,marshalled_dataset,sizeof(f_set));marshalled_dataset+=sizeof(f_set);
 	memcpy(&s_set,marshalled_dataset,sizeof(s_set));marshalled_dataset+=sizeof(s_set);
@@ -157,6 +149,4 @@
 	memcpy(marshalled_dataset,&numberofdofs,sizeof(numberofdofs));marshalled_dataset+=sizeof(numberofdofs);
 	memcpy(marshalled_dataset,&clone,sizeof(clone));marshalled_dataset+=sizeof(clone);
-	memcpy(marshalled_dataset,&m_set,sizeof(m_set));marshalled_dataset+=sizeof(m_set);
-	memcpy(marshalled_dataset,&n_set,sizeof(n_set));marshalled_dataset+=sizeof(n_set);
 	memcpy(marshalled_dataset,&f_set,sizeof(f_set));marshalled_dataset+=sizeof(f_set);
 	memcpy(marshalled_dataset,&s_set,sizeof(s_set));marshalled_dataset+=sizeof(s_set);
@@ -172,6 +162,4 @@
 	return sizeof(numberofdofs)+
 		sizeof(clone)+
-		sizeof(m_set)+
-		sizeof(n_set)+
 		sizeof(f_set)+
 		sizeof(s_set)+
Index: /issm/trunk/src/c/objects/DofIndexing.h
===================================================================
--- /issm/trunk/src/c/objects/DofIndexing.h	(revision 5056)
+++ /issm/trunk/src/c/objects/DofIndexing.h	(revision 5057)
@@ -18,6 +18,4 @@
 
 		/*boundary conditions sets: */
-		int     m_set[MAXDOFSPERNODE];
-		int     n_set[MAXDOFSPERNODE];
 		int     f_set[MAXDOFSPERNODE];
 		int     s_set[MAXDOFSPERNODE];
Index: /issm/trunk/src/c/objects/FemModel.cpp
===================================================================
--- /issm/trunk/src/c/objects/FemModel.cpp	(revision 5056)
+++ /issm/trunk/src/c/objects/FemModel.cpp	(revision 5057)
@@ -37,6 +37,4 @@
 	/*Dynamically allocate whatever is a list of length nummodels: */
 	analysis_type_list=(int*)xmalloc(nummodels*sizeof(int));
-	m_Rmg=(Mat*)xmalloc(nummodels*sizeof(Mat));
-	m_Gmn=(Mat*)xmalloc(nummodels*sizeof(Mat));
 	m_nodesets=(NodeSets**)xmalloc(nummodels*sizeof(NodeSets*));
 	m_yg=(Vec*)xmalloc(nummodels*sizeof(Vec));
@@ -45,6 +43,4 @@
 	/*Initialize: */
 	for(i=0;i<nummodels;i++)analysis_type_list[i]=analyses[i];
-	for(i=0;i<nummodels;i++)m_Rmg[i]=NULL;
-	for(i=0;i<nummodels;i++)m_Gmn[i]=NULL;
 	for(i=0;i<nummodels;i++)m_nodesets[i]=NULL;
 	for(i=0;i<nummodels;i++)m_yg[i]=NULL;
@@ -68,7 +64,4 @@
 		SpcNodesx( &m_yg[i], nodes,constraints,analysis_type); 
 
-		_printf_("      create rigid body constraints\n");
-		MpcNodesx( &m_Rmg[i], nodes,constraints,analysis_type); 
-
 		_printf_("      create node sets\n");
 		BuildNodeSetsx(&m_nodesets[i], nodes,analysis_type);
@@ -76,7 +69,4 @@
 		_printf_("      reducing single point constraints vector\n");
 		Reducevectorgtosx(&m_ys[i], m_yg[i],m_nodesets[i]);
-
-		_printf_("      normalizing rigid body constraints matrix\n");
-		NormalizeConstraintsx(&m_Gmn[i], m_Rmg[i],m_nodesets[i]);
 
 		_printf_("      configuring element and loads\n");
@@ -105,8 +95,4 @@
 
 	for(i=0;i<nummodels;i++){
-		Mat temp_Rmg=m_Rmg[i];
-		MatFree(&temp_Rmg);
-		Mat temp_Gmn=m_Gmn[i];
-		MatFree(&temp_Gmn);
 		NodeSets* temp_nodesets=m_nodesets[i];
 		delete temp_nodesets;
@@ -118,6 +104,4 @@
 
 	/*Delete dynamically allocated arrays: */
-	xfree((void**)&m_Rmg);
-	xfree((void**)&m_Gmn);
 	xfree((void**)&m_nodesets);
 	xfree((void**)&m_yg);
@@ -162,6 +146,4 @@
 
 	/*activate matrices/vectors: */
-	Rmg=m_Rmg[analysis_counter];
-	Gmn=m_Gmn[analysis_counter];
 	nodesets=m_nodesets[analysis_counter];
 	yg=m_yg[analysis_counter];
Index: /issm/trunk/src/c/objects/FemModel.h
===================================================================
--- /issm/trunk/src/c/objects/FemModel.h	(revision 5056)
+++ /issm/trunk/src/c/objects/FemModel.h	(revision 5057)
@@ -40,6 +40,4 @@
 		
 		//multiple  sets of matrices/vectors for each analysis_type. m stands for multiple
-		Mat*                 m_Rmg; //rigid body motions matrices
-		Mat*                 m_Gmn;
 		NodeSets**           m_nodesets; //boundary conditions dof sets
 		Vec*                 m_yg; //boundary conditions in global g-set
@@ -47,6 +45,4 @@
 
 		//pointers to point to sets of matrices/vectors, for a certain analysis type. activated in SetCurrentAnalysis
-		Mat                  Rmg;
-		Mat                  Gmn;
 		NodeSets*            nodesets;
 		Vec                  yg;
Index: /issm/trunk/src/c/objects/Node.cpp
===================================================================
--- /issm/trunk/src/c/objects/Node.cpp	(revision 5056)
+++ /issm/trunk/src/c/objects/Node.cpp	(revision 5057)
@@ -410,5 +410,5 @@
 /*}}}*/
 /*FUNCTION Node::CreateVecSets {{{1*/
-void  Node::CreateVecSets(Vec pv_g,Vec pv_m,Vec pv_n,Vec pv_f,Vec pv_s){
+void  Node::CreateVecSets(Vec pv_g,Vec pv_f,Vec pv_s){
 
 	double gvalue=1.0; //all nodes are in the g set;
@@ -422,12 +422,4 @@
 		VecSetValues(pv_g,1,&indexing.doflist[i],&gvalue,INSERT_VALUES);
 		
-		/*m set: */
-		value=(double)this->indexing.m_set[i];
-		VecSetValues(pv_m,1,&indexing.doflist[i],&value,INSERT_VALUES);
-
-		/*n set: */
-		value=(double)this->indexing.n_set[i];
-		VecSetValues(pv_n,1,&indexing.doflist[i],&value,INSERT_VALUES);
-
 		/*f set: */
 		value=(double)this->indexing.f_set[i];
@@ -443,15 +435,4 @@
 }
 /*}}}*/
-/*FUNCTION Node::DofInMSet{{{1*/
-void  Node::DofInMSet(int dof){
-
-	/*Put dof for this node into the m set (m set is for rigid body modes)*/
-
-	this->indexing.m_set[dof]=1; //m and n are mutually exclusive (m for rigid body modes)
-	this->indexing.n_set[dof]=0;
-	this->indexing.f_set[dof]=0; //n splits into f (for which we solve) and s (single point constraints)
-	this->indexing.s_set[dof]=0;
-}
-/*}}}*/
 /*FUNCTION Node::DofInSSet {{{1*/
 void  Node::DofInSSet(int dof){
@@ -460,16 +441,6 @@
 	 * to a fixed value during computations. */
 
-	this->indexing.m_set[dof]=0; //m and n are mutually exclusive (m for rigid body modes)
-	this->indexing.n_set[dof]=1;
 	this->indexing.f_set[dof]=0; //n splits into f (for which we solve) and s (single point constraints)
 	this->indexing.s_set[dof]=1;
-}
-/*}}}*/
-/*FUNCTION Node::DofIsInMSet{{{1*/
-int  Node::DofIsInMSet(int dof){
-
-	if (this->indexing.m_set[dof])return 1;
-	else return 0;
-
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/Node.h
===================================================================
--- /issm/trunk/src/c/objects/Node.h	(revision 5056)
+++ /issm/trunk/src/c/objects/Node.h	(revision 5057)
@@ -72,8 +72,6 @@
 		void  ApplyConstraint(Vec yg,int dof,double value);
 		void  DofInSSet(int dof);
-		void  DofInMSet(int dof);
-		 int  DofIsInMSet(int dof);
 		int   GetDof(int dofindex);
-		void  CreateVecSets(Vec pv_g,Vec pv_m,Vec pv_n,Vec pv_f,Vec pv_s);
+		void  CreateVecSets(Vec pv_g,Vec pv_f,Vec pv_s);
 		int   GetConnectivity();
 		void  GetDofList(int* outdoflist,int* pnumberofdofspernode);
Index: /issm/trunk/src/c/objects/NodeSets.cpp
===================================================================
--- /issm/trunk/src/c/objects/NodeSets.cpp	(revision 5056)
+++ /issm/trunk/src/c/objects/NodeSets.cpp	(revision 5057)
@@ -9,15 +9,10 @@
 /*constructors and destructors*/
 /*FUNCTION NodeSets::NodeSets{{{1*/
-NodeSets::NodeSets( double* nodesets_pv_m,double* nodesets_pv_n,double* nodesets_pv_f,double* nodesets_pv_s,
-		int nodesets_gsize,int nodesets_msize,int nodesets_nsize,int nodesets_fsize,int nodesets_ssize){
+NodeSets::NodeSets( double* nodesets_pv_f,double* nodesets_pv_s, int nodesets_gsize,int nodesets_fsize,int nodesets_ssize){
 
 	gsize=nodesets_gsize;
-	msize=nodesets_msize;
-	nsize=nodesets_nsize;
 	fsize=nodesets_fsize;
 	ssize=nodesets_ssize;
 
-	pv_m=nodesets_pv_m;
-	pv_n=nodesets_pv_n;
 	pv_f=nodesets_pv_f;
 	pv_s=nodesets_pv_s;
@@ -27,6 +22,4 @@
 NodeSets::~NodeSets(void){
 
-	xfree((void**)&pv_m);
-	xfree((void**)&pv_n);
 	xfree((void**)&pv_f);
 	xfree((void**)&pv_s);
@@ -42,23 +35,7 @@
 	printf("\nNodeSets echo:\n");
 	printf(" gsize: %i\n",gsize);
-	printf(" msize: %i\n",msize);
-	printf(" nsize: %i\n",nsize);
 	printf(" fsize: %i\n",fsize);
 	printf(" ssize: %i\n",ssize);
 
-	if(pv_m){
-		printf("m set:\n");
-		for(i=0;i<msize;i++){
-			printf("%g\n",pv_m[i]);
-		}
-	}
-		
-	if(pv_n){
-		printf("n set:\n");
-		for(i=0;i<nsize;i++){
-			printf("%g\n",pv_n[i]);
-		}
-	}
-	
 	if(pv_f){
 		printf("f set:\n");
@@ -79,12 +56,4 @@
 	return gsize;
 }/*}}}*/
-/*FUNCTION NodeSets::GetMSize{{{1*/
-int NodeSets::GetMSize(){
-	return msize;
-}/*}}}*/
-/*FUNCTION NodeSets::GetNSize{{{1*/
-int NodeSets::GetNSize(){
-	return nsize;
-}/*}}}*/
 /*FUNCTION NodeSets::GetFSize{{{1*/
 int NodeSets::GetFSize(){
@@ -94,12 +63,4 @@
 int NodeSets::GetSSize(){
 	return ssize;
-}/*}}}*/
-/*FUNCTION NodeSets::GetPV_M{{{1*/
-double* NodeSets::GetPV_M(){
-	return pv_m;
-}/*}}}*/
-/*FUNCTION NodeSets::GetPV_N{{{1*/
-double* NodeSets::GetPV_N(){
-	return pv_n;
 }/*}}}*/
 /*FUNCTION NodeSets::GetPV_F{{{1*/
Index: /issm/trunk/src/c/objects/NodeSets.h
===================================================================
--- /issm/trunk/src/c/objects/NodeSets.h	(revision 5056)
+++ /issm/trunk/src/c/objects/NodeSets.h	(revision 5057)
@@ -14,11 +14,7 @@
 	private:
 		int gsize;
-		int msize;
-		int nsize;
 		int fsize;
 		int ssize;
 
-		double* pv_m;
-		double* pv_n;
 		double* pv_f;
 		double* pv_s;
@@ -26,15 +22,11 @@
 	public:
 
-	NodeSets( double* pv_m,double* pv_n,double* pv_f,double* pv_s,int gsize,int msize,int nsize,int fsize,int ssize);
+	NodeSets( double* pv_f,double* pv_s,int gsize,int fsize,int ssize);
 	~NodeSets();
 
 	void Echo();
 	int GetGSize();
-	int GetMSize();
-	int GetNSize();
 	int GetFSize();
 	int GetSSize();
-	double* GetPV_M();
-	double* GetPV_N();
 	double* GetPV_F();
 	double* GetPV_S();
Index: /issm/trunk/src/c/objects/objects.h
===================================================================
--- /issm/trunk/src/c/objects/objects.h	(revision 5056)
+++ /issm/trunk/src/c/objects/objects.h	(revision 5057)
@@ -22,5 +22,4 @@
 /*Constraints: */
 #include "./Constraints/Spc.h"
-#include "./Constraints/Rgb.h"
 
 /*Loads: */
Index: /issm/trunk/src/c/solvers/solver_adjoint_linear.cpp
===================================================================
--- /issm/trunk/src/c/solvers/solver_adjoint_linear.cpp	(revision 5056)
+++ /issm/trunk/src/c/solvers/solver_adjoint_linear.cpp	(revision 5057)
@@ -43,9 +43,9 @@
 	/*!Reduce matrix from g to f size:*/
 	if(verbose)_printf_("   reducing matrix from g to f set\n");
-	Reducematrixfromgtofx(&Kff,&Kfs,Kgg,fem->Gmn,fem->nodesets); MatFree(&Kgg);
+	Reducematrixfromgtofx(&Kff,&Kfs,Kgg,fem->nodesets); MatFree(&Kgg);
 
 	/*!Reduce load from g to f size: */
 	if(verbose)_printf_("   reducing load from g to f set\n"); //true means spc = 0
-	Reduceloadfromgtofx(&pf, pg, fem->Gmn, Kfs, fem->ys, fem->nodesets,true);VecFree(&pg); MatFree(&Kfs);
+	Reduceloadfromgtofx(&pf, pg, Kfs, fem->ys, fem->nodesets,true);VecFree(&pg); MatFree(&Kfs);
 
 	/*Solve: */
@@ -55,5 +55,5 @@
 	//Merge back to g set
 	if(verbose)_printf_("   merging solution from f to g set\n");//true means spc=0
-	Mergesolutionfromftogx(&ug, uf,fem->Gmn,fem->ys,fem->nodesets,true);VecFree(&uf);
+	Mergesolutionfromftogx(&ug, uf,fem->ys,fem->nodesets,true);VecFree(&uf);
 
 	//Update inputs using new solution:
Index: /issm/trunk/src/c/solvers/solver_diagnostic_nonlinear.cpp
===================================================================
--- /issm/trunk/src/c/solvers/solver_diagnostic_nonlinear.cpp	(revision 5056)
+++ /issm/trunk/src/c/solvers/solver_diagnostic_nonlinear.cpp	(revision 5057)
@@ -78,5 +78,5 @@
 		
 		if(verbose)_printf_("   reducing matrix from g to f set\n");
-		Reducematrixfromgtofx(&Kff,&Kfs,Kgg,femmodel->Gmn,femmodel->nodesets);
+		Reducematrixfromgtofx(&Kff,&Kfs,Kgg,femmodel->nodesets);
 
 		/*Free ressources: */
@@ -84,5 +84,5 @@
 	
 		if(verbose)_printf_("   reducing load from g to f set\n");
-		Reduceloadfromgtofx(&pf, pg, femmodel->Gmn, Kfs, femmodel->ys, femmodel->nodesets);
+		Reduceloadfromgtofx(&pf, pg, Kfs, femmodel->ys, femmodel->nodesets);
 
 		//no need for pg and Kfs anymore 
@@ -94,5 +94,5 @@
 
 		if(verbose)_printf_("   merging solution from f to g set\n");
-		Mergesolutionfromftogx(&ug, uf,femmodel->Gmn,femmodel->ys,femmodel->nodesets);
+		Mergesolutionfromftogx(&ug, uf,femmodel->ys,femmodel->nodesets);
 
 		//Update inputs using new solution:
Index: /issm/trunk/src/c/solvers/solver_linear.cpp
===================================================================
--- /issm/trunk/src/c/solvers/solver_linear.cpp	(revision 5056)
+++ /issm/trunk/src/c/solvers/solver_linear.cpp	(revision 5057)
@@ -41,9 +41,9 @@
 	/*!Reduce matrix from g to f size:*/
 	if(verbose)_printf_("   reducing matrix from g to f set\n");
-	Reducematrixfromgtofx(&Kff,&Kfs,Kgg,fem->Gmn,fem->nodesets); MatFree(&Kgg);
+	Reducematrixfromgtofx(&Kff,&Kfs,Kgg,fem->nodesets); MatFree(&Kgg);
 
 	/*!Reduce load from g to f size: */
 	if(verbose)_printf_("   reducing load from g to f set\n");
-	Reduceloadfromgtofx(&pf, pg, fem->Gmn, Kfs, fem->ys, fem->nodesets);VecFree(&pg); MatFree(&Kfs);
+	Reduceloadfromgtofx(&pf, pg, Kfs, fem->ys, fem->nodesets);VecFree(&pg); MatFree(&Kfs);
 
 	/*Solve: */
@@ -53,5 +53,5 @@
 	//Merge back to g set
 	if(verbose)_printf_("   merging solution from f to g set\n");
-	Mergesolutionfromftogx(&ug, uf,fem->Gmn,fem->ys,fem->nodesets);VecFree(&uf);
+	Mergesolutionfromftogx(&ug, uf,fem->ys,fem->nodesets);VecFree(&uf);
 
 	//Update inputs using new solution:
Index: /issm/trunk/src/c/solvers/solver_thermal_nonlinear.cpp
===================================================================
--- /issm/trunk/src/c/solvers/solver_thermal_nonlinear.cpp	(revision 5056)
+++ /issm/trunk/src/c/solvers/solver_thermal_nonlinear.cpp	(revision 5057)
@@ -78,5 +78,5 @@
 
 		/*!Reduce matrix from g to f size:*/
-		Reducematrixfromgtofx(&Kff,&Kfs,Kgg,fem->Gmn,fem->nodesets);
+		Reducematrixfromgtofx(&Kff,&Kfs,Kgg,fem->nodesets);
 
 		/*Free ressources: */
@@ -84,5 +84,5 @@
 	
 		if(verbose)_printf_("   reducing load from g to f set\n");
-		Reduceloadfromgtofx(&pf, pg, fem->Gmn, Kfs, fem->ys, fem->nodesets);
+		Reduceloadfromgtofx(&pf, pg, Kfs, fem->ys, fem->nodesets);
 
 		//no need for pg and Kfs anymore 
@@ -100,5 +100,5 @@
 
 		if(verbose)_printf_("   merging solution from f to g set\n");
-		Mergesolutionfromftogx(&tg, tf,fem->Gmn,fem->ys,fem->nodesets);
+		Mergesolutionfromftogx(&tg, tf,fem->ys,fem->nodesets);
 
 		//Update inputs using new solution:
Index: /issm/trunk/src/m/solutions/NewFemModel.m
===================================================================
--- /issm/trunk/src/m/solutions/NewFemModel.m	(revision 5056)
+++ /issm/trunk/src/m/solutions/NewFemModel.m	(revision 5057)
@@ -20,8 +20,6 @@
 	%Initialize some fiels with empty celils
 	femmodel.m_yg=cell(nummodels,1);
-	femmodel.m_Rmg=cell(nummodels,1);
 	femmodel.m_nodesets=cell(nummodels,1);
 	femmodel.m_ys=cell(nummodels,1);
-	femmodel.m_Gmn=cell(nummodels,1);
 	femmodel.results=struct([]);
 
@@ -43,7 +41,4 @@
 		[femmodel.nodes,femmodel.m_yg{i}]=SpcNodes(femmodel.nodes,femmodel.constraints,analysis_type);
 
-		displaystring(md.verbose,'%s','      generating rigid body constraints...');
-		[femmodel.m_Rmg{i},femmodel.nodes]=MpcNodes(femmodel.nodes,femmodel.constraints,analysis_types);
-
 		displaystring(md.verbose,'%s','      generating node sets...');
 		femmodel.m_nodesets{i}=BuildNodeSets(femmodel.nodes,analysis_type);
@@ -52,7 +47,4 @@
 		femmodel.m_ys{i}=Reducevectorgtos(femmodel.m_yg{i},femmodel.m_nodesets{i});
 
-		displaystring(md.verbose,'%s','      normalizing rigid body constraints matrix...');
-		femmodel.m_Gmn{i}= NormalizeConstraints(femmodel.m_Rmg{i},femmodel.m_nodesets{i});
-
 		displaystring(md.verbose,'%s','      configuring elements and loads...');
 		[femmodel.elements,femmodel.loads,femmodel.nodes,femmodel.parameters] = ConfigureObjects( femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices,femmodel.materials,femmodel.parameters);
Index: /issm/trunk/src/m/solutions/SetCurrentConfiguration.m
===================================================================
--- /issm/trunk/src/m/solutions/SetCurrentConfiguration.m	(revision 5056)
+++ /issm/trunk/src/m/solutions/SetCurrentConfiguration.m	(revision 5057)
@@ -38,6 +38,4 @@
 	
 	%activate matrices and vectors: 
-	femmodel.Rmg=femmodel.m_Rmg{found};
-	femmodel.Gmn=femmodel.m_Gmn{found};
 	femmodel.nodesets=femmodel.m_nodesets{found};
 	femmodel.yg=femmodel.m_yg{found};
Index: /issm/trunk/src/m/solvers/solver_adjoint_linear.m
===================================================================
--- /issm/trunk/src/m/solvers/solver_adjoint_linear.m	(revision 5056)
+++ /issm/trunk/src/m/solvers/solver_adjoint_linear.m	(revision 5057)
@@ -13,9 +13,9 @@
 	
 	%Reduce tangent matrix from g size to f size
-	[K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.Gmn, femmodel.nodesets); 
+	[K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.nodesets); 
 	displaystring(femmodel.parameters.Verbose>1,'%s%g','      condition number of stiffness matrix: ',condest(K_ff));
 	
 	%Reduce load from g size to f size
-	p_f = Reduceloadfromgtof( p_g, femmodel.Gmn, K_fs, femmodel.ys, femmodel.nodesets,true);
+	p_f = Reduceloadfromgtof( p_g, K_fs, femmodel.ys, femmodel.nodesets,true);
 
 	%Solve	
@@ -23,5 +23,5 @@
 	
 	%Merge back to g set
-	u_g= Mergesolutionfromftog( u_f, femmodel.Gmn, femmodel.ys, femmodel.nodesets,true); 
+	u_g= Mergesolutionfromftog( u_f, femmodel.ys, femmodel.nodesets,true); 
 
 	%Update inputs using new solution
Index: /issm/trunk/src/m/solvers/solver_diagnostic_nonlinear.m
===================================================================
--- /issm/trunk/src/m/solvers/solver_diagnostic_nonlinear.m	(revision 5056)
+++ /issm/trunk/src/m/solvers/solver_diagnostic_nonlinear.m	(revision 5057)
@@ -37,8 +37,8 @@
 
 		displaystring(femmodel.parameters.Verbose,'%s','   reducing matrix from g to f set');
-		[K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.Gmn, femmodel.nodesets); 
+		[K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.nodesets); 
 		
 		displaystring(femmodel.parameters.Verbose,'%s','   reduce load from g size to f size');
-		p_f = Reduceloadfromgtof( p_g, femmodel.Gmn, K_fs, femmodel.ys, femmodel.nodesets);
+		p_f = Reduceloadfromgtof( p_g, K_fs, femmodel.ys, femmodel.nodesets);
 
 		displaystring(femmodel.parameters.Verbose,'%s','   solving');
@@ -46,5 +46,5 @@
 
 		displaystring(femmodel.parameters.Verbose,'%s','   merge back to g set');
-		ug= Mergesolutionfromftog( uf, femmodel.Gmn, femmodel.ys, femmodel.nodesets ); 
+		ug= Mergesolutionfromftog( uf, femmodel.ys, femmodel.nodesets ); 
 
 		%Update inputs using new solution
Index: /issm/trunk/src/m/solvers/solver_linear.m
===================================================================
--- /issm/trunk/src/m/solvers/solver_linear.m	(revision 5056)
+++ /issm/trunk/src/m/solvers/solver_linear.m	(revision 5057)
@@ -13,9 +13,9 @@
 	
 	%Reduce tangent matrix from g size to f size
-	[K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.Gmn, femmodel.nodesets); 
+	[K_ff, K_fs] = Reducematrixfromgtof( K_gg,  femmodel.nodesets); 
 	displaystring(femmodel.parameters.Verbose>1,'%s%g','      condition number of stiffness matrix: ',condest(K_ff));
 	
 	%Reduce load from g size to f size
-	p_f = Reduceloadfromgtof( p_g, femmodel.Gmn, K_fs, femmodel.ys, femmodel.nodesets);
+	p_f = Reduceloadfromgtof( p_g,  K_fs, femmodel.ys, femmodel.nodesets);
 
 	%Solve	
@@ -23,5 +23,5 @@
 	
 	%Merge back to g set
-	u_g= Mergesolutionfromftog( u_f, femmodel.Gmn, femmodel.ys, femmodel.nodesets ); 
+	u_g= Mergesolutionfromftog( u_f, femmodel.ys, femmodel.nodesets ); 
 
 	%Update inputs using new solution
Index: /issm/trunk/src/m/solvers/solver_thermal_nonlinear.m
===================================================================
--- /issm/trunk/src/m/solvers/solver_thermal_nonlinear.m	(revision 5056)
+++ /issm/trunk/src/m/solvers/solver_thermal_nonlinear.m	(revision 5057)
@@ -28,8 +28,8 @@
 
 		%Reduce tangent matrix from g size to f size
-		[K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.Gmn, femmodel.nodesets); 
+		[K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.nodesets); 
 
 		%Reduce load from g size to f size
-		p_f = Reduceloadfromgtof( p_g, femmodel.Gmn, K_fs, femmodel.ys, femmodel.nodesets);
+		p_f = Reduceloadfromgtof( p_g, K_fs, femmodel.ys, femmodel.nodesets);
 
 		displaystring(femmodel.parameters.Verbose,'%s%g','   condition number of stiffness matrix: ',condest(K_ff));
@@ -37,5 +37,5 @@
 
 		displaystring(femmodel.parameters.Verbose,'%s',['   merging solution back to g set']);
-		t_g= Mergesolutionfromftog( t_f, femmodel.Gmn, femmodel.ys, femmodel.nodesets ); 
+		t_g= Mergesolutionfromftog( t_f, femmodel.ys, femmodel.nodesets ); 
 
 		displaystring(femmodel.parameters.Verbose,'%s',['   updating inputs']);
Index: /issm/trunk/src/mex/Makefile.am
===================================================================
--- /issm/trunk/src/mex/Makefile.am	(revision 5056)
+++ /issm/trunk/src/mex/Makefile.am	(revision 5057)
@@ -42,8 +42,6 @@
 				Misfit \
 				ModelProcessor \
-				MpcNodes\
 				NodeConnectivity\
 				NodesDof\
-				NormalizeConstraints\
 				Orth\
 				OutputRifts\
@@ -216,10 +214,4 @@
 				  Misfit/Misfit.h
 
-MpcNodes_SOURCES = MpcNodes/MpcNodes.cpp\
-			  MpcNodes/MpcNodes.h
-
-NormalizeConstraints_SOURCES = NormalizeConstraints/NormalizeConstraints.cpp\
-			  NormalizeConstraints/NormalizeConstraints.h
-
 NodeConnectivity_SOURCES = NodeConnectivity/NodeConnectivity.cpp\
 			  NodeConnectivity/NodeConnectivity.h
Index: /issm/trunk/src/mex/Mergesolutionfromftog/Mergesolutionfromftog.cpp
===================================================================
--- /issm/trunk/src/mex/Mergesolutionfromftog/Mergesolutionfromftog.cpp	(revision 5056)
+++ /issm/trunk/src/mex/Mergesolutionfromftog/Mergesolutionfromftog.cpp	(revision 5057)
@@ -10,5 +10,4 @@
 	bool flag_ys0;
 	Vec uf=NULL;
-	Mat Gmn=NULL;
 	Vec ys=NULL;
 	NodeSets* nodesets=NULL;
@@ -21,5 +20,5 @@
 
 	/*checks on arguments on the matlab side: */
-	if((nlhs!=NLHS) || (nrhs!=4 && nrhs!=5)){
+	if((nlhs!=NLHS) || (nrhs!=3 && nrhs!=4)){
 		MergesolutionfromftogUsage();
 		ISSMERROR(" usage. See above");
@@ -28,15 +27,14 @@
 	/*Input datasets: */
 	FetchData(&uf,UF);
-	FetchData(&Gmn,GMN);
 	FetchData(&ys,YS);
 	FetchNodeSets(&nodesets,NODESETS);
 
 	/*!Reduce vector: */
-	if (nrhs==4){
-		Mergesolutionfromftogx(&ug, uf,Gmn,ys,nodesets);
+	if (nrhs==3){
+		Mergesolutionfromftogx(&ug, uf,ys,nodesets);
 	}
 	else{
 		FetchData(&flag_ys0,YSFLAG);
-		Mergesolutionfromftogx(&ug, uf,Gmn,ys,nodesets,flag_ys0);
+		Mergesolutionfromftogx(&ug, uf,ys,nodesets,flag_ys0);
 	}
 
@@ -46,5 +44,4 @@
 	/*Free ressources: */
 	VecFree(&uf);
-	MatFree(&Gmn);
 	VecFree(&ys);
 	delete nodesets;
@@ -58,5 +55,5 @@
 {
 	_printf_("\n");
-	_printf_("   usage: [ug] = %s(uf,Gmn,ys,nodesets);\n",__FUNCT__);
+	_printf_("   usage: [ug] = %s(uf,ys,nodesets);\n",__FUNCT__);
 	_printf_("\n");
 }
Index: /issm/trunk/src/mex/Mergesolutionfromftog/Mergesolutionfromftog.h
===================================================================
--- /issm/trunk/src/mex/Mergesolutionfromftog/Mergesolutionfromftog.h	(revision 5056)
+++ /issm/trunk/src/mex/Mergesolutionfromftog/Mergesolutionfromftog.h	(revision 5057)
@@ -20,8 +20,7 @@
 /* serial input macros: */
 #define UF (mxArray*)prhs[0]
-#define GMN (mxArray*)prhs[1]
-#define YS (mxArray*)prhs[2]
-#define NODESETS (mxArray*)prhs[3]
-#define YSFLAG (mxArray*)prhs[4]
+#define YS (mxArray*)prhs[1]
+#define NODESETS (mxArray*)prhs[2]
+#define YSFLAG (mxArray*)prhs[3]
 
 /* serial output macros: */
@@ -32,5 +31,5 @@
 #define NLHS  1
 #undef NRHS
-#define NRHS  5
+#define NRHS  3
 
 #endif  /* _MERGESOLUTIONFROMFTOG_H */
Index: /issm/trunk/src/mex/Reduceloadfromgtof/Reduceloadfromgtof.cpp
===================================================================
--- /issm/trunk/src/mex/Reduceloadfromgtof/Reduceloadfromgtof.cpp	(revision 5056)
+++ /issm/trunk/src/mex/Reduceloadfromgtof/Reduceloadfromgtof.cpp	(revision 5057)
@@ -10,5 +10,4 @@
 	bool flag_ys0;
 	Vec pg=NULL;
-	Mat Gmn=NULL;
 	Mat Kfs=NULL;
 	Vec ys=NULL;
@@ -22,5 +21,5 @@
 
 	/*checks on arguments on the matlab side: */
-	if((nlhs!=NLHS) || (nrhs!=5 && nrhs!=6)){
+	if((nlhs!=NLHS) || (nrhs!=4 && nrhs!=5)){
 		ReduceloadfromgtofUsage();
 		ISSMERROR(" usage. See above");
@@ -29,5 +28,4 @@
 	/*Input datasets: */
 	FetchData(&pg,PG);
-	FetchData(&Gmn,GMN);
 	FetchData(&Kfs,KFS);
 	FetchData(&ys,YS);
@@ -35,10 +33,10 @@
 
 	/*!Reduce load from g to f size: */
-	if (nrhs==5){
-		Reduceloadfromgtofx(&pf, pg, Gmn, Kfs, ys, nodesets);
+	if (nrhs==4){
+		Reduceloadfromgtofx(&pf, pg, Kfs, ys, nodesets);
 	}
 	else{
 		FetchData(&flag_ys0,YSFLAG);
-		Reduceloadfromgtofx(&pf, pg, Gmn, Kfs, ys, nodesets,flag_ys0);
+		Reduceloadfromgtofx(&pf, pg, Kfs, ys, nodesets,flag_ys0);
 	}
 
@@ -49,5 +47,4 @@
 	/*Free ressources: */
 	VecFree(&pg);
-	MatFree(&Gmn);
 	MatFree(&Kfs);
 	VecFree(&ys);
@@ -61,5 +58,5 @@
 {
 	_printf_("\n");
-	_printf_("   usage: [pf] = %s(pg,Gmn,Kfs,ys,nodesets);\n",__FUNCT__);
+	_printf_("   usage: [pf] = %s(pg,Kfs,ys,nodesets);\n",__FUNCT__);
 	_printf_("\n");
 }
Index: /issm/trunk/src/mex/Reduceloadfromgtof/Reduceloadfromgtof.h
===================================================================
--- /issm/trunk/src/mex/Reduceloadfromgtof/Reduceloadfromgtof.h	(revision 5056)
+++ /issm/trunk/src/mex/Reduceloadfromgtof/Reduceloadfromgtof.h	(revision 5057)
@@ -20,9 +20,8 @@
 /* serial input macros: */
 #define PG (mxArray*)prhs[0]
-#define GMN (mxArray*)prhs[1]
-#define KFS (mxArray*)prhs[2]
-#define YS (mxArray*)prhs[3]
-#define NODESETS (mxArray*)prhs[4]
-#define YSFLAG (mxArray*)prhs[5]
+#define KFS (mxArray*)prhs[1]
+#define YS (mxArray*)prhs[2]
+#define NODESETS (mxArray*)prhs[3]
+#define YSFLAG (mxArray*)prhs[4]
 
 /* serial output macros: */
@@ -33,5 +32,5 @@
 #define NLHS  1
 #undef NRHS
-#define NRHS  6
+#define NRHS  4
 
 
Index: /issm/trunk/src/mex/Reducematrixfromgtof/Reducematrixfromgtof.cpp
===================================================================
--- /issm/trunk/src/mex/Reducematrixfromgtof/Reducematrixfromgtof.cpp	(revision 5056)
+++ /issm/trunk/src/mex/Reducematrixfromgtof/Reducematrixfromgtof.cpp	(revision 5057)
@@ -9,5 +9,4 @@
 	/*input datasets: */
 	Mat Kgg=NULL;
-	Mat Gmn=NULL;
 	NodeSets* nodesets=NULL;
 
@@ -24,9 +23,8 @@
 	/*Input datasets: */
 	FetchData(&Kgg,KGG);
-	FetchData(&Gmn,GMN);
 	FetchNodeSets(&nodesets,NODESETS);
 
 	/*!Reduce matrix from g to f size:*/
-	Reducematrixfromgtofx(&Kff,&Kfs,Kgg,Gmn,nodesets);
+	Reducematrixfromgtofx(&Kff,&Kfs,Kgg,nodesets);
 
 	/*write output datasets: */
@@ -37,5 +35,4 @@
 	delete nodesets;
 	MatFree(&Kgg);
-	MatFree(&Gmn);
 	MatFree(&Kff);
 	MatFree(&Kfs);
@@ -48,5 +45,5 @@
 {
 	_printf_("\n");
-	_printf_("   usage: [Kff,Kfs] = %s(Kgg,Gmn,nodeses);\n",__FUNCT__);
+	_printf_("   usage: [Kff,Kfs] = %s(Kgg,nodesets);\n",__FUNCT__);
 	_printf_("\n");
 }
Index: /issm/trunk/src/mex/Reducematrixfromgtof/Reducematrixfromgtof.h
===================================================================
--- /issm/trunk/src/mex/Reducematrixfromgtof/Reducematrixfromgtof.h	(revision 5056)
+++ /issm/trunk/src/mex/Reducematrixfromgtof/Reducematrixfromgtof.h	(revision 5057)
@@ -20,6 +20,5 @@
 /* serial input macros: */
 #define KGG (mxArray*)prhs[0]
-#define GMN (mxArray*)prhs[1]
-#define NODESETS (mxArray*)prhs[2]
+#define NODESETS (mxArray*)prhs[1]
 
 /* serial output macros: */
@@ -31,5 +30,5 @@
 #define NLHS  2
 #undef NRHS
-#define NRHS  3
+#define NRHS  2
 
 
Index: /issm/trunk/test/Exp/MassFlux6.exp
===================================================================
--- /issm/trunk/test/Exp/MassFlux6.exp	(revision 5056)
+++ /issm/trunk/test/Exp/MassFlux6.exp	(revision 5057)
@@ -2,1006 +2,506 @@
 ## Icon:0
 # Points Count Value
-1001 1.000000
+501 1.000000
 # X pos Y pos
 900000.0000000000 500000.0000000000
-899992.1043424548 502513.2575862236
 899968.4176815264 505026.4159533411
-899928.9409523236 507539.3758861633
 899873.6757133200 510052.0381773350
-899802.6241462927 512564.3036312513
 899715.7890562357 515076.0730679738
-899613.1738712499 517587.2473271459
 899494.7826424070 520097.7272719078
-899360.6200435900 522607.4137928098
 899210.6913713086 525116.2078117253
-899045.0025444902 527624.0102857624
 898863.5601042456 530130.7222111730
-898666.3712136119 532636.2446272630
 898453.4436572690 535140.4786202973
-898224.7858412319 537643.3253274057
 897980.4067925201 540144.6859404859
-897720.3161587996 542644.4617101040
 897444.5242080034 545142.5539493926
-897153.0418279255 547638.8640379478
 896845.8805257911 550133.2934257217
-896523.0524278027 552625.7436369130
 896184.5702786604 555116.1162738552
-895830.4474410603 557604.3130209008
 895460.6978951656 560090.2356483028
-895075.3362380550 562573.7860160924
 894674.3776831472 565054.8660779535
-894257.8380595993 567533.3778850936
 893825.7338116821 570009.2235901104
-893378.0819981319 572482.3054508549
 892914.9002914755 574952.5258342898
-892436.2069773336 577419.7872203441
 891942.0209536988 579883.9922057628
-891432.3617301888 582345.0435079525
 890907.2494272774 584802.8439688219
-890366.7047754989 587257.2965586170
 889810.7491146309 589708.3043797525
-889239.4043928506 592155.7706706362
 888652.6931658696 594599.5988094899
-888050.6385960423 597039.6923181630
 887433.2644514524 599475.9548659419
-886800.5951049740 601908.2902733529
 886152.6555333096 604336.6025159587
-885489.4713160039 606760.7957281503
 884811.0686344344 609180.7742069301
-884117.4742707773 611596.4424156917
 883408.7156069503 614007.7049879904
-882684.8206235322 616414.4667313087
 881945.8178986572 618816.6326308140
-881191.7366068875 621214.1078531096
 880422.6065180614 623606.7977499790
-879638.4579961179 625994.6078621219
 878839.3219978977 628377.4439228838
-878025.2300719219 630755.2118619770
 877196.2143571458 633127.8178091947
-876352.3075816901 635495.1680981165
 875493.5430615495 637857.1692698068
-874619.9546992769 640213.7280765036
 873731.5769826449 642564.7514853003
-872828.4449832845 644910.1466818183
 871910.5943553005 647249.8210738712
-870978.0613338645 649583.6822951202
 870030.8827337832 651911.6382087205
-869069.0959480460 654233.5969109586
 868092.7389463482 656549.4667348809
-867101.8502735924 658859.1562539123
 866096.4690483670 661162.5742854651
-865076.6349614011 663459.6298945396
 864042.3882739983 665750.2323973137
-862993.7698164468 668034.2913647225
 861930.8209864078 670311.7166260290
-860853.5837472811 672582.4182723836
 859762.1006265484 674846.3066603731
-858656.4147140944 677103.2924155606
 857536.5696605055 679353.2864360129
-856402.6096753471 681596.1998958187
 855254.5795254178 683831.9442485952
-854092.5245329821 686060.4312309833
 852916.4905739813 688281.5728661331
-851726.5240762224 690495.2814671756
 850522.6720175454 692701.4696406862
-849304.9819239681 694900.0502901329
 848073.5018678103 697090.9366193167
-846828.2804657960 699274.0421357963
 845569.3668771342 701449.2806543043
-844296.8108015775 703616.5663001485
 843010.6624774609 705775.8135126026
-841710.9726797180 707926.9370482839
 840397.7927178767 710069.8519845183
-839071.1744340332 712204.4737226936
 837731.1702008061 714330.7179915986
-836377.8329192676 716448.5008507504
 835011.2160168567 718557.7386937076
-833631.3734452685 720658.3482513721
 832238.3596783250 722750.2465952751
-830832.2297098248 724833.3511408522
 829413.0390513709 726907.5796507027
-827980.8437301810 728972.8502378364
 826535.7002868736 731029.0813689070
-825077.6657732376 733076.1918674305
 823606.7977499790 735114.1009169893
-822123.1542844488 737142.7280644237
 820626.7939483507 739161.9932230075
-819117.7758154285 741171.8166756099
 817596.1594591341 743172.1190778422
-816062.0049502761 745162.8214611906
 814515.3728546476 747143.8452361338
-812956.3242306353 749115.1121952450
 811384.9206268094 751076.5445162802
-809801.2240794935 753028.0647652497
 808205.2971103156 754969.5958994759
-806597.2027237399 756901.0612706337
 804977.0044045792 758822.3846277777
-803344.7661154887 760733.4901203515
 801700.5522944415 762634.3023011826
-800044.4278521838 764524.7461294607
 798376.4581696729 766404.7469737006
-796696.7090954958 768274.2306146880
 795005.2469432696 770133.1232484097
-793302.1384890240 771981.3514889677
 791587.4509685646 773818.8423714754
-789861.2520748186 775645.5233549394
 788123.6099551627 777461.3223251220
-786374.5932087325 779266.1675973891
 784614.2708837141 781059.9879195397
-782842.7124746190 782842.7124746190
 781059.9879195397 784614.2708837141
-779266.1675973891 786374.5932087324
 777461.3223251220 788123.6099551627
-775645.5233549394 789861.2520748186
 773818.8423714754 791587.4509685646
-771981.3514889677 793302.1384890240
 770133.1232484097 795005.2469432696
-768274.2306146880 796696.7090954958
 766404.7469737006 798376.4581696729
-764524.7461294607 800044.4278521838
 762634.3023011826 801700.5522944415
-760733.4901203514 803344.7661154887
 758822.3846277777 804977.0044045792
-756901.0612706337 806597.2027237399
 754969.5958994759 808205.2971103156
-753028.0647652497 809801.2240794935
 751076.5445162802 811384.9206268094
-749115.1121952450 812956.3242306353
 747143.8452361338 814515.3728546476
-745162.8214611906 816062.0049502761
 743172.1190778422 817596.1594591341
-741171.8166756099 819117.7758154285
 739161.9932230075 820626.7939483506
-737142.7280644237 822123.1542844488
 735114.1009169891 823606.7977499790
-733076.1918674305 825077.6657732376
 731029.0813689070 826535.7002868736
-728972.8502378364 827980.8437301810
 726907.5796507025 829413.0390513709
-724833.3511408522 830832.2297098248
 722750.2465952751 832238.3596783250
-720658.3482513721 833631.3734452685
 718557.7386937076 835011.2160168567
-716448.5008507504 836377.8329192676
 714330.7179915986 837731.1702008061
-712204.4737226935 839071.1744340332
 710069.8519845183 840397.7927178767
-707926.9370482838 841710.9726797180
 705775.8135126026 843010.6624774609
-703616.5663001485 844296.8108015775
 701449.2806543044 845569.3668771342
-699274.0421357963 846828.2804657960
 697090.9366193167 848073.5018678103
-694900.0502901329 849304.9819239681
 692701.4696406862 850522.6720175454
-690495.2814671756 851726.5240762224
 688281.5728661331 852916.4905739813
-686060.4312309832 854092.5245329821
 683831.9442485950 855254.5795254179
-681596.1998958187 856402.6096753471
 679353.2864360129 857536.5696605055
-677103.2924155606 858656.4147140944
 674846.3066603731 859762.1006265484
-672582.4182723836 860853.5837472811
 670311.7166260290 861930.8209864078
-668034.2913647224 862993.7698164468
 665750.2323973136 864042.3882739983
-663459.6298945396 865076.6349614011
 661162.5742854651 866096.4690483670
-658859.1562539123 867101.8502735924
 656549.4667348809 868092.7389463482
-654233.5969109586 869069.0959480458
 651911.6382087205 870030.8827337832
-649583.6822951201 870978.0613338646
 647249.8210738711 871910.5943553005
-644910.1466818183 872828.4449832845
 642564.7514853003 873731.5769826449
-640213.7280765036 874619.9546992769
 637857.1692698068 875493.5430615495
-635495.1680981165 876352.3075816901
 633127.8178091947 877196.2143571458
-630755.2118619770 878025.2300719219
 628377.4439228838 878839.3219978977
-625994.6078621219 879638.4579961179
 623606.7977499790 880422.6065180614
-621214.1078531096 881191.7366068875
 618816.6326308140 881945.8178986572
-616414.4667313087 882684.8206235322
 614007.7049879904 883408.7156069503
-611596.4424156917 884117.4742707773
 609180.7742069301 884811.0686344344
-606760.7957281502 885489.4713160039
 604336.6025159588 886152.6555333096
-601908.2902733529 886800.5951049740
 599475.9548659419 887433.2644514524
-597039.6923181629 888050.6385960423
 594599.5988094899 888652.6931658696
-592155.7706706362 889239.4043928506
 589708.3043797525 889810.7491146309
-587257.2965586170 890366.7047754989
 584802.8439688218 890907.2494272774
-582345.0435079526 891432.3617301888
 579883.9922057628 891942.0209536988
-577419.7872203441 892436.2069773336
 574952.5258342898 892914.9002914755
-572482.3054508549 893378.0819981319
 570009.2235901104 893825.7338116821
-567533.3778850936 894257.8380595993
 565054.8660779534 894674.3776831472
-562573.7860160924 895075.3362380550
 560090.2356483028 895460.6978951656
-557604.3130209008 895830.4474410603
 555116.1162738552 896184.5702786604
-552625.7436369130 896523.0524278027
 550133.2934257217 896845.8805257911
-547638.8640379478 897153.0418279255
 545142.5539493926 897444.5242080034
-542644.4617101040 897720.3161587996
 540144.6859404859 897980.4067925201
-537643.3253274057 898224.7858412319
 535140.4786202973 898453.4436572690
-532636.2446272629 898666.3712136119
 530130.7222111732 898863.5601042456
-527624.0102857624 899045.0025444902
 525116.2078117253 899210.6913713086
-522607.4137928098 899360.6200435900
 520097.7272719078 899494.7826424070
-517587.2473271459 899613.1738712499
 515076.0730679738 899715.7890562357
-512564.3036312513 899802.6241462927
 510052.0381773350 899873.6757133200
-507539.3758861633 899928.9409523236
 505026.4159533410 899968.4176815264
-502513.2575862235 899992.1043424548
 500000.0000000000 900000.0000000000
-497486.7424137764 899992.1043424548
 494973.5840466589 899968.4176815264
-492460.6241138367 899928.9409523236
 489947.9618226651 899873.6757133200
-487435.6963687487 899802.6241462927
 484923.9269320262 899715.7890562357
-482412.7526728540 899613.1738712499
 479902.2727280921 899494.7826424070
-477392.5862071902 899360.6200435900
 474883.7921882746 899210.6913713086
-472375.9897142376 899045.0025444902
 469869.2777888268 898863.5601042456
-467363.7553727370 898666.3712136119
 464859.5213797027 898453.4436572690
-462356.6746725942 898224.7858412319
 459855.3140595140 897980.4067925201
-457355.5382898960 897720.3161587996
 454857.4460506073 897444.5242080034
-452361.1359620521 897153.0418279255
 449866.7065742782 896845.8805257911
-447374.2563630870 896523.0524278027
 444883.8837261448 896184.5702786604
-442395.6869790991 895830.4474410603
 439909.7643516972 895460.6978951655
-437426.2139839077 895075.3362380550
 434945.1339220466 894674.3776831472
-432466.6221149064 894257.8380595993
 429990.7764098896 893825.7338116821
-427517.6945491450 893378.0819981318
 425047.4741657102 892914.9002914755
-422580.2127796559 892436.2069773336
 420116.0077942372 891942.0209536988
-417654.9564920474 891432.3617301888
 415197.1560311782 890907.2494272774
-412742.7034413830 890366.7047754989
 410291.6956202475 889810.7491146309
-407844.2293293637 889239.4043928506
 405400.4011905101 888652.6931658696
-402960.3076818370 888050.6385960423
 400524.0451340580 887433.2644514524
-398091.7097266471 886800.5951049740
 395663.3974840412 886152.6555333096
-393239.2042718498 885489.4713160039
 390819.2257930699 884811.0686344344
-388403.5575843083 884117.4742707773
 385992.2950120096 883408.7156069505
-383585.5332686913 882684.8206235322
 381183.3673691860 881945.8178986572
-378785.8921468904 881191.7366068875
 376393.2022500210 880422.6065180614
-374005.3921378781 879638.4579961179
 371622.5560771162 878839.3219978977
-369244.7881380230 878025.2300719219
 366872.1821908053 877196.2143571458
-364504.8319018835 876352.3075816901
 362142.8307301932 875493.5430615495
-359786.2719234964 874619.9546992769
 357435.2485146997 873731.5769826449
-355089.8533181817 872828.4449832845
 352750.1789261288 871910.5943553005
-350416.3177048798 870978.0613338645
 348088.3617912795 870030.8827337832
-345766.4030890414 869069.0959480460
 343450.5332651191 868092.7389463482
-341140.8437460877 867101.8502735924
 338837.4257145349 866096.4690483670
-336540.3701054604 865076.6349614011
 334249.7676026863 864042.3882739983
-331965.7086352775 862993.7698164468
 329688.2833739709 861930.8209864078
-327417.5817276164 860853.5837472811
 325153.6933396268 859762.1006265484
-322896.7075844393 858656.4147140943
 320646.7135639872 857536.5696605055
-318403.8001041813 856402.6096753471
 316168.0557514048 855254.5795254179
-313939.5687690167 854092.5245329821
 311718.4271338669 852916.4905739813
-309504.7185328243 851726.5240762224
 307298.5303593138 850522.6720175454
-305099.9497098670 849304.9819239681
 302909.0633806834 848073.5018678103
-300725.9578642037 846828.2804657961
 298550.7193456957 845569.3668771342
-296383.4336998515 844296.8108015775
 294224.1864873974 843010.6624774609
-292073.0629517162 841710.9726797180
 289930.1480154817 840397.7927178766
-287795.5262773063 839071.1744340332
 285669.2820084015 837731.1702008061
-283551.4991492497 836377.8329192677
 281442.2613062924 835011.2160168567
-279341.6517486279 833631.3734452685
 277249.7534047248 832238.3596783250
-275166.6488591477 830832.2297098247
 273092.4203492973 829413.0390513709
-271027.1497621636 827980.8437301809
 268970.9186310929 826535.7002868736
-266923.8081325697 825077.6657732376
 264885.8990830108 823606.7977499790
-262857.2719355763 822123.1542844488
 260838.0067769924 820626.7939483506
-258828.1833243901 819117.7758154285
 256827.8809221578 817596.1594591341
-254837.1785388094 816062.0049502761
 252856.1547638662 814515.3728546475
-250884.8878047551 812956.3242306353
 248923.4554837199 811384.9206268094
-246971.9352347502 809801.2240794935
 245030.4041005241 808205.2971103156
-243098.9387293662 806597.2027237399
 241177.6153722222 804977.0044045791
-239266.5098796484 803344.7661154887
 237365.6976988174 801700.5522944415
-235475.2538705392 800044.4278521838
 233595.2530262994 798376.4581696729
-231725.7693853120 796696.7090954958
 229866.8767515902 795005.2469432696
-228018.6485110323 793302.1384890240
 226181.1576285245 791587.4509685646
-224354.4766450606 789861.2520748186
 222538.6776748779 788123.6099551627
-220733.8324026109 786374.5932087323
 218940.0120804604 784614.2708837142
-217157.2875253810 782842.7124746190
 215385.7291162859 781059.9879195397
-213625.4067912675 779266.1675973891
 211876.3900448372 777461.3223251220
-210138.7479251813 775645.5233549394
 208412.5490314353 773818.8423714754
-206697.8615109759 771981.3514889677
 204994.7530567305 770133.1232484098
-203303.2909045043 768274.2306146880
 201623.5418303271 766404.7469737006
-199955.5721478162 764524.7461294607
 198299.4477055584 762634.3023011826
-196655.2338845112 760733.4901203514
 195022.9955954208 758822.3846277777
-193402.7972762600 756901.0612706337
 191794.7028896842 754969.5958994757
-190198.7759205065 753028.0647652498
 188615.0793731906 751076.5445162803
-187043.6757693648 749115.1121952450
 185484.6271453524 747143.8452361338
-183937.9950497238 745162.8214611906
 182403.8405408658 743172.1190778421
-180882.2241845715 741171.8166756098
 179373.2060516493 739161.9932230075
-177876.8457155512 737142.7280644238
 176393.2022500210 735114.1009169893
-174922.3342267624 733076.1918674305
 173464.2997131264 731029.0813689071
-172019.1562698191 728972.8502378364
 170586.9609486290 726907.5796507025
-169167.7702901752 724833.3511408522
 167761.6403216749 722750.2465952751
-166368.6265547315 720658.3482513720
 164988.7839831433 718557.7386937076
-163622.1670807324 716448.5008507504
 162268.8297991939 714330.7179915986
-160928.8255659667 712204.4737226936
 159602.2072821232 710069.8519845182
-158289.0273202819 707926.9370482838
 156989.3375225391 705775.8135126026
-155703.1891984225 703616.5663001484
 154430.6331228659 701449.2806543044
-153171.7195342040 699274.0421357964
 151926.4981321897 697090.9366193167
-150695.0180760319 694900.0502901329
 149477.3279824546 692701.4696406861
-148273.4759237774 690495.2814671756
 147083.5094260186 688281.5728661329
-145907.4754670179 686060.4312309832
 144745.4204745822 683831.9442485952
-143597.3903246529 681596.1998958187
 142463.4303394945 679353.2864360129
-141343.5852859056 677103.2924155607
 140237.8993734516 674846.3066603731
-139146.4162527189 672582.4182723835
 138069.1790135922 670311.7166260290
-137006.2301835532 668034.2913647224
 135957.6117260017 665750.2323973136
-134923.3650385989 663459.6298945397
 133903.5309516330 661162.5742854651
-132898.1497264075 658859.1562539123
 131907.2610536519 656549.4667348809
-130930.9040519540 654233.5969109586
 129969.1172662167 651911.6382087204
-129021.9386661354 649583.6822951201
 128089.4056446994 647249.8210738711
-127171.5550167156 644910.1466818183
 126268.4230173552 642564.7514853003
-125380.0453007231 640213.7280765036
 124506.4569384504 637857.1692698068
-123647.6924183098 635495.1680981165
 122803.7856428542 633127.8178091946
-121974.7699280781 630755.2118619769
 121160.6780021022 628377.4439228837
-120361.5420038821 625994.6078621218
 119577.3934819386 623606.7977499790
-118808.2633931125 621214.1078531096
 118054.1821013428 618816.6326308140
-117315.1793764678 616414.4667313087
 116591.2843930496 614007.7049879904
-115882.5257292227 611596.4424156917
 115188.9313655656 609180.7742069301
-114510.5286839961 606760.7957281501
 113847.3444666904 604336.6025159588
-113199.4048950260 601908.2902733529
 112566.7355485476 599475.9548659419
-111949.3614039577 597039.6923181630
 111347.3068341304 594599.5988094899
-110760.5956071494 592155.7706706362
 110189.2508853691 589708.3043797524
-109633.2952245011 587257.2965586169
 109092.7505727226 584802.8439688219
-108567.6382698112 582345.0435079526
 108057.9790463013 579883.9922057628
-107563.7930226664 577419.7872203441
 107085.0997085245 574952.5258342898
-106621.9180018681 572482.3054508549
 106174.2661883179 570009.2235901103
-105742.1619404008 567533.3778850934
 105325.6223168527 565054.8660779534
-104924.6637619449 562573.7860160924
 104539.3021048344 560090.2356483028
-104169.5525589396 557604.3130209008
 103815.4297213395 555116.1162738552
-103476.9475721974 552625.7436369129
 103154.1194742089 550133.2934257216
-102846.9581720745 547638.8640379478
 102555.4757919966 545142.5539493926
-102279.6838412004 542644.4617101040
 102019.5932074799 540144.6859404860
-101775.2141587680 537643.3253274057
 101546.5563427310 535140.4786202973
-101333.6287863880 532636.2446272629
 101136.4398957544 530130.7222111730
-100954.9974555099 527624.0102857623
 100789.3086286914 525116.2078117252
-100639.3799564100 522607.4137928097
 100505.2173575930 520097.7272719078
-100386.8261287501 517587.2473271460
 100284.2109437643 515076.0730679738
-100197.3758537074 512564.3036312513
 100126.3242866800 510052.0381773349
-100071.0590476764 507539.3758861632
 100031.5823184735 505026.4159533409
-100007.8956575451 502513.2575862235
-100000.0000000000 500000.0000000001
-100007.8956575451 497486.7424137765
-100031.5823184735 494973.5840466589
-100071.0590476764 492460.6241138367
-100126.3242866800 489947.9618226649
-100197.3758537074 487435.6963687486
-100284.2109437643 484923.9269320261
-100386.8261287501 482412.7526728539
-100505.2173575930 479902.2727280922
-100639.3799564100 477392.5862071902
-100789.3086286914 474883.7921882747
-100954.9974555099 472375.9897142377
-101136.4398957544 469869.2777888269
-101333.6287863880 467363.7553727370
-101546.5563427310 464859.5213797027
-101775.2141587680 462356.6746725942
-102019.5932074799 459855.3140595139
-102279.6838412004 457355.5382898961
-102555.4757919966 454857.4460506074
-102846.9581720745 452361.1359620521
-103154.1194742089 449866.7065742783
-103476.9475721974 447374.2563630870
-103815.4297213395 444883.8837261447
-104169.5525589396 442395.6869790991
-104539.3021048344 439909.7643516971
-104924.6637619449 437426.2139839077
-105325.6223168528 434945.1339220466
-105742.1619404008 432466.6221149064
-106174.2661883179 429990.7764098896
-106621.9180018681 427517.6945491450
-107085.0997085245 425047.4741657101
-107563.7930226664 422580.2127796558
-108057.9790463013 420116.0077942371
-108567.6382698112 417654.9564920473
-109092.7505727226 415197.1560311782
-109633.2952245011 412742.7034413830
-110189.2508853691 410291.6956202475
-110760.5956071494 407844.2293293637
-111347.3068341304 405400.4011905101
-111949.3614039577 402960.3076818369
-112566.7355485476 400524.0451340580
-113199.4048950260 398091.7097266470
-113847.3444666904 395663.3974840413
-114510.5286839961 393239.2042718498
-115188.9313655656 390819.2257930699
-115882.5257292227 388403.5575843083
-116591.2843930497 385992.2950120095
-117315.1793764678 383585.5332686912
-118054.1821013428 381183.3673691860
-118808.2633931125 378785.8921468903
-119577.3934819385 376393.2022500211
-120361.5420038822 374005.3921378781
-121160.6780021022 371622.5560771162
-121974.7699280781 369244.7881380230
-122803.7856428542 366872.1821908053
-123647.6924183098 364504.8319018834
-124506.4569384504 362142.8307301931
-125380.0453007231 359786.2719234963
-126268.4230173553 357435.2485146996
-127171.5550167156 355089.8533181818
-128089.4056446994 352750.1789261288
-129021.9386661355 350416.3177048798
-129969.1172662168 348088.3617912795
-130930.9040519541 345766.4030890414
-131907.2610536519 343450.5332651190
-132898.1497264076 341140.8437460877
-133903.5309516331 338837.4257145348
-134923.3650385988 336540.3701054604
-135957.6117260017 334249.7676026864
-137006.2301835532 331965.7086352775
-138069.1790135922 329688.2833739709
-139146.4162527189 327417.5817276164
-140237.8993734516 325153.6933396268
-141343.5852859057 322896.7075844393
-142463.4303394945 320646.7135639870
-143597.3903246530 318403.8001041812
-144745.4204745822 316168.0557514049
-145907.4754670179 313939.5687690167
-147083.5094260187 311718.4271338669
-148273.4759237775 309504.7185328243
-149477.3279824546 307298.5303593138
-150695.0180760320 305099.9497098670
-151926.4981321898 302909.0633806833
-153171.7195342041 300725.9578642036
-154430.6331228659 298550.7193456957
-155703.1891984225 296383.4336998515
-156989.3375225391 294224.1864873974
-158289.0273202820 292073.0629517162
-159602.2072821233 289930.1480154817
-160928.8255659668 287795.5262773064
-162268.8297991940 285669.2820084013
-163622.1670807324 283551.4991492496
-164988.7839831433 281442.2613062924
-166368.6265547315 279341.6517486279
-167761.6403216749 277249.7534047248
-169167.7702901753 275166.6488591478
-170586.9609486291 273092.4203492974
-172019.1562698191 271027.1497621636
-173464.2997131264 268970.9186310929
-174922.3342267625 266923.8081325695
-176393.2022500211 264885.8990830106
-177876.8457155512 262857.2719355763
-179373.2060516494 260838.0067769925
-180882.2241845716 258828.1833243901
-182403.8405408659 256827.8809221578
-183937.9950497239 254837.1785388094
-185484.6271453525 252856.1547638662
-187043.6757693648 250884.8878047549
-188615.0793731907 248923.4554837197
-190198.7759205065 246971.9352347503
-191794.7028896843 245030.4041005241
-193402.7972762600 243098.9387293662
-195022.9955954208 241177.6153722223
-196655.2338845113 239266.5098796485
-198299.4477055585 237365.6976988174
-199955.5721478162 235475.2538705392
-201623.5418303272 233595.2530262993
-203303.2909045044 231725.7693853119
-204994.7530567304 229866.8767515902
-206697.8615109760 228018.6485110323
-208412.5490314354 226181.1576285245
-210138.7479251813 224354.4766450606
-211876.3900448373 222538.6776748780
-213625.4067912676 220733.8324026109
-215385.7291162860 218940.0120804603
-217157.2875253811 217157.2875253809
-218940.0120804603 215385.7291162859
-220733.8324026109 213625.4067912676
-222538.6776748780 211876.3900448372
-224354.4766450606 210138.7479251813
-226181.1576285246 208412.5490314354
-228018.6485110323 206697.8615109759
-229866.8767515903 204994.7530567304
-231725.7693853120 203303.2909045042
-233595.2530262994 201623.5418303271
-235475.2538705393 199955.5721478162
-237365.6976988174 198299.4477055585
-239266.5098796484 196655.2338845114
-241177.6153722223 195022.9955954208
-243098.9387293664 193402.7972762599
+100000.0000000000 500000.0000000002
+100031.5823184735 494973.5840466591
+100126.3242866800 489947.9618226651
+100284.2109437643 484923.9269320263
+100505.2173575929 479902.2727280924
+100789.3086286914 474883.7921882748
+101136.4398957544 469869.2777888271
+101546.5563427310 464859.5213797028
+102019.5932074799 459855.3140595143
+102555.4757919966 454857.4460506075
+103154.1194742089 449866.7065742785
+103815.4297213395 444883.8837261449
+104539.3021048344 439909.7643516974
+105325.6223168527 434945.1339220467
+106174.2661883179 429990.7764098897
+107085.0997085245 425047.4741657103
+108057.9790463013 420116.0077942373
+109092.7505727226 415197.1560311784
+110189.2508853691 410291.6956202477
+111347.3068341304 405400.4011905103
+112566.7355485475 400524.0451340582
+113847.3444666904 395663.3974840415
+115188.9313655656 390819.2257930701
+116591.2843930496 385992.2950120097
+118054.1821013428 381183.3673691861
+119577.3934819385 376393.2022500213
+121160.6780021022 371622.5560771164
+122803.7856428542 366872.1821908055
+124506.4569384503 362142.8307301933
+126268.4230173551 357435.2485147000
+128089.4056446993 352750.1789261290
+129969.1172662167 348088.3617912797
+131907.2610536518 343450.5332651191
+133903.5309516328 338837.4257145352
+135957.6117260017 334249.7676026865
+138069.1790135921 329688.2833739711
+140237.8993734515 325153.6933396269
+142463.4303394944 320646.7135639872
+144745.4204745821 316168.0557514051
+147083.5094260186 311718.4271338672
+149477.3279824545 307298.5303593140
+151926.4981321897 302909.0633806834
+154430.6331228658 298550.7193456959
+156989.3375225390 294224.1864873975
+159602.2072821232 289930.1480154819
+162268.8297991939 285669.2820084015
+164988.7839831432 281442.2613062926
+167761.6403216748 277249.7534047250
+170586.9609486290 273092.4203492975
+173464.2997131264 268970.9186310930
+176393.2022500209 264885.8990830109
+179373.2060516492 260838.0067769926
+182403.8405408658 256827.8809221580
+185484.6271453524 252856.1547638664
+188615.0793731905 248923.4554837200
+191794.7028896842 245030.4041005243
+195022.9955954208 241177.6153722224
+198299.4477055584 237365.6976988175
+201623.5418303271 233595.2530262994
+204994.7530567303 229866.8767515904
+208412.5490314353 226181.1576285246
+211876.3900448372 222538.6776748781
+215385.7291162858 218940.0120804604
+218940.0120804601 215385.7291162860
+222538.6776748779 211876.3900448374
+226181.1576285244 208412.5490314355
+229866.8767515902 204994.7530567305
+233595.2530262992 201623.5418303273
+237365.6976988173 198299.4477055586
+241177.6153722220 195022.9955954211
 245030.4041005242 191794.7028896842
-246971.9352347501 190198.7759205065
-248923.4554837199 188615.0793731906
-250884.8878047550 187043.6757693648
-252856.1547638664 185484.6271453524
-254837.1785388094 183937.9950497238
+248923.4554837196 188615.0793731908
+252856.1547638661 185484.6271453525
 256827.8809221577 182403.8405408660
-258828.1833243902 180882.2241845715
-260838.0067769926 179373.2060516492
-262857.2719355764 177876.8457155512
+260838.0067769924 179373.2060516494
 264885.8990830107 176393.2022500210
-266923.8081325694 174922.3342267625
-268970.9186310929 173464.2997131264
-271027.1497621638 172019.1562698190
+268970.9186310926 173464.2997131267
 273092.4203492975 170586.9609486290
-275166.6488591476 169167.7702901753
-277249.7534047249 167761.6403216749
-279341.6517486281 166368.6265547314
+277249.7534047245 167761.6403216751
 281442.2613062924 164988.7839831432
-283551.4991492496 163622.1670807324
 285669.2820084011 162268.8297991941
-287795.5262773064 160928.8255659667
-289930.1480154819 159602.2072821232
-292073.0629517162 158289.0273202820
+289930.1480154816 159602.2072821233
 294224.1864873973 156989.3375225391
-296383.4336998516 155703.1891984225
-298550.7193456959 154430.6331228658
-300725.9578642038 153171.7195342039
+298550.7193456956 154430.6331228659
 302909.0633806833 151926.4981321898
-305099.9497098669 150695.0180760321
-307298.5303593139 149477.3279824546
-309504.7185328245 148273.4759237774
+307298.5303593136 149477.3279824547
 311718.4271338671 147083.5094260186
-313939.5687690165 145907.4754670180
-316168.0557514050 144745.4204745822
-318403.8001041815 143597.3903246527
-320646.7135639872 142463.4303394944
-322896.7075844394 141343.5852859056
+316168.0557514046 144745.4204745823
+320646.7135639869 142463.4303394946
 325153.6933396267 140237.8993734517
-327417.5817276164 139146.4162527189
-329688.2833739711 138069.1790135921
-331965.7086352776 137006.2301835532
+329688.2833739708 138069.1790135922
 334249.7676026862 135957.6117260018
-336540.3701054605 134923.3650385988
 338837.4257145349 133903.5309516330
-341140.8437460879 132898.1497264075
 343450.5332651191 131907.2610536519
-345766.4030890412 130930.9040519542
-348088.3617912796 129969.1172662168
-350416.3177048800 129021.9386661354
-352750.1789261289 128089.4056446994
-355089.8533181816 127171.5550167157
-357435.2485146999 126268.4230173551
-359786.2719234964 125380.0453007231
-362142.8307301933 124506.4569384503
-364504.8319018835 123647.6924183098
+348088.3617912793 129969.1172662169
+352750.1789261285 128089.4056446995
+357435.2485146995 126268.4230173553
+362142.8307301930 124506.4569384504
 366872.1821908052 122803.7856428543
-369244.7881380231 121974.7699280781
-371622.5560771164 121160.6780021022
-374005.3921378782 120361.5420038822
+371622.5560771161 121160.6780021023
 376393.2022500210 119577.3934819386
-378785.8921468905 118808.2633931124
 381183.3673691860 118054.1821013428
-383585.5332686914 117315.1793764677
 385992.2950120096 116591.2843930496
-388403.5575843081 115882.5257292228
-390819.2257930699 115188.9313655656
-393239.2042718500 114510.5286839960
-395663.3974840413 113847.3444666904
-398091.7097266471 113199.4048950260
-400524.0451340582 112566.7355485475
-402960.3076818370 111949.3614039577
-405400.4011905103 111347.3068341304
-407844.2293293638 110760.5956071494
+390819.2257930696 115188.9313655657
+395663.3974840410 113847.3444666906
+400524.0451340579 112566.7355485476
+405400.4011905100 111347.3068341304
 410291.6956202474 110189.2508853691
-412742.7034413831 109633.2952245011
 415197.1560311781 109092.7505727226
-417654.9564920476 108567.6382698111
 420116.0077942372 108057.9790463013
-422580.2127796561 107563.7930226663
-425047.4741657102 107085.0997085245
-427517.6945491452 106621.9180018681
+425047.4741657098 107085.0997085246
 429990.7764098896 106174.2661883179
-432466.6221149063 105742.1619404008
-434945.1339220466 105325.6223168527
-437426.2139839076 104924.6637619449
-439909.7643516973 104539.3021048344
-442395.6869790991 104169.5525589396
-444883.8837261450 103815.4297213395
-447374.2563630870 103476.9475721974
-449866.7065742785 103154.1194742089
-452361.1359620522 102846.9581720745
+434945.1339220463 105325.6223168529
+439909.7643516969 104539.3021048344
+444883.8837261446 103815.4297213395
+449866.7065742782 103154.1194742089
 454857.4460506073 102555.4757919966
-457355.5382898962 102279.6838412004
 459855.3140595140 102019.5932074799
-462356.6746725944 101775.2141587680
 464859.5213797027 101546.5563427310
-467363.7553727368 101333.6287863880
-469869.2777888270 101136.4398957544
-472375.9897142379 100954.9974555099
-474883.7921882747 100789.3086286914
-477392.5862071901 100639.3799564100
-479902.2727280923 100505.2173575930
-482412.7526728540 100386.8261287501
-484923.9269320263 100284.2109437643
-487435.6963687487 100197.3758537074
+469869.2777888266 101136.4398957544
+474883.7921882744 100789.3086286914
+479902.2727280919 100505.2173575930
+484923.9269320260 100284.2109437643
 489947.9618226648 100126.3242866800
-492460.6241138368 100071.0590476764
-494973.5840466592 100031.5823184735
-497486.7424137765 100007.8956575451
+494973.5840466588 100031.5823184735
 499999.9999999999 100000.0000000000
-502513.2575862237 100007.8956575451
 505026.4159533410 100031.5823184735
-507539.3758861634 100071.0590476764
 510052.0381773350 100126.3242866800
-512564.3036312512 100197.3758537074
-515076.0730679739 100284.2109437643
-517587.2473271462 100386.8261287501
-520097.7272719079 100505.2173575930
-522607.4137928098 100639.3799564100
-525116.2078117254 100789.3086286914
-527624.0102857623 100954.9974555099
-530130.7222111733 101136.4398957544
-532636.2446272630 101333.6287863880
+515076.0730679735 100284.2109437643
+520097.7272719076 100505.2173575929
+525116.2078117251 100789.3086286914
+530130.7222111729 101136.4398957544
 535140.4786202972 101546.5563427310
-537643.3253274058 101775.2141587680
-540144.6859404863 102019.5932074800
-542644.4617101040 102279.6838412005
+540144.6859404859 102019.5932074799
 545142.5539493926 102555.4757919966
-547638.8640379481 102846.9581720746
-550133.2934257217 103154.1194742089
-552625.7436369131 103476.9475721974
+550133.2934257213 103154.1194742088
 555116.1162738553 103815.4297213395
-557604.3130209007 104169.5525589396
-560090.2356483029 104539.3021048344
-562573.7860160923 104924.6637619449
-565054.8660779536 105325.6223168528
-567533.3778850936 105742.1619404008
-570009.2235901105 106174.2661883179
-572482.3054508549 106621.9180018681
-574952.5258342901 107085.0997085245
-577419.7872203442 107563.7930226664
+560090.2356483026 104539.3021048344
+565054.8660779533 105325.6223168527
+570009.2235901102 106174.2661883179
+574952.5258342897 107085.0997085245
 579883.9922057627 108057.9790463013
-582345.0435079526 108567.6382698112
 584802.8439688218 109092.7505727226
-587257.2965586171 109633.2952245011
 589708.3043797525 110189.2508853691
-592155.7706706364 110760.5956071494
-594599.5988094899 111347.3068341304
-597039.6923181632 111949.3614039577
+594599.5988094895 111347.3068341304
 599475.9548659420 112566.7355485476
-601908.2902733528 113199.4048950259
-604336.6025159588 113847.3444666905
-606760.7957281502 114510.5286839961
-609180.7742069303 115188.9313655657
-611596.4424156917 115882.5257292227
+604336.6025159585 113847.3444666904
+609180.7742069298 115188.9313655656
 614007.7049879903 116591.2843930496
-616414.4667313087 117315.1793764678
-618816.6326308142 118054.1821013429
-621214.1078531097 118808.2633931125
+618816.6326308139 118054.1821013428
 623606.7977499790 119577.3934819385
-625994.6078621220 120361.5420038822
 628377.4439228838 121160.6780021022
-630755.2118619771 121974.7699280781
 633127.8178091947 122803.7856428542
-635495.1680981164 123647.6924183098
-637857.1692698069 124506.4569384504
-640213.7280765038 125380.0453007231
-642564.7514853004 126268.4230173553
-644910.1466818182 127171.5550167156
-647249.8210738713 128089.4056446995
-649583.6822951201 129021.9386661354
-651911.6382087206 129969.1172662168
-654233.5969109586 130930.9040519541
+637857.1692698065 124506.4569384502
+642564.7514853000 126268.4230173551
+647249.8210738710 128089.4056446993
+651911.6382087203 129969.1172662167
 656549.4667348808 131907.2610536518
-658859.1562539123 132898.1497264076
-661162.5742854653 133903.5309516331
-663459.6298945397 134923.3650385989
+661162.5742854651 133903.5309516329
 665750.2323973136 135957.6117260017
-668034.2913647227 137006.2301835533
-670311.7166260290 138069.1790135922
-672582.4182723837 139146.4162527189
+670311.7166260288 138069.1790135920
 674846.3066603732 140237.8993734516
-677103.2924155605 141343.5852859056
-679353.2864360129 142463.4303394945
-681596.1998958187 143597.3903246528
-683831.9442485953 144745.4204745822
-686060.4312309832 145907.4754670179
-688281.5728661332 147083.5094260188
-690495.2814671756 148273.4759237775
-692701.4696406863 149477.3279824547
-694900.0502901330 150695.0180760319
+679353.2864360127 142463.4303394944
+683831.9442485949 144745.4204745821
+688281.5728661328 147083.5094260186
+692701.4696406859 149477.3279824545
 697090.9366193166 151926.4981321897
-699274.0421357964 153171.7195342041
 701449.2806543043 154430.6331228659
-703616.5663001486 155703.1891984227
 705775.8135126026 156989.3375225391
-707926.9370482840 158289.0273202820
-710069.8519845183 159602.2072821233
-712204.4737226937 160928.8255659668
-714330.7179915986 162268.8297991940
-716448.5008507502 163622.1670807323
-718557.7386937077 164988.7839831434
-720658.3482513721 166368.6265547315
-722750.2465952754 167761.6403216750
-724833.3511408522 169167.7702901753
-726907.5796507028 170586.9609486291
-728972.8502378364 172019.1562698191
-731029.0813689072 173464.2997131266
-733076.1918674305 174922.3342267625
+710069.8519845180 159602.2072821231
+714330.7179915984 162268.8297991938
+718557.7386937074 164988.7839831432
+722750.2465952750 167761.6403216748
+726907.5796507024 170586.9609486290
+731029.0813689069 173464.2997131263
 735114.1009169891 176393.2022500210
-737142.7280644238 177876.8457155513
 739161.9932230075 179373.2060516494
-741171.8166756100 180882.2241845717
 743172.1190778422 182403.8405408658
-745162.8214611907 183937.9950497239
-747143.8452361338 185484.6271453525
-749115.1121952452 187043.6757693649
-751076.5445162803 188615.0793731907
-753028.0647652497 190198.7759205065
-754969.5958994760 191794.7028896844
-756901.0612706337 193402.7972762600
-758822.3846277779 195022.9955954210
-760733.4901203515 196655.2338845113
+747143.8452361336 185484.6271453522
+751076.5445162799 188615.0793731905
+754969.5958994757 191794.7028896842
+758822.3846277776 195022.9955954208
 762634.3023011824 198299.4477055584
-764524.7461294607 199955.5721478162
 766404.7469737006 201623.5418303271
-768274.2306146880 203303.2909045044
 770133.1232484097 204994.7530567304
-771981.3514889678 206697.8615109760
 773818.8423714754 208412.5490314354
-775645.5233549395 210138.7479251815
 777461.3223251221 211876.3900448373
-779266.1675973890 213625.4067912675
-781059.9879195397 215385.7291162859
-782842.7124746189 217157.2875253809
-784614.2708837142 218940.0120804604
-786374.5932087324 220733.8324026109
-788123.6099551629 222538.6776748781
-789861.2520748186 224354.4766450606
-791587.4509685647 226181.1576285247
-793302.1384890240 228018.6485110323
+781059.9879195394 215385.7291162857
+784614.2708837140 218940.0120804601
+788123.6099551626 222538.6776748779
+791587.4509685645 226181.1576285244
 795005.2469432695 229866.8767515901
-796696.7090954958 231725.7693853120
 798376.4581696729 233595.2530262993
-800044.4278521839 235475.2538705394
 801700.5522944415 237365.6976988174
-803344.7661154888 239266.5098796486
-804977.0044045792 241177.6153722223
-806597.2027237401 243098.9387293664
-808205.2971103158 245030.4041005241
-809801.2240794934 246971.9352347501
-811384.9206268094 248923.4554837199
-812956.3242306352 250884.8878047550
-814515.3728546477 252856.1547638664
-816062.0049502761 254837.1785388094
-817596.1594591342 256827.8809221580
-819117.7758154285 258828.1833243901
-820626.7939483507 260838.0067769926
-822123.1542844488 262857.2719355763
+804977.0044045789 241177.6153722220
+808205.2971103155 245030.4041005239
+811384.9206268091 248923.4554837196
+814515.3728546475 252856.1547638661
+817596.1594591341 256827.8809221577
+820626.7939483506 260838.0067769923
 823606.7977499790 264885.8990830106
-825077.6657732376 266923.8081325697
 826535.7002868736 268970.9186310929
-827980.8437301810 271027.1497621638
 829413.0390513709 273092.4203492974
-830832.2297098248 275166.6488591479
-832238.3596783250 277249.7534047248
-833631.3734452686 279341.6517486281
-835011.2160168567 281442.2613062924
-836377.8329192676 283551.4991492496
-837731.1702008061 285669.2820084015
-839071.1744340332 287795.5262773064
-840397.7927178768 289930.1480154819
-841710.9726797180 292073.0629517162
-843010.6624774610 294224.1864873976
-844296.8108015775 296383.4336998515
-845569.3668771342 298550.7193456959
-846828.2804657961 300725.9578642037
+832238.3596783249 277249.7534047245
+835011.2160168565 281442.2613062921
+837731.1702008059 285669.2820084011
+840397.7927178766 289930.1480154815
+843010.6624774609 294224.1864873973
+845569.3668771341 298550.7193456956
 848073.5018678103 302909.0633806833
-849304.9819239681 305099.9497098672
 850522.6720175454 307298.5303593139
-851726.5240762226 309504.7185328245
 852916.4905739813 311718.4271338670
-854092.5245329820 313939.5687690165
-855254.5795254179 316168.0557514050
-856402.6096753471 318403.8001041812
-857536.5696605055 320646.7135639872
-858656.4147140943 322896.7075844393
-859762.1006265485 325153.6933396270
-860853.5837472811 327417.5817276164
-861930.8209864078 329688.2833739711
-862993.7698164468 331965.7086352775
+855254.5795254176 316168.0557514046
+857536.5696605054 320646.7135639869
+859762.1006265483 325153.6933396267
+861930.8209864078 329688.2833739708
 864042.3882739982 334249.7676026862
-865076.6349614011 336540.3701054605
 866096.4690483670 338837.4257145348
-867101.8502735925 341140.8437460879
 868092.7389463481 343450.5332651190
-869069.0959480461 345766.4030890415
 870030.8827337832 348088.3617912795
-870978.0613338646 350416.3177048800
-871910.5943553005 352750.1789261289
-872828.4449832843 355089.8533181816
-873731.5769826449 357435.2485146998
-874619.9546992769 359786.2719234963
-875493.5430615497 362142.8307301933
-876352.3075816901 364504.8319018835
-877196.2143571458 366872.1821908055
-878025.2300719219 369244.7881380231
-878839.3219978977 371622.5560771164
-879638.4579961179 374005.3921378781
+871910.5943553005 352750.1789261285
+873731.5769826447 357435.2485146995
+875493.5430615495 362142.8307301929
+877196.2143571457 366872.1821908052
+878839.3219978977 371622.5560771161
 880422.6065180614 376393.2022500209
-881191.7366068875 378785.8921468905
 881945.8178986572 381183.3673691860
-882684.8206235322 383585.5332686914
 883408.7156069503 385992.2950120096
-884117.4742707773 388403.5575843085
-884811.0686344344 390819.2257930699
-885489.4713160039 393239.2042718500
-886152.6555333096 395663.3974840413
-886800.5951049740 398091.7097266471
-887433.2644514525 400524.0451340582
-888050.6385960423 402960.3076818370
-888652.6931658696 405400.4011905103
-889239.4043928506 407844.2293293638
-889810.7491146310 410291.6956202477
-890366.7047754989 412742.7034413830
+884811.0686344344 390819.2257930696
+886152.6555333094 395663.3974840409
+887433.2644514524 400524.0451340579
+888652.6931658696 405400.4011905100
+889810.7491146307 410291.6956202474
 890907.2494272774 415197.1560311780
-891432.3617301888 417654.9564920475
 891942.0209536988 420116.0077942371
-892436.2069773336 422580.2127796561
 892914.9002914755 425047.4741657102
-893378.0819981319 427517.6945491452
 893825.7338116821 429990.7764098896
-894257.8380595993 432466.6221149067
-894674.3776831473 434945.1339220466
-895075.3362380550 437426.2139839075
-895460.6978951656 439909.7643516973
-895830.4474410603 442395.6869790991
-896184.5702786605 444883.8837261449
-896523.0524278027 447374.2563630870
-896845.8805257911 449866.7065742785
-897153.0418279255 452361.1359620522
-897444.5242080034 454857.4460506075
-897720.3161587996 457355.5382898961
+894674.3776831471 434945.1339220463
+895460.6978951655 439909.7643516969
+896184.5702786604 444883.8837261446
+896845.8805257911 449866.7065742781
+897444.5242080034 454857.4460506072
 897980.4067925201 459855.3140595140
-898224.7858412319 462356.6746725944
 898453.4436572690 464859.5213797027
-898666.3712136119 467363.7553727371
 898863.5601042456 469869.2777888269
-899045.0025444902 472375.9897142379
-899210.6913713086 474883.7921882747
-899360.6200435900 477392.5862071901
-899494.7826424070 479902.2727280923
-899613.1738712499 482412.7526728540
-899715.7890562357 484923.9269320263
-899802.6241462927 487435.6963687487
-899873.6757133200 489947.9618226652
-899928.9409523236 492460.6241138367
-899968.4176815264 494973.5840466592
-899992.1043424548 497486.7424137765
+899210.6913713086 474883.7921882743
+899494.7826424070 479902.2727280919
+899715.7890562357 484923.9269320259
+899873.6757133200 489947.9618226648
+899968.4176815264 494973.5840466588
 900000.0000000000 500000.0000000000
 
