Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp	(revision 15076)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp	(revision 15077)
@@ -29,5 +29,5 @@
 	int        constraints_converged;
 	int        num_unstable_constraints;
-	int        count;
+	int        sedcount,eplcount,hydrocount;
 	int        hydro_maxiter;
 	IssmDouble sediment_kmax,time;
@@ -43,5 +43,5 @@
 	femmodel->BasisIntegralsx();
 	hydro_maxiter=100;
-	count=1;
+	hydrocount=1;
 	sedconverged=false;
 	eplconverged=false;
@@ -60,4 +60,6 @@
 
 	for(;;){
+		sedcount=1;
+		eplcount=1;
 		//save pointer to old velocity
 		delete aged_uf_sed;aged_uf_sed=uf_sed;
@@ -78,5 +80,6 @@
 			femmodel->SystemMatricesx(&Kff, &Kfs, &pf,&df, &sediment_kmax);
 			CreateNodalConstraintsx(&ys,femmodel->nodes,HydrologyDCInefficientAnalysisEnum);
-			Reduceloadx(pf,Kfs,ys); delete Kfs; delete uf_sed;
+			Reduceloadx(pf,Kfs,ys); delete Kfs;
+			if(sedcount>1)delete uf_sed;
 			Solverx(&uf_sed, Kff, pf,old_uf, df, femmodel->parameters);
 			delete old_uf; old_uf=uf_sed->Duplicate();
@@ -90,9 +93,9 @@
 				if(VerboseConvergence()) _pprintLine_("   #unstable constraints = " << num_unstable_constraints);
 				if(num_unstable_constraints==0) sedconverged = true;
-				if (count>=hydro_maxiter){
-					_error_("   maximum number of iterations (" << hydro_maxiter << ") exceeded");
-				}
-			}
-			count++;
+				if (sedcount>=hydro_maxiter){
+					_error_("   maximum number of Sediment iterations (" << hydro_maxiter << ") exceeded");
+				}
+			}
+			sedcount++;
 
 			if(sedconverged){
@@ -117,5 +120,6 @@
 			femmodel->SystemMatricesx(&Kff, &Kfs, &pf,&df,NULL);
 			CreateNodalConstraintsx(&ys,femmodel->nodes,HydrologyDCEfficientAnalysisEnum);
-			Reduceloadx(pf,Kfs,ys); delete Kfs; delete uf_epl;
+			Reduceloadx(pf,Kfs,ys); delete Kfs;
+			if(eplcount>1) delete uf_epl;
 			Solverx(&uf_epl, Kff, pf,old_uf, df, femmodel->parameters);
 			delete old_uf; old_uf=uf_epl->Duplicate();
@@ -129,9 +133,9 @@
 				if(VerboseConvergence()) _pprintLine_("   #unstable constraints = " << num_unstable_constraints);
 				if(num_unstable_constraints==0) eplconverged = true;
-				if (count>=hydro_maxiter){
-					_error_("   maximum number of iterations (" << hydro_maxiter << ") exceeded");
-				}
-			}
-			count++;
+				if (eplcount>=hydro_maxiter){
+					_error_("   maximum number of EPL iterations (" << hydro_maxiter << ") exceeded");
+				}
+			}
+			eplcount++;
 
 			if(eplconverged){
@@ -148,8 +152,8 @@
 			_assert_(aged_uf_sed); _assert_(uf_sed);
 			duf=uf_sed->Duplicate(); _assert_(duf);
-			aged_uf_sed->Copy(duf);	duf->AYPX(uf_sed,-1.0);
+			aged_uf_sed->Copy(duf);	
+			duf->AYPX(uf_sed,-1.0);
 			ndu_sed=duf->Norm(NORM_TWO); nu_sed=aged_uf_sed->Norm(NORM_TWO);
 			if (xIsNan<IssmDouble>(ndu_sed) || xIsNan<IssmDouble>(nu_sed)) _error_("convergence criterion is NaN!");
-			
 			if(isefficientlayer){
 				duf=aged_uf_epl->Duplicate(); aged_uf_epl->Copy(duf); duf->AYPX(uf_epl,-1.0);
@@ -160,24 +164,28 @@
 			if (!xIsNan<IssmDouble>(eps_hyd)){
 				if((ndu_sed/nu_sed)<eps_hyd){
-					if(VerboseConvergence()) _pprintLine_(setw(50) << left << "   Sediment Convergence criterion: norm(du)/norm(u)" << ndu_sed/nu_sed*100 << " < " << eps_hyd*100 << " %");
+					if(VerboseConvergence()) _pprintLine_(setw(50) << left << "   Sediment Convergence criterion:" << ndu_sed/nu_sed*100 << " < " << eps_hyd*100 << " %");
 					hydroconverged=true;
 				}
 				else{ 
-					if(VerboseConvergence()) _pprintLine_(setw(50) << left << "   Sediment Convergence criterion: norm(du)/norm(u)" << ndu_sed/nu_sed*100 << " > " << eps_hyd*100 << " %");
+					if(VerboseConvergence()) _pprintLine_(setw(50) << left << "   Sediment Convergence criterion:" << ndu_sed/nu_sed*100 << " > " << eps_hyd*100 << " %");
 					hydroconverged=false;
 				}
 				if(isefficientlayer){
 					if((ndu_epl/nu_epl)<eps_hyd){
-						if(VerboseConvergence()) _pprintLine_(setw(50) << left << "   EPL Convergence criterion: norm(du)/norm(u)" << ndu_epl/nu_epl*100 << " < " << eps_hyd*100 << " %");
+						if(VerboseConvergence()) _pprintLine_(setw(50) << left << "   EPL Convergence criterion:" << ndu_epl/nu_epl*100 << " < " << eps_hyd*100 << " %");
 					}
 					else{ 
-						if(VerboseConvergence()) _pprintLine_(setw(50) << left << "   EPL Convergence criterion: norm(du)/norm(u)" << ndu_epl/nu_epl*100 << " > " << eps_hyd*100 << " %");
+						if(VerboseConvergence()) _pprintLine_(setw(50) << left << "   EPL Convergence criterion:" << ndu_epl/nu_epl*100 << " > " << eps_hyd*100 << " %");
 						hydroconverged=false;
 					}
 				}
 			}
-			else _pprintLine_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu_sed/nu_sed*100 << " %");
-		}
-	
+			else _pprintLine_(setw(50) << left << "   Convergence criterion:" << ndu_sed/nu_sed*100 << " %");
+			if (hydrocount>=hydro_maxiter){
+				_error_("   maximum number for hydrological global iterations (" << hydro_maxiter << ") exceeded");
+			}
+		}
+		hydrocount++;
+			
 		if(hydroconverged)break;
 	}
