Index: /issm/trunk-jpl/src/c/classes/objects/Bucket.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/Bucket.h	(revision 14786)
+++ /issm/trunk-jpl/src/c/classes/objects/Bucket.h	(revision 14787)
@@ -34,4 +34,48 @@
 		/*constructors, destructors: */
 		Bucket(){ /*{{{*/
+			this->Initialize();
+		} /*}}}*/
+		Bucket(int min,int* idxmin,int nin,int* idxnin,doubletype* valuesin,InsMode modein){ /*{{{*/
+			
+			this->Initialize();
+
+			this->type=MATRIX_BUCKET;
+			this->m=min;
+			this->n=nin;
+			this->mode=modein;
+			if(this->m){
+				this->idxm=xNew<int>(this->m); 
+				xMemCpy(this->idxm,idxmin,this->m);
+			}
+			if(this->n){
+				this->idxn=xNew<int>(this->n); 
+				xMemCpy(this->idxn,idxnin,this->n);
+			}
+			if(this->m*this->n){
+				this->values=xNew<doubletype>(this->n*this->m);
+				xMemCpy(this->values,valuesin,this->n*this->m);
+			}
+		} /*}}}*/
+		Bucket(int min,int* idxmin,doubletype* valuesin,InsMode modein){ /*{{{*/ 
+			this->Initialize();
+			
+			this->type=VECTOR_BUCKET; 
+			this->m=min;
+			this->mode=modein;
+			if(this->m){
+				this->idxm=xNew<int>(this->m); 
+				xMemCpy(this->idxm,idxmin,this->m);
+				
+				this->values=xNew<doubletype>(this->m);
+				xMemCpy(this->values,valuesin,this->m);
+			}
+		} /*}}}*/
+		~Bucket(){ /*{{{*/
+			xDelete<int>(idxm);
+			xDelete<int>(idxn);
+			xDelete<doubletype>(values);
+		} /*}}}*/
+		void Initialize(void){ /*{{{*/
+			
 			this->type=0;
 			this->m=0;
@@ -41,42 +85,7 @@
 			this->values=NULL;
 			mode=INS_VAL;
-		} /*}}}*/
-		Bucket(int min,int* idxmin,int nin,int* idxnin,doubletype* valuesin,InsMode modein){ /*{{{*/
-			this->type=MATRIX_BUCKET;
-			this->m=min;
-			this->n=nin;
-			this->mode=modein;
-			if(this->m){
-				this->idxm=xNew<int>(this->m); 
-				xMemCpy(this->idxm,idxmin,this->m);
-			}
-			if(this->n){
-				this->idxn=xNew<int>(this->n); 
-				xMemCpy(this->idxn,idxnin,this->n);
-			}
-			if(this->m*this->n){
-				this->values=xNew<doubletype>(this->n*this->m);
-				xMemCpy(this->values,valuesin,this->n*this->m);
-			}
-		} /*}}}*/
-		Bucket(int min,int* idxmin,doubletype* valuesin,InsMode modein){ /*{{{*/ 
-			this->type=VECTOR_BUCKET; 
-			this->m=min;
-			this->n=1;
-			this->mode=modein;
-			if(this->m){
-				this->idxm=xNew<int>(this->m); 
-				xMemCpy(this->idxm,idxmin,this->m);
-			}
-			if(this->m){
-				this->values=xNew<doubletype>(this->m);
-				xMemCpy(this->values,valuesin,this->m);
-			}
-		} /*}}}*/
-		~Bucket(){ /*{{{*/
-			xDelete<int>(idxm);
-			xDelete<int>(idxn);
-			xDelete<doubletype>(values);
-		} /*}}}*/
+
+		} /*}}}*/
+		
 
 		/*object virtual functions definitions:*/
@@ -162,4 +171,9 @@
 		};
 		/*}}}*/
+		int BucketType(void){ /*{{{*/
+
+			return type;
+		};
+		/*}}}*/
 #ifdef _HAVE_MPI_
 			void Isend(int receiver_rank,MPI_Request* requests,int* pcount,MPI_Comm comm){ /*{{{*/
@@ -172,16 +186,16 @@
 			/*Send all the information required: */
 			MPI_Isend(&type,1,MPI_INT,receiver_rank,2,comm,requests+count); count++;
-			MPI_Isend(&m,1,MPI_INT,receiver_rank,2,comm,requests+count); count++;
-			if(m){ MPI_Isend(idxm,m,MPI_INT,receiver_rank,3,comm,requests+count); count++; }
+			MPI_Isend(&m,1,MPI_INT,receiver_rank,3,comm,requests+count); count++;
+			if(m){ MPI_Isend(idxm,m,MPI_INT,receiver_rank,4,comm,requests+count); count++; }
 			if(type==MATRIX_BUCKET){
-				MPI_Isend(&n,1,MPI_INT,receiver_rank,4,comm,requests+count); count++;
-				if(n){ MPI_Isend(idxn,n,MPI_INT,receiver_rank,5,comm,requests+count); count++; }
-				if(m*n){ MPI_Isend(values,m*n,MPI_DOUBLE,receiver_rank,6,comm,requests+count); count++; }
+				MPI_Isend(&n,1,MPI_INT,receiver_rank,5,comm,requests+count); count++;
+				if(n){ MPI_Isend(idxn,n,MPI_INT,receiver_rank,6,comm,requests+count); count++; }
+				if(m*n){ MPI_Isend(values,m*n,MPI_DOUBLE,receiver_rank,7,comm,requests+count); count++; }
 			}
 			else{
-				if(m){ MPI_Isend(values,m,MPI_DOUBLE,receiver_rank,6,comm,requests+count); count++; }
+				if(m){ MPI_Isend(values,m,MPI_DOUBLE,receiver_rank,7,comm,requests+count); count++; }
 			}
 			int_mode=(int)mode;
-			MPI_Isend(&int_mode,1,MPI_INT,receiver_rank,7,comm,requests+count); count++;
+			MPI_Isend(&int_mode,1,MPI_INT,receiver_rank,8,comm,requests+count); count++;
 
 			/*Allocate pointers: */
@@ -195,18 +209,18 @@
 
 			MPI_Recv(&type,1, MPI_INT,sender_rank,2, comm, &status);
-			MPI_Recv(&m,1, MPI_INT,sender_rank,2, comm, &status);
+			MPI_Recv(&m,1, MPI_INT,sender_rank,3, comm, &status);
 			if(m){
 				idxm=new int[m];
-				MPI_Recv(idxm,m, MPI_INT,sender_rank,3, comm, &status);
-			}
-			if(type=MATRIX_BUCKET){
-				MPI_Recv(&n,1, MPI_INT,sender_rank,4, comm, &status);
+				MPI_Recv(idxm,m, MPI_INT,sender_rank,4, comm, &status);
+			}
+			if(type==MATRIX_BUCKET){
+				MPI_Recv(&n,1, MPI_INT,sender_rank,5, comm, &status);
 				if(n){
 					idxn=new int[n];
-					MPI_Recv(idxn,n, MPI_INT,sender_rank,5, comm, &status);
+					MPI_Recv(idxn,n, MPI_INT,sender_rank,6, comm, &status);
 				}
 				if(m*n){
 					values=new doubletype[m*n];
-					MPI_Recv(values,m*n, MPI_DOUBLE,sender_rank,6, comm, &status);
+					MPI_Recv(values,m*n, MPI_DOUBLE,sender_rank,7, comm, &status);
 				}
 			}
@@ -214,8 +228,8 @@
 				if(m){
 					values=new doubletype[m];
-					MPI_Recv(values,m, MPI_DOUBLE,sender_rank,6, comm, &status);
+					MPI_Recv(values,m, MPI_DOUBLE,sender_rank,7, comm, &status);
 				}
 			} 
-			MPI_Recv(&int_mode,1, MPI_INT,sender_rank,7, comm, &status);
+			MPI_Recv(&int_mode,1, MPI_INT,sender_rank,8, comm, &status);
 			mode=(InsMode)int_mode;
 
