Index: /issm/trunk/src/c/objects/Numerics/ElementMatrix.cpp
===================================================================
--- /issm/trunk/src/c/objects/Numerics/ElementMatrix.cpp	(revision 5832)
+++ /issm/trunk/src/c/objects/Numerics/ElementMatrix.cpp	(revision 5833)
@@ -114,16 +114,16 @@
 		if(P[Ke2->row_flocaldoflist[i]] >= Ke1->nrows) fsize++;
 	}
-	printf("fsize = %i\n",fsize);
-	ISSMERROR("STOP");
 	if(fsize){
 		this->row_flocaldoflist =(int*)xmalloc(fsize*sizeof(int));
 		this->row_fglobaldoflist=(int*)xmalloc(fsize*sizeof(int));
 		for(i=0;i<Ke1->row_fsize;i++){
-			this->row_flocaldoflist[i]=Ke1->row_flocaldoflist[i];
+			this->row_flocaldoflist[i] =Ke1->row_flocaldoflist[i];
+			this->row_fglobaldoflist[i]=Ke1->row_fglobaldoflist[i];
 		}
 		counter=Ke1->row_fsize;
 		for(i=0;i<Ke2->row_fsize;i++){
 			if(P[Ke2->row_flocaldoflist[i]] >= Ke1->nrows){
-				this->row_flocaldoflist[counter]=P[Ke2->row_flocaldoflist[i]];
+				this->row_flocaldoflist[counter] =P[Ke2->row_flocaldoflist[i]];
+				this->row_fglobaldoflist[counter]=Ke2->row_fglobaldoflist[i];
 			}
 		}
@@ -134,12 +134,23 @@
 	}
 
-	ssize=Ke1->row_ssize+Ke2->row_ssize;
-	this->row_ssize=ssize;
+	/*Sset*/
+	ssize=Ke1->row_ssize;
+	for(i=0;i<Ke2->row_ssize;i++){
+		if(P[Ke2->row_slocaldoflist[i]] >= Ke1->nrows) ssize++;
+	}
 	if(ssize){
-		ISSMERROR("STOP");
-		this->row_slocaldoflist=(int*)xmalloc(ssize*sizeof(int));
+		this->row_slocaldoflist =(int*)xmalloc(ssize*sizeof(int));
 		this->row_sglobaldoflist=(int*)xmalloc(ssize*sizeof(int));
-		//memcpy(this->row_slocaldoflist,slocaldoflist,ssize*sizeof(int));
-		//memcpy(this->row_sglobaldoflist,sglobaldoflist,ssize*sizeof(int));
+		for(i=0;i<Ke1->row_ssize;i++){
+			this->row_slocaldoflist[i] =Ke1->row_slocaldoflist[i];
+			this->row_sglobaldoflist[i]=Ke1->row_sglobaldoflist[i];
+		}
+		counter=Ke1->row_ssize;
+		for(i=0;i<Ke2->row_ssize;i++){
+			if(P[Ke2->row_slocaldoflist[i]] >= Ke1->nrows){
+				this->row_slocaldoflist[counter] =P[Ke2->row_slocaldoflist[i]];
+				this->row_sglobaldoflist[counter]=Ke2->row_sglobaldoflist[i];
+			}
+		}
 	}
 	else{
@@ -388,6 +399,10 @@
 	this->square=Ke->square;
 	this->kff   =Ke->kff;
+
 	this->values=(double*)xmalloc(this->nrows*this->ncols*sizeof(double));
 	memcpy(this->values,Ke->values,this->nrows*this->ncols*sizeof(double));
+
+	this->gglobaldoflist=(int*)xmalloc(this->nrows*sizeof(int));
+	memcpy(this->gglobaldoflist,Ke->gglobaldoflist,this->nrows*sizeof(int));
 
 	this->row_fsize=Ke->row_fsize;
