Index: /issm/trunk/src/c/include/macros.h
===================================================================
--- /issm/trunk/src/c/include/macros.h	(revision 6321)
+++ /issm/trunk/src/c/include/macros.h	(revision 6322)
@@ -16,7 +16,13 @@
 /*}}}*/
 
-/*Printing macro: call MPI_Barrier in debugging mode so that prints are synchronized*/
+/* _printf_ {{{1*/
+/*Printing macro: only cpu number 0 */
 #define _printf_(...) PrintfFunction(__VA_ARGS__)
-
+/*}}}*/
+/* ISSMPRINTF {{{1*/
+/*Printing macro with flag*/
+#define ISSMPRINTF(flag,...) if(flag) PrintfFunction(__VA_ARGS__)
+/*}}}*/
+/* ISSMERROR {{{1*/
 /*Error exception macro*/
 #ifdef _INTEL_WIN_
@@ -27,5 +33,6 @@
   throw ErrorException(__FILE__,__func__,__LINE__,exprintf(__VA_ARGS__))
 #endif
-
+/*}}}*/
+/* ISSMASSERT {{{1*/
 /*Assertion macro: do nothing if macro _ISSM_DEBUG_ undefined*/
 #ifdef _ISSM_DEBUG_ 
@@ -36,5 +43,6 @@
   ((void) 0)
 #endif
-
+/*}}}*/
+/* MODULEBOOT/MODULEEND {{{1*/
 /*The following macros hide the error exception handling in a matlab module. Just put 
  * MODULEBOOT(); and MODULEEND(); at the beginning and end of a module, and c++ exceptions 
@@ -70,5 +78,5 @@
 	}
 #endif
-
+/*}}}*/
 
 #endif
Index: /issm/trunk/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 6321)
+++ /issm/trunk/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 6322)
@@ -42,5 +42,5 @@
 		analysis_type=analysis_type_list[i];
 	
-		if (VerbModProc()) _printf_("   create datasets for analysis %s\n",EnumToString(analysis_type));
+		ISSMPRINTF(VerboseMProcessor(),"   create datasets for analysis %s\n",EnumToString(analysis_type));
 		CreateDataSets(&elements,&nodes,&vertices,&materials,&constraints,&loads,&parameters,iomodel,IOMODEL,solution_type,analysis_type,nummodels,i);
 	}
Index: /issm/trunk/src/c/objects/FemModel.cpp
===================================================================
--- /issm/trunk/src/c/objects/FemModel.cpp	(revision 6321)
+++ /issm/trunk/src/c/objects/FemModel.cpp	(revision 6322)
@@ -48,26 +48,27 @@
 	for(i=0;i<nummodels;i++){
 
-		if(VerbModProc()) _printf_("   Processing finite element model of analysis %s:\n",EnumToString(analysis_type_list[i]));
+		printf("\n");
+		ISSMPRINTF(VerboseMProcessor(),"   Processing finite element model of analysis %s:\n",EnumToString(analysis_type_list[i]));
 		analysis_type=analysis_type_list[i];
 		this->SetCurrentConfiguration(analysis_type);
 	
 		if(i==0){
-			if(VerbModProc()) _printf_("      create vertex degrees of freedom\n");
+			ISSMPRINTF(VerboseMProcessor(),"      create vertex degrees of freedom\n");
 			VerticesDofx(vertices,parameters); //only call once, we only have one set of vertices
 		}
 
-		if(VerbModProc()) _printf_("      resolve node constraints\n");
+		ISSMPRINTF(VerboseMProcessor(),"      resolve node constraints\n");
 		SpcNodesx(nodes,constraints,analysis_type); 
 	
-		if(VerbModProc()) _printf_("      create nodal degrees of freedom\n");
+		ISSMPRINTF(VerboseMProcessor(),"      create nodal degrees of freedom\n");
 		NodesDofx(nodes,parameters,analysis_type);
 	
-		if(VerbModProc()) _printf_("      create nodal constraints vector\n");
+		ISSMPRINTF(VerboseMProcessor(),"      create nodal constraints vector\n");
 		CreateNodalConstraintsx(&m_ys[i],nodes,analysis_type);
 
-		if(VerbModProc()) _printf_("      create node sets\n");
+		ISSMPRINTF(VerboseMProcessor(),"      create node sets\n");
 		BuildNodeSetsx(&m_nodesets[i], nodes,analysis_type);
 
-		if(VerbModProc()) _printf_("      configuring element and loads\n");
+		ISSMPRINTF(VerboseMProcessor(),"      configuring element and loads\n");
 		ConfigureObjectsx(elements, loads, nodes, vertices, materials,parameters);
 	}
Index: /issm/trunk/src/c/solutions/convergence.cpp
===================================================================
--- /issm/trunk/src/c/solutions/convergence.cpp	(revision 6321)
+++ /issm/trunk/src/c/solutions/convergence.cpp	(revision 6322)
@@ -44,5 +44,5 @@
 
 	/*Display solver caracteristics*/
-	if (VerbConverge()){
+	if (VerboseConvergence()){
 
 		//compute KUF = KU - F = K*U - F
@@ -80,14 +80,14 @@
 	//print
 	if(res<eps_res){
-		if (VerbConverge()) _printf_("%-50s%g%s%g%s\n","   mechanical equilibrium convergence criterion",res*100," < ",eps_res*100," %");
+		ISSMPRINTF(VerboseConvergence(),"%-50s%g%s%g%s\n","   mechanical equilibrium convergence criterion",res*100," < ",eps_res*100," %");
 		converged=1;
 	}
 	else{ 
-		if (VerbConverge()) _printf_("%-50s%g%s%g%s\n","   mechanical equilibrium convergence criterion",res*100," > ",eps_res*100," %");
+		ISSMPRINTF(VerboseConvergence(),"%-50s%g%s%g%s\n","   mechanical equilibrium convergence criterion",res*100," > ",eps_res*100," %");
 		converged=0;
 	}
 
 	/*Relative criterion (optional)*/
-	if (!isnan(eps_rel) || (VerbConverge())){
+	if (!isnan(eps_rel) || (VerboseConvergence())){
 
 		//compute norm(du)/norm(u)
@@ -103,8 +103,8 @@
 		if (!isnan(eps_rel)){
 			if((ndu/nu)<eps_rel){
-				if (VerbConverge()) _printf_("%-50s%g%s%g%s\n","   Convergence criterion: norm(du)/norm(u)",ndu/nu*100," < ",eps_rel*100," %");
+				ISSMPRINTF(VerboseConvergence(),"%-50s%g%s%g%s\n","   Convergence criterion: norm(du)/norm(u)",ndu/nu*100," < ",eps_rel*100," %");
 			}
 			else{ 
-				if (VerbConverge()) _printf_("%-50s%g%s%g%s\n","   Convergence criterion: norm(du)/norm(u)",ndu/nu*100," > ",eps_rel*100," %");
+				ISSMPRINTF(VerboseConvergence(),"%-50s%g%s%g%s\n","   Convergence criterion: norm(du)/norm(u)",ndu/nu*100," > ",eps_rel*100," %");
 				converged=0;
 			}
@@ -115,5 +115,5 @@
 
 	/*Absolute criterion (Optional) = max(du)*/
-	if (!isnan(eps_abs) || (VerbConverge())){
+	if (!isnan(eps_abs) || (VerboseConvergence())){
 
 		//compute max(du)
@@ -128,8 +128,8 @@
 		if (!isnan(eps_abs)){
 			if ((nduinf*yts)<eps_abs){
-				if (VerbConverge()) _printf_("%-50s%g%s%g%s\n","   Convergence criterion: max(du)",nduinf*yts," < ",eps_abs," m/yr");
+				ISSMPRINTF(VerboseConvergence(),"%-50s%g%s%g%s\n","   Convergence criterion: max(du)",nduinf*yts," < ",eps_abs," m/yr");
 			}
 			else{
-				if (VerbConverge()) _printf_("%-50s%g%s%g%s\n","   Convergence criterion: max(du)",nduinf*yts," > ",eps_abs," m/yr");
+				ISSMPRINTF(VerboseConvergence(),"%-50s%g%s%g%s\n","   Convergence criterion: max(du)",nduinf*yts," > ",eps_abs," m/yr");
 				converged=0;
 			}
