Index: /issm/trunk-jpl/src/c/solutionsequences/convergence.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/convergence.cpp	(revision 18618)
+++ /issm/trunk-jpl/src/c/solutionsequences/convergence.cpp	(revision 18619)
@@ -7,5 +7,5 @@
 #include "../shared/shared.h"
 
-void convergence(bool* pconverged, Matrix<IssmDouble>* Kff,Vector<IssmDouble>* pf,Vector<IssmDouble>* uf,Vector<IssmDouble>* old_uf,Parameters* parameters){
+void convergence(bool* pconverged, Matrix<IssmDouble>* Kff,Vector<IssmDouble>* pf,Vector<IssmDouble>* uf,Vector<IssmDouble>* old_uf,IssmDouble eps_res,IssmDouble eps_rel,IssmDouble eps_abs){
 
 	/*output*/
@@ -25,10 +25,4 @@
 	int analysis_type;
 
-	/*convergence options*/
-	IssmDouble eps_res;
-	IssmDouble eps_rel;
-	IssmDouble eps_abs;
-	IssmDouble yts;
-
 	if(VerboseModule()) _printf0_("   checking convergence\n");
 
@@ -39,18 +33,4 @@
 		return;
 	}
-
-	/*get convergence options*/
-	parameters->FindParam(&eps_res,StressbalanceRestolEnum);
-	// get analysis type
-	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
-	if(analysis_type==StressbalanceAnalysisEnum)
-		parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
-	else if(analysis_type==EnthalpyAnalysisEnum)
-		parameters->FindParam(&eps_rel,ThermalReltolEnum);
-	else
-		eps_rel = NAN;
-
-	parameters->FindParam(&eps_abs,StressbalanceAbstolEnum);
-	parameters->FindParam(&yts,ConstantsYtsEnum);
 
 	/*Display solver caracteristics*/
@@ -139,13 +119,13 @@
 		//print
 		if (!xIsNan<IssmDouble>(eps_abs)){
-			if ((nduinf*yts)<eps_abs){
-				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: max(du)" << nduinf*yts << " < " << eps_abs << " m/yr\n");
+			if ((nduinf)<eps_abs){
+				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: max(du)" << nduinf << " < " << eps_abs << "\n");
 			}
 			else{
-				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: max(du)" << nduinf*yts << " > " << eps_abs << " m/yr\n");
+				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: max(du)" << nduinf << " > " << eps_abs << "\n");
 				converged=false;
 			}
 		}
-		else  _printf0_(setw(50) << left << "   Convergence criterion: max(du)" << nduinf*yts << " m/yr\n");
+		else  _printf0_(setw(50) << left << "   Convergence criterion: max(du)" << nduinf << "\n");
 
 	}
Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_newton.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_newton.cpp	(revision 18618)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_newton.cpp	(revision 18619)
@@ -30,5 +30,6 @@
 	/*parameters:*/
 	int max_nonlinear_iterations;
-	int  configuration_type;
+	int configuration_type;
+	IssmDouble eps_res,eps_rel,eps_abs;
 
 	/*Recover parameters: */
@@ -36,4 +37,7 @@
 	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 	femmodel->parameters->FindParam(&newton,StressbalanceIsnewtonEnum);
+	femmodel->parameters->FindParam(&eps_res,StressbalanceRestolEnum);
+	femmodel->parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
+	femmodel->parameters->FindParam(&eps_abs,StressbalanceAbstolEnum);
 	femmodel->UpdateConstraintsx();
 
@@ -83,5 +87,5 @@
 
 		/*Check convergence*/
-		convergence(&converged,Kff,pf,uf,old_uf,femmodel->parameters); 
+		convergence(&converged,Kff,pf,uf,old_uf,eps_res,eps_rel,eps_abs); 
 		delete Kff; delete pf;
 		if(converged==true){	
Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_nonlinear.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_nonlinear.cpp	(revision 18618)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_nonlinear.cpp	(revision 18619)
@@ -31,8 +31,13 @@
 	int max_nonlinear_iterations;
 	int configuration_type;
+	IssmDouble eps_res,eps_rel,eps_abs;
+
 
 	/*Recover parameters: */
 	femmodel->parameters->FindParam(&min_mechanical_constraints,StressbalanceRiftPenaltyThresholdEnum);
 	femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum);
+	femmodel->parameters->FindParam(&eps_res,StressbalanceRestolEnum);
+	femmodel->parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
+	femmodel->parameters->FindParam(&eps_abs,StressbalanceAbstolEnum);
 	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 	femmodel->UpdateConstraintsx();
@@ -66,5 +71,5 @@
 		Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters);delete ys;
 
-		convergence(&converged,Kff,pf,uf,old_uf,femmodel->parameters); delete Kff; delete pf; delete df;
+		convergence(&converged,Kff,pf,uf,old_uf,eps_res,eps_rel,eps_abs); delete Kff; delete pf; delete df;
 		InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
 		InputUpdateFromSolutionx(femmodel,ug);
Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp	(revision 18618)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp	(revision 18619)
@@ -33,8 +33,12 @@
 	int  max_nonlinear_iterations;
 	int  configuration_type;
+	IssmDouble eps_res,eps_rel,eps_abs;
 
 	/*Recover parameters: */
 	femmodel->parameters->FindParam(&min_mechanical_constraints,StressbalanceRiftPenaltyThresholdEnum);
 	femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum);
+	femmodel->parameters->FindParam(&eps_res,StressbalanceRestolEnum);
+	femmodel->parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
+	femmodel->parameters->FindParam(&eps_abs,StressbalanceAbstolEnum);
 	femmodel->UpdateConstraintsx();
 
@@ -68,5 +72,5 @@
 		InputUpdateFromSolutionx(femmodel,ug_horiz);
 
-		convergence(&converged,Kff_horiz,pf_horiz,uf_horiz,old_uf_horiz,femmodel->parameters); delete Kff_horiz; delete pf_horiz; delete df_horiz;
+		convergence(&converged,Kff_horiz,pf_horiz,uf_horiz,old_uf_horiz,eps_res,eps_rel,eps_abs); delete Kff_horiz; delete pf_horiz; delete df_horiz;
 
 		/*Second compute vertical velocity: */
Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_thermal_nonlinear.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_thermal_nonlinear.cpp	(revision 18618)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_thermal_nonlinear.cpp	(revision 18619)
@@ -31,8 +31,8 @@
 	int thermal_penalty_threshold;
 	int thermal_maxiter;
-	IssmDouble thermal_reltol;
 
 	/*parameters:*/
 	int  configuration_type;
+	IssmDouble eps_rel;
 
 	/*Recover parameters: */
@@ -40,4 +40,5 @@
 	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 	femmodel->parameters->FindParam(&thermal_maxiter,ThermalMaxiterEnum);
+	femmodel->parameters->FindParam(&eps_rel,ThermalReltolEnum);
 
 	converged=false;
@@ -46,5 +47,5 @@
 	if(isenthalpy){
 		femmodel->parameters->FindParam(&isdynamicbasalspc,ThermalIsdynamicbasalspcEnum);
-		femmodel->parameters->FindParam(&thermal_reltol,ThermalReltolEnum);
+		femmodel->parameters->FindParam(&eps_rel,ThermalReltolEnum);
 		femmodel->UpdateConstraintsx();
 
@@ -73,5 +74,5 @@
 		Mergesolutionfromftogx(&tg, tf,ys,femmodel->nodes,femmodel->parameters); delete ys;
 		if(isenthalpy){ 
-			convergence(&converged,Kff,pf,tf,tf_old,femmodel->parameters); 
+			convergence(&converged,Kff,pf,tf,tf_old,0.05,eps_rel,NAN); 
 			InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
 		}
Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequences.h
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequences.h	(revision 18618)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequences.h	(revision 18619)
@@ -24,5 +24,5 @@
 
 /*convergence*/
-void convergence(bool* pconverged, Matrix<IssmDouble>* K_ff,Vector<IssmDouble>* p_f,Vector<IssmDouble>* u_f,Vector<IssmDouble>* u_f_old,Parameters* parameters);
+void convergence(bool* pconverged, Matrix<IssmDouble>* K_ff,Vector<IssmDouble>* p_f,Vector<IssmDouble>* u_f,Vector<IssmDouble>* u_f_old,IssmDouble eps_res,IssmDouble eps_rel,IssmDouble eps_abs);
 
 #endif
Index: /issm/trunk-jpl/src/m/classes/stressbalance.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/stressbalance.m	(revision 18618)
+++ /issm/trunk-jpl/src/m/classes/stressbalance.m	(revision 18619)
@@ -223,5 +223,5 @@
 			WriteData(fid,'object',obj,'class','stressbalance','fieldname','restol','format','Double');
 			WriteData(fid,'object',obj,'class','stressbalance','fieldname','reltol','format','Double');
-			WriteData(fid,'object',obj,'class','stressbalance','fieldname','abstol','format','Double');
+			WriteData(fid,'object',obj,'class','stressbalance','fieldname','abstol','format','Double','scale',1./yts);
 			WriteData(fid,'object',obj,'class','stressbalance','fieldname','isnewton','format','Integer');
 			WriteData(fid,'object',obj,'class','stressbalance','fieldname','FSreconditioning','format','Double');
Index: /issm/trunk-jpl/src/m/classes/stressbalance.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/stressbalance.py	(revision 18618)
+++ /issm/trunk-jpl/src/m/classes/stressbalance.py	(revision 18619)
@@ -173,5 +173,5 @@
 		WriteData(fid,'object',self,'class','stressbalance','fieldname','restol','format','Double')
 		WriteData(fid,'object',self,'class','stressbalance','fieldname','reltol','format','Double')
-		WriteData(fid,'object',self,'class','stressbalance','fieldname','abstol','format','Double')
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','abstol','format','Double','scale',1./yts)
 		WriteData(fid,'object',self,'class','stressbalance','fieldname','isnewton','format','Integer')
 		WriteData(fid,'object',self,'class','stressbalance','fieldname','FSreconditioning','format','Double')
