Index: /issm/trunk/src/c/modules/InputConvergencex/InputConvergencex.cpp
===================================================================
--- /issm/trunk/src/c/modules/InputConvergencex/InputConvergencex.cpp	(revision 4777)
+++ /issm/trunk/src/c/modules/InputConvergencex/InputConvergencex.cpp	(revision 4778)
@@ -8,15 +8,15 @@
 #include "../../EnumDefinitions/EnumDefinitions.h"
 
-int InputConvergencex(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters,int* enums, int num_enums, int* criterionenums, double* criterionvalues,int num_criterionenums){
+bool InputConvergencex(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters,int* enums, int num_enums, int* criterionenums, double* criterionvalues,int num_criterionenums){
 
 	/*intermediary:*/
-	int         i;
-	int         converged = 1;
-	int         node_converged=1;
-	double     *eps       = NULL;
 	extern int  my_rank;
-	int         rank_allowed;
-	Element*    element=NULL;
-	int         verbose=0;
+	int      i;
+	bool     converged      = true;
+	bool     node_converged = true;
+	double  *eps            = NULL;
+	int      rank_allowed;
+	Element *element        = NULL;
+	int      verbose        = 0;
 
 	/*retrieve parameters: */
Index: /issm/trunk/src/c/modules/InputConvergencex/InputConvergencex.h
===================================================================
--- /issm/trunk/src/c/modules/InputConvergencex/InputConvergencex.h	(revision 4777)
+++ /issm/trunk/src/c/modules/InputConvergencex/InputConvergencex.h	(revision 4778)
@@ -8,5 +8,5 @@
 
 /* local prototypes: */
-int InputConvergencex(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters,int* enums, int num_enums, int* criterionenums, double* criterionvalues,int num_criterionenums);
+bool InputConvergencex(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters,int* enums, int num_enums, int* criterionenums, double* criterionvalues,int num_criterionenums);
 
 #endif  /* _INPUTCONVERGENCEX_H */
Index: /issm/trunk/src/c/objects/Elements/Beam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Beam.cpp	(revision 4777)
+++ /issm/trunk/src/c/objects/Elements/Beam.cpp	(revision 4778)
@@ -405,10 +405,10 @@
 /*}}}*/
 /*FUNCTION Beam::InputConvergence{{{1*/
-void  Beam::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){
+void  Beam::InputConvergence(bool* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){
 
 	int     i;
 	Input** new_inputs=NULL;
 	Input** old_inputs=NULL;
-	int     converged=1;
+	bool    converged=true;
 
 	new_inputs=(Input**)xmalloc(num_enums/2*sizeof(Input*)); //half the enums are for the new inputs
@@ -425,5 +425,5 @@
 	for(i=0;i<num_criterionenums;i++){
 		IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2,criterionenums[i]);
-		if(eps[i]>criterionvalues[i]) converged=0; 
+		if(eps[i]>criterionvalues[i]) converged=false; 
 	}
 
Index: /issm/trunk/src/c/objects/Elements/Beam.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Beam.h	(revision 4777)
+++ /issm/trunk/src/c/objects/Elements/Beam.h	(revision 4778)
@@ -84,5 +84,5 @@
 		void	   InputAXPY(int YEnum, double scalar, int XEnum);
 		void	   InputControlConstrain(int control_type,double cm_min, double cm_max);
-		void	   InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);
+		void	   InputConvergence(bool* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);
 		void     InputDepthAverageAtBase(int enum_type,int average_enum_type){ISSMERROR("not implemented yet");}
 		void	   InputDuplicate(int original_enum,int new_enum);
Index: /issm/trunk/src/c/objects/Elements/Element.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Element.h	(revision 4777)
+++ /issm/trunk/src/c/objects/Elements/Element.h	(revision 4778)
@@ -72,5 +72,5 @@
 		virtual void   InputAXPY(int YEnum, double scalar, int XEnum)=0;
 		virtual void   InputControlConstrain(int control_type,double cm_min, double cm_max)=0;
-		virtual void   InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums)=0;
+		virtual void   InputConvergence(bool* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums)=0;
 
 		/*Implementation: */
Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4777)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4778)
@@ -1074,10 +1074,10 @@
 /*}}}*/
 /*FUNCTION Penta::InputConvergence{{{1*/
-void  Penta::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){
+void  Penta::InputConvergence(bool* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){
 
 	int     i;
 	Input** new_inputs=NULL;
 	Input** old_inputs=NULL;
-	int     converged=1;
+	bool    converged=true;
 
 	new_inputs=(Input**)xmalloc(num_enums/2*sizeof(Input*)); //half the enums are for the new inputs
@@ -1094,5 +1094,5 @@
 	for(i=0;i<num_criterionenums;i++){
 		IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2,criterionenums[i]);
-		if(eps[i]>criterionvalues[i]) converged=0; 
+		if(eps[i]>criterionvalues[i]) converged=false; 
 	}
 
Index: /issm/trunk/src/c/objects/Elements/Penta.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.h	(revision 4777)
+++ /issm/trunk/src/c/objects/Elements/Penta.h	(revision 4778)
@@ -87,5 +87,5 @@
 		void   InputAXPY(int YEnum, double scalar, int XEnum);
 		void   InputControlConstrain(int control_type,double cm_min, double cm_max);
-		void   InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);
+		void   InputConvergence(bool* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);
 		void   InputDepthAverageAtBase(int enum_type,int average_enum_type);
 		void   InputDuplicate(int original_enum,int new_enum);
Index: /issm/trunk/src/c/objects/Elements/Sing.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Sing.cpp	(revision 4777)
+++ /issm/trunk/src/c/objects/Elements/Sing.cpp	(revision 4778)
@@ -374,10 +374,10 @@
 /*}}}*/
 /*FUNCTION Sing::InputConvergence{{{1*/
-void  Sing::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){
+void  Sing::InputConvergence(bool* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){
 
 	int i;
 	Input** new_inputs=NULL;
 	Input** old_inputs=NULL;
-	int     converged=1;
+	bool    converged=true;
 
 	new_inputs=(Input**)xmalloc(num_enums/2*sizeof(Input*)); //half the enums are for the new inputs
@@ -394,5 +394,5 @@
 	for(i=0;i<num_criterionenums;i++){
 		IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2,criterionenums[i]);
-		if(eps[i]>criterionvalues[i]) converged=0; 
+		if(eps[i]>criterionvalues[i]) converged=false; 
 	}
 
Index: /issm/trunk/src/c/objects/Elements/Sing.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Sing.h	(revision 4777)
+++ /issm/trunk/src/c/objects/Elements/Sing.h	(revision 4778)
@@ -84,5 +84,5 @@
 		void   InputAXPY(int YEnum, double scalar, int XEnum);
 		void   InputControlConstrain(int control_type,double cm_min, double cm_max);
-		void   InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);
+		void   InputConvergence(bool* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);
 		void   InputDepthAverageAtBase(int enum_type,int average_enum_type){ISSMERROR("not implemented yet");}
 		void   InputDuplicate(int original_enum,int new_enum);
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 4777)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 4778)
@@ -1453,10 +1453,10 @@
 /*}}}*/
 /*FUNCTION Tria::InputConvergence{{{1*/
-void  Tria::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){
+void  Tria::InputConvergence(bool* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){
 
 	int i;
 	Input** new_inputs=NULL;
 	Input** old_inputs=NULL;
-	int     converged=1;
+	bool     converged=true;
 
 	new_inputs=(Input**)xmalloc(num_enums/2*sizeof(Input*)); //half the enums are for the new inputs
@@ -1473,5 +1473,5 @@
 	for(i=0;i<num_criterionenums;i++){
 		IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2,criterionenums[i]);
-		if(eps[i]>criterionvalues[i]) converged=0; 
+		if(eps[i]>criterionvalues[i]) converged=false; 
 	}
 
Index: /issm/trunk/src/c/objects/Elements/Tria.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.h	(revision 4777)
+++ /issm/trunk/src/c/objects/Elements/Tria.h	(revision 4778)
@@ -84,5 +84,5 @@
 		void   InputAXPY(int YEnum, double scalar, int XEnum);
 		void   InputControlConstrain(int control_type,double cm_min, double cm_max);
-		void   InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);
+		void   InputConvergence(bool* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);
 		void   InputDepthAverageAtBase(int enum_type,int average_enum_type);
 		void   InputDuplicate(int original_enum,int new_enum);
Index: /issm/trunk/src/c/solutions/controlconvergence.cpp
===================================================================
--- /issm/trunk/src/c/solutions/controlconvergence.cpp	(revision 4777)
+++ /issm/trunk/src/c/solutions/controlconvergence.cpp	(revision 4778)
@@ -18,8 +18,8 @@
 
 
-int controlconvergence(double* J, double* fit, double eps_cm, int n){
+bool controlconvergence(double* J, double* fit, double eps_cm, int n){
 
 	int i;
-	int converged=0;
+	bool converged=false;
 
 	/*Has convergence been reached?*/
@@ -33,5 +33,5 @@
 				if ((J[i]-J[n])/J[n] <= eps_cm){
 					//convergence if convergence criteria fullfilled
-					converged=1;
+					converged=true;
 					_printf_("%s%g%s%g\n","      Convergence criterion: dJ/J = ",(J[i]-J[n])/J[n],"<",eps_cm);
 				}
@@ -45,5 +45,4 @@
 	}
 
-
 	return converged;
 }
Index: /issm/trunk/src/c/solutions/solutions.h
===================================================================
--- /issm/trunk/src/c/solutions/solutions.h	(revision 4777)
+++ /issm/trunk/src/c/solutions/solutions.h	(revision 4778)
@@ -32,6 +32,6 @@
 //convergence:
 void convergence(int* pconverged, Mat K_ff,Vec p_f,Vec u_f,Vec u_f_old,Parameters* parameters);
-int controlconvergence(double* J, double* fit, double eps_cm, int n);
-int steadystateconvergence(FemModel* femmodel);
+bool controlconvergence(double* J, double* fit, double eps_cm, int n);
+bool steadystateconvergence(FemModel* femmodel);
 
 //optimization
Index: /issm/trunk/src/c/solutions/steadystate_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/steadystate_core.cpp	(revision 4777)
+++ /issm/trunk/src/c/solutions/steadystate_core.cpp	(revision 4778)
@@ -45,5 +45,5 @@
 
 		if(verbose)_printf_("%s\n","checking velocity, temperature and pressure convergence");
-		if (step>1) if(steadystateconvergence(femmodel))goto cleanup_and_return;
+		if (step>1) if(steadystateconvergence(femmodel)) break;
 		
 		if(verbose)_printf_("%s\n","saving velocity, temperature and pressure to check for convergence at next step");
@@ -57,6 +57,4 @@
 		step++;
 	}
-
-	cleanup_and_return:
 	
 	if(verbose)_printf_("saving results:\n");
Index: /issm/trunk/src/c/solutions/steadystateconvergence.cpp
===================================================================
--- /issm/trunk/src/c/solutions/steadystateconvergence.cpp	(revision 4777)
+++ /issm/trunk/src/c/solutions/steadystateconvergence.cpp	(revision 4778)
@@ -17,10 +17,10 @@
 #include "./solutions.h"
 
-int steadystateconvergence(FemModel* femmodel){
+bool steadystateconvergence(FemModel* femmodel){
 	
 	/*output: */
-	int converged=0;
-	int velocity_converged=0;
-	int temperature_converged=0;
+	bool converged=false;
+	bool velocity_converged=false;
+	bool temperature_converged=false;
 
 	/*intermediary: */
@@ -37,5 +37,5 @@
 	temperature_converged=InputConvergencex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,&temperatureenums[0],2,&convergencecriterion[0],&convergencecriterionvalue[0],1);
 
-	if(velocity_converged && temperature_converged)converged=1;
+	if(velocity_converged && temperature_converged) converged=true;
 
 	/*return: */
Index: /issm/trunk/src/m/solutions/controlconvergence.m
===================================================================
--- /issm/trunk/src/m/solutions/controlconvergence.m	(revision 4777)
+++ /issm/trunk/src/m/solutions/controlconvergence.m	(revision 4778)
@@ -5,5 +5,5 @@
 %       converged=controlconvergence(J,fit,eps_cm,n);
 
-	convergence=0;
+	convergence=false;
 	if ~isnan(eps_cm),
 		i=n-2;
@@ -14,5 +14,5 @@
 				if ((c(i).J-c(n).J)/c(n).J <= eps_cm),
 					%convergence if convergence criteria fullfilled
-					convergence=1;
+					convergence=true;
 					displaystring(verbose,'\n%s%g%s%g\n','      Convergence criterion: dJ/J = ',(c(i).J-c(n).J)/c(n).J,'<',eps_cm);
 				else
Index: /issm/trunk/src/m/solutions/convergence.m
===================================================================
--- /issm/trunk/src/m/solutions/convergence.m	(revision 4777)
+++ /issm/trunk/src/m/solutions/convergence.m	(revision 4778)
@@ -9,5 +9,5 @@
 
 %initialization
-converged=0;
+converged=false;
 displaystring(verbose,' ');
 
@@ -26,8 +26,8 @@
 if (res<=eps_res),
 	displaystring(verbose,'%-60s%g%s%g%s','      mechanical equilibrium convergence criterion',res*100,' < ',eps_res*100,' %');
-	converged=1;
+	converged=true;
 else
 	displaystring(verbose,'%-60s%g%s%g%s','      mechanical equilibrium convergence criterion',res*100,' > ',eps_res*100,' %');
-	converged=0;
+	converged=false;
 end
 
@@ -50,8 +50,8 @@
 			else
 				displaystring(verbose,'%-60s%g%s%g%s','      relative convergence criterion: norm(du)/norm(u)',ndu/nu*100,' > ',eps_rel*100,' %');
-				converged=0;
+				converged=false;
 			end
 		else
-			converged=0;
+			converged=false;
 		end
 	else
@@ -79,5 +79,5 @@
 		else
 			displaystring(verbose,'%-60s%g%s%g%s','      absolute convergence criterion: max(du)',nduinf,' > ',eps_abs,' m/yr');
-			converged=0;
+			converged=false;
 		end
 	else
Index: /issm/trunk/src/m/solutions/steadystate_core.m
===================================================================
--- /issm/trunk/src/m/solutions/steadystate_core.m	(revision 4777)
+++ /issm/trunk/src/m/solutions/steadystate_core.m	(revision 4778)
@@ -16,5 +16,5 @@
 	while true,
 
-		displaystring(verbose,'\n%s%i/\n','computing velocities and temperatures for step: ',step);
+		displaystring(verbose,'\n%s%i\n','computing velocities and temperatures for step: ',step);
 		femmodel=thermal_core(femmodel); 
 
@@ -30,8 +30,5 @@
 		if step>1,
 			displaystring(verbose,'\n%s',['checking temperature, velocity and pressure convergence...']);
-			converged=steadystateconvergence(femmodel);
-			if converged,
-				break;
-			end
+			if steadystateconvergence(femmodel), break; end
 		end 
 
Index: /issm/trunk/src/m/solutions/steadystateconvergence.m
===================================================================
--- /issm/trunk/src/m/solutions/steadystateconvergence.m	(revision 4777)
+++ /issm/trunk/src/m/solutions/steadystateconvergence.m	(revision 4778)
@@ -5,7 +5,7 @@
 %      steadystateconvergence(femmodel)
 	
-	converged=0;
-	velocity_convergence=0;
-	temperature_convergence=0;
+	converged=false;
+	velocity_convergence=false;
+	temperature_convergence=false;
 
 	%Retrieve parameters
@@ -20,4 +20,4 @@
 
 	if (velocity_convergence & temperature_convergence),
-		converged=1;
+		converged=true;
 	end
Index: /issm/trunk/src/mex/InputConvergence/InputConvergence.cpp
===================================================================
--- /issm/trunk/src/mex/InputConvergence/InputConvergence.cpp	(revision 4777)
+++ /issm/trunk/src/mex/InputConvergence/InputConvergence.cpp	(revision 4778)
@@ -27,5 +27,5 @@
 
 	/* output datasets: */
-	int converged;
+	bool converged;
 
 	/*Boot module: */
