Index: ../trunk-jpl/src/m/classes/thermal.py
===================================================================
--- ../trunk-jpl/src/m/classes/thermal.py	(revision 18553)
+++ ../trunk-jpl/src/m/classes/thermal.py	(revision 18554)
@@ -17,6 +17,7 @@
 		self.spctemperature    = float('NaN')
 		self.penalty_threshold = 0
 		self.stabilization     = 0
+		self.reltol            = 0
 		self.maxiter           = 0
 		self.penalty_lock      = 0
 		self.penalty_factor    = 0
@@ -33,6 +34,7 @@
 		string="%s\n%s"%(string,fielddisplay(self,'spctemperature','temperature constraints (NaN means no constraint) [K]'))
 		string="%s\n%s"%(string,fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: SUPG'))
 		string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of non linear iterations'))
+		string="%s\n%s"%(string,fielddisplay(self,'reltol','relative tolerance criterion'))
 		string="%s\n%s"%(string,fielddisplay(self,'penalty_lock','stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization)'))
 		string="%s\n%s"%(string,fielddisplay(self,'penalty_threshold','threshold to declare convergence of thermal solution (default is 0)'))
 		string="%s\n%s"%(string,fielddisplay(self,'isenthalpy','use an enthalpy formulation to include temperate ice (default is 0)'))
@@ -56,6 +58,9 @@
 		#Type of stabilization used
 		self.stabilization=1
 
+		#Relative tolerance for the enthalpy convergence
+		self.reltol=0.01
+
 		#Maximum number of iterations
 		self.maxiter=100
 
@@ -88,6 +93,9 @@
 			md = checkfield(md,'fieldname','thermal.isenthalpy','numel',[1],'values',[0,1])
 			md = checkfield(md,'fieldname','thermal.isdynamicbasalspc','numel',[1],'values',[0,1]);
 			if(md.thermal.isenthalpy):
+				if numpy.isnan(md.stressbalance.reltol):
+					md.checkmessage("for a steadystate computation, stressbalance.reltol (relative convergence criterion) must be defined!")
+				md = checkfield(md,'fieldname','thermal.reltol','>',0.,'message',"reltol must be larger than zero");
 				md = checkfield(md,'fieldname','thermal.isdynamicbasalspc','numel', [1],'values',[1], 'message',"for enthalpy run thermal.isdynamicbasalspc should be true")
 		md = checkfield(md,'fieldname','thermal.requested_outputs','stringrow',1)
 
@@ -97,6 +105,7 @@
 		WriteData(fid,'object',self,'fieldname','spctemperature','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1)
 		WriteData(fid,'object',self,'fieldname','penalty_threshold','format','Integer')
 		WriteData(fid,'object',self,'fieldname','stabilization','format','Integer')
+		WriteData(fid,'object',self,'fieldname','reltol','format','Double');
 		WriteData(fid,'object',self,'fieldname','maxiter','format','Integer')
 		WriteData(fid,'object',self,'fieldname','penalty_lock','format','Integer')
 		WriteData(fid,'object',self,'fieldname','penalty_factor','format','Double')
Index: ../trunk-jpl/src/m/classes/thermal.m
===================================================================
--- ../trunk-jpl/src/m/classes/thermal.m	(revision 18553)
+++ ../trunk-jpl/src/m/classes/thermal.m	(revision 18554)
@@ -98,10 +98,10 @@
 				md = checkfield(md,'fieldname','thermal.isenthalpy','numel',[1],'values',[0 1]);
 				md = checkfield(md,'fieldname','thermal.isdynamicbasalspc','numel', [1],'values',[0 1]);
 				if(md.thermal.isenthalpy)
-					md = checkfield(md,'fieldname','thermal.reltol','>',0.,'message','reltol must be larger than zero');
 					if isnan(md.stressbalance.reltol),
 						md = checkmessage(md,['for a steadystate computation, stressbalance.reltol (relative convergence criterion) must be defined!']);
 					end
+					md = checkfield(md,'fieldname','thermal.reltol','>',0.,'message','reltol must be larger than zero');
 					md = checkfield(md,'fieldname','thermal.isdynamicbasalspc','numel', [1],'values',[1], 'message',['for enthalpy run thermal.isdynamicbasalspc should be 1']);
 				end
 	    end
