Index: /issm/trunk-jpl/src/c/io/PrintfFunction.cpp
===================================================================
--- /issm/trunk-jpl/src/c/io/PrintfFunction.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/io/PrintfFunction.cpp	(revision 12511)
@@ -49,5 +49,5 @@
 
 	/*Ok, if we are running in parallel, get node 0 to print*/
-	if(my_rank==0)printf(buffer);
+	if(my_rank==0)_printString_(buffer);
 
 	/*Clean up and return*/
Index: /issm/trunk-jpl/src/c/matlab/io/FetchMatlabData.cpp
===================================================================
--- /issm/trunk-jpl/src/c/matlab/io/FetchMatlabData.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/matlab/io/FetchMatlabData.cpp	(revision 12511)
@@ -36,5 +36,5 @@
 		else{
 			if(!mxIsClass(dataref,"double") && !mxIsClass(dataref,"single")){
-				printf("Warning: converting matlab data from '%s' to 'double'\n",mxGetClassName(dataref));
+				_printLine_("Warning: converting matlab data from '" << mxGetClassName(dataref) << "' to 'double'");
 			}
 			/*Convert matlab matrix to double* matrix: */
Index: /issm/trunk-jpl/src/c/matlab/io/PrintfFunction.cpp
===================================================================
--- /issm/trunk-jpl/src/c/matlab/io/PrintfFunction.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/matlab/io/PrintfFunction.cpp	(revision 12511)
@@ -51,5 +51,5 @@
 
 	/*Ok, if we are running in parallel, get node 0 to print*/
-	if(my_rank==0)printf(buffer);
+	if(my_rank==0)_printString_(buffer);
 
 	/*Clean up and return*/
Index: /issm/trunk-jpl/src/c/modules/BamgConvertMeshx/BamgConvertMeshx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/BamgConvertMeshx/BamgConvertMeshx.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/modules/BamgConvertMeshx/BamgConvertMeshx.cpp	(revision 12511)
@@ -24,11 +24,11 @@
 
 	// read mesh
-	if(verbose) printf("Reading mesh\n");
+	if(verbose) _printLine_("Reading mesh");
 	Mesh Th(index,x,y,nods,nels); 
 
 	//write mesh and geometry
-	if (verbose) printf("Write Geometry\n");
+	if (verbose) _printLine_("Write Geometry");
 	Th.Gh.WriteGeometry(bamggeom,bamgopts);
-	if (verbose) printf("Write Mesh\n");
+	if (verbose) _printLine_("Write Mesh");
 	Th.WriteMesh(bamgmesh,bamgopts);
 
Index: /issm/trunk-jpl/src/c/modules/Bamgx/Bamgx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/Bamgx/Bamgx.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/modules/Bamgx/Bamgx.cpp	(revision 12511)
@@ -41,6 +41,6 @@
 
 		//Step1: generate geometry Gh
-		if (verbosity>0) printf("Construction of a mesh from a given geometry\n");
-		if (verbosity>1) printf("   Processing geometry...\n");
+		if (verbosity>0) _printLine_("Construction of a mesh from a given geometry");
+		if (verbosity>1) _printLine_("   Processing geometry...");
 		Geometry Gh(bamggeom_in,bamgopts);
 
@@ -50,5 +50,5 @@
 
 		//build metric using geometry
-		if (verbosity>1) printf("   Generating Metric...\n");
+		if (verbosity>1) _printLine_("   Generating Metric...");
 		for(i=0;i<Gh.nbv;i++){
 			Metric M=Gh[i];
@@ -60,5 +60,5 @@
 
 		//generate mesh
-		if (verbosity>1) printf("   Generating Mesh...\n");
+		if (verbosity>1) _printLine_("   Generating Mesh...");
 		Mesh Th(maxnbv,Gh,bamgopts);
 
@@ -73,7 +73,7 @@
 
 		//Build output
-		if (verbosity>1) printf("   Write Mesh...\n");
+		if (verbosity>1) _printLine_("   Write Mesh...");
 		Th.WriteMesh(bamgmesh_out,bamgopts);
-		if (verbosity>1) printf("   Write Geometry...\n");
+		if (verbosity>1) _printLine_("   Write Geometry...");
 		Gh.WriteGeometry(bamggeom_out,bamgopts);
 
@@ -87,6 +87,6 @@
 
 		// read background mesh 
-		if (verbosity>0) printf("Anisotropic mesh adaptation\n");
-		if (verbosity>1) printf("   Processing initial mesh and geometry...\n");
+		if (verbosity>0) _printLine_("Anisotropic mesh adaptation");
+		if (verbosity>1) _printLine_("   Processing initial mesh and geometry...");
 		Mesh BTh(bamggeom_in,bamgmesh_in,bamgopts); 
 
@@ -100,9 +100,9 @@
 		//Generate initial metric
 		if (bamgopts->metric){
-			if (verbosity>1) printf("   Processing Metric...\n");
+			if (verbosity>1) _printLine_("   Processing Metric...");
 			BTh.ReadMetric(bamgopts);
 		}
 		else { 
-			if (verbosity>1) printf("   Generating initial Metric...\n");
+			if (verbosity>1) _printLine_("   Generating initial Metric...");
 			Metric Mhmax(bamgopts->hmax);
 			for (int iv=0;iv<BTh.nbv;iv++) BTh[iv].m = Mhmax;
@@ -111,5 +111,5 @@
 		//use present fields to generate metric if present
 		if (bamgopts->field){
-			if (verbosity>1) printf("   Merge metric with field provided...\n");
+			if (verbosity>1) _printLine_("   Merge metric with field provided...");
 			BTh.AddMetric(bamgopts);
 		}
@@ -117,5 +117,5 @@
 		// change using hVertices if provided
 		if(bamgopts->hVertices && bamgopts->hVerticesSize[0]==BTh.nbv){
-			if (verbosity>1) printf("   Merging Metric with hVertices...\n");
+			if (verbosity>1) _printLine_("   Merging Metric with hVertices...");
 			for (i=0;i<BTh.nbv;i++){
 				if (!isnan(bamgopts->hVertices[i])){
@@ -127,5 +127,5 @@
 		// change using hminVertices if provided
 		if (bamgopts->hminVertices){
-			if (verbosity>1) printf("   Merging Metric with hminVertices...\n");
+			if (verbosity>1) _printLine_("   Merging Metric with hminVertices...");
 			for (i=0;i<BTh.nbv;i++){
 				if (!isnan(bamgopts->hminVertices[i])){
@@ -140,5 +140,5 @@
 		// change using hmaxVertices if provided
 		if (bamgopts->hmaxVertices){
-			if (verbosity>1) printf("   Merging Metric with hmaxVertices...\n");
+			if (verbosity>1) _printLine_("   Merging Metric with hmaxVertices...");
 			for (i=0;i<BTh.nbv;i++){
 				if (!isnan(bamgopts->hmaxVertices[i])){
@@ -164,5 +164,5 @@
 
 		//Build new mesh
-		if (verbosity>1) printf("   Generating Mesh...\n");
+		if (verbosity>1) _printLine_("   Generating Mesh...");
 		Thr=&BTh,Thb=0;
 		Mesh & Th( *(0 ?  new Mesh(*Thr,&Thr->Gh,Thb,maxnbv) :  new Mesh(maxnbv,BTh,bamgopts,bamgopts->KeepVertices)));
@@ -185,17 +185,17 @@
 		if(verbosity>0) {
 			if (Th.nbt-Th.nbtout-Th.nbq*2){
-				printf("   new number of triangles = %i\n",(Th.nbt-Th.nbtout-Th.nbq*2));
+				_printLine_("   new number of triangles = " << (Th.nbt-Th.nbtout-Th.nbq*2));
 			}
 			if (Th.nbq ){
-				printf("   new number of quads = %i\n",Th.nbq);
+				_printLine_("   new number of quads = " << Th.nbq);
 			}
 		}
 
 		//Build output
-		if (verbosity>1) printf("   Write Mesh...\n");
+		if (verbosity>1) _printLine_("   Write Mesh...");
 		Th.WriteMesh(bamgmesh_out,bamgopts);
-		if (verbosity>1) printf("   Write Geometry...\n");
+		if (verbosity>1) _printLine_("   Write Geometry...");
 		Th.Gh.WriteGeometry(bamggeom_out,bamgopts);
-		if (verbosity>1) printf("   Write Metric...\n");
+		if (verbosity>1) _printLine_("   Write Metric...");
 		BTh.WriteMetric(bamgopts);
 
@@ -207,5 +207,5 @@
 
 	/*No error return*/
-	if (verbosity>1) printf("   Exiting Bamg.\n");
+	if (verbosity>1) _printLine_("   Exiting Bamg.");
 	return noerr;
 
Index: /issm/trunk-jpl/src/c/modules/Chacox/Chacox.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/Chacox/Chacox.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/modules/Chacox/Chacox.cpp	(revision 12511)
@@ -66,10 +66,10 @@
 
 	if (DEBUG_TRACE > 0) {
-		printf("<Entering main>\n");
+		_printLine_("<Entering main>");
 	}
 
 	if (PRINT_HEADERS) {
-		printf("\n                    Chaco 2.0\n");
-		printf("          Sandia National Laboratories\n\n");
+		_printLine_("\n                    Chaco 2.0");
+		_printLine_("          Sandia National Laboratories\n");
 	}
 
@@ -177,5 +177,5 @@
 
 	if (DEBUG_MEMORY > 0) {
-		printf("\n");
+		_printLine_("");
 		smalloc_stats();
 	}
@@ -185,5 +185,5 @@
 
 	if (DEBUG_TRACE > 1) {
-		printf("<Leaving main>\n");
+		_printLine_("<Leaving main>");
 	}
 	
Index: /issm/trunk-jpl/src/c/modules/Chacox/input_parse.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/Chacox/input_parse.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/modules/Chacox/input_parse.cpp	(revision 12511)
@@ -38,13 +38,13 @@
 
 	if (DEBUG_TRACE > 0) {
-		printf("<Entering input_parse>\n");
+		_printLine_("<Entering input_parse>");
 	}
 
 	if (PROMPT) {
-		printf("Parallel machine architecture:\n");
-		printf("  (0) Hypercube\n");
-		printf("  (1) One-dimensional mesh\n");
-		printf("  (2) Two-dimensional mesh\n");
-		printf("  (3) Three-dimensional mesh\n");
+		_printLine_("Parallel machine architecture:");
+		_printLine_("  (0) Hypercube");
+		_printLine_("  (1) One-dimensional mesh");
+		_printLine_("  (2) Two-dimensional mesh");
+		_printLine_("  (3) Three-dimensional mesh");
 	}
 	*architecture = (int)options[OPT_ARCH];
@@ -57,10 +57,10 @@
 	/* Name output assignment file. */
 	if (PROMPT)
-		printf("Assignment output file: ");
+		_printString_("Assignment output file: ");
 	outassignname = NULL;
 
 	/* Name output results file. */
 	if (PROMPT)
-		printf("File name for saving run results: ");
+		_printString_("File name for saving run results: ");
 	outfilename = NULL;
 
@@ -75,12 +75,12 @@
 	else {
 		if (PROMPT) {
-			printf("Global partitioning method:\n");
-			printf("  (1) Multilevel-KL\n");
-			printf("  (2) Spectral\n");
-			printf("  (3) Inertial\n");
-			printf("  (4) Linear\n");
-			printf("  (5) Random\n");
-			printf("  (6) Scattered\n");
-			printf("  (7) Read-from-file\n");
+			_printLine_("Global partitioning method:");
+			_printLine_("  (1) Multilevel-KL");
+			_printLine_("  (2) Spectral");
+			_printLine_("  (3) Inertial");
+			_printLine_("  (4) Linear");
+			_printLine_("  (5) Random");
+			_printLine_("  (6) Scattered");
+			_printLine_("  (7) Read-from-file");
 		}
 		*global_method = (int)options[OPT_GLOBAL];
@@ -94,17 +94,17 @@
 	if (*global_method == 7) {	/* Name and open input assignment file. */
 		if (PROMPT)
-			printf("Assignment input file: ");
+			_printString_("Assignment input file: ");
 	}
 
 	else if (*global_method == 3) {
 		if (PROMPT)
-			printf("Geometry input file name: ");
+			_printString_("Geometry input file name: ");
 	}
 
 	else if (*global_method == 2) {
 		if (PROMPT) {
-			printf("Eigensolver:\n");
-			printf("  (1) Multilevel RQI/Symmlq\n");
-			printf("  (2) Lanczos\n"); 
+			_printLine_("Eigensolver:");
+			_printLine_("  (1) Multilevel RQI/Symmlq");
+			_printLine_("  (2) Lanczos"); 
 		}
 		eigensolver = (int)options[OPT_RQI];
@@ -117,9 +117,9 @@
 			if (MATCH_TYPE == 5) {	/* geometric matching */
 				if (PROMPT)
-					printf("Geometry input file name: ");
+					_printString_("Geometry input file name: ");
 			}
 			*rqi_flag = 1;
 			if (PROMPT)
-				printf("Number of vertices to coarsen down to: ");
+				_printString_("Number of vertices to coarsen down to: ");
 			*vmax = (int)options[OPT_VMAX];
 			if (*vmax <= 0) {
@@ -137,8 +137,8 @@
 		if (MATCH_TYPE == 5) {		/* geometric matching */
 			if (PROMPT)
-				printf("Geometry input file name: ");
-		}
-		if (PROMPT)
-			printf("Number of vertices to coarsen down to: ");
+				_printString_("Geometry input file name: ");
+		}
+		if (PROMPT)
+			_printString_("Number of vertices to coarsen down to: ");
 		*vmax = (int)options[OPT_VMAX];
 		if (*vmax <= 0) {
@@ -168,7 +168,7 @@
 	else {
 		if (PROMPT) {
-			printf("Local refinement method:\n");
-			printf("  (1) Kernighan-Lin\n");
-			printf("  (2) None\n");
+			_printLine_("Local refinement method:");
+			_printLine_("  (1) Kernighan-Lin");
+			_printLine_("  (2) None");
 		}
 		*local_method = (int)options[OPT_LOCAL];
@@ -185,8 +185,8 @@
 		*ndims_tot = 0;
 		if (PROMPT)
-			printf("Total number of target hypercube dimensions: ");
+			_printString_("Total number of target hypercube dimensions: ");
 		*ndims_tot = nparts[0];
 		if (*ndims_tot < 1) {
-			printf(" Number of divisions must be at least 1\n");
+			_printLine_(" Number of divisions must be at least 1");
 			printf("%s -- Number of divisions %d must be at least 1.\n",
 				   __FUNCT__,nparts[0]);
@@ -200,5 +200,5 @@
 		if (*architecture == 2) {
 			if (PROMPT)
-				printf("X and Y extent of of 2-D mesh: ");
+				_printString_("X and Y extent of of 2-D mesh: ");
 			mesh_dims[0] = nparts[0];
 			mesh_dims[1] = nparts[1];
@@ -206,5 +206,5 @@
 		else if (*architecture == 3) {
 			if (PROMPT)
-				printf("X, Y and Z extent of 3-D mesh: ");
+				_printString_("X, Y and Z extent of 3-D mesh: ");
 			mesh_dims[0] = nparts[0];
 			mesh_dims[1] = nparts[1];
@@ -213,5 +213,5 @@
 		else {			/* Anything else => 1-D mesh */
 			if (PROMPT)
-				printf("Size of 1-D mesh: ");
+				_printString_("Size of 1-D mesh: ");
 			mesh_dims[0] = nparts[0];
 			*architecture = 1;
@@ -227,7 +227,7 @@
 	else if (*nprocs <= 7) {
 		if (PROMPT) {
-			printf("Partitioning dimension: \n");
-			printf("  (1) Bisection\n");
-			printf("  (2) Quadrisection\n");
+			_printLine_("Partitioning dimension: ");
+			_printLine_("  (1) Bisection");
+			_printLine_("  (2) Quadrisection");
 		}
 		*ndims = (int)options[OPT_NDIMS];
@@ -240,8 +240,8 @@
 	else {
 		if (PROMPT) {
-			printf("Partitioning dimension: \n");
-			printf("  (1) Bisection\n");
-			printf("  (2) Quadrisection\n");
-			printf("  (3) Octasection\n");
+			_printLine_("Partitioning dimension: ");
+			_printLine_("  (1) Bisection");
+			_printLine_("  (2) Quadrisection");
+			_printLine_("  (3) Octasection");
 		}
 		*ndims = (int)options[OPT_NDIMS];
Index: /issm/trunk-jpl/src/c/modules/DakotaResponsesx/DakotaResponsesx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/DakotaResponsesx/DakotaResponsesx.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/modules/DakotaResponsesx/DakotaResponsesx.cpp	(revision 12511)
@@ -110,8 +110,8 @@
 	/*Synthesize echo: {{{*/
 	if(my_rank==0){
-		printf("   responses: %i: ",d_numresponses);
-		for(i=0;i<d_numresponses-1;i++)printf("%g|",d_responses[i]);
-		printf("%g",d_responses[d_numresponses-1]);
-		printf("\n");
+		_printString_("   responses: " << d_numresponses << ": ");
+		for(i=0;i<d_numresponses-1;i++)_printString_("" << d_responses[i] << "|");
+		_printString_("" << d_responses[d_numresponses-1]);
+		_printLine_("");
 	}
 	/*}}}*/
Index: /issm/trunk-jpl/src/c/modules/Exp2Kmlx/Exp2Kmlx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/Exp2Kmlx/Exp2Kmlx.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/modules/Exp2Kmlx/Exp2Kmlx.cpp	(revision 12511)
@@ -58,5 +58,5 @@
 	_printf_(true,"Exp2Kmlx -- Reading %d exp profiles from file \"%s\".\n",nprof,filexp);
 //	for (i=0; i<nprof; i++)
-//		printf("i=%d; nvert=%d, closed=%d\n",i,pnvert[i],closed[i]);
+//		_printLine_("i=" << i << "; nvert=" << pnvert[i] << ", closed=" << closed[i]);
 
 /*  construct kml file  */
Index: /issm/trunk-jpl/src/c/modules/HoleFillerx/HoleFillerx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/HoleFillerx/HoleFillerx.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/modules/HoleFillerx/HoleFillerx.cpp	(revision 12511)
@@ -76,6 +76,6 @@
 			}
 		}
-		printf( "\n" );
-		printf("Number of zeroes remaining: %d",lines*samps-counter);
+		_printLine_( "" );
+		_printString_("Number of zeroes remaining: " << lines*samps-counter);
 		fflush( stdout );
 	#endif
@@ -95,6 +95,6 @@
 		}
 		//        n u m b e r   o f   z e r o e s   r e m a i n i n g :   1 2 3 4 5 6 7 8 9 10        
-		printf( "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b" );
-		printf("Number of zeroes remaining: %d",lines*samps-counter);
+		_printString_( "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b" );
+		_printString_("Number of zeroes remaining: " << lines*samps-counter);
 		fflush( stdout );
 	#endif
@@ -104,5 +104,5 @@
 /***************** FIRST RUN *********************/
 /*
-fprintf ( stdout, "First  Application:  " ); time(&t2); printf( ctime(&t2) );
+fprintf ( stdout, "First  Application:  " ); time(&t2); _printString_( ctime(&t2) );
 */
 	for ( i = 0; i < lines; i++ ){
@@ -277,5 +277,5 @@
 			
 			#ifdef _DEBUG2_
-				//printf("%g %g %g \n",temp,elev,range);
+				//_printLine_("" << temp << " " << elev << " " << range << " ");
 			#endif
 
@@ -354,6 +354,6 @@
 	
 	#ifdef _DEBUG2_
-		printf( "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b" );
-		printf("Number of zeroes remaining:          0\n\n");
+		_printString_( "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b" );
+		_printLine_("Number of zeroes remaining:          0\n");
 		printf ( "\n");
 	#endif
Index: /issm/trunk-jpl/src/c/modules/InterpFromGridToMeshx/InterpFromGridToMeshx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/InterpFromGridToMeshx/InterpFromGridToMeshx.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/modules/InterpFromGridToMeshx/InterpFromGridToMeshx.cpp	(revision 12511)
@@ -175,5 +175,5 @@
 					break;
 				default:
-					printf("Interpolation %s not supported yet\n",EnumToStringx(interpenum));
+					_printLine_("Interpolation " << EnumToStringx(interpenum) << " not supported yet");
 					return NULL; /*WARNING: no error because it would blow up the multithreading!*/
 			}
Index: /issm/trunk-jpl/src/c/modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.cpp	(revision 12511)
@@ -54,14 +54,14 @@
 
 	/*Initialize output*/
-	if (verbose) printf("Initializing output vector\n");
+	if (verbose) _printLine_("Initializing output vector");
 	data_interp=xNew<double>(nods_interp*data_cols);
 
 	// read background mesh 
-	if (verbose) printf("Reading mesh\n");
+	if (verbose) _printLine_("Reading mesh");
 	Mesh Th(index_data,x_data,y_data,nods_data,nels_data); 
 	Th.CreateSingleVertexToTriangleConnectivity();
 
 	//Loop over output nodes
-	if (verbose) printf("Loop over the nodes\n");
+	if (verbose) _printLine_("Loop over the nodes");
 	for(i=0;i<nods_interp;i++){
 		
@@ -138,5 +138,5 @@
 
 	/*Assign output pointers:*/
-	if (verbose) printf("Assigning output\n");
+	if (verbose) _printLine_("Assigning output");
 	*pdata_interp=data_interp;
 
Index: /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.cpp	(revision 12511)
@@ -66,5 +66,5 @@
 		observations->ObservationList(&x,&y,&data,&nobs);
 
-		printf("Generation Delaunay Triangulation\n");
+		_printLine_("Generation Delaunay Triangulation");
 		BamgTriangulatex(&index,&nel,x,y,nobs);
 		indexd =xNewZeroInit<double>(nel*3);
@@ -72,5 +72,5 @@
 		xDelete<int>(index);
 
-		printf("Interpolating\n");
+		_printLine_("Interpolating");
 		xDelete<double>(predictions);
 		InterpFromMeshToMesh2dx(&predictions,indexd,x,y,nobs,nel,data,nobs,1,x_interp,y_interp,n_interp,NULL,0,new DataSet());
Index: /issm/trunk-jpl/src/c/modules/PositiveDegreeDayx/PositiveDegreeDayx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/PositiveDegreeDayx/PositiveDegreeDayx.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/modules/PositiveDegreeDayx/PositiveDegreeDayx.cpp	(revision 12511)
@@ -57,5 +57,5 @@
   
   if (itm >= NPDMAX){
-    printf("increase NPDMAX in massBalance.cpp\n");
+    _printLine_("increase NPDMAX in massBalance.cpp");
     exit (1);
       }
@@ -83,5 +83,5 @@
   itm = (int)((PDCUT+2.*siglimc)/DT + 1.5);
   if (itm >= NPDCMAX){
-    printf("'increase NPDCMAX in p35com'\n");
+    _printLine_("'increase NPDCMAX in p35com'");
     exit (1);
       }
Index: /issm/trunk-jpl/src/c/objects/Constraints/SpcDynamic.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Constraints/SpcDynamic.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Constraints/SpcDynamic.cpp	(revision 12511)
@@ -46,11 +46,11 @@
 void SpcDynamic::Echo(void){
 
-	printf("SpcDynamic:\n");
-	printf("   sid: %i\n",sid);
-	printf("   nodeid: %i\n",nodeid);
-	printf("   dof: %i\n",dof);
-	printf("   value: %g\n",value);
-	printf("   isset: %s\n",isset?"true":"false");
-	printf("   analysis_type: %s\n",EnumToStringx(analysis_type));
+	_printLine_("SpcDynamic:");
+	_printLine_("   sid: " << sid);
+	_printLine_("   nodeid: " << nodeid);
+	_printLine_("   dof: " << dof);
+	_printLine_("   value: " << value);
+	_printLine_("   isset: " <<(isset?"true":"false"));
+	_printLine_("   analysis_type: " << EnumToStringx(analysis_type));
 	return;
 }
Index: /issm/trunk-jpl/src/c/objects/Constraints/SpcStatic.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Constraints/SpcStatic.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Constraints/SpcStatic.cpp	(revision 12511)
@@ -45,10 +45,10 @@
 void SpcStatic::Echo(void){
 
-	printf("SpcStatic:\n");
-	printf("   sid: %i\n",sid);
-	printf("   nodeid: %i\n",nodeid);
-	printf("   dof: %i\n",dof);
-	printf("   value: %g\n",value);
-	printf("   analysis_type: %s\n",EnumToStringx(analysis_type));
+	_printLine_("SpcStatic:");
+	_printLine_("   sid: " << sid);
+	_printLine_("   nodeid: " << nodeid);
+	_printLine_("   dof: " << dof);
+	_printLine_("   value: " << value);
+	_printLine_("   analysis_type: " << EnumToStringx(analysis_type));
 	return;
 }
@@ -57,10 +57,10 @@
 void SpcStatic::DeepEcho(void){
 
-	printf("SpcStatic:\n");
-	printf("   sid: %i\n",sid);
-	printf("   nodeid: %i\n",nodeid);
-	printf("   dof: %i\n",dof);
-	printf("   value: %g\n",value);
-	printf("   analysis_type: %s\n",EnumToStringx(analysis_type));
+	_printLine_("SpcStatic:");
+	_printLine_("   sid: " << sid);
+	_printLine_("   nodeid: " << nodeid);
+	_printLine_("   dof: " << dof);
+	_printLine_("   value: " << value);
+	_printLine_("   analysis_type: " << EnumToStringx(analysis_type));
 	return;
 }		
Index: /issm/trunk-jpl/src/c/objects/Constraints/SpcTransient.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Constraints/SpcTransient.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Constraints/SpcTransient.cpp	(revision 12511)
@@ -60,13 +60,13 @@
 
 	int i;
-	printf("SpcTransient:\n");
-	printf("   sid: %i\n",sid);
-	printf("   nodeid: %i\n",nodeid);
-	printf("   dof: %i\n",dof);
-	printf("   nsteps: %i\n",nsteps);
-	printf("   analysis_type: %s\n",EnumToStringx(analysis_type));
-	printf("   steps|times|values\n");
+	_printLine_("SpcTransient:");
+	_printLine_("   sid: " << sid);
+	_printLine_("   nodeid: " << nodeid);
+	_printLine_("   dof: " << dof);
+	_printLine_("   nsteps: " << nsteps);
+	_printLine_("   analysis_type: " << EnumToStringx(analysis_type));
+	_printLine_("   steps|times|values");
 	for(i=0;i<nsteps;i++){
-		printf("%i-%g:%g\n",i,times[i],values[i]);
+		_printLine_("" << i << "-" << times[i] << ":" << values[i]);
 	}
 	return;
Index: /issm/trunk-jpl/src/c/objects/DofIndexing.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/DofIndexing.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/DofIndexing.cpp	(revision 12511)
@@ -153,7 +153,7 @@
 	int i;
 
-	printf("DofIndexing:\n");
-	printf("   gsize: %i\n",gsize);
-	printf("   clone: %i\n",clone);
+	_printLine_("DofIndexing:");
+	_printLine_("   gsize: " << gsize);
+	_printLine_("   clone: " << clone);
 }
 /*}}}*/
@@ -163,47 +163,47 @@
 	int i;
 
-	printf("DofIndexing:\n");
-	printf("   gsize: %i\n",gsize);
-	printf("   fsize: %i\n",fsize);
-	printf("   ssize: %i\n",ssize);
-	printf("   clone: %i\n",clone);
+	_printLine_("DofIndexing:");
+	_printLine_("   gsize: " << gsize);
+	_printLine_("   fsize: " << fsize);
+	_printLine_("   ssize: " << ssize);
+	_printLine_("   clone: " << clone);
 	
-	printf("   set membership: f,s sets \n");
+	_printLine_("   set membership: f,s sets ");
 	for(i=0;i<gsize;i++){
-		printf("      dof %i: %s %s\n",i,f_set[i]?"true":"false",s_set[i]?"true":"false");
-	}
-
-	printf("   svalues (%i): |",this->ssize);
+		_printLine_("      dof " << i << ": " <<(f_set[i]?"true":"false")<< " " <<(s_set[i]?"true":"false"));
+	}
+
+	_printString_("   svalues (" << this->ssize << "): |");
 	for(i=0;i<this->gsize;i++){
-		if(this->s_set[i])printf(" %g |",svalues[i]);
-	}
-	printf("\n");
+		if(this->s_set[i])_printString_(" " << svalues[i] << " |");
+	}
+	_printLine_("");
 
 	if(doftype){
-		printf("   doftype: |");
+		_printString_("   doftype: |");
 		for(i=0;i<gsize;i++){
-			printf(" %i |",doftype[i]);
+			_printString_(" " << doftype[i] << " |");
 		}
-		printf("\n");
-	}
-	else printf("   doftype: NULL\n");
-
-	printf("   g_doflist (%i): |",this->gsize);
+		_printLine_("");
+	}
+	else _printLine_("   doftype: NULL");
+
+	_printString_("   g_doflist (" << this->gsize << "): |");
 	for(i=0;i<this->gsize;i++){
-		printf(" %i |",gdoflist[i]);
-	}
-	printf("\n");
-
-	printf("   f_doflist (%i): |",this->fsize);
+		_printString_(" " << gdoflist[i] << " |");
+	}
+	_printLine_("");
+
+	_printString_("   f_doflist (" << this->fsize << "): |");
 	for(i=0;i<this->fsize;i++){
-		printf(" %i |",fdoflist[i]);
-	}
-	printf("\n");
-
-	printf("   s_doflist (%i): |",this->ssize);
+		_printString_(" " << fdoflist[i] << " |");
+	}
+	_printLine_("");
+
+	_printString_("   s_doflist (" << this->ssize << "): |");
 	for(i=0;i<this->ssize;i++){
-		printf(" %i |",sdoflist[i]);
-	}
-	printf("\n");
+		_printString_(" " << sdoflist[i] << " |");
+	}
+	_printLine_("");
 }		
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/ElementResults/BoolElementResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/ElementResults/BoolElementResult.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/ElementResults/BoolElementResult.cpp	(revision 12511)
@@ -48,9 +48,9 @@
 void BoolElementResult::DeepEcho(void){
 
-	printf("BoolElementResult:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   value: %s\n",this->value?"true":"false");
-	printf("   step: %i\n",this->step);
-	printf("   time: %g\n",this->time);
+	_printLine_("BoolElementResult:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   value: "<<(this->value?"true":"false"));
+	_printLine_("   step: " << this->step);
+	_printLine_("   time: " << this->time);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/ElementResults/DoubleElementResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/ElementResults/DoubleElementResult.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/ElementResults/DoubleElementResult.cpp	(revision 12511)
@@ -48,9 +48,9 @@
 void DoubleElementResult::DeepEcho(void){
 
-	printf("DoubleElementResult:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   value: %g\n",this->value);
-	printf("   step: %i\n",this->step);
-	printf("   time: %g\n",this->time);
+	_printLine_("DoubleElementResult:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   value: " << this->value);
+	_printLine_("   step: " << this->step);
+	_printLine_("   time: " << this->time);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/ElementResults/PentaP1ElementResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/ElementResults/PentaP1ElementResult.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/ElementResults/PentaP1ElementResult.cpp	(revision 12511)
@@ -50,9 +50,9 @@
 void PentaP1ElementResult::DeepEcho(void){
 
-	printf("PentaP1ElementResult:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   values: [%g %g %g %g %g %g]\n",this->values[0],this->values[1],this->values[2],this->values[3],this->values[4],this->values[5]);
-	printf("   step: %i\n",this->step);
-	printf("   time: %g\n",this->time);
+	_printLine_("PentaP1ElementResult:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   values: [" << this->values[0] << " " << this->values[1] << " " << this->values[2] << " " << this->values[3] << " " << this->values[4] << " " << this->values[5] << "]");
+	_printLine_("   step: " << this->step);
+	_printLine_("   time: " << this->time);
 
 }
Index: /issm/trunk-jpl/src/c/objects/ElementResults/TriaP1ElementResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/ElementResults/TriaP1ElementResult.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/ElementResults/TriaP1ElementResult.cpp	(revision 12511)
@@ -50,9 +50,9 @@
 void TriaP1ElementResult::DeepEcho(void){
 		
-	printf("TriaP1ElementResult:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   values: [%g %g %g]\n",this->values[0],this->values[1],this->values[2]);
-	printf("   step: %i\n",this->step);
-	printf("   time: %g\n",this->time);
+	_printLine_("TriaP1ElementResult:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   values: [" << this->values[0] << " " << this->values[1] << " " << this->values[2] << "]");
+	_printLine_("   step: " << this->step);
+	_printLine_("   time: " << this->time);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Elements/Penta.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Elements/Penta.cpp	(revision 12511)
@@ -653,6 +653,6 @@
 	int i;
 	
-	printf("Penta:\n");
-	printf("   id: %i\n",id);
+	_printLine_("Penta:");
+	_printLine_("   id: " << id);
 	nodes[0]->DeepEcho();
 	nodes[1]->DeepEcho();
@@ -663,13 +663,13 @@
 	matice->DeepEcho();
 	matpar->DeepEcho();
-	printf("   neighbor ids: %i-%i\n",verticalneighbors[0]->Id(),verticalneighbors[1]->Id());
-	printf("   parameters\n");
+	_printLine_("   neighbor ids: " << verticalneighbors[0]->Id() << "-" << verticalneighbors[1]->Id());
+	_printLine_("   parameters");
 	parameters->DeepEcho();
-	printf("   inputs\n");
+	_printLine_("   inputs");
 	inputs->DeepEcho();
-	printf("   results\n");
+	_printLine_("   results");
 	results->DeepEcho();
-	printf("neighboor sids: \n");
-	printf(" %i %i %i\n",horizontalneighborsids[0],horizontalneighborsids[1],horizontalneighborsids[2]);
+	_printLine_("neighboor sids: ");
+	_printLine_(" " << horizontalneighborsids[0] << " " << horizontalneighborsids[1] << " " << horizontalneighborsids[2]);
 
 	return;
@@ -1095,5 +1095,5 @@
 	}
 	else{
-		printf("Interpolation %s not supported\n",EnumToStringx(interp));
+		_printLine_("Interpolation " << EnumToStringx(interp) << " not supported");
 	}
 }
@@ -4329,6 +4329,6 @@
 		/*Check solution*/
 		if(isnan(values[i])) _error2_("NaN found in solution vector");
-		//if(values[i]<0)      printf("temperature < 0°K found in solution vector\n");
-		//if(values[i]>275)    printf("temperature > 275°K found in solution vector (Paterson's rheology associated is negative)\n");
+		//if(values[i]<0)      _printLine_("temperature < 0°K found in solution vector");
+		//if(values[i]>275)    _printLine_("temperature > 275°K found in solution vector (Paterson's rheology associated is negative)");
 	}
 
Index: /issm/trunk-jpl/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Elements/Tria.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Elements/Tria.cpp	(revision 12511)
@@ -867,6 +867,6 @@
 void Tria::DeepEcho(void){
 
-	printf("Tria:\n");
-	printf("   id: %i\n",id);
+	_printLine_("Tria:");
+	_printLine_("   id: " << id);
 	if(nodes){
 		nodes[0]->DeepEcho();
@@ -874,25 +874,25 @@
 		nodes[2]->DeepEcho();
 	}
-	else printf("nodes = NULL\n");
+	else _printLine_("nodes = NULL");
 
 	if (matice) matice->DeepEcho();
-	else printf("matice = NULL\n");
+	else _printLine_("matice = NULL");
 
 	if (matpar) matpar->DeepEcho();
-	else printf("matpar = NULL\n");
-
-	printf("   parameters\n");
+	else _printLine_("matpar = NULL");
+
+	_printLine_("   parameters");
 	if (parameters) parameters->DeepEcho();
-	else printf("parameters = NULL\n");
-
-	printf("   inputs\n");
+	else _printLine_("parameters = NULL");
+
+	_printLine_("   inputs");
 	if (inputs) inputs->DeepEcho();
-	else printf("inputs=NULL\n");
+	else _printLine_("inputs=NULL");
 
 	if (results) results->DeepEcho();
-	else printf("results=NULL\n");
-
-	printf("neighboor sids: \n");
-	printf(" %i %i %i\n",horizontalneighborsids[0],horizontalneighborsids[1],horizontalneighborsids[2]);
+	else _printLine_("results=NULL");
+
+	_printLine_("neighboor sids: ");
+	_printLine_(" " << horizontalneighborsids[0] << " " << horizontalneighborsids[1] << " " << horizontalneighborsids[2]);
 	
 	return;
@@ -910,6 +910,6 @@
 /*FUNCTION Tria::Echo{{{*/
 void Tria::Echo(void){
-	printf("Tria:\n");
-	printf("   id: %i\n",id);
+	_printLine_("Tria:");
+	_printLine_("   id: " << id);
 	if(nodes){
 		nodes[0]->Echo();
@@ -917,25 +917,25 @@
 		nodes[2]->Echo();
 	}
-	else printf("nodes = NULL\n");
+	else _printLine_("nodes = NULL");
 
 	if (matice) matice->Echo();
-	else printf("matice = NULL\n");
+	else _printLine_("matice = NULL");
 
 	if (matpar) matpar->Echo();
-	else printf("matpar = NULL\n");
-
-	printf("   parameters\n");
+	else _printLine_("matpar = NULL");
+
+	_printLine_("   parameters");
 	if (parameters) parameters->Echo();
-	else printf("parameters = NULL\n");
-
-	printf("   inputs\n");
+	else _printLine_("parameters = NULL");
+
+	_printLine_("   inputs");
 	if (inputs) inputs->Echo();
-	else printf("inputs=NULL\n");
+	else _printLine_("inputs=NULL");
 
 	if (results) results->Echo();
-	else printf("results=NULL\n");
-
-	printf("neighboor sids: \n");
-	printf(" %i %i %i\n",horizontalneighborsids[0],horizontalneighborsids[1],horizontalneighborsids[2]);
+	else _printLine_("results=NULL");
+
+	_printLine_("neighboor sids: ");
+	_printLine_(" " << horizontalneighborsids[0] << " " << horizontalneighborsids[1] << " " << horizontalneighborsids[2]);
 }
 /*}}}*/
@@ -1207,5 +1207,5 @@
 	}
 	else{
-		printf("Interpolation %s not supported\n",EnumToStringx(interp));
+		_printLine_("Interpolation " << EnumToStringx(interp) << " not supported");
 	}
 }
Index: /issm/trunk-jpl/src/c/objects/ExternalResults/BoolExternalResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/ExternalResults/BoolExternalResult.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/ExternalResults/BoolExternalResult.cpp	(revision 12511)
@@ -51,10 +51,10 @@
 void BoolExternalResult::DeepEcho(void){
 
-	printf("BoolExternalResult:\n");
-	printf("   id: %i\n",this->id);
-	printf("   enum:  %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   value: %s\n",this->value?"true":"false");
-	printf("   step: %i\n",this->step);
-	printf("   time: %g\n",this->time);
+	_printLine_("BoolExternalResult:");
+	_printLine_("   id: " << this->id);
+	_printLine_("   enum:  " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   value: " <<(this->value?"true":"false"));
+	_printLine_("   step: " << this->step);
+	_printLine_("   time: " << this->time);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/ExternalResults/DoubleExternalResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/ExternalResults/DoubleExternalResult.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/ExternalResults/DoubleExternalResult.cpp	(revision 12511)
@@ -51,10 +51,10 @@
 void DoubleExternalResult::DeepEcho(void){
 
-	printf("DoubleExternalResult:\n");
-	printf("   id: %i\n",this->id);
-	printf("   enum:  %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   value: %g\n",this->value);
-	printf("   step: %i\n",this->step);
-	printf("   time: %g\n",this->time);
+	_printLine_("DoubleExternalResult:");
+	_printLine_("   id: " << this->id);
+	_printLine_("   enum:  " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   value: " << this->value);
+	_printLine_("   step: " << this->step);
+	_printLine_("   time: " << this->time);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/ExternalResults/DoubleMatExternalResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/ExternalResults/DoubleMatExternalResult.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/ExternalResults/DoubleMatExternalResult.cpp	(revision 12511)
@@ -57,9 +57,9 @@
 void DoubleMatExternalResult::Echo(void){
 
-	printf("DoubleMatExternalResult:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   step: %i\n",this->step);
-	printf("   time: %g\n",this->time);
-	printf("   matrix size: %i-%i\n",this->M,this->N);
+	_printLine_("DoubleMatExternalResult:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   step: " << this->step);
+	_printLine_("   time: " << this->time);
+	_printLine_("   matrix size: " << this->M << "-" << this->N);
 
 }
@@ -70,10 +70,10 @@
 	int i,j;
 	
-	printf("DoubleMatExternalResult:\n");
-	printf("   id: %i\n",this->id);
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   step: %i\n",this->step);
-	printf("   time: %g\n",this->time);
-	printf("   matrix size: %i-%i\n",this->M,this->N);
+	_printLine_("DoubleMatExternalResult:");
+	_printLine_("   id: " << this->id);
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   step: " << this->step);
+	_printLine_("   time: " << this->time);
+	_printLine_("   matrix size: " << this->M << "-" << this->N);
 	for (i=0;i<this->M;i++){  
 		_printString_("   [ ");
Index: /issm/trunk-jpl/src/c/objects/ExternalResults/DoubleVecExternalResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/ExternalResults/DoubleVecExternalResult.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/ExternalResults/DoubleVecExternalResult.cpp	(revision 12511)
@@ -54,9 +54,9 @@
 void DoubleVecExternalResult::Echo(void){
 
-	printf("DoubleVecExternalResult:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   vector size: %i\n",this->M);
-	printf("   step: %i\n",this->step);
-	printf("   time: %g\n",this->time);
+	_printLine_("DoubleVecExternalResult:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   vector size: " << this->M);
+	_printLine_("   step: " << this->step);
+	_printLine_("   time: " << this->time);
 
 }
@@ -67,13 +67,13 @@
 	int i;
 	
-	printf("DoubleVecExternalResult:\n");
-	printf("   id: %i\n",this->id);
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   vector size: %i\n",this->M);
+	_printLine_("DoubleVecExternalResult:");
+	_printLine_("   id: " << this->id);
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   vector size: " << this->M);
 	for(i=0;i<this->M;i++){
-		printf("%i %g\n",i,this->values[i]);
+		_printLine_("" << i << " " << this->values[i]);
 	}
-	printf("   step: %i\n",this->step);
-	printf("   time: %g\n",this->time);
+	_printLine_("   step: " << this->step);
+	_printLine_("   time: " << this->time);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/ExternalResults/IntExternalResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/ExternalResults/IntExternalResult.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/ExternalResults/IntExternalResult.cpp	(revision 12511)
@@ -51,10 +51,10 @@
 void IntExternalResult::DeepEcho(void){
 
-	printf("IntExternalResult:\n");
-	printf("   id: %i\n",this->id);
-	printf("   enum:  %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   value: %i\n",this->value);
-	printf("   step: %i\n",this->step);
-	printf("   time: %g\n",this->time);
+	_printLine_("IntExternalResult:");
+	_printLine_("   id: " << this->id);
+	_printLine_("   enum:  " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   value: " << this->value);
+	_printLine_("   step: " << this->step);
+	_printLine_("   time: " << this->time);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/ExternalResults/PetscVecExternalResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/ExternalResults/PetscVecExternalResult.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/ExternalResults/PetscVecExternalResult.cpp	(revision 12511)
@@ -54,6 +54,6 @@
 void PetscVecExternalResult::Echo(void){
 
-	printf("PetscVecExternalResult:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
+	_printLine_("PetscVecExternalResult:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
 
 }
@@ -63,9 +63,9 @@
 
 	int i;
-	printf("PetscVecExternalResult:\n");
-	printf("   id: %i\n",this->id);
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   step: %i\n",this->step);
-	printf("   time: %g\n",this->time);
+	_printLine_("PetscVecExternalResult:");
+	_printLine_("   id: " << this->id);
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   step: " << this->step);
+	_printLine_("   time: " << this->time);
 	VecView(value,PETSC_VIEWER_STDOUT_WORLD);
 }
Index: /issm/trunk-jpl/src/c/objects/ExternalResults/StringExternalResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/ExternalResults/StringExternalResult.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/ExternalResults/StringExternalResult.cpp	(revision 12511)
@@ -53,10 +53,10 @@
 void StringExternalResult::DeepEcho(void){
 
-	printf("StringExternalResult:\n");
-	printf("   id: %i\n",this->id);
-	printf("   enum:  %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   value: %s\n",this->value);
-	printf("   step: %i\n",this->step);
-	printf("   time: %g\n",this->time);
+	_printLine_("StringExternalResult:");
+	_printLine_("   id: " << this->id);
+	_printLine_("   enum:  " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   value: " << this->value);
+	_printLine_("   step: " << this->step);
+	_printLine_("   time: " << this->time);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/FemModel.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/FemModel.cpp	(revision 12511)
@@ -102,10 +102,10 @@
 void FemModel::Echo(void){
 
-	printf("FemModel echo: \n");
-	printf("   number of fem models: %i\n",nummodels);
-	printf("   analysis_type_list: \n");
-	for(int i=0;i<nummodels;i++)printf("     %i: %s\n",i,EnumToStringx(analysis_type_list[i]));
-	printf("   current analysis_type: \n");
-	printf("     %i: %s\n",analysis_counter,EnumToStringx(analysis_type_list[analysis_counter]));
+	_printLine_("FemModel echo: ");
+	_printLine_("   number of fem models: " << nummodels);
+	_printLine_("   analysis_type_list: ");
+	for(int i=0;i<nummodels;i++)_printLine_("     " << i << ": " << EnumToStringx(analysis_type_list[i]));
+	_printLine_("   current analysis_type: ");
+	_printLine_("     " << analysis_counter << ": " << EnumToStringx(analysis_type_list[analysis_counter]));
 
 }
Index: /issm/trunk-jpl/src/c/objects/Gauss/GaussPenta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Gauss/GaussPenta.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Gauss/GaussPenta.cpp	(revision 12511)
@@ -247,43 +247,43 @@
 void GaussPenta::Echo(void){
 
-	printf("GaussPenta:\n");
-	printf("   numgauss: %i\n",numgauss);
+	_printLine_("GaussPenta:");
+	_printLine_("   numgauss: " << numgauss);
 
 	if (weights){
-	 printf("   weights = ["); 
-	 for(int i=0;i<numgauss;i++) printf(" %g\n",weights[i]);
-	 printf("]\n");
-	}
-	else printf("weights = NULL\n");
+	 _printString_("   weights = ["); 
+	 for(int i=0;i<numgauss;i++) _printLine_(" " << weights[i]);
+	 _printLine_("]");
+	}
+	else _printLine_("weights = NULL");
 	if (coords1){
-	 printf("   coords1 = ["); 
-	 for(int i=0;i<numgauss;i++) printf(" %g\n",coords1[i]);
-	 printf("]\n");
-	}
-	else printf("coords1 = NULL\n");
+	 _printString_("   coords1 = ["); 
+	 for(int i=0;i<numgauss;i++) _printLine_(" " << coords1[i]);
+	 _printLine_("]");
+	}
+	else _printLine_("coords1 = NULL");
 	if (coords2){
-	 printf("   coords2 = ["); 
-	 for(int i=0;i<numgauss;i++) printf(" %g\n",coords2[i]);
-	 printf("]\n");
-	}
-	else printf("coords2 = NULL\n");
+	 _printString_("   coords2 = ["); 
+	 for(int i=0;i<numgauss;i++) _printLine_(" " << coords2[i]);
+	 _printLine_("]");
+	}
+	else _printLine_("coords2 = NULL");
 	if (coords3){
-	 printf("   coords3 = ["); 
-	 for(int i=0;i<numgauss;i++) printf(" %g\n",coords3[i]);
-	 printf("]\n");
-	}
-	else printf("coords3 = NULL\n");
+	 _printString_("   coords3 = ["); 
+	 for(int i=0;i<numgauss;i++) _printLine_(" " << coords3[i]);
+	 _printLine_("]");
+	}
+	else _printLine_("coords3 = NULL");
 	if (coords4){
-		printf("   coords4 = ["); 
-		for(int i=0;i<numgauss;i++) printf(" %g\n",coords4[i]);
-		printf("]\n");
-	}
-	else printf("coords4 = NULL\n");
-
-	printf("   weight = %g\n",weight);
-	printf("   coord1 = %g\n",coord1);
-	printf("   coord2 = %g\n",coord2);
-	printf("   coord3 = %g\n",coord3);
-	printf("   coord4 = %g\n",coord4);
+		_printString_("   coords4 = ["); 
+		for(int i=0;i<numgauss;i++) _printLine_(" " << coords4[i]);
+		_printLine_("]");
+	}
+	else _printLine_("coords4 = NULL");
+
+	_printLine_("   weight = " << weight);
+	_printLine_("   coord1 = " << coord1);
+	_printLine_("   coord2 = " << coord2);
+	_printLine_("   coord3 = " << coord3);
+	_printLine_("   coord4 = " << coord4);
 
 }
Index: /issm/trunk-jpl/src/c/objects/Gauss/GaussTria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Gauss/GaussTria.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Gauss/GaussTria.cpp	(revision 12511)
@@ -108,36 +108,36 @@
 void GaussTria::Echo(void){
 
-	printf("GaussTria:\n");
-	printf("   numgauss: %i\n",numgauss);
+	_printLine_("GaussTria:");
+	_printLine_("   numgauss: " << numgauss);
 
 	if (weights){
-	 printf("   weights = ["); 
-	 for(int i=0;i<numgauss;i++) printf(" %g\n",weights[i]);
-	 printf("]\n");
-	}
-	else printf("weights = NULL\n");
+	 _printString_("   weights = ["); 
+	 for(int i=0;i<numgauss;i++) _printLine_(" " << weights[i]);
+	 _printLine_("]");
+	}
+	else _printLine_("weights = NULL");
 	if (coords1){
-	 printf("   coords1 = ["); 
-	 for(int i=0;i<numgauss;i++) printf(" %g\n",coords1[i]);
-	 printf("]\n");
-	}
-	else printf("coords1 = NULL\n");
+	 _printString_("   coords1 = ["); 
+	 for(int i=0;i<numgauss;i++) _printLine_(" " << coords1[i]);
+	 _printLine_("]");
+	}
+	else _printLine_("coords1 = NULL");
 	if (coords2){
-	 printf("   coords2 = ["); 
-	 for(int i=0;i<numgauss;i++) printf(" %g\n",coords2[i]);
-	 printf("]\n");
-	}
-	else printf("coords2 = NULL\n");
+	 _printString_("   coords2 = ["); 
+	 for(int i=0;i<numgauss;i++) _printLine_(" " << coords2[i]);
+	 _printLine_("]");
+	}
+	else _printLine_("coords2 = NULL");
 	if (coords3){
-	 printf("   coords3 = ["); 
-	 for(int i=0;i<numgauss;i++) printf(" %g\n",coords3[i]);
-	 printf("]\n");
-	}
-	else printf("coords3 = NULL\n");
-
-	printf("   weight = %g\n",weight);
-	printf("   coord1 = %g\n",coord1);
-	printf("   coord2 = %g\n",coord2);
-	printf("   coord3 = %g\n",coord3);
+	 _printString_("   coords3 = ["); 
+	 for(int i=0;i<numgauss;i++) _printLine_(" " << coords3[i]);
+	 _printLine_("]");
+	}
+	else _printLine_("coords3 = NULL");
+
+	_printLine_("   weight = " << weight);
+	_printLine_("   coord1 = " << coord1);
+	_printLine_("   coord2 = " << coord2);
+	_printLine_("   coord3 = " << coord3);
 
 }
Index: /issm/trunk-jpl/src/c/objects/Inputs/BoolInput.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Inputs/BoolInput.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Inputs/BoolInput.cpp	(revision 12511)
@@ -45,7 +45,7 @@
 void BoolInput::DeepEcho(void){
 
-	printf("BoolInput:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   value: %s\n",value?"true":"false");
+	_printLine_("BoolInput:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   value: " <<(value?"true":"false"));
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/Inputs/ControlInput.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Inputs/ControlInput.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Inputs/ControlInput.cpp	(revision 12511)
@@ -72,11 +72,11 @@
 void ControlInput::DeepEcho(void){
 
-	printf("ControlInput:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("---values: \n");     if (values)      values->Echo();
-	printf("---savedvalues: \n");if (savedvalues) savedvalues->Echo();
-	printf("---minvalues: \n");  if (minvalues)   minvalues->Echo();
-	printf("---maxvalues: \n");  if (maxvalues)   maxvalues->Echo();
-	printf("---gradient: \n");   if (gradient)    gradient->Echo();
+	_printLine_("ControlInput:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("---values: ");     if (values)      values->Echo();
+	_printLine_("---savedvalues: ");if (savedvalues) savedvalues->Echo();
+	_printLine_("---minvalues: ");  if (minvalues)   minvalues->Echo();
+	_printLine_("---maxvalues: ");  if (maxvalues)   maxvalues->Echo();
+	_printLine_("---gradient: ");   if (gradient)    gradient->Echo();
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/Inputs/DatasetInput.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Inputs/DatasetInput.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Inputs/DatasetInput.cpp	(revision 12511)
@@ -47,7 +47,7 @@
 void DatasetInput::DeepEcho(void){
 
-	printf("DatasetInput:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("---inputs: \n"); inputs->Echo();
+	_printLine_("DatasetInput:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("---inputs: "); inputs->Echo();
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/Inputs/DoubleInput.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Inputs/DoubleInput.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Inputs/DoubleInput.cpp	(revision 12511)
@@ -45,7 +45,7 @@
 void DoubleInput::DeepEcho(void){
 
-	printf("DoubleInput:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   value: %g\n",this->value);
+	_printLine_("DoubleInput:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   value: " << this->value);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/Inputs/IntInput.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Inputs/IntInput.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Inputs/IntInput.cpp	(revision 12511)
@@ -40,7 +40,7 @@
 void IntInput::DeepEcho(void){
 
-	printf("IntInput:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   value: %i\n",(int)this->value);
+	_printLine_("IntInput:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   value: " << (int)this->value);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/Inputs/PentaP1Input.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Inputs/PentaP1Input.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Inputs/PentaP1Input.cpp	(revision 12511)
@@ -56,7 +56,7 @@
 void PentaP1Input::DeepEcho(void){
 
-	printf("PentaP1Input:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   values: [%g %g %g %g %g %g]\n",this->values[0],this->values[1],this->values[2],this->values[3],this->values[4],this->values[5]);
+	_printLine_("PentaP1Input:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   values: [" << this->values[0] << " " << this->values[1] << " " << this->values[2] << " " << this->values[3] << " " << this->values[4] << " " << this->values[5] << "]");
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/Inputs/TransientInput.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Inputs/TransientInput.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Inputs/TransientInput.cpp	(revision 12511)
@@ -66,10 +66,10 @@
 	int i;
 
-	printf("TransientInput:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   numtimesteps: %i\n",this->numtimesteps);
-	printf("---inputs: \n"); 
+	_printLine_("TransientInput:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   numtimesteps: " << this->numtimesteps);
+	_printLine_("---inputs: "); 
 	for(i=0;i<this->numtimesteps;i++){
-		printf("   time: %g  \n",this->timesteps[i]);
+		_printLine_("   time: " << this->timesteps[i] << "  ");
 		((Input*)this->inputs->GetObjectByOffset(i))->Echo();
 	}
Index: /issm/trunk-jpl/src/c/objects/Inputs/TriaP1Input.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Inputs/TriaP1Input.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Inputs/TriaP1Input.cpp	(revision 12511)
@@ -56,7 +56,7 @@
 void TriaP1Input::DeepEcho(void){
 
-	printf("TriaP1Input:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   values: [%g %g %g]\n",this->values[0],this->values[1],this->values[2]);
+	_printLine_("TriaP1Input:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   values: [" << this->values[0] << " " << this->values[1] << " " << this->values[2] << "]");
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/IoModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/IoModel.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/IoModel.cpp	(revision 12511)
@@ -114,18 +114,18 @@
 		else{
 			if(record_enum!=MaximumNumberOfEnums){
-				printf("\n");
-				printf("=========================================================================\n");
-				printf(" Enums in marshalled file are not compatible with compiled code          \n");
-				printf("                                                                         \n");
-				printf("   * If you are running ISSM on a remote cluster:                        \n");
-				printf("     make sure that you are using the same version of ISSM on your local \n");
-				printf("     machine and remote cluster (you might need to run svn update)       \n");
-				printf("   * If you are running ISSM on your local machine:                      \n");
-				printf("     make sure that all the code is compiled (modules and executables)   \n");
-				printf("   * If you are a developer and just added a new Enum:                   \n");
-				printf("     you might need to run ./Synchronize.sh in src/c/EnumDefinitions     \n");
-				printf("     and recompile                                                       \n");
-				printf("=========================================================================\n");
-				printf("\n");
+				_printLine_("");
+				_printLine_("=========================================================================");
+				_printLine_(" Enums in marshalled file are not compatible with compiled code          ");
+				_printLine_("                                                                         ");
+				_printLine_("   * If you are running ISSM on a remote cluster:                        ");
+				_printLine_("     make sure that you are using the same version of ISSM on your local ");
+				_printLine_("     machine and remote cluster (you might need to run svn update)       ");
+				_printLine_("   * If you are running ISSM on your local machine:                      ");
+				_printLine_("     make sure that all the code is compiled (modules and executables)   ");
+				_printLine_("   * If you are a developer and just added a new Enum:                   ");
+				_printLine_("     you might need to run ./Synchronize.sh in src/c/EnumDefinitions     ");
+				_printLine_("     and recompile                                                       ");
+				_printLine_("=========================================================================");
+				_printLine_("");
 				_error2_("Enums not consistent (See error message above)");
 			}
Index: /issm/trunk-jpl/src/c/objects/Kriging/ExponentialVariogram.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Kriging/ExponentialVariogram.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Kriging/ExponentialVariogram.cpp	(revision 12511)
@@ -51,8 +51,8 @@
 /*FUNCTION ExponentialVariogram::Echo {{{*/
 void ExponentialVariogram::Echo(void){
-	printf("ExponentialVariogram\n");
-	printf("   nugget: %g\n",this->nugget);
-	printf("   sill  : %g\n",this->sill);
-	printf("   range : %g\n",this->range);
+	_printLine_("ExponentialVariogram");
+	_printLine_("   nugget: " << this->nugget);
+	_printLine_("   sill  : " << this->sill);
+	_printLine_("   range : " << this->range);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/Kriging/GaussianVariogram.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Kriging/GaussianVariogram.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Kriging/GaussianVariogram.cpp	(revision 12511)
@@ -51,8 +51,8 @@
 /*FUNCTION GaussianVariogram::Echo {{{*/
 void GaussianVariogram::Echo(void){
-	printf("GaussianVariogram\n");
-	printf("   nugget: %g\n",this->nugget);
-	printf("   sill  : %g\n",this->sill);
-	printf("   range : %g\n",this->range);
+	_printLine_("GaussianVariogram");
+	_printLine_("   nugget: " << this->nugget);
+	_printLine_("   sill  : " << this->sill);
+	_printLine_("   range : " << this->range);
 }
 /*}}}*/
@@ -93,6 +93,6 @@
 	gamma = (sill-nugget)*(1.-exp(-h2/(a*range*range))) + nugget;
 
-	//if(h2>1000*1000) printf("gamma = %g h= %g\n",gamma,sqrt(h2));
-	printf("h = %g gamma = %g\n",sqrt(h2),gamma);
+	//if(h2>1000*1000) _printLine_("gamma = " << gamma << " h= " << sqrt(h2));
+	_printLine_("h = " << sqrt(h2) << " gamma = " << gamma);
 	return gamma;
 }
Index: /issm/trunk-jpl/src/c/objects/Kriging/Observation.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Kriging/Observation.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Kriging/Observation.cpp	(revision 12511)
@@ -37,12 +37,12 @@
 	int  bit;
 
-	printf("Observation\n");
-	printf("   index : %i\n",this->index);
-	printf("   x     : %g\n",this->x);
-	printf("   y     : %g\n",this->y);
-	printf("   xi    : "); printbinary(this->xi); printf("\n");
-	printf("   yi    : "); printbinary(this->yi); printf("\n");
-	printf("   weight: %g\n",this->weight);
-	printf("   value : %g\n",this->value);
+	_printLine_("Observation");
+	_printLine_("   index : " << this->index);
+	_printLine_("   x     : " << this->x);
+	_printLine_("   y     : " << this->y);
+	_printLine_("   xi    : "); printbinary(this->xi); _printLine_("");
+	_printLine_("   yi    : "); printbinary(this->yi); _printLine_("");
+	_printLine_("   weight: " << this->weight);
+	_printLine_("   value : " << this->value);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/Kriging/PowerVariogram.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Kriging/PowerVariogram.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Kriging/PowerVariogram.cpp	(revision 12511)
@@ -52,8 +52,8 @@
 /*FUNCTION PowerVariogram::Echo {{{*/
 void PowerVariogram::Echo(void){
-	printf("PowerVariogram\n");
-	printf("   nugget: %g\n",this->nugget);
-	printf("   slope : %g\n",this->slope);
-	printf("   power : %g\n",this->power);
+	_printLine_("PowerVariogram");
+	_printLine_("   nugget: " << this->nugget);
+	_printLine_("   slope : " << this->slope);
+	_printLine_("   power : " << this->power);
 }
 /*}}}*/
@@ -89,5 +89,5 @@
 	gamma = this->nugget + this->slope*pow(h,this->power);
 
-	//if(h>1000) printf("gamma = %g h=%g\n",gamma,h);
+	//if(h>1000) _printLine_("gamma = " << gamma << " h=" << h);
 	return gamma;
 }
Index: /issm/trunk-jpl/src/c/objects/Kriging/Quadtree.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Kriging/Quadtree.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Kriging/Quadtree.cpp	(revision 12511)
@@ -297,9 +297,9 @@
 void  Quadtree::Echo(void){
 
-	printf("Quadtree:\n");
-	printf("   MaxDepth      = %i\n",this->MaxDepth);
-	printf("   NbQuadtreeBox = %i\n",this->NbQuadtreeBox);
-	printf("   NbObs         = %i\n",this->NbObs);
-	printf("   root          = %p\n",this->root);
+	_printLine_("Quadtree:");
+	_printLine_("   MaxDepth      = " << this->MaxDepth);
+	_printLine_("   NbQuadtreeBox = " << this->NbQuadtreeBox);
+	_printLine_("   NbObs         = " << this->NbObs);
+	_printLine_("   root          = " << this->root);
 
 }/*}}}*/
@@ -307,9 +307,9 @@
 void  Quadtree::DeepEcho(void){
 
-	printf("Quadtree:\n");
-	printf("   MaxDepth      = %i\n",this->MaxDepth);
-	printf("   NbQuadtreeBox = %i\n",this->NbQuadtreeBox);
-	printf("   NbObs         = %i\n",this->NbObs);
-	printf("   root          = %p\n",this->root);
+	_printLine_("Quadtree:");
+	_printLine_("   MaxDepth      = " << this->MaxDepth);
+	_printLine_("   NbQuadtreeBox = " << this->NbQuadtreeBox);
+	_printLine_("   NbObs         = " << this->NbObs);
+	_printLine_("   root          = " << this->root);
 	boxcontainer->Echo();
 
@@ -512,9 +512,9 @@
 void  Quadtree::QuadtreeBox::Echo(void){
 
-	printf("QuadtreeBox:\n");
-	printf("   nbitems = %i\n",this->nbitems);
-	printf("   xcenter = %g\n",this->xcenter);
-	printf("   ycenter = %g\n",this->ycenter);
-	printf("   length  = %g\n",this->length);
+	_printLine_("QuadtreeBox:");
+	_printLine_("   nbitems = " << this->nbitems);
+	_printLine_("   xcenter = " << this->xcenter);
+	_printLine_("   ycenter = " << this->ycenter);
+	_printLine_("   length  = " << this->length);
 
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/objects/Kriging/SphericalVariogram.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Kriging/SphericalVariogram.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Kriging/SphericalVariogram.cpp	(revision 12511)
@@ -51,8 +51,8 @@
 /*FUNCTION SphericalVariogram::Echo {{{*/
 void SphericalVariogram::Echo(void){
-	printf("SphericalVariogram\n");
-	printf("   nugget: %g\n",this->nugget);
-	printf("   sill  : %g\n",this->sill);
-	printf("   range : %g\n",this->range);
+	_printLine_("SphericalVariogram");
+	_printLine_("   nugget: " << this->nugget);
+	_printLine_("   sill  : " << this->sill);
+	_printLine_("   range : " << this->range);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/Loads/Friction.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Loads/Friction.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Loads/Friction.cpp	(revision 12511)
@@ -48,7 +48,7 @@
 /*FUNCTION Friction::Echo {{{*/
 void Friction::Echo(void){
-	printf("Friction:\n");
-	printf("   analysis_type: %s\n",EnumToStringx(analysis_type));
-	printf("   element_type: %s\n",this->element_type);
+	_printLine_("Friction:");
+	_printLine_("   analysis_type: " << EnumToStringx(analysis_type));
+	_printLine_("   element_type: " << this->element_type);
 	inputs->Echo();
 	matpar->Echo();
Index: /issm/trunk-jpl/src/c/objects/Loads/Icefront.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Loads/Icefront.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Loads/Icefront.cpp	(revision 12511)
@@ -127,13 +127,13 @@
 /*FUNCTION Icefront::Echo {{{*/
 void Icefront::Echo(void){
-	printf("Icefront:\n");
-	printf("   id: %i\n",id);
-	printf("   analysis_type: %s\n",EnumToStringx(analysis_type));
+	_printLine_("Icefront:");
+	_printLine_("   id: " << id);
+	_printLine_("   analysis_type: " << EnumToStringx(analysis_type));
 	hnodes->Echo();
 	helement->Echo();
 	hmatpar->Echo();
-	printf("   parameters: %p\n",parameters);
+	_printLine_("   parameters: " << parameters);
 	if(parameters)parameters->Echo();
-	printf("   inputs: %p\n",inputs);
+	_printLine_("   inputs: " << inputs);
 	if(inputs)inputs->Echo();
 }
@@ -142,13 +142,13 @@
 void Icefront::DeepEcho(void){
 
-	printf("Icefront:\n");
-	printf("   id: %i\n",id);
-	printf("   analysis_type: %s\n",EnumToStringx(analysis_type));
+	_printLine_("Icefront:");
+	_printLine_("   id: " << id);
+	_printLine_("   analysis_type: " << EnumToStringx(analysis_type));
 	hnodes->DeepEcho();
 	helement->DeepEcho();
 	hmatpar->DeepEcho();
-	printf("   parameters: %p\n",parameters);
+	_printLine_("   parameters: " << parameters);
 	if(parameters)parameters->DeepEcho();
-	printf("   inputs: %p\n",inputs);
+	_printLine_("   inputs: " << inputs);
 	if(inputs)inputs->DeepEcho();
 }
Index: /issm/trunk-jpl/src/c/objects/Loads/Numericalflux.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Loads/Numericalflux.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Loads/Numericalflux.cpp	(revision 12511)
@@ -151,11 +151,11 @@
 /*FUNCTION Numericalflux::Echo {{{*/
 void Numericalflux::Echo(void){
-	printf("Numericalflux:\n");
-	printf("   id: %i\n",id);
-	printf("   analysis_type: %s\n",EnumToStringx(analysis_type));
+	_printLine_("Numericalflux:");
+	_printLine_("   id: " << id);
+	_printLine_("   analysis_type: " << EnumToStringx(analysis_type));
 	hnodes->Echo();
 	helement->Echo();
-	printf("   parameters: %p\n",parameters);
-	printf("   inputs: %p\n",inputs);
+	_printLine_("   parameters: " << parameters);
+	_printLine_("   inputs: " << inputs);
 }
 /*}}}*/
@@ -163,15 +163,15 @@
 void Numericalflux::DeepEcho(void){
 
-	printf("Numericalflux:\n");
-	printf("   id: %i\n",id);
-	printf("   analysis_type: %s\n",EnumToStringx(analysis_type));
+	_printLine_("Numericalflux:");
+	_printLine_("   id: " << id);
+	_printLine_("   analysis_type: " << EnumToStringx(analysis_type));
 	hnodes->DeepEcho();
 	helement->DeepEcho();
-	printf("   parameters\n");
+	_printLine_("   parameters");
 	if(parameters)
 	 parameters->DeepEcho();
 	else
-	 printf("      NULL\n");
-	printf("   inputs\n");
+	 _printLine_("      NULL");
+	_printLine_("   inputs");
 	inputs->DeepEcho();
 	
Index: /issm/trunk-jpl/src/c/objects/Loads/Pengrid.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Loads/Pengrid.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Loads/Pengrid.cpp	(revision 12511)
@@ -109,15 +109,15 @@
 void Pengrid::DeepEcho(void){
 
-	printf("Pengrid:\n");
-	printf("   id: %i\n",id);
-	printf("   analysis_type: %s\n",EnumToStringx(analysis_type));
+	_printLine_("Pengrid:");
+	_printLine_("   id: " << id);
+	_printLine_("   analysis_type: " << EnumToStringx(analysis_type));
 	hnode->DeepEcho();
 	helement->DeepEcho();
 	hmatpar->DeepEcho();
-	printf("   active %i\n",this->active);
-	printf("   zigzag_counter %i\n",this->zigzag_counter);
-	printf("   parameters\n");
+	_printLine_("   active " << this->active);
+	_printLine_("   zigzag_counter " << this->zigzag_counter);
+	_printLine_("   parameters");
 	parameters->DeepEcho();
-	printf("   inputs\n");
+	_printLine_("   inputs");
 	inputs->DeepEcho();
 }
Index: /issm/trunk-jpl/src/c/objects/Loads/Penpair.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Loads/Penpair.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Loads/Penpair.cpp	(revision 12511)
@@ -57,7 +57,7 @@
 	int i;
 
-	printf("Penpair:\n");
-	printf("   id: %i\n",id);
-	printf("   analysis_type: %s\n",EnumToStringx(analysis_type));
+	_printLine_("Penpair:");
+	_printLine_("   id: " << id);
+	_printLine_("   analysis_type: " << EnumToStringx(analysis_type));
 	hnodes->Echo();
 	
@@ -68,7 +68,7 @@
 void Penpair::DeepEcho(void){
 
-	printf("Penpair:\n");
-	printf("   id: %i\n",id);
-	printf("   analysis_type: %s\n",EnumToStringx(analysis_type));
+	_printLine_("Penpair:");
+	_printLine_("   id: " << id);
+	_printLine_("   analysis_type: " << EnumToStringx(analysis_type));
 	hnodes->DeepEcho();
 
Index: /issm/trunk-jpl/src/c/objects/Loads/Riftfront.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Loads/Riftfront.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Loads/Riftfront.cpp	(revision 12511)
@@ -143,26 +143,26 @@
 	input=(Input*)this->inputs->GetInput(FractionIncrementEnum); input->GetInputValue(&fractionincrement);
 
-	printf("Riftfront:\n");
-	printf("   id: %i\n",id);
-	printf("   analysis_type: %s\n",EnumToStringx(analysis_type));
-	printf("   hnodes: %p\n",hnodes);
-	printf("   helements: %p\n",helements);
-	printf("   hmatpar: %p\n",hmatpar);
-	printf("   parameters: %p\n",parameters);
-	printf("   inputs: %p\n",inputs);
-	printf("   internal parameters: \n");
-	printf("   normal: %g|%g\n",normal[0],normal[1]);
-	printf("   length: %g\n",length);
-	printf("   penalty_lock: %i\n",penalty_lock);
-	printf("   active: %s\n",active ? "true":"false");
-	printf("   counter: %i\n",counter);
-	printf("   prestable: %s\n",prestable ? "true":"false");
-	printf("   material_converged: %s\n",material_converged ? "true":"false");
-	printf("   fill: %i\n",fill);
-	printf("   friction: %g\n",friction);
-	printf("   fraction: %g\n",fraction);
-	printf("   fractionincrement: %g\n",fractionincrement);
-	printf("   state: %i\n",state);
-	printf("   frozen: %s\n",frozen ? "true":"false");
+	_printLine_("Riftfront:");
+	_printLine_("   id: " << id);
+	_printLine_("   analysis_type: " << EnumToStringx(analysis_type));
+	_printLine_("   hnodes: " << hnodes);
+	_printLine_("   helements: " << helements);
+	_printLine_("   hmatpar: " << hmatpar);
+	_printLine_("   parameters: " << parameters);
+	_printLine_("   inputs: " << inputs);
+	_printLine_("   internal parameters: ");
+	_printLine_("   normal: " << normal[0] << "|" << normal[1]);
+	_printLine_("   length: " << length);
+	_printLine_("   penalty_lock: " << penalty_lock);
+	_printLine_("   active: " <<(active ? "true":"false"));
+	_printLine_("   counter: " << counter);
+	_printLine_("   prestable: " << (prestable ? "true":"false"));
+	_printLine_("   material_converged: " << (material_converged ? "true":"false"));
+	_printLine_("   fill: " << fill);
+	_printLine_("   friction: " << friction);
+	_printLine_("   fraction: " << fraction);
+	_printLine_("   fractionincrement: " << fractionincrement);
+	_printLine_("   state: " << state);
+	_printLine_("   frozen: " << (frozen ? "true":"false"));
 		
 }
@@ -171,13 +171,13 @@
 void Riftfront::DeepEcho(void){
 
-	printf("Riftfront:\n");
-	printf("   id: %i\n",id);
-	printf("   analysis_type: %s\n",EnumToStringx(analysis_type));
+	_printLine_("Riftfront:");
+	_printLine_("   id: " << id);
+	_printLine_("   analysis_type: " << EnumToStringx(analysis_type));
 	hnodes->DeepEcho();
 	helements->DeepEcho();
 	hmatpar->DeepEcho();
-	printf("   parameters\n");
+	_printLine_("   parameters");
 	if(parameters)parameters->DeepEcho();
-	printf("   inputs\n");
+	_printLine_("   inputs");
 	if(inputs)inputs->DeepEcho();
 }
@@ -633,5 +633,5 @@
 		this->fraction+=fractionincrement;
 		if (this->fraction>1)this->fraction=(IssmDouble)1.0;
-		//printf("riftfront %i fraction: %g\n",this->Id(),this->fraction);
+		//_printLine_("riftfront " << this->Id() << " fraction: " << this->fraction);
 	}
 
@@ -648,5 +648,5 @@
 	this->active=activate;
 
-	//if ((penetration>0) && (this->active==1))printf("Riftfront %i wants to be released\n",Id());
+	//if ((penetration>0) && (this->active==1))_printLine_("Riftfront " << Id() << " wants to be released");
 
 	/*assign output pointer: */
Index: /issm/trunk-jpl/src/c/objects/Materials/Matice.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Materials/Matice.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Materials/Matice.cpp	(revision 12511)
@@ -60,9 +60,9 @@
 void Matice::Echo(void){
 
-	printf("Matice:\n");
-	printf("   mid: %i\n",mid);
-	printf("   inputs:\n");
+	_printLine_("Matice:");
+	_printLine_("   mid: " << mid);
+	_printLine_("   inputs:");
 	inputs->Echo();
-	printf("   element:\n");
+	_printLine_("   element:");
 	helement->Echo();
 }
@@ -71,9 +71,9 @@
 void Matice::DeepEcho(void){
 
-	printf("Matice:\n");
-	printf("   mid: %i\n",mid);
-	printf("   inputs:\n");
+	_printLine_("Matice:");
+	_printLine_("   mid: " << mid);
+	_printLine_("   inputs:");
 	inputs->DeepEcho();
-	printf("   element:\n");
+	_printLine_("   element:");
 	helement->Echo();
 }		
Index: /issm/trunk-jpl/src/c/objects/Materials/Matpar.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Materials/Matpar.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Materials/Matpar.cpp	(revision 12511)
@@ -57,19 +57,19 @@
 void Matpar::Echo(void){
 
-	printf("Matpar:\n");
-	printf("   mid: %i\n",mid);
-	printf("   rho_ice: %g\n",rho_ice);
-	printf("   rho_water: %g\n",rho_water);
-	printf("   rho_freshwater: %g\n",rho_freshwater);
-	printf("   mu_water: %g\n",mu_water);
-	printf("   heatcapacity: %g\n",heatcapacity);
-	printf("   thermalconductivity: %g\n",thermalconductivity);
-	printf("   latentheat: %g\n",latentheat);
-	printf("   beta: %g\n",beta);
-	printf("   meltingpoint: %g\n",meltingpoint);
-	printf("   referencetemperature: %g\n",referencetemperature);
-	printf("   mixed_layer_capacity: %g\n",mixed_layer_capacity);
-	printf("   thermal_exchange_velocity: %g\n",thermal_exchange_velocity);
-	printf("   g: %g\n",g);
+	_printLine_("Matpar:");
+	_printLine_("   mid: " << mid);
+	_printLine_("   rho_ice: " << rho_ice);
+	_printLine_("   rho_water: " << rho_water);
+	_printLine_("   rho_freshwater: " << rho_freshwater);
+	_printLine_("   mu_water: " << mu_water);
+	_printLine_("   heatcapacity: " << heatcapacity);
+	_printLine_("   thermalconductivity: " << thermalconductivity);
+	_printLine_("   latentheat: " << latentheat);
+	_printLine_("   beta: " << beta);
+	_printLine_("   meltingpoint: " << meltingpoint);
+	_printLine_("   referencetemperature: " << referencetemperature);
+	_printLine_("   mixed_layer_capacity: " << mixed_layer_capacity);
+	_printLine_("   thermal_exchange_velocity: " << thermal_exchange_velocity);
+	_printLine_("   g: " << g);
 	return;
 }
Index: /issm/trunk-jpl/src/c/objects/Node.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Node.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Node.cpp	(revision 12511)
@@ -157,11 +157,11 @@
 void Node::Echo(void){
 
-	printf("Node:\n");
-	printf("   id: %i\n",id);
-	printf("   sid: %i\n",sid);
-	printf("   analysis_type: %s\n",EnumToStringx(analysis_type));
+	_printLine_("Node:");
+	_printLine_("   id: " << id);
+	_printLine_("   sid: " << sid);
+	_printLine_("   analysis_type: " << EnumToStringx(analysis_type));
 	indexing.Echo();
-	printf("   hvertex:     not displayed\n");
-	printf("   inputs:      %p\n",inputs);
+	_printLine_("   hvertex:     not displayed");
+	_printLine_("   inputs:      " << inputs);
 
 
@@ -171,12 +171,12 @@
 void Node::DeepEcho(void){
 
-	printf("Node:\n");
-	printf("   id: %i\n",id);
-	printf("   sid: %i\n",sid);
-	printf("   analysis_type: %s\n",EnumToStringx(analysis_type));
+	_printLine_("Node:");
+	_printLine_("   id: " << id);
+	_printLine_("   sid: " << sid);
+	_printLine_("   analysis_type: " << EnumToStringx(analysis_type));
 	indexing.DeepEcho();
-	printf("Vertex:\n");
+	_printLine_("Vertex:");
 	hvertex->DeepEcho();
-	printf("   inputs\n");
+	_printLine_("   inputs");
 
 
Index: /issm/trunk-jpl/src/c/objects/Numerics/Matrix.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Numerics/Matrix.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Numerics/Matrix.cpp	(revision 12511)
@@ -130,10 +130,10 @@
 	#ifdef _HAVE_ADOLC_
 	/*Not sure about that one. Should we use the overloaded operator >>?*/
-	printf("ADOLC Matrix equivalent:" );
+	_printString_("ADOLC Matrix equivalent:" );
 	for(i=0;i<M;i++){
 		for(j=0;j<N;j++){
-			printf("%g ",*(amatrix+N*i+j));
+			_printString_("" << *(amatrix+N*i+j) << " ");
 		}
-		printf("\n");
+		_printLine_("");
 	}
 	#endif
Index: /issm/trunk-jpl/src/c/objects/Params/BoolParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Params/BoolParam.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Params/BoolParam.cpp	(revision 12511)
@@ -48,7 +48,7 @@
 void BoolParam::DeepEcho(void){
 
-	printf("BoolParam:\n");
-	printf("   enum:  %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   value: %s\n",this->value?"true":"false");
+	_printLine_("BoolParam:");
+	_printLine_("   enum:  " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   value: " <<(this->value?"true":"false"));
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/Params/DoubleMatArrayParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Params/DoubleMatArrayParam.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Params/DoubleMatArrayParam.cpp	(revision 12511)
@@ -87,8 +87,8 @@
 void DoubleMatArrayParam::Echo(void){
 
-	printf("DoubleMatArrayParam:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   array size: %i\n",this->M);
-	printf("   array pointer: %p\n",this->array);
+	_printLine_("DoubleMatArrayParam:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   array size: " << this->M);
+	_printLine_("   array pointer: " << this->array);
 
 }
@@ -101,9 +101,9 @@
 	IssmDouble* matrix=NULL;
 	
-	printf("DoubleMatArrayParam:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   array size: %i\n",this->M);
-	for(i=0;i<M;i++){
-		printf("   array %i (%ix%i):\n",i,mdim_array[i],ndim_array[i]);
+	_printLine_("DoubleMatArrayParam:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   array size: " << this->M);
+	for(i=0;i<M;i++){
+		_printLine_("   array " << i << " (" << mdim_array[i] << "x" << ndim_array[i] << "):");
 		matrix=array[i];
 		m=mdim_array[i];
@@ -111,7 +111,7 @@
 
 		for(j=0;j<m;j++){
-			printf("   ");
-			for(k=0;k<n;k++)printf("%g ",*(matrix+n*j+k));
-			printf("\n");
+			_printString_("   ");
+			for(k=0;k<n;k++)_printString_("" << *(matrix+n*j+k) << " ");
+			_printLine_("");
 		}
 	}
Index: /issm/trunk-jpl/src/c/objects/Params/DoubleMatParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Params/DoubleMatParam.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Params/DoubleMatParam.cpp	(revision 12511)
@@ -48,7 +48,7 @@
 void DoubleMatParam::Echo(void){
 
-	printf("DoubleMatParam:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   matrix size: %ix%i\n",this->M,this->N);
+	_printLine_("DoubleMatParam:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   matrix size: " << this->M << "x" << this->N);
 
 }
@@ -59,10 +59,10 @@
 	int i,j;
 	
-	printf("DoubleMatParam:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   matrix size: %ix%i\n",this->M,this->N);
+	_printLine_("DoubleMatParam:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   matrix size: " << this->M << "x" << this->N);
 	for(i=0;i<this->M;i++){
 		for(i=0;i<this->N;i++){
-			printf("%i %i %g\n",i,j,*(this->value+N*i+j));
+			_printLine_("" << i << " " << j << " " << *(this->value+N*i+j));
 		}
 	}
Index: /issm/trunk-jpl/src/c/objects/Params/DoubleParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Params/DoubleParam.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Params/DoubleParam.cpp	(revision 12511)
@@ -45,7 +45,7 @@
 void DoubleParam::DeepEcho(void){
 
-	printf("DoubleParam:\n");
-	printf("   enum:  %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   value: %g\n",this->value);
+	_printLine_("DoubleParam:");
+	_printLine_("   enum:  " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   value: " << this->value);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/Params/DoubleVecParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Params/DoubleVecParam.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Params/DoubleVecParam.cpp	(revision 12511)
@@ -47,7 +47,7 @@
 void DoubleVecParam::Echo(void){
 
-	printf("DoubleVecParam:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   vector size: %i\n",this->M);
+	_printLine_("DoubleVecParam:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   vector size: " << this->M);
 
 }
@@ -58,9 +58,9 @@
 	int i;
 	
-	printf("DoubleVecParam:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   vector size: %i\n",this->M);
+	_printLine_("DoubleVecParam:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   vector size: " << this->M);
 	for(i=0;i<this->M;i++){
-		printf("%i %g\n",i,this->values[i]);
+		_printLine_("" << i << " " << this->values[i]);
 	}
 }
Index: /issm/trunk-jpl/src/c/objects/Params/FileParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Params/FileParam.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Params/FileParam.cpp	(revision 12511)
@@ -48,7 +48,7 @@
 void FileParam::DeepEcho(void){
 
-	printf("FileParam:\n");
-	printf("   enum:  %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   value: %p\n",this->value);
+	_printLine_("FileParam:");
+	_printLine_("   enum:  " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   value: " << this->value);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/Params/IntMatParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Params/IntMatParam.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Params/IntMatParam.cpp	(revision 12511)
@@ -48,7 +48,7 @@
 void IntMatParam::Echo(void){
 
-	printf("IntMatParam:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   matrix size: %ix%i\n",this->M,this->N);
+	_printLine_("IntMatParam:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   matrix size: " << this->M << "x" << this->N);
 
 }
@@ -59,10 +59,10 @@
 	int i,j;
 	
-	printf("IntMatParam:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   matrix size: %ix%i\n",this->M,this->N);
+	_printLine_("IntMatParam:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   matrix size: " << this->M << "x" << this->N);
 	for(i=0;i<this->M;i++){
 		for(i=0;i<this->N;i++){
-			printf("(%i,%i) %i\n",i,j,*(this->value+N*i+j));
+			_printLine_("(" << i << "," << j << ") " << *(this->value+N*i+j));
 		}
 	}
Index: /issm/trunk-jpl/src/c/objects/Params/IntParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Params/IntParam.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Params/IntParam.cpp	(revision 12511)
@@ -48,7 +48,7 @@
 void IntParam::DeepEcho(void){
 
-	printf("IntParam:\n");
-	printf("   enum:  %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   value: %i\n",this->value);
+	_printLine_("IntParam:");
+	_printLine_("   enum:  " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   value: " << this->value);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/Params/IntVecParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Params/IntVecParam.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Params/IntVecParam.cpp	(revision 12511)
@@ -63,7 +63,7 @@
 void IntVecParam::Echo(void){
 
-	printf("IntVecParam:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   vector size: %i\n",this->M);
+	_printLine_("IntVecParam:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   vector size: " << this->M);
 
 }
@@ -74,9 +74,9 @@
 	int i;
 	
-	printf("IntVecParam:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   vector size: %i\n",this->M);
+	_printLine_("IntVecParam:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   vector size: " << this->M);
 	for(i=0;i<this->M;i++){
-		printf("%i %i\n",i,this->values[i]);
+		_printLine_("" << i << " " << this->values[i]);
 	}
 }
Index: /issm/trunk-jpl/src/c/objects/Params/MatrixParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Params/MatrixParam.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Params/MatrixParam.cpp	(revision 12511)
@@ -47,6 +47,6 @@
 void MatrixParam::Echo(void){
 
-	printf("MatrixParam:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
+	_printLine_("MatrixParam:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
 
 }
@@ -56,6 +56,6 @@
 
 	int i;
-	printf("MatrixParam:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
+	_printLine_("MatrixParam:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
 	this->value->Echo();
 }
Index: /issm/trunk-jpl/src/c/objects/Params/StringArrayParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Params/StringArrayParam.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Params/StringArrayParam.cpp	(revision 12511)
@@ -75,9 +75,9 @@
 	char* string=NULL;
 
-	printf("StringArrayParam:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
+	_printLine_("StringArrayParam:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
 	for(i=0;i<this->numstrings;i++){
 		string=this->value[i];
-		printf("   %i: %s\n",i,string);
+		_printLine_("   " << i << ": " << string);
 	}
 }
Index: /issm/trunk-jpl/src/c/objects/Params/StringParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Params/StringParam.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Params/StringParam.cpp	(revision 12511)
@@ -50,7 +50,7 @@
 /*FUNCTION StringParam::DeepEcho{{{*/
 void StringParam::DeepEcho(void){
-	printf("StringParam:\n");
-	printf("   enum:  %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
-	printf("   value: %s\n",this->value);
+	_printLine_("StringParam:");
+	_printLine_("   enum:  " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
+	_printLine_("   value: " << this->value);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/Params/VectorParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Params/VectorParam.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Params/VectorParam.cpp	(revision 12511)
@@ -49,6 +49,6 @@
 void VectorParam::Echo(void){
 
-	printf("VectorParam:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
+	_printLine_("VectorParam:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
 
 }
@@ -58,6 +58,6 @@
 
 	int i;
-	printf("VectorParam:\n");
-	printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
+	_printLine_("VectorParam:");
+	_printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
 	value->Echo();
 }
Index: /issm/trunk-jpl/src/c/objects/Segment.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Segment.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Segment.cpp	(revision 12511)
@@ -49,8 +49,8 @@
 void Segment::Echo(void){
 
-	printf("Segment:\n");
-	printf("   eid: %i\n",eid);
-	printf("   node 1: %g|%g\n",this->x1,this->y1);
-	printf("   node 2: %g|%g\n",this->x2,this->y2);
+	_printLine_("Segment:");
+	_printLine_("   eid: " << eid);
+	_printLine_("   node 1: " << this->x1 << "|" << this->y1);
+	_printLine_("   node 2: " << this->x2 << "|" << this->y2);
 
 }
Index: /issm/trunk-jpl/src/c/objects/Vertex.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Vertex.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/objects/Vertex.cpp	(revision 12511)
@@ -64,14 +64,14 @@
 void Vertex::Echo(void){
 
-	printf("Vertex:\n");
-	printf("   id: %i\n",id);
-	printf("   sid: %i\n",sid);
-	printf("   x: %g\n",x);
-	printf("   y: %g\n",y);
-	printf("   z: %g\n",z);
-	printf("   sigma: %g\n",sigma);
-	printf("   connectivity: %i\n",connectivity);
-	printf("   dof: %i\n",dof);
-	printf("   clone: %i\n",clone);
+	_printLine_("Vertex:");
+	_printLine_("   id: " << id);
+	_printLine_("   sid: " << sid);
+	_printLine_("   x: " << x);
+	_printLine_("   y: " << y);
+	_printLine_("   z: " << z);
+	_printLine_("   sigma: " << sigma);
+	_printLine_("   connectivity: " << connectivity);
+	_printLine_("   dof: " << dof);
+	_printLine_("   clone: " << clone);
 
 	return;
Index: /issm/trunk-jpl/src/c/shared/Exceptions/Exceptions.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Exceptions/Exceptions.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/shared/Exceptions/Exceptions.cpp	(revision 12511)
@@ -44,14 +44,14 @@
 
 	if (function_name=="" || file_line==0){ //WINDOWS
-		printf("%s%s","Error message: ",what());
+		_printString_("" << "Error message: " << what());
 	}
 	else{
 		if(num_procs==1){
-			printf("\n??? Error using ==> %s:%i\n",file_name.c_str(),file_line);
-			printf("%s error message: %s\n\n",function_name.c_str(),what());
+			_printLine_("\n??? Error using ==> " << file_name.c_str() << ":" << file_line);
+			_printLine_("" << function_name.c_str() << " error message: " << what() << "\n");
 		}
 		else{
-			printf("\n[%i] ??? Error using ==> %s:%i\n",my_rank,file_name.c_str(),file_line);
-			printf("[%i] %s error message: %s\n\n",my_rank,function_name.c_str(),what());
+			_printLine_("\n[" << my_rank << "] ??? Error using ==> " << file_name.c_str() << ":" << file_line);
+			_printLine_("[" << my_rank << "] " << function_name.c_str() << " error message: " << what() << "\n");
 		}
 	}
Index: /issm/trunk-jpl/src/c/toolkits/issm/SeqMat.cpp
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/issm/SeqMat.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/toolkits/issm/SeqMat.cpp	(revision 12511)
@@ -83,10 +83,10 @@
 
 	int i,j;
-	printf("SeqMat size %i-%i\n",this->M,this->N);
+	_printLine_("SeqMat size " << this->M << "-" << this->N);
 	for(i=0;i<M;i++){
 		for(j=0;j<N;j++){
-			printf("%g ",this->matrix[N*i+j]);
+			_printString_("" << this->matrix[N*i+j] << " ");
 		}
-		printf("\n");
+		_printLine_("");
 	}
 }
Index: /issm/trunk-jpl/src/c/toolkits/issm/SeqVec.cpp
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/issm/SeqVec.cpp	(revision 12510)
+++ /issm/trunk-jpl/src/c/toolkits/issm/SeqVec.cpp	(revision 12511)
@@ -59,7 +59,7 @@
 
 	int i;
-	printf("SeqVec size %i\n",this->M);
+	_printLine_("SeqVec size " << this->M);
 	for(i=0;i<M;i++){
-		printf("%g\n ",vector[i]);
+		_printString_("" << vector[i] << "\n ");
 	}
 }
