Index: /issm/trunk-jpl/src/c/toolkits/issm/IssmAbsMat.h
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/issm/IssmAbsMat.h	(revision 24681)
+++ /issm/trunk-jpl/src/c/toolkits/issm/IssmAbsMat.h	(revision 24682)
@@ -43,5 +43,5 @@
 		virtual void SetValues(int m,int* idxm,int n,int* idxn,doubletype* values,InsMode mode)=0;
 		virtual void Convert(MatrixType type)=0;
-		virtual void SetZero(void){};
+		virtual void SetZero(void)=0;
 		#ifndef _HAVE_WRAPPERS_
 		virtual IssmAbsVec<IssmDouble>* Solve(IssmAbsVec<IssmDouble>* pf, Parameters* parameters)=0;
Index: /issm/trunk-jpl/src/c/toolkits/issm/IssmDenseMat.h
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/issm/IssmDenseMat.h	(revision 24681)
+++ /issm/trunk-jpl/src/c/toolkits/issm/IssmDenseMat.h	(revision 24682)
@@ -112,11 +112,9 @@
 
 		/*IssmAbsMat virtual functions*/
-		/*Echo{{{*/
-		void Echo(void){
-
-			int i,j;
+		void Echo(void){/*{{{*/
+
 			_printf_("IssmDenseMat size " << this->M << "-" << this->N << "\n");
-			for(i=0;i<M;i++){
-				for(j=0;j<N;j++){
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
 					_printf_(this->matrix[N*i+j] << " ");
 				}
@@ -125,6 +123,5 @@
 		}
 		/*}}}*/
-		/*Assemble{{{*/
-		void Assemble(void){
+		void Assemble(void){/*{{{*/
 
 			/*do nothing*/
@@ -132,6 +129,5 @@
 		}
 		/*}}}*/
-		/*Norm{{{*/
-		doubletype Norm(NormMode mode){
+		doubletype Norm(NormMode mode){/*{{{*/
 
 			doubletype norm;
@@ -167,14 +163,10 @@
 		}
 		/*}}}*/
-		/*GetSize{{{*/
-		void GetSize(int* pM,int* pN){
-
+		void GetSize(int* pM,int* pN){/*{{{*/
 			*pM=this->M;
 			*pN=this->N;
-
-		}
-		/*}}}*/
-		/*GetLocalSize{{{*/
-		void GetLocalSize(int* pM,int* pN){
+		}
+		/*}}}*/
+		void GetLocalSize(int* pM,int* pN){/*{{{*/
 
 			*pM=this->M;
@@ -183,6 +175,5 @@
 		}
 		/*}}}*/
-		/*MatMult{{{*/
-		void MatMult(IssmAbsVec<doubletype>* Xin,IssmAbsVec<doubletype>* AXin){
+		void MatMult(IssmAbsVec<doubletype>* Xin,IssmAbsVec<doubletype>* AXin){/*{{{*/
 
 			/*We assume that the vectors coming in are of compatible type: */
@@ -214,6 +205,5 @@
 		}
 		/*}}}*/
-		/*Duplicate{{{*/
-		IssmDenseMat<doubletype>* Duplicate(void){
+		IssmDenseMat<doubletype>* Duplicate(void){/*{{{*/
 
 			doubletype dummy=0;
@@ -223,6 +213,5 @@
 		}
 		/*}}}*/
-		/*ToSerial{{{*/
-		doubletype* ToSerial(void){
+		doubletype* ToSerial(void){/*{{{*/
 
 			doubletype* buffer=NULL;
@@ -236,6 +225,5 @@
 		}
 		/*}}}*/
-		/*SetValues{{{*/
-		void SetValues(int m,int* idxm,int n,int* idxn,doubletype* values,InsMode mode){
+		void SetValues(int m,int* idxm,int n,int* idxn,doubletype* values,InsMode mode){/*{{{*/
 
 			int i,j;
@@ -254,6 +242,5 @@
 		}
 		/*}}}*/
-		/*Convert{{{*/
-		void Convert(MatrixType type){
+		void Convert(MatrixType type){/*{{{*/
 
 			/*do nothing*/
@@ -261,7 +248,13 @@
 		}
 		/*}}}*/		
+		void SetZero(void){/*{{{*/
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
+					this->matrix[N*i+j] = 0.;
+				}
+			}
+		}/*}}}*/
 		#ifndef _HAVE_WRAPPERS_
-		/*Solve{{{*/
-		IssmAbsVec<IssmDouble>* Solve(IssmAbsVec<IssmDouble>* pfin, Parameters* parameters){
+		IssmAbsVec<IssmDouble>* Solve(IssmAbsVec<IssmDouble>* pfin, Parameters* parameters){/*{{{*/
 
 			/*First off, we assume that the type of IssmAbsVec is IssmSeqVec. So downcast: */
Index: /issm/trunk-jpl/src/c/toolkits/issm/IssmMpiDenseMat.h
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/issm/IssmMpiDenseMat.h	(revision 24681)
+++ /issm/trunk-jpl/src/c/toolkits/issm/IssmMpiDenseMat.h	(revision 24682)
@@ -400,4 +400,7 @@
 		}
 		/*}}}*/
+		void SetZero(void){/*{{{*/
+			for(int i=0;i<this->m*this->N;i++) this->matrix[i] = 0.;
+		}/*}}}*/
 		void Convert(MatrixType type){/*{{{*/
 			_error_("not supported yet!");
Index: /issm/trunk-jpl/src/c/toolkits/issm/IssmMpiSparseMat.h
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/issm/IssmMpiSparseMat.h	(revision 24681)
+++ /issm/trunk-jpl/src/c/toolkits/issm/IssmMpiSparseMat.h	(revision 24682)
@@ -91,6 +91,4 @@
 		void Init(int Min,int Nin){/*{{{*/
 			
-			int i;
-
 			this->buckets=new DataSet();
 
@@ -107,5 +105,5 @@
 			if (m*N){
 				this->matrix=xNew<SparseRow<doubletype>*>(m);
-				for(i=0;i<m;i++){
+				for(int i=0;i<m;i++){
 					this->matrix[i]=new SparseRow<doubletype>(N);
 				}
@@ -114,15 +112,13 @@
 		/*}}}*/
 		~IssmMpiSparseMat(){/*{{{*/
-			int i;
-
 			if(m*N){
-				for(i=0;i<m;i++){
+				for(int i=0;i<m;i++){
 					delete this->matrix[i];
 				}
 				xDelete<SparseRow<doubletype>*>(this->matrix);
 			}
-			M=0;
-			N=0;
-			m=0;
+			this->M=0;
+			this->N=0;
+			this->m=0;
 			delete this->buckets;
 		}
@@ -421,4 +417,21 @@
 		}
 		/*}}}*/
+		void SetZero(void){/*{{{*/
+
+			/*Reset buckets*/
+			delete this->buckets;
+			this->buckets=new DataSet();
+
+			/*reset matrix*/
+			if(m*N){
+				for(int i=0;i<m;i++) delete this->matrix[i];
+				xDelete<SparseRow<doubletype>*>(this->matrix);
+
+				this->matrix=xNew<SparseRow<doubletype>*>(m);
+				for(int i=0;i<m;i++) this->matrix[i]=new SparseRow<doubletype>(N);
+			}
+
+			/*Reallocate matrix*/
+		}/*}}}*/
 		void Convert(MatrixType type){/*{{{*/
 			_error_("not supported yet!");
Index: /issm/trunk-jpl/src/c/toolkits/issm/IssmMpiVec.h
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/issm/IssmMpiVec.h	(revision 24681)
+++ /issm/trunk-jpl/src/c/toolkits/issm/IssmMpiVec.h	(revision 24682)
@@ -380,6 +380,5 @@
 		void Set(doubletype value){/*{{{*/
 
-			int i;
-			for(i=0;i<this->m;i++)this->vector[i]=value;
+			for(int i=0;i<this->m;i++)this->vector[i]=value;
 
 		}
Index: /issm/trunk-jpl/src/c/toolkits/issm/IssmSeqVec.h
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/issm/IssmSeqVec.h	(revision 24681)
+++ /issm/trunk-jpl/src/c/toolkits/issm/IssmSeqVec.h	(revision 24682)
@@ -173,6 +173,5 @@
 		void Set(doubletype value){/*{{{*/
 
-			int i;
-			for(i=0;i<this->M;i++)this->vector[i]=value;
+			for(int i=0;i<this->M;i++)this->vector[i]=value;
 
 		}
