Index: /issm/trunk/src/c/modules/Reduceloadfromgtofx/Reduceloadfromgtofx.cpp
===================================================================
--- /issm/trunk/src/c/modules/Reduceloadfromgtofx/Reduceloadfromgtofx.cpp	(revision 5894)
+++ /issm/trunk/src/c/modules/Reduceloadfromgtofx/Reduceloadfromgtofx.cpp	(revision 5895)
@@ -25,4 +25,5 @@
 	int verbose; 
 	bool kffpartition=false;
+	bool fromlocalsize=true;
 
 	parameters->FindParam(&verbose,VerboseEnum);
@@ -47,5 +48,5 @@
 				/*pf = pf - Kfs * y_s;*/
 				MatGetLocalSize(Kfs,&Kfsm,&Kfsn);
-				Kfsy_s=NewVecFromLocalSize(Kfsm);
+				Kfsy_s=NewVec(Kfsm,fromlocalsize);
 				if (flag_ys0){
 
Index: /issm/trunk/src/c/modules/Reduceloadx/Reduceloadx.cpp
===================================================================
--- /issm/trunk/src/c/modules/Reduceloadx/Reduceloadx.cpp	(revision 5894)
+++ /issm/trunk/src/c/modules/Reduceloadx/Reduceloadx.cpp	(revision 5895)
@@ -18,4 +18,5 @@
 	int Kfsm,Kfsn;
 	PetscScalar a;
+	bool fromlocalsize=true;
 	
 	if(pf){
@@ -23,5 +24,5 @@
 		/*pf = pf - Kfs * y_s;*/
 		MatGetLocalSize(Kfs,&Kfsm,&Kfsn);
-		Kfsy_s=NewVecFromLocalSize(Kfsm);
+		Kfsy_s=NewVec(Kfsm,fromlocalsize);
 		if (flag_ys0){
 
Index: /issm/trunk/src/c/modules/SystemMatricesx/SystemMatricesx.cpp
===================================================================
--- /issm/trunk/src/c/modules/SystemMatricesx/SystemMatricesx.cpp	(revision 5894)
+++ /issm/trunk/src/c/modules/SystemMatricesx/SystemMatricesx.cpp	(revision 5895)
@@ -53,8 +53,8 @@
 	if(kflag){
 
-		if(!buildkff)Kgg=NewMat(gsize,gsize,NULL,&connectivity,&numberofdofspernode);
+		if(!buildkff)Kgg=NewMat(gsize,gsize,connectivity,numberofdofspernode);
 		else{
-			Kff=NewMat(fsize,fsize,NULL,&connectivity,&numberofdofspernode);
-			Kfs=NewMat(fsize,ssize,NULL,&connectivity,&numberofdofspernode);
+			Kff=NewMat(fsize,fsize,connectivity,numberofdofspernode);
+			Kfs=NewMat(fsize,ssize,connectivity,numberofdofspernode);
 		}
 
Index: /issm/trunk/src/c/objects/Params/PetscMatParam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Params/PetscMatParam.cpp	(revision 5894)
+++ /issm/trunk/src/c/objects/Params/PetscMatParam.cpp	(revision 5895)
@@ -149,5 +149,5 @@
 		serial_mat=(double*)xmalloc(M*N*sizeof(double));
 		memcpy(serial_mat,marshalled_dataset,M*N*sizeof(double));marshalled_dataset+=(M*N*sizeof(double));
-		value=NewMat(M,N,&sparsity,NULL,NULL);
+		value=NewMat(M,N,sparsity);
 		idxm=(int*)xmalloc(M*sizeof(int));
 		idxn=(int*)xmalloc(N*sizeof(int));
Index: /issm/trunk/src/c/toolkits/petsc/patches/MatInvert.cpp
===================================================================
--- /issm/trunk/src/c/toolkits/petsc/patches/MatInvert.cpp	(revision 5894)
+++ /issm/trunk/src/c/toolkits/petsc/patches/MatInvert.cpp	(revision 5895)
@@ -32,5 +32,5 @@
 
 	/*Create identitiy matrix: */
-	identity=NewMat(M,N,&sparsity,NULL,NULL);
+	identity=NewMat(M,N,sparsity);
 	diagonal=NewVec(M);
 	VecSet(diagonal,1.0);
Index: /issm/trunk/src/c/toolkits/petsc/patches/NewMat.cpp
===================================================================
--- /issm/trunk/src/c/toolkits/petsc/patches/NewMat.cpp	(revision 5894)
+++ /issm/trunk/src/c/toolkits/petsc/patches/NewMat.cpp	(revision 5895)
@@ -77,4 +77,6 @@
 	int    d_nz,o_nz;
 	int    nnz;
+	MatType type;
+
 
 	/*Determine local sizes: */
@@ -86,5 +88,13 @@
 	o_nz=(int)connectivity*numberofdofspernode/2;
 
-	MatCreateMPIAIJ(MPI_COMM_WORLD,m,n,M,N,d_nz,NULL,o_nz,NULL,&outmatrix); 
+	MatCreate(MPI_COMM_WORLD,&outmatrix);
+	MatSetSizes(outmatrix,m,n,M,N);
+	MatSetFromOptions(outmatrix);
+
+	/*preallocation  according to type: */
+	MatGetType(outmatrix,&type);
+	if(strcmp(type,"mpiaij")==0){
+		MatMPIAIJSetPreallocation(outmatrix,d_nz,NULL,o_nz,NULL);
+	}
 
 	return outmatrix;
Index: /issm/trunk/src/c/toolkits/petsc/patches/petscpatches.h
===================================================================
--- /issm/trunk/src/c/toolkits/petsc/patches/petscpatches.h	(revision 5894)
+++ /issm/trunk/src/c/toolkits/petsc/patches/petscpatches.h	(revision 5895)
@@ -22,5 +22,5 @@
 
 int PetscDetermineLocalSize(int global_size);
-Vec NewVec(int size,bool fromlocalsize);
+Vec NewVec(int size,bool fromlocalsize=false);
 Mat NewMat(int M,int N);
 Mat NewMat(int M,int N,double sparsity);
