Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp	(revision 16962)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp	(revision 16963)
@@ -58,14 +58,9 @@
 	/*Retrieve inputs as the initial state for the non linear iteration*/
 	GetSolutionFromInputsx(&ug_sed,femmodel);	
-
-	//test
-	GetSolutionFromInputsx(&uf_sed,femmodel);_assert_(uf_sed);
+	Reducevectorgtofx(&uf_sed, ug_sed, femmodel->nodes,femmodel->parameters);
 
 	if(isefficientlayer) {
 		femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
 		GetSolutionFromInputsx(&ug_epl,femmodel);
-
-		//test
-		GetSolutionFromInputsx(&uf_epl,femmodel);_assert_(uf_epl);
 
 		/*Initialize the transfer input*/
@@ -86,6 +81,6 @@
 		
 		//test
-		uf_sed_sub_iter=uf_sed->Duplicate();
-		uf_sed->Copy(uf_sed_sub_iter);
+		/* uf_sed_sub_iter=uf_sed->Duplicate(); */
+		/* uf_sed->Copy(uf_sed_sub_iter); */
 
 		if(isefficientlayer){
@@ -109,4 +104,6 @@
 		sedconverged=false;
 		for(;;){
+			uf_sed_sub_iter=uf_sed->Duplicate();_assert_(uf_sed_sub_iter);
+			uf_sed->Copy(uf_sed_sub_iter);
 			SystemMatricesx(&Kff,&Kfs,&pf,&df,&sediment_kmax,femmodel);
 			CreateNodalConstraintsx(&ys,femmodel->nodes,HydrologyDCInefficientAnalysisEnum);
@@ -115,7 +112,4 @@
 			Solverx(&uf_sed,Kff,pf,uf_sed_sub_iter,df,femmodel->parameters);
 			delete Kff; delete pf; delete df;
-			/* delete uf_sed_sub_iter; */
-			/* uf_sed_sub_iter=uf_sed->Duplicate(); */
-			/* uf_sed->Copy(uf_sed_sub_iter); */
 			delete ug_sed;
 			Mergesolutionfromftogx(&ug_sed,uf_sed,ys,femmodel->nodes,femmodel->parameters); delete ys;
@@ -133,24 +127,20 @@
 			sedcount++;
 
-			//testing stuff
 			if(sedconverged){
 				sedconverged=false;
 				duf=uf_sed_sub_iter->Duplicate();_assert_(duf);
-				uf_sed_sub_iter->Copy(duf);_assert_(uf_sed_sub_iter);
-				duf->AYPX(uf_sed,-1.0);_assert_(duf);
+				uf_sed_sub_iter->Copy(duf);
+				duf->AYPX(uf_sed,-1.0);
 				ndu_sed=duf->Norm(NORM_TWO);
+				delete duf;
 				nu_sed=uf_sed_sub_iter->Norm(NORM_TWO);
 				if (xIsNan<IssmDouble>(ndu_sed) || xIsNan<IssmDouble>(nu_sed)) _error_("convergence criterion is NaN!");
 				if (ndu_sed==0.0 && nu_sed==0.0) nu_sed=1.0e-6; /*Hacking the case where the EPL is used but empty*/
 				if((ndu_sed/nu_sed)<eps_hyd){
-				if(VerboseConvergence()) _printf0_("   # Inner sediment convergence achieve \n");
+					if(VerboseConvergence()) _printf0_("   # Inner sediment convergence achieve \n");
 					sedconverged=true;
 				}
-				delete duf;
 			}
 			delete uf_sed_sub_iter;
-			uf_sed_sub_iter=uf_sed->Duplicate();_assert_(uf_sed_sub_iter);
-			uf_sed->Copy(uf_sed_sub_iter);_assert_(uf_sed);
-			//end of the crap
 
 			if(sedconverged){
@@ -166,5 +156,4 @@
 				InputUpdateFromSolutionx(femmodel,ug_sed);
 				InputUpdateFromConstantx(femmodel,sediment_kmax,HydrologySedimentKmaxEnum);
-				delete uf_sed_sub_iter;
 				break;
 			}
@@ -199,5 +188,7 @@
 				//updating mask after the computation of the epl thickness (Allow to close too thin EPL)
 				femmodel->HydrologyEPLupdateDomainx();
-
+				ug_epl_sub_iter=ug_epl->Duplicate();_assert_(ug_epl_sub_iter);
+				ug_epl->Copy(ug_epl_sub_iter);_assert_(ug_epl);
+				
 				SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
 				CreateNodalConstraintsx(&ys,femmodel->nodes,HydrologyDCEfficientAnalysisEnum);
@@ -214,9 +205,4 @@
 				ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel);
 				femmodel->HydrologyEPLupdateDomainx();			
-					/* /\*Updating Nodal Mask*\/ */
-					/* HydrologyDCInefficientAnalysis* analysis = new HydrologyDCInefficientAnalysis(); */
-					/* analysis->ElementizeEplMask(femmodel); */
-					/* delete analysis; */
-					/* femmodel->HydrologyTransferx(); */
 
 				if (!eplconverged){
@@ -231,9 +217,9 @@
 				eplcount++;
 
-				//testing stuff
+
 				if(eplconverged){
 					eplconverged=false;
 					dug=ug_epl_sub_iter->Duplicate();_assert_(dug);
-					ug_epl_sub_iter->Copy(dug);_assert_(ug_epl_sub_iter);
+					ug_epl_sub_iter->Copy(dug);
 					dug->AYPX(ug_epl,-1.0);
 					ndu_epl=dug->Norm(NORM_TWO);
@@ -246,7 +232,4 @@
 				}
 				delete ug_epl_sub_iter;
-				ug_epl_sub_iter=ug_epl->Duplicate();_assert_(ug_epl_sub_iter);
-				ug_epl->Copy(ug_epl_sub_iter);_assert_(ug_epl);
-				//end of the crap
 
 				if(eplconverged){
@@ -261,5 +244,4 @@
 					InputUpdateFromConstantx(femmodel,sediment_kmax,MeltingOffsetEnum);
 					InputUpdateFromSolutionx(femmodel,ug_epl);
-					delete ug_epl_sub_iter;
 					break;
 				}
@@ -271,5 +253,5 @@
 		if(!hydroconverged){
 			//compute norm(du)/norm(u)
-			dug=ug_sed->Duplicate(); _assert_(dug);
+			dug=ug_sed_main_iter->Duplicate(); _assert_(dug);
 			ug_sed_main_iter->Copy(dug);	
 			dug->AYPX(ug_sed,-1.0);
@@ -292,6 +274,6 @@
 				}
 				else{
-					dug=ug_epl->Duplicate();_assert_(dug); 
-					ug_epl_main_iter->Copy(dug);_assert_(ug_epl_main_iter); 
+					dug=ug_epl_main_iter->Duplicate();_assert_(dug); 
+					ug_epl_main_iter->Copy(dug); 
 					dug->AYPX(ug_epl,-1.0);
 					ndu_epl=dug->Norm(NORM_TWO); 
