Index: /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 24712)
+++ /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 24713)
@@ -894,26 +894,4 @@
 	}
 }/*}}}*/
-void           DamageEvolutionAnalysis::LumpedMassMatrix(Vector<IssmDouble>** pMlff,FemModel* femmodel){/*{{{*/
-
-	/*Initialize Lumped mass matrix (actually we just save its diagonal)*/
-	int fsize      = femmodel->nodes->NumberOfDofs(FsetEnum);
-	int flocalsize = femmodel->nodes->NumberOfDofsLocal(FsetEnum);
-	Vector<IssmDouble>* Mlff = new Vector<IssmDouble>(flocalsize,fsize);
-
-	/*Create and assemble matrix*/
-	for(int i=0;i<femmodel->elements->Size();i++){
-		Element*       element = xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
-		ElementMatrix* MLe     = this->CreateMassMatrix(element);
-		if(MLe){
-			MLe->Lump();
-			MLe->AddDiagonalToGlobal(Mlff);
-		}
-		delete MLe;
-	}
-	Mlff->Assemble();
-
-	/*Assign output pointer*/
-	*pMlff=Mlff;
-}/*}}}*/
 void           DamageEvolutionAnalysis::MassMatrix(Matrix<IssmDouble>** pMff,FemModel* femmodel){/*{{{*/
 
Index: /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.h	(revision 24712)
+++ /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.h	(revision 24713)
@@ -41,5 +41,4 @@
 		ElementMatrix* CreateMassMatrix(Element* element);
 		void           FctKMatrix(Matrix<IssmDouble>** pKff,Matrix<IssmDouble>** pKfs,FemModel* femmodel);
-		void           LumpedMassMatrix(Vector<IssmDouble>** pMLff,FemModel* femmodel);
 		void           MassMatrix(Matrix<IssmDouble>** pMff,FemModel* femmodel);
 };
Index: /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 24712)
+++ /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 24713)
@@ -975,4 +975,5 @@
 	/*Clean up and return*/
 	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(D);
 	xDelete<IssmDouble>(basis);
 	xDelete<IssmDouble>(dbasis);
@@ -1048,26 +1049,4 @@
 	}
 }/*}}}*/
-void           MasstransportAnalysis::LumpedMassMatrix(Vector<IssmDouble>** pMlff,FemModel* femmodel){/*{{{*/
-
-	/*Initialize Lumped mass matrix (actually we just save its diagonal)*/
-	int fsize      = femmodel->nodes->NumberOfDofs(FsetEnum);
-	int flocalsize = femmodel->nodes->NumberOfDofsLocal(FsetEnum);
-	Vector<IssmDouble>* Mlff = new Vector<IssmDouble>(flocalsize,fsize);
-
-	/*Create and assemble matrix*/
-	for(int i=0;i<femmodel->elements->Size();i++){
-		Element*       element = xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
-		ElementMatrix* MLe     = this->CreateMassMatrix(element);
-		if(MLe){
-			MLe->Lump();
-			MLe->AddDiagonalToGlobal(Mlff);
-		}
-		delete MLe;
-	}
-	Mlff->Assemble();
-
-	/*Assign output pointer*/
-	*pMlff=Mlff;
-}/*}}}*/
 void           MasstransportAnalysis::MassMatrix(Matrix<IssmDouble>** pMff,FemModel* femmodel){/*{{{*/
 
Index: /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.h	(revision 24712)
+++ /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.h	(revision 24713)
@@ -39,5 +39,4 @@
 		ElementMatrix* CreateMassMatrix(Element* element);
 		void           FctKMatrix(Matrix<IssmDouble>** pKff,Matrix<IssmDouble>** pKfs,FemModel* femmodel);
-		void           LumpedMassMatrix(Vector<IssmDouble>** pMLff,FemModel* femmodel);
 		void           MassMatrix(Matrix<IssmDouble>** pMff,FemModel* femmodel);
 };
Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_fct.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_fct.cpp	(revision 24712)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_fct.cpp	(revision 24713)
@@ -338,5 +338,4 @@
 	IssmDouble           theta,deltat,dmax;
 	int                  configuration_type,analysis_type;
-	Vector<IssmDouble>*  Ml = NULL;
 	Matrix<IssmDouble>*  K  = NULL;
 	Matrix<IssmDouble>*  Mc = NULL;
@@ -357,5 +356,4 @@
 		case MasstransportAnalysisEnum:
 			manalysis = new MasstransportAnalysis();
-			manalysis->LumpedMassMatrix(&Ml,femmodel);
 			manalysis->MassMatrix(&Mc,femmodel);
 			manalysis->FctKMatrix(&K,NULL,femmodel);
@@ -363,5 +361,4 @@
 		case DamageEvolutionAnalysisEnum:
 			danalysis = new DamageEvolutionAnalysis();
-			danalysis->LumpedMassMatrix(&Ml,femmodel);
 			danalysis->MassMatrix(&Mc,femmodel);
 			danalysis->FctKMatrix(&K,NULL,femmodel);
@@ -381,12 +378,5 @@
 	Vec udot     = NULL;
 	Mat K_petsc  = K->pmatrix->matrix;
-	Vec Ml_petsc = Ml->pvector->vector;
 	Mat Mc_petsc = Mc->pmatrix->matrix;
-
-	/*Create D Matrix*/
-	CreateDMatrix(&D_petsc,K_petsc);
-
-	/*Create LHS: [ML − theta*detlat *(K+D)^n+1]*/
-	CreateLHS(&LHS,&dmax,K_petsc,D_petsc,Ml_petsc,theta,deltat,femmodel,configuration_type);
 
 	/*Get previous solution u^n*/
@@ -394,4 +384,15 @@
 	Reducevectorgtofx(&uf, ug, femmodel->nodes,femmodel->parameters);
 	delete ug;
+
+	/*Compute lumped mass matrix*/
+	Vec Ml_petsc = NULL;
+	VecDuplicate(uf->pvector->vector,&Ml_petsc);
+	MatGetRowSum(Mc_petsc,Ml_petsc);
+
+	/*Create D Matrix*/
+	CreateDMatrix(&D_petsc,K_petsc);
+
+	/*Create LHS: [ML − theta*detlat *(K+D)^n+1]*/
+	CreateLHS(&LHS,&dmax,K_petsc,D_petsc,Ml_petsc,theta,deltat,femmodel,configuration_type);
 
 	/*Create RHS: [ML + (1 − theta) deltaT L^n] u^n */
@@ -445,5 +446,5 @@
 	VecFree(&Fbar);
 	VecFree(&udot);
-	delete Ml;
+	VecFree(&Ml_petsc);
 
 	/*Update Element inputs*/
