Index: /issm/trunk/src/c/Bamgx/objects/Edge.h
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/Edge.h	(revision 3569)
+++ /issm/trunk/src/c/Bamgx/objects/Edge.h	(revision 3570)
@@ -39,8 +39,8 @@
 			int Intersection(const  Edge & e) const { 
 				if (!(adj[0]==&e || adj[1]==&e)){
-					ISSMERROR(exprintf("Intersection bug"));
+					ISSMERROR("Intersection bug");
 				}
 				if (adj[0]!=&e && adj[1]!=&e){
-					ISSMERROR(exprintf("adj[0]!=&e && adj[1]!=&e"));
+					ISSMERROR("adj[0]!=&e && adj[1]!=&e");
 				}
 				return adj[0]==&e ? 0 : 1;
Index: /issm/trunk/src/c/Bamgx/objects/GeometricalEdge.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/GeometricalEdge.cpp	(revision 3569)
+++ /issm/trunk/src/c/Bamgx/objects/GeometricalEdge.cpp	(revision 3570)
@@ -93,8 +93,8 @@
 		double ca,cb,cta,ctb;
 		if ( theta<-1e-12){
-			ISSMERROR(exprintf("theta<-1e-12"));
+			ISSMERROR("theta<-1e-12");
 		}
 		if ( theta>1+1e-12){
-			ISSMERROR(exprintf("theta>1+1e-12"));
+			ISSMERROR("theta>1+1e-12");
 		}
 		if (TgA()) 
Index: /issm/trunk/src/c/Bamgx/objects/Geometry.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/Geometry.cpp	(revision 3569)
+++ /issm/trunk/src/c/Bamgx/objects/Geometry.cpp	(revision 3570)
@@ -33,5 +33,5 @@
 		 subdomains[i].Set(Gh.subdomains[i],Gh,*this);
 		if (nbt);  {
-			ISSMERROR(exprintf("nbt"));
+			ISSMERROR("nbt");
 		}
 	}
@@ -44,5 +44,5 @@
 
 		if (NbRef>0){
-			ISSMERROR(exprintf("NbRef>0"));
+			ISSMERROR("NbRef>0");
 		}
 		if(vertices)  delete [] vertices;vertices=0;
@@ -83,5 +83,5 @@
 		}
 		if (bamggeom->Edges==NULL){
-			ISSMERROR(exprintf("the domain provided does not contain any edge"));
+			ISSMERROR("the domain provided does not contain any edge");
 		}
 
@@ -89,5 +89,5 @@
 		if (bamggeom->Vertices){
 			if(verbose>5) printf("      processing Vertices\n");
-			if (bamggeom->VerticesSize[1]!=3) ISSMERROR(exprintf("Vertices should have 3 columns"));
+			if (bamggeom->VerticesSize[1]!=3) ISSMERROR("Vertices should have 3 columns");
 			vertices = new GeometricalVertex[nbvx];
 			for (i=0;i<nbv;i++) {
@@ -116,9 +116,9 @@
 			coefIcoor= (MaxICoor)/(Max(pmax.x-pmin.x,pmax.y-pmin.y));
 			if(coefIcoor <=0){
-				ISSMERROR(exprintf("coefIcoor should be positive"));
+				ISSMERROR("coefIcoor should be positive");
 			}
 		}
 		else{
-			ISSMERROR(exprintf("No MeshVertex provided"));
+			ISSMERROR("No MeshVertex provided");
 		}
 
@@ -129,5 +129,5 @@
 
 			if(verbose>5) printf("      processing Edges\n");
-			if (bamggeom->EdgesSize[1]!=3) ISSMERROR(exprintf("Edges should have 3 columns"));
+			if (bamggeom->EdgesSize[1]!=3) ISSMERROR("Edges should have 3 columns");
 			edges = new GeometricalEdge[nbe];
 
@@ -180,5 +180,5 @@
 		}
 		else{
-			ISSMERROR(exprintf("No edges provided"));
+			ISSMERROR("No edges provided");
 		}
 
@@ -223,5 +223,5 @@
 		if (bamggeom->TangentAtEdges){
 			if(verbose>5) printf("      processing TangentAtEdges");
-			if (bamggeom->TangentAtEdgesSize[1]!=4) ISSMERROR(exprintf("TangentAtEdges should have 4 columns"));
+			if (bamggeom->TangentAtEdgesSize[1]!=4) ISSMERROR("TangentAtEdges should have 4 columns");
 			int n,i,j,k;
 			R2 tg;
@@ -234,5 +234,5 @@
 				tg.y=bamggeom->TangentAtEdges[k*4+3];
 				if (j!=0 && j!=1){
-					ISSMERROR(exprintf("TangentAtEdges second index should be 1 or 2 only"));
+					ISSMERROR("TangentAtEdges second index should be 1 or 2 only");
 				}
 				edges[i].tg[j] = tg;
@@ -243,10 +243,10 @@
 		if(bamggeom->Corners){
 			if(verbose>5) printf("      processing Corners");
-			if (bamggeom->CornersSize[1]!=1) ISSMERROR(exprintf("Corners should have 1 column"));
+			if (bamggeom->CornersSize[1]!=1) ISSMERROR("Corners should have 1 column");
 			n=bamggeom->CornersSize[0];
 			for (i=0;i<n;i++) {     
 				j=(int)bamggeom->Corners[i]-1; //for C indexing
 				if (j>nbv-1 || j<0){
-					ISSMERROR(exprintf("Bad corner definition: should in [0 %i]",nbv));
+					ISSMERROR("Bad corner definition: should in [0 %i]",nbv);
 				}
 				vertices[j].SetCorner();
@@ -257,10 +257,10 @@
 		if(bamggeom->RequiredVertices){
 			if(verbose>5) printf("      processing RequiredVertices\n");
-			if (bamggeom->RequiredVerticesSize[1]!=1) ISSMERROR(exprintf("RequiredVertices should have 1 column"));
+			if (bamggeom->RequiredVerticesSize[1]!=1) ISSMERROR("RequiredVertices should have 1 column");
 			n=bamggeom->RequiredVerticesSize[0];
 			for (i=0;i<n;i++) {     
 				j=(int)bamggeom->RequiredVertices[i]-1; //for C indexing
 				if (j>nbv-1 || j<0){
-					ISSMERROR(exprintf("Bad RequiredVerticess  definition: should in [0 %i]",nbv));
+					ISSMERROR("Bad RequiredVerticess  definition: should in [0 %i]",nbv);
 				}
 				vertices[j].SetRequired();  }
@@ -270,10 +270,10 @@
 		if(bamggeom->RequiredEdges){
 			if(verbose>5) printf("      processing RequiredEdges\n");
-			if (bamggeom->RequiredEdgesSize[1]!=1) ISSMERROR(exprintf("RequiredEdges should have 1 column"));
+			if (bamggeom->RequiredEdgesSize[1]!=1) ISSMERROR("RequiredEdges should have 1 column");
 			n=bamggeom->RequiredEdgesSize[0];
 			for (i=0;i<n;i++) {     
 				j=(int)bamggeom->RequiredEdges[i]-1; //for C indexing
 				if (j>nbe-1 || j<0){
-					ISSMERROR(exprintf("Bad RequiredEdges definition: should in [0 %i]",nbe));
+					ISSMERROR("Bad RequiredEdges definition: should in [0 %i]",nbe);
 				}
 				edges[j].SetRequired();  
@@ -285,5 +285,5 @@
 			long i0,i1,i2,i3;
 			if(verbose>5) printf("      processing SubDomains\n");
-			if (bamggeom->SubDomainsSize[1]!=4) ISSMERROR(exprintf("SubDomains should have 4 columns"));
+			if (bamggeom->SubDomainsSize[1]!=4) ISSMERROR("SubDomains should have 4 columns");
 			NbSubDomains=bamggeom->SubDomainsSize[0];
 			subdomains = new GeometricalSubDomain[NbSubDomains];
@@ -293,6 +293,6 @@
 				i2=(int)bamggeom->SubDomains[i*4+2];
 				i3=(int)bamggeom->SubDomains[i*4+3];
-				if (i0!=2) ISSMERROR(exprintf("Bad Subdomain definition: first number should be 2 (for Edges)"));
-				if (i1>nbe || i1<=0) ISSMERROR(exprintf("Bad Subdomain definition: second number should in [1 %i] (edge number)",nbe));
+				if (i0!=2) ISSMERROR("Bad Subdomain definition: first number should be 2 (for Edges)");
+				if (i1>nbe || i1<=0) ISSMERROR("Bad Subdomain definition: second number should in [1 %i] (edge number)",nbe);
 				subdomains[i].edge=edges + (i1-1);
 				subdomains[i].sens = (int) i2;
@@ -466,5 +466,5 @@
 				//check that the clostest vertex is not itself...
 				if ( v !=  &(MeshVertex &) vertices[j]){
-					ISSMERROR(exprintf(" v !=  &(MeshVertex &) vertices[j]"));
+					ISSMERROR(" v !=  &(MeshVertex &) vertices[j]");
 				}
 				vertices[i].link = vertices + j;
@@ -484,5 +484,5 @@
 				if (!vertices[i].IsThe()) printf("  %i and %i\n",i,Number(vertices[i].The()));
 			}
-			ISSMERROR(exprintf("See above"));
+			ISSMERROR("See above");
 		}
 
@@ -555,5 +555,5 @@
 			//check that its length is not 0
 			if(lv10==0) {
-				ISSMERROR(exprintf("Length of edge %i is 0",i));
+				ISSMERROR("Length of edge %i is 0",i);
 			}
 			//compute angle in [-Pi Pi]
@@ -647,5 +647,5 @@
 				long i1 = n1/2 ,j1=n1%2;
 				if( edges[i1].v[j1] != edges[i].v[j]) {
-					ISSMERROR(exprintf("Bug Adj edge"));
+					ISSMERROR("Bug Adj edge");
 				}
 				edges[i1].Adj[j1] = edges + i;
@@ -763,5 +763,5 @@
 			pon = on;
 			if (k>=100){
-				ISSMERROR(exprintf("k>=100"));
+				ISSMERROR("k>=100");
 			}
 			R2 A= (*on)[0];
@@ -842,8 +842,8 @@
 		GeometricalEdge* on=e.onGeometry;
 		if (!on){
-			ISSMERROR(exprintf("ProjectOnCurve error message: edge provided should be on geometry"));
+			ISSMERROR("ProjectOnCurve error message: edge provided should be on geometry");
 		}
 		if (!e[0].onGeometry ||  !e[1].onGeometry){
-			ISSMERROR(exprintf("ProjectOnCurve error message: at least one of the vertex of the edge provided is not on geometry"));
+			ISSMERROR("ProjectOnCurve error message: at least one of the vertex of the edge provided is not on geometry");
 		}
 
@@ -886,5 +886,5 @@
 					printf(" 2)  code bug : be sure that we call   Triangles::SetVertexFieldOn() before\n");
 					printf("To solve the problem do a coarsening of the geometrical mesh or change the constant value of mxe (dangerous)\n");
-					ISSMERROR(exprintf("see above"));
+					ISSMERROR("see above");
 				  }
 				NbTry++;
@@ -906,5 +906,5 @@
 				printf(" 2)  code bug : be sure that we call   Triangles::SetVertexFieldOn() before\n");
 				printf("To solve the problem do a coarsening of the geometrical mesh or change the constant value of mxe (dangerous)\n");
-				ISSMERROR(exprintf("see above"));
+				ISSMERROR("see above");
 			}
 			GeometricalEdge* tmpge = eg1;
@@ -940,5 +940,5 @@
 				// search the geometrical edge
 				if (s>1.0){
-					ISSMERROR(exprintf("s>1.0"));
+					ISSMERROR("s>1.0");
 				}
 				double ls= s*ll;
@@ -950,5 +950,5 @@
 				while (  (l1=lge[i]) < ls ) {
 					if (i<0 || i>mxe){
-						ISSMERROR(exprintf("i<0 || i>mxe"));
+						ISSMERROR("i<0 || i>mxe");
 					}
 					i++,s0=1-(s1=sensge[i]),l0=l1;
Index: /issm/trunk/src/c/Bamgx/objects/ListofIntersectionTriangles.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/ListofIntersectionTriangles.cpp	(revision 3569)
+++ /issm/trunk/src/c/Bamgx/objects/ListofIntersectionTriangles.cpp	(revision 3570)
@@ -61,5 +61,5 @@
 				k=(*t)(0) ?  ((  (*t)(1) ? ( (*t)(2) ? -1 : 2) : 1  )) : 0;
 				if (k<0){
-					ISSMERROR(exprintf("k<0"));
+					ISSMERROR("k<0");
 				}
 				ocut = OppositeEdge[k];
@@ -105,5 +105,5 @@
 				double dij = detj-deti;
 				if (i+j+k != 0 + 1 +2){
-					ISSMERROR(exprintf("i+j+k != 0 + 1 +2"));
+					ISSMERROR("i+j+k != 0 + 1 +2");
 				}
 				ba[j] =  detj/dij;
@@ -177,5 +177,5 @@
 					}
 					else {
-						ISSMERROR(exprintf("Bug Split Edge"));
+						ISSMERROR("Bug Split Edge");
 					}
 				}
@@ -267,5 +267,5 @@
 		// check Size
 		if (Size<=0){
-			ISSMERROR(exprintf("Size<=0"));
+			ISSMERROR("Size<=0");
 		}
 
Index: /issm/trunk/src/c/Bamgx/objects/ListofIntersectionTriangles.h
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/ListofIntersectionTriangles.h	(revision 3569)
+++ /issm/trunk/src/c/Bamgx/objects/ListofIntersectionTriangles.h	(revision 3570)
@@ -43,5 +43,5 @@
 					double c01=lEnd-lBegin, c0=(lEnd-s)/c01, c1=(s-lBegin)/c01;
 					if (lBegin>s || s>lEnd){
-						ISSMERROR(exprintf("lBegin>s || s>lEnd"));
+						ISSMERROR("lBegin>s || s>lEnd");
 					}
 					return e->F(sBegin*c0+sEnd*c1);
@@ -93,5 +93,5 @@
 					SegInterpolation * lEn =  new SegInterpolation[MaxNbSeg];
 					if (!lSegsI || NbSeg>=MaxNbSeg){
-						ISSMERROR(exprintf("!lSegsI || NbSeg>=MaxNbSeg"));
+						ISSMERROR("!lSegsI || NbSeg>=MaxNbSeg");
 					}
 					for (int i=0;i< NbSeg;i++) 
Index: /issm/trunk/src/c/Bamgx/objects/MeshVertex.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/MeshVertex.cpp	(revision 3569)
+++ /issm/trunk/src/c/Bamgx/objects/MeshVertex.cpp	(revision 3570)
@@ -37,5 +37,5 @@
 			j = NextEdge[jc];
 			if (k>=2000){
-				ISSMERROR(exprintf("k>=2000 (Maximum number of iterations reached)"));
+				ISSMERROR("k>=2000 (Maximum number of iterations reached)");
 			}
 		} while ( tbegin != tria); 
@@ -104,5 +104,5 @@
 				j = NextEdge[jc];
 				if (k>=2000){
-					ISSMERROR(exprintf("k>=2000"));
+					ISSMERROR("k>=2000");
 				}
 			}while ( tbegin != tria); 
@@ -163,5 +163,5 @@
 		}
 		else{
-			ISSMERROR(exprintf("Metrictype %i not supported yet (use 0,1 or 2(default))",Metrictype));
+			ISSMERROR("Metrictype %i not supported yet (use 0,1 or 2(default))",Metrictype);
 		}
 
Index: /issm/trunk/src/c/Bamgx/objects/Metric.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/Metric.cpp	(revision 3569)
+++ /issm/trunk/src/c/Bamgx/objects/Metric.cpp	(revision 3570)
@@ -177,5 +177,5 @@
 		// warning for optimisation S is in [0:0.5] not in [0:1]
 		if (i>=512){
-			ISSMERROR(exprintf("i>=512"));
+			ISSMERROR("i>=512");
 		}
 		LastMetricInterpole.lab=l;
@@ -321,5 +321,5 @@
 		  }
 		if (r>1 || r<0){
-			ISSMERROR(exprintf("r>1 || r<0"));
+			ISSMERROR("r>1 || r<0");
 		}
 		return r ;
Index: /issm/trunk/src/c/Bamgx/objects/QuadTree.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/QuadTree.cpp	(revision 3569)
+++ /issm/trunk/src/c/Bamgx/objects/QuadTree.cpp	(revision 3570)
@@ -88,5 +88,5 @@
 	 root=NewQuadTreeBox();
 	 if ( MaxISize <= MaxICoor){
-		 ISSMERROR(exprintf("MaxISize <= MaxICoor"));
+		 ISSMERROR("MaxISize <= MaxICoor");
 	 }
 	 for (int i=0;i<nbv;i++) 
@@ -156,5 +156,5 @@
 		//check that l is not 0 (this should not happen as MaxDeep = 30)
 		if (level==0){
-			ISSMERROR(exprintf("level==0 cannot be true as it has been initialized as MaxISize = %i",MaxISize));
+			ISSMERROR("level==0 cannot be true as it has been initialized as MaxISize = %i",MaxISize);
 		}
 
@@ -468,5 +468,5 @@
 		be = b +ll;
 		if (!b){
-			ISSMERROR(exprintf("!b"));
+			ISSMERROR("!b");
 		}
 	}
Index: /issm/trunk/src/c/Bamgx/objects/QuadTree.h
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/QuadTree.h	(revision 3569)
+++ /issm/trunk/src/c/Bamgx/objects/QuadTree.h	(revision 3570)
@@ -62,5 +62,5 @@
 			QuadTreeBox* NewQuadTreeBox(){
 				if(! (sb->bc<sb->be)) sb=new StorageQuadTreeBox(lenStorageQuadTreeBox,sb);
-				if (!sb || (sb->bc->n != 0)){ISSMERROR(exprintf("!sb || (sb->bc->n != 0)"));}
+				if (!sb || (sb->bc->n != 0)){ISSMERROR("!sb || (sb->bc->n != 0)");}
 				NbQuadTreeBox++;
 				return sb->bc++;
Index: /issm/trunk/src/c/Bamgx/objects/SetOfE4.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/SetOfE4.cpp	(revision 3569)
+++ /issm/trunk/src/c/Bamgx/objects/SetOfE4.cpp	(revision 3570)
@@ -77,5 +77,5 @@
 		//check that nbax <=NbOfEdges
 		if (nbax <=NbOfEdges ) {
-			ISSMERROR(exprintf("SetOfEdges4::add overflow: NbOfEdges=%i > nbax=%i",NbOfEdges,nbax));
+			ISSMERROR("SetOfEdges4::add overflow: NbOfEdges=%i > nbax=%i",NbOfEdges,nbax);
 		}
 
Index: /issm/trunk/src/c/Bamgx/objects/SubDomain.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/SubDomain.cpp	(revision 3569)
+++ /issm/trunk/src/c/Bamgx/objects/SubDomain.cpp	(revision 3570)
@@ -16,9 +16,9 @@
 		*this = Th.subdomains[i];
 		if ( head-Th.triangles<0 || head-Th.triangles>=Th.nbt){
-			ISSMERROR(exprintf("head-Th.triangles<0 || head-Th.triangles>=Th.nbt"));
+			ISSMERROR("head-Th.triangles<0 || head-Th.triangles>=Th.nbt");
 		}
 		head = ThNew.triangles + Th.Number(head) ; 
 		if (edge-Th.edges<0 || edge-Th.edges>=Th.nbe);{
-			ISSMERROR(exprintf("edge-Th.edges<0 || edge-Th.edges>=Th.nbe"));
+			ISSMERROR("edge-Th.edges<0 || edge-Th.edges>=Th.nbe");
 		}
 		edge = ThNew.edges+ Th.Number(edge);
Index: /issm/trunk/src/c/Bamgx/objects/Triangle.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/Triangle.cpp	(revision 3569)
+++ /issm/trunk/src/c/Bamgx/objects/Triangle.cpp	(revision 3570)
@@ -15,8 +15,8 @@
 		long nbv = Th->nbv;
 		if (i<0 || j<0 || k<0){
-			ISSMERROR(exprintf("i<0 || j<0 || k<0"));
+			ISSMERROR("i<0 || j<0 || k<0");
 		}
 		if (i>=nbv || j>=nbv || k>=nbv){
-			ISSMERROR(exprintf("i>=nbv || j>=nbv || k>=nbv"));
+			ISSMERROR("i>=nbv || j>=nbv || k>=nbv");
 		}
 		TriaVertices[0]=v+i;
@@ -114,5 +114,5 @@
 			//check number of iterations
 			if (k>=2000){
-				ISSMERROR(exprintf("too many iteration in Triangle::FindBoundaryEdge (k>=2000)"));
+				ISSMERROR("too many iteration in Triangle::FindBoundaryEdge (k>=2000)");
 			}
 		} while (this!= t);
@@ -137,5 +137,5 @@
 		do {
 			while (t->swap(j,koption)){
-				if (k>=20000) ISSMERROR(exprintf("k>=20000"));
+				if (k>=20000) ISSMERROR("k>=20000");
 				NbSwap++;
 				k++;
Index: /issm/trunk/src/c/Bamgx/objects/Triangles.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/Triangles.cpp	(revision 3569)
+++ /issm/trunk/src/c/Bamgx/objects/Triangles.cpp	(revision 3570)
@@ -122,8 +122,8 @@
 				int i2 = Tho.Number(t[2]);
 				if (i0<0 || i1<0 || i2<0){
-					ISSMERROR(exprintf("i0<0 || i1<0 || i2< 0"));
+					ISSMERROR("i0<0 || i1<0 || i2< 0");
 				}
 				if (i0>=Tho.nbv || i1>=Tho.nbv || i2>=Tho.nbv){
-					ISSMERROR(exprintf("i0>=Tho.nbv || i1>=Tho.nbv || i2>=Tho.nbv"));
+					ISSMERROR("i0>=Tho.nbv || i1>=Tho.nbv || i2>=Tho.nbv");
 				}
 				triangles[nbt] = Triangle(this,kk[i0],kk[i1],kk[i2]);
@@ -132,8 +132,8 @@
 			  }
 		  if (kt!=nbt){
-			  ISSMERROR(exprintf("kt!=nbt"));
+			  ISSMERROR("kt!=nbt");
 		  }
 		  if (nbt==0 && nbv==0) {
-			  ISSMERROR(exprintf("All triangles have been removed"));
+			  ISSMERROR("All triangles have been removed");
 		  }
 		  delete [] kk;
@@ -147,8 +147,8 @@
 
 		  if (!NbSubDomains){
-			  ISSMERROR(exprintf("NbSubDomains==0"));
+			  ISSMERROR("NbSubDomains==0");
 		  }
 		  if (!subdomains[0].head || !subdomains[0].head->link){
-			  ISSMERROR(exprintf("!subdomains[0].head || !subdomains[0].head->link"));
+			  ISSMERROR("!subdomains[0].head || !subdomains[0].head->link");
 		  }
 
@@ -334,5 +334,5 @@
 		}
 		else{
-			if(verbose>5) ISSMERROR(exprintf("no Vertices found in the initial mesh"));
+			if(verbose>5) ISSMERROR("no Vertices found in the initial mesh");
 		}
 
@@ -352,5 +352,5 @@
 		}
 		else{
-			if(verbose>5) ISSMERROR(exprintf("no Triangles found in the initial mesh"));
+			if(verbose>5) ISSMERROR("no Triangles found in the initial mesh");
 		}
 
@@ -478,5 +478,5 @@
 				//Check value
 				if(!(i>=0 && j>=0 && i<nbe && j<Gh.nbe)) {
-					ISSMERROR(exprintf("ReadMesh error: EdgesOnGeometricEdge edge provided (line %i: [%i %i]) is incorrect (must be positive, [0<i<nbe=%i 0<j<Gh.nbe=%i]",i1+1,i+1,j+1,nbe,Gh.nbe));
+					ISSMERROR("ReadMesh error: EdgesOnGeometricEdge edge provided (line %i: [%i %i]) is incorrect (must be positive, [0<i<nbe=%i 0<j<Gh.nbe=%i]",i1+1,i+1,j+1,nbe,Gh.nbe);
 				}
 				edges[i].onGeometry=Gh.edges+j;
@@ -504,6 +504,6 @@
 				head=(int)bamgmesh->SubDomains[i*3+1]-1;//C indexing
 				sens=(int)bamgmesh->SubDomains[i*3+2];
-				if (i3!=23) ISSMERROR(exprintf("Bad Subdomain definition: first number should be 3"));
-				if (head<0 || head>=nbt) ISSMERROR(exprintf("Bad Subdomain definition: head should in [1 %i] (triangle number)",nbt));
+				if (i3!=23) ISSMERROR("Bad Subdomain definition: first number should be 3");
+				if (head<0 || head>=nbt) ISSMERROR("Bad Subdomain definition: head should in [1 %i] (triangle number)",nbt);
 				subdomains[i].head = triangles+head;
 			}
@@ -552,7 +552,7 @@
 				for (j=0;j<3;j++){
 					int v=Number(triangles[i][j]); //jth vertex of the ith triangle
-					if (k>3*nbt-1 || k<0) ISSMERROR(exprintf("k = %i, nbt = %i",k,nbt));
+					if (k>3*nbt-1 || k<0) ISSMERROR("k = %i, nbt = %i",k,nbt);
 					next_1[k]=head_1[v];
-					if (v>nbv-1 || v<0)   ISSMERROR(exprintf("v = %i, nbv = %i",v,nbv));
+					if (v>nbv-1 || v<0)   ISSMERROR("v = %i, nbv = %i",v,nbv);
 					head_1[v]=k++;
 					connectivitysize_1[v]+=1;
@@ -692,5 +692,5 @@
 				}
 				if (!stop){
-					ISSMERROR(exprintf("Element holding segment [%i %i] not found...",i1+1,i2+1));
+					ISSMERROR("Element holding segment [%i %i] not found...",i1+1,i2+1);
 				}
 			}
@@ -790,5 +790,5 @@
 				const VertexOnGeom &v=VerticesOnGeomEdge[i];
 				if (!v.OnGeomEdge()){
-					ISSMERROR(exprintf("A vertices supposed to be OnGeometricEdge is actually not"));
+					ISSMERROR("A vertices supposed to be OnGeometricEdge is actually not");
 				}
 				bamgmesh->VerticesOnGeometricEdge[i*3+0]=Number((MeshVertex*)v)+1; //back to Matlab indexing
@@ -873,7 +873,7 @@
 			for (j=0;j<2;j++){
 				int v=(int)bamgmesh->ElementEdges[i*i2+j]-1; //back to C indexing
-				if (k>2*i1-1 || k<0) ISSMERROR(exprintf("Index exceed matrix dimensions (k=%i not in [0 %i]",k,2*i1-1));
+				if (k>2*i1-1 || k<0) ISSMERROR("Index exceed matrix dimensions (k=%i not in [0 %i]",k,2*i1-1);
 				next_2[k]=head_2[v];
-				if (v>nbv-1 || v<0)   ISSMERROR(exprintf("Index exceed matrix dimensions (v=%i not in [0 %i])",v,nbv-1));
+				if (v>nbv-1 || v<0)   ISSMERROR("Index exceed matrix dimensions (v=%i not in [0 %i])",v,nbv-1);
 				head_2[v]=k++;
 				connectivitysize_2[v]+=1;
@@ -1008,5 +1008,5 @@
 		//check that hmax is positive
 		if (hmax<=0){
-			ISSMERROR(exprintf("hmax<=0"));
+			ISSMERROR("hmax<=0");
 		}
 
@@ -1037,5 +1037,5 @@
 
 				if (ht<=0 || hn<=0){
-					ISSMERROR(exprintf("ht<=0 || hn<=0"));
+					ISSMERROR("ht<=0 || hn<=0");
 				}
 				MatVVP2x2 Vp(1/(ht*ht),1/(hn*hn),tg);
@@ -1062,5 +1062,5 @@
 		}
 		else{
-			ISSMERROR(exprintf("Hessiantype %i not supported yet (1->use Green formula, 0-> double P2 projection)",Hessiantype));
+			ISSMERROR("Hessiantype %i not supported yet (1->use Green formula, 0-> double P2 projection)",Hessiantype);
 		}
 	}
@@ -1104,5 +1104,5 @@
 		//some checks
 		if (( infinitevertexpos <0 ) && (detOld <0) ||  ( infinitevertexpos >=0  ) && (detOld >0) ){
-			ISSMERROR(exprintf("bug in Triangles::Add, bad configuration"));
+			ISSMERROR("bug in Triangles::Add, bad configuration");
 		}
 
@@ -1149,5 +1149,5 @@
 				printf("\nproblem while trying to add:\n");
 				s.Echo();
-				ISSMERROR(exprintf("Bug in Triangles::Add points duplicated %i times",nbzerodet));
+				ISSMERROR("Bug in Triangles::Add points duplicated %i times",nbzerodet);
 			}
 		}
@@ -1163,5 +1163,5 @@
 
 		if (nbt>nbtx) {
-			ISSMERROR(exprintf("Not ebough triangles"));
+			ISSMERROR("Not ebough triangles");
 		}
 
@@ -1202,5 +1202,5 @@
 
 			if (!rswap) {
-				ISSMERROR(exprintf("swap the point s is on a edge"));
+				ISSMERROR("swap the point s is on a edge");
 			}
 		}
@@ -1269,5 +1269,5 @@
 		//check that the mesh is not empty
 		if (nbt<=0 || nbv <=0 ) {
-			ISSMERROR(exprintf("nbt or nbv is negative (Mesh empty?)"));
+			ISSMERROR("nbt or nbv is negative (Mesh empty?)");
 		}
 
@@ -1290,5 +1290,5 @@
 		//check that there is no double edge
 		if (nbe !=  edge4->nb()){ 
-			ISSMERROR(exprintf("Some Double edge in the mesh, the number is %i, nbe4=%i",nbe,edge4->nb())); 
+			ISSMERROR("Some Double edge in the mesh, the number is %i, nbe4=%i",nbe,edge4->nb()); 
 		}
 		//keep nbe in nbeold
@@ -1310,5 +1310,5 @@
 					//check that it is not an edge on boundary (should not already exist)
 					if (triangles[i].TriangleAdj(j) || triangles[st[k]/3].TriangleAdj((int) (st[k]%3))){
-						ISSMERROR(exprintf("problem in Geometry reconstruction: an edge on boundary is duplicated (double element?)"));
+						ISSMERROR("problem in Geometry reconstruction: an edge on boundary is duplicated (double element?)");
 					}
 					//OK, the element is not on boundary, is belongs to 2 triangles -> build Adjacent triangles list
@@ -1328,5 +1328,5 @@
 					printf("Edge %i of triangle %i\n",(-st[k]+2)%3,(-st[k]+2)/3);
 					printf("Edge %i of triangle %i\n",triangles[(-st[k]+2)/3].NuEdgeTriangleAdj((int)((-st[k]+2)%3)),Number(triangles[(-st[k]+2)/3].TriangleAdj((int)((-st[k]+2)%3))));
-					ISSMERROR(exprintf("An edge belongs to more than 2 triangles"));
+					ISSMERROR("An edge belongs to more than 2 triangles");
 				}	
 			}
@@ -1410,5 +1410,5 @@
 			//check that we have been through all edges
 			if (k!=nbe){
-				ISSMERROR(exprintf("problem in edge construction process: k!=nbe (should not happen)"));
+				ISSMERROR("problem in edge construction process: k!=nbe (should not happen)");
 			}
 			//delete edgessave
@@ -1455,5 +1455,5 @@
 					//check that we have the correct vertex
 					if (v!=edges[i0 ].v[j0]){
-						ISSMERROR(exprintf("v!=edges[i0 ].v[j0]: this should not happen as the vertex belongs to this edge"));
+						ISSMERROR("v!=edges[i0 ].v[j0]: this should not happen as the vertex belongs to this edge");
 					}
 
@@ -1472,5 +1472,5 @@
 		//check that NbSubDomains is empty
 		if (NbSubDomains){
-			ISSMERROR(exprintf("NbSubDomains should be 0"));
+			ISSMERROR("NbSubDomains should be 0");
 		}
 		NbSubDomains=0;
@@ -1540,5 +1540,5 @@
 		//check that we have been through all subdomains
 		if (k!= NbSubDomains){
-			ISSMERROR(exprintf("k!= NbSubDomains"));
+			ISSMERROR("k!= NbSubDomains");
 		}
 		//delete colorT and st
@@ -1600,5 +1600,5 @@
 		Gh.coefIcoor= (MaxICoor)/(Max(Gh.pmax.x-Gh.pmin.x,Gh.pmax.y-Gh.pmin.y));
 		if (Gh.coefIcoor<=0){
-			ISSMERROR(exprintf("Gh.coefIcoor<=0 in infered Geometry (this should not happen)"));
+			ISSMERROR("Gh.coefIcoor<=0 in infered Geometry (this should not happen)");
 		}
 
@@ -1651,5 +1651,5 @@
 			k = edge4->SortAndAdd(i0,i1);
 			if (k != i){
-				ISSMERROR(exprintf("problem in Edge4 construction: k != i"));
+				ISSMERROR("problem in Edge4 construction: k != i");
 			}
 		}
@@ -1680,5 +1680,5 @@
 			}
 			else
-			 ISSMERROR(exprintf("%i should be >=0"));
+			 ISSMERROR("%i should be >=0");
 		  }
 
@@ -2237,5 +2237,5 @@
 				//The vertex cannot be marked more than twice
 				if (splitvertex[i1]==3 || splitvertex[i2]==3){
-					ISSMERROR(exprintf("Crossing rifts not supported yet"));
+					ISSMERROR("Crossing rifts not supported yet");
 				}
 			}
@@ -2315,5 +2315,5 @@
 				//printf("%i -> %i %i %i, edge [%i->%i %i->%i]\n",element_renu[Number(ta.t)],Number((*ta.t)[0])+1,Number((*ta.t)[1])+1,Number((*ta.t)[2])+1,i1,j1,i2,j2);
 				ta = Next(ta).Adj(); 
-				if (count++>50) ISSMERROR(exprintf("Maximum number of iteration exceeded"));
+				if (count++>50) ISSMERROR("Maximum number of iteration exceeded");
 			}while ((tbegin != ta)); 
 		}
@@ -2322,5 +2322,5 @@
 		for(i=0;i<NbCrackedEdges;i++){
 			if (Edgeflags[i]!=2){
-				ISSMERROR(exprintf("A problem occured: at least one crack edge (number %i) does not belong to 2 elements",i+1));
+				ISSMERROR("A problem occured: at least one crack edge (number %i) does not belong to 2 elements",i+1);
 			}
 		}
@@ -2348,5 +2348,5 @@
 			}
 			if (k!=0) {
-				ISSMERROR(exprintf("there is %i triangles of mes = 0",k));
+				ISSMERROR("there is %i triangles of mes = 0",k);
 			}
 
@@ -2365,10 +2365,10 @@
 						printf("Edge %i: %i %i\n",j,Number(edges[j][0]),Number(edges[j][1]));
 					}
-					ISSMERROR(exprintf("Missing Edge %i, v0=%i,v1=%i",i,Number(edges[i][0]),Number(edges[i][1])));
+					ISSMERROR("Missing Edge %i, v0=%i,v1=%i",i,Number(edges[i][0]),Number(edges[i][1]));
 				}
 			}
 
 			if (k!=0) {
-				ISSMERROR(exprintf("There are %i lost edges, the boundary might be crossing",k));
+				ISSMERROR("There are %i lost edges, the boundary might be crossing",k);
 			}
 			for (int j=0;j<nbv;j++){
@@ -2451,5 +2451,5 @@
 			it++;} // end while (it<nbt)
 			if (nbt == NbOutT ||  !NbSubDomTot) {
-				ISSMERROR(exprintf("The boundary is not close: all triangles are outside"));
+				ISSMERROR("The boundary is not close: all triangles are outside");
 			}
 
@@ -2488,5 +2488,5 @@
 						it++;} // end white (it<nbt)
 						if (k!=NbSubDomains){
-							ISSMERROR(exprintf("k!=NbSubDomains"));
+							ISSMERROR("k!=NbSubDomains");
 						}
 						if(OutSide) 
@@ -2559,5 +2559,5 @@
 					Edge &e = *GeometricalEdgetoEdge[Gh.Number(eg)];
 					if (&e==NULL){
-						ISSMERROR(exprintf("&e==NULL"));
+						ISSMERROR("&e==NULL");
 					}
 					MeshVertex * v0 =  e(0),*v1 = e(1);
@@ -2569,5 +2569,5 @@
 					subdomains[i].edge = &e;
 					if (!t || !sens){
-						ISSMERROR(exprintf("!t || !sens"));
+						ISSMERROR("!t || !sens");
 					}
 
@@ -2576,5 +2576,5 @@
 					while (1) {
 						if ( v0 != ta.EdgeVertex(1) ){
-							ISSMERROR(exprintf("v0 != ta.EdgeVertex(1)"));
+							ISSMERROR("v0 != ta.EdgeVertex(1)");
 						}
 						if (ta.EdgeVertex(0) == v1) { // ok we find the edge
@@ -2584,5 +2584,5 @@
 							 subdomains[i].head=t=ta;
 							if(t<triangles || t >= triangles+nbt || t->det < 0 || t->link == 0) {
-								ISSMERROR(exprintf("bad definition of SubSomain %i",i));
+								ISSMERROR("bad definition of SubSomain %i",i);
 							}
 							long it = Number(t);
@@ -2599,5 +2599,5 @@
 								kkk++;
 								if (mark[Number(tt)]>=0){
-									ISSMERROR(exprintf("mark[Number(tt)]>=0"));
+									ISSMERROR("mark[Number(tt)]>=0");
 								}
 								mark[Number(tt)]=i;
@@ -2608,5 +2608,5 @@
 						ta = Previous(Adj(ta));         
 						if(t == (Triangle *) ta) {
-							ISSMERROR(exprintf("bad definition of SubSomain %i",i));
+							ISSMERROR("bad definition of SubSomain %i",i);
 						}
 					}
@@ -2639,5 +2639,5 @@
 		else {
 			if (!quadtree){
-				ISSMERROR(exprintf("no starting triangle provided and no quadtree available"));
+				ISSMERROR("no starting triangle provided and no quadtree available");
 			}
 			MeshVertex *a = quadtree->NearestVertex(B.x,B.y) ;
@@ -2647,13 +2647,13 @@
 					printf("TriangleContaining vertex number %i, another call to ReMakeTriangleContainingTheVertex was required\n", Number(a));
 				}
-				ISSMERROR(exprintf("problem in Triangles::FindTriangleContaining"));
+				ISSMERROR("problem in Triangles::FindTriangleContaining");
 			}
 			if (a<vertices || a>=vertices+nbv){
-				ISSMERROR(exprintf("a<vertices || a>=vertices+nbv"));
+				ISSMERROR("a<vertices || a>=vertices+nbv");
 			}
 			t = a->t;
 			if (t<triangles || t>=triangles+nbt){
 				a->Echo();
-				ISSMERROR(exprintf("t<triangles || t>=triangles+nbt"));
+				ISSMERROR("t<triangles || t>=triangles+nbt");
 			}
 		}
@@ -2667,5 +2667,5 @@
 			int k0=(*t)(0) ?  ((  (*t)(1) ? ( (*t)(2) ? -1 : 2) : 1  )) : 0;
 			if (k0<0){ // k0 the NULL vertex
-				ISSMERROR(exprintf("k0<0"));
+				ISSMERROR("k0<0");
 			}
 			int k1=NextVertex[k0],k2=PreviousVertex[k0];
@@ -2677,5 +2677,5 @@
 			kkkk++;
 			if (kkkk>=2){
-				ISSMERROR(exprintf("kkkk>=2"));
+				ISSMERROR("kkkk>=2");
 			}
 		}
@@ -2687,5 +2687,5 @@
 			kkkk++;
 			if (kkkk>=2000){
-				ISSMERROR(exprintf("kkkk>=2000"));
+				ISSMERROR("kkkk>=2000");
 			}
 			j= OppositeVertex[jj];
@@ -2708,5 +2708,5 @@
 			if (k == 2 && BinaryRand()) Exchange(ii[0],ii[1]);
 			if ( k>=3){
-				ISSMERROR(exprintf("k>=3"));
+				ISSMERROR("k>=3");
 			}
 			TriangleAdjacent t1 = t->Adj(jj=ii[0]);
@@ -2764,5 +2764,5 @@
 		VerticesOnGeomVertex = new VertexOnGeom[NbVerticesOnGeomVertex];  
 		if( NbVerticesOnGeomVertex >= nbvx) {
-			ISSMERROR(exprintf("too many vertices on geometry: %i >= %i",NbVerticesOnGeomVertex,nbvx));
+			ISSMERROR("too many vertices on geometry: %i >= %i",NbVerticesOnGeomVertex,nbvx);
 		}
 
@@ -2781,5 +2781,5 @@
 				}
 				else{
-					ISSMERROR(exprintf("Maximum number of vertices (nbvx = %i) too small",nbvx));
+					ISSMERROR("Maximum number of vertices (nbvx = %i) too small",nbvx);
 				}
 				
@@ -2797,5 +2797,5 @@
 		//check that edges has been allocated
 		if (edges){
-			ISSMERROR(exprintf("edges is empty"));
+			ISSMERROR("edges is empty");
 		}
 
@@ -2843,5 +2843,5 @@
 									//check that edges has been allocated
 									if (!edges){
-										ISSMERROR(exprintf("edges has not been allocated..."));
+										ISSMERROR("edges has not been allocated...");
 									}
 									edges[nbe].v[0]=a->to;
@@ -2865,7 +2865,5 @@
 								NbNewPoints=0;
 								NbEdgeCurve=0;
-								if (nbvend>=nbvx){
-									ISSMERROR(exprintf("nbvend>=nbvx"));
-								}
+								if (nbvend>=nbvx) ISSMERROR("maximum number of vertices too low! Check the domain outline or increase nbvx");
 								lcurve =0;
 								s = lstep;
@@ -2940,7 +2938,5 @@
 											 kk0=kkk,ll0=llk;
 										}
-										if (kk1 == kk0){
-											ISSMERROR(exprintf("kk1 == kk0"));
-										}
+										ISSMASSERT(kk1!=kk0);
 
 										double sbb = (ss-ll0  )/(ll1-ll0);
@@ -2975,7 +2971,5 @@
 									k = e->DirAdj[kprev];// next vertices
 									e = e->Adj[kprev];
-									if (!e){
-										ISSMERROR(exprintf("!e"));
-									}
+									ISSMASSERT(e);
 								}// for(;;)
 								vb = b->to;
@@ -3006,8 +3000,8 @@
 			if(!step) {
 				if (edges){
-					ISSMERROR(exprintf("edges"));
+					ISSMERROR("edges");
 				}
 				if (VerticesOnGeomEdge){
-					ISSMERROR(exprintf("VerticesOnGeomEdge"));
+					ISSMERROR("VerticesOnGeomEdge");
 				}
 				edges = new Edge[nbex=nbe];
@@ -3015,5 +3009,5 @@
 				 VerticesOnGeomEdge = new VertexOnGeom[NbVerticesOnGeomEdge0];
 				if (!VerticesOnGeomEdge && NbVerticesOnGeomEdge0!=0){
-					ISSMERROR(exprintf("!VerticesOnGeomEdge && NbVerticesOnGeomEdge0!=0"));
+					ISSMERROR("!VerticesOnGeomEdge && NbVerticesOnGeomEdge0!=0");
 				}
 				// do the vertex on a geometrical vertex
@@ -3021,5 +3015,5 @@
 			}
 			else if (NbVerticesOnGeomEdge != NbVerticesOnGeomEdge0){
-				ISSMERROR(exprintf("NbVerticesOnGeomEdge != NbVerticesOnGeomEdge0"));
+				ISSMERROR("NbVerticesOnGeomEdge != NbVerticesOnGeomEdge0");
 			}
 		}
@@ -3098,5 +3092,5 @@
 		int i; 
 		for (i=0;i<Gh.nbv;i++) if (Gh[i].Required()) NbVerticesOnGeomVertex++;
-		if( NbVerticesOnGeomVertex >= nbvx) { ISSMERROR(exprintf("too many vertices on geometry: %i >= %i",NbVerticesOnGeomVertex,nbvx));}
+		if( NbVerticesOnGeomVertex >= nbvx) { ISSMERROR("too many vertices on geometry: %i >= %i",NbVerticesOnGeomVertex,nbvx);}
 
 		VerticesOnGeomVertex = new VertexOnGeom[  NbVerticesOnGeomVertex];
@@ -3157,5 +3151,5 @@
 		} 
 		if (bfind!=Gh.NbOfCurves){
-			ISSMERROR(exprintf("problem generating number of curves (Gh.NbOfCurves=%i bfind=%i)",Gh.NbOfCurves,bfind));
+			ISSMERROR("problem generating number of curves (Gh.NbOfCurves=%i bfind=%i)",Gh.NbOfCurves,bfind);
 		}
 
@@ -3249,9 +3243,9 @@
 										double se= (sNew-L0)/LAB;
 										if (se<0 || se>=1.000000001){
-											ISSMERROR(exprintf("Problem creating point on a boundary: se=%g should be in [0 1]",se));
+											ISSMERROR("Problem creating point on a boundary: se=%g should be in [0 1]",se);
 										}
 										se = abscisseInterpole(v0.m,v1.m,AB,se,1);
 										if (se<0 || se>1){
-											ISSMERROR(exprintf("Problem creating point on a boundary: se=%g should be in [0 1]",se));
+											ISSMERROR("Problem creating point on a boundary: se=%g should be in [0 1]",se);
 										}
 										se = k1         ? se : 1. - se;
@@ -3285,5 +3279,5 @@
 								}
 								if (!ee.adj[k1]) {
-									ISSMERROR(exprintf(" adj edge %i, nbe=%i, Gh.vertices=%i",BTh.Number(ee),nbe,Gh.vertices));
+									ISSMERROR(" adj edge %i, nbe=%i, Gh.vertices=%i",BTh.Number(ee),nbe,Gh.vertices);
 								}
 								pe = ee.adj[k1]; // next edge
@@ -3327,5 +3321,5 @@
 			if(step==0){
 				if(nbv+NbOfNewPoints > nbvx) {
-					ISSMERROR(exprintf("too many vertices on geometry: %i >= %i",nbv+NbOfNewPoints,nbvx));
+					ISSMERROR("too many vertices on geometry: %i >= %i",nbv+NbOfNewPoints,nbvx);
 				}
 				edges = new Edge[NbOfNewEdge];
@@ -3422,5 +3416,5 @@
 			//all vertices are aligned!
 			if  ( ++i >= nbv) {
-				ISSMERROR(exprintf("all the vertices are aligned"));
+				ISSMERROR("all the vertices are aligned");
 			}
 		}
@@ -3560,5 +3554,5 @@
 				long  j=vj.ReferenceNumber; 
 				if (&vj!=ordre[j]){
-					ISSMERROR(exprintf("&vj!= ordre[j]"));
+					ISSMERROR("&vj!= ordre[j]");
 				}
 				if(i!=j){ 
@@ -3570,5 +3564,5 @@
 				if (tcvj && !tcvj->link){
 					tcvj->Echo();
-					ISSMERROR(exprintf("problem inserting point in InsertNewPoints (tcvj=%p and tcvj->link=%i)",tcvj,tcvj->link));
+					ISSMERROR("problem inserting point in InsertNewPoints (tcvj=%p and tcvj->link=%i)",tcvj,tcvj->link);
 				}
 				quadtree->Add(vj);
@@ -3597,5 +3591,5 @@
 
 		if (!Gh.nbe){
-			ISSMERROR(exprintf("!Gh.nbe"));
+			ISSMERROR("!Gh.nbe");
 		}
 		Edge **e= new (Edge* [Gh.nbe]);
@@ -3630,5 +3624,5 @@
 			}
 		}
-		if(kk) ISSMERROR(exprintf("See above"));
+		if(kk) ISSMERROR("See above");
 
 		return e;
@@ -3819,5 +3813,5 @@
 				//check i
 				if (i<0 || i>=nbt ){
-					ISSMERROR(exprintf("Index problem in NewPoints (i=%i not in [0 %i])",i,nbt-1));
+					ISSMERROR("Index problem in NewPoints (i=%i not in [0 %i])",i,nbt-1);
 				}
 				//change first_np_or_next_t[i]
@@ -3870,5 +3864,5 @@
 					}
 					if (ta.EdgeVertex(0)!=s){
-						ISSMERROR(exprintf("ta.EdgeVertex(0)!=s"));
+						ISSMERROR("ta.EdgeVertex(0)!=s");
 					}
 					ta = Next(Adj(ta));
@@ -3920,13 +3914,13 @@
 		vertices=new MeshVertex[nbvx];
 		if (!vertices){
-			ISSMERROR(exprintf("!vertices"));
+			ISSMERROR("!vertices");
 		}
 		ordre=new (MeshVertex* [nbvx]);
 		if (!ordre){
-			ISSMERROR(exprintf("!ordre"));
+			ISSMERROR("!ordre");
 		}
 		triangles=new Triangle[nbtx];
 		if (!triangles){
-			ISSMERROR(exprintf("!triangles"));
+			ISSMERROR("!triangles");
 		}
 	}
@@ -3965,5 +3959,5 @@
 		}
 		else {
-			ISSMERROR(exprintf("ProjectOnCurve On MeshVertex %i forget call to SetVertexFieldOnBTh",BTh.Number(vA)));
+			ISSMERROR("ProjectOnCurve On MeshVertex %i forget call to SetVertexFieldOnBTh",BTh.Number(vA));
 		} 
 
@@ -3976,9 +3970,9 @@
 		}
 		else {
-			ISSMERROR(exprintf("ProjectOnCurve On MeshVertex %i forget call to SetVertexFieldOnBTh",BTh.Number(vB)));
+			ISSMERROR("ProjectOnCurve On MeshVertex %i forget call to SetVertexFieldOnBTh",BTh.Number(vB));
 		} 
 		Edge * e = &BhAB;
 		if (!pA || !pB || !e){
-			ISSMERROR(exprintf("!pA || !pB || !e"));
+			ISSMERROR("!pA || !pB || !e");
 		}
 		// be carefull the back ground edge e is on same geom edge 
@@ -3986,5 +3980,5 @@
 		//check Is a background Mesh;   
 		if (e<BTh.edges || e>=BTh.edges+BTh.nbe){
-			ISSMERROR(exprintf("e<BTh.edges || e>=BTh.edges+BTh.nbe"));
+			ISSMERROR("e<BTh.edges || e>=BTh.edges+BTh.nbe");
 		}
 		// walk on BTh edge 
@@ -4009,5 +4003,5 @@
 		  } 
 		else{ // do the search by walking 
-			ISSMERROR(exprintf("case not supported yet"));
+			ISSMERROR("case not supported yet");
 		  }
 
@@ -4038,8 +4032,8 @@
 				kkk=kkk+1;
 				if (kkk>=100){
-					ISSMERROR(exprintf("kkk>=100"));
+					ISSMERROR("kkk>=100");
 				}
 				if (!eee){
-					ISSMERROR(exprintf("!eee"));
+					ISSMERROR("!eee");
 				}
 				double lg0 = lg;
@@ -4050,5 +4044,5 @@
 					double thetab = te0*(1-sss)+ sss*iii;
 					if (thetab<0 || thetab>1){
-						ISSMERROR(exprintf("thetab<0 || thetab>1"));
+						ISSMERROR("thetab<0 || thetab>1");
 					}
 					BR = VertexOnEdge(&R,eee,thetab);
@@ -4063,5 +4057,5 @@
 				double lg0 = lg;
 				if (!eee){
-					ISSMERROR(exprintf("!eee"));
+					ISSMERROR("!eee");
 				}
 				v1 = pvB;
@@ -4074,5 +4068,5 @@
 					double thetab = te0*(1-sss)+ sss*tB;
 					if (thetab<0 || thetab>1){
-						ISSMERROR(exprintf("thetab<0 || thetab>1"));
+						ISSMERROR("thetab<0 || thetab>1");
 					}
 					BR = VertexOnEdge(&R,eee,thetab);
@@ -4083,5 +4077,5 @@
 
 		  }
-		ISSMERROR(exprintf("Big bug..."));
+		ISSMERROR("Big bug...");
 		return 0; // just for the compiler 
 	}                  
@@ -4124,5 +4118,5 @@
 	}
 	if (kk != nbe){ 
-		ISSMERROR(exprintf("There are %i double edges in the mesh",kk-nbe));
+		ISSMERROR("There are %i double edges in the mesh",kk-nbe);
 	}
 
@@ -4156,6 +4150,5 @@
 			//An edge belongs to 2 triangles
 			else {
-				ISSMERROR(exprintf("The edge (%i , %i) belongs to more than 2 triangles",
-								Number(triangles[i][VerticesOfTriangularEdge[j][0]]),Number(triangles[i][VerticesOfTriangularEdge[j][1]])));
+				ISSMERROR("The edge (%i , %i) belongs to more than 2 triangles",Number(triangles[i][VerticesOfTriangularEdge[j][0]]),Number(triangles[i][VerticesOfTriangularEdge[j][1]]));
 			}
 		}
@@ -4195,5 +4188,5 @@
 	}
 	if(k) {
-		ISSMERROR(exprintf("%i boundary edges (from the geometry) are not defined as mesh edges",k));
+		ISSMERROR("%i boundary edges (from the geometry) are not defined as mesh edges",k);
 	}
 
@@ -4222,5 +4215,5 @@
 	for (i=2;det(ordre[0]->i,ordre[1]->i,ordre[i]->i)==0;) 
 	 if  (++i>=nbvb) {
-		 ISSMERROR(exprintf("ReconstructExistingMesh: All the vertices are aligned"));
+		 ISSMERROR("ReconstructExistingMesh: All the vertices are aligned");
 	 }
 	//Move this vertex (i) to the 2d position in ordre
@@ -4282,5 +4275,5 @@
 	}
 	if(nbloss) {
-		ISSMERROR(exprintf("we lost %i existing edges other %i",nbloss,knbe));
+		ISSMERROR("we lost %i existing edges other %i",nbloss,knbe);
 	}
 
@@ -4357,5 +4350,5 @@
 	subdomains = savesubdomains;
 	if (k) {
-		ISSMERROR(exprintf("number of triangles edges alone = %i",k));
+		ISSMERROR("number of triangles edges alone = %i",k);
 	}
 	FindSubDomain();
@@ -4387,5 +4380,5 @@
 
 						printf("This edge is on geometry and has no adjacent edge (open curve) and one of the tip is not required\n");
-						ISSMERROR(exprintf("See above (might be cryptic...)"));
+						ISSMERROR("See above (might be cryptic...)");
 					}
 				}
@@ -4410,13 +4403,13 @@
 			t=t0=subdomains[i].head;
 			if (!t0){ // not empty sub domain
-				ISSMERROR(exprintf("!t0"));
+				ISSMERROR("!t0");
 			}
 			do { 
 				long kt = Number(t);
 				if (kt<0 || kt >= nbt ){
-					ISSMERROR(exprintf("kt<0 || kt >= nbt"));
+					ISSMERROR("kt<0 || kt >= nbt");
 				}
 				if (renu[kt]!=-1){
-					ISSMERROR(exprintf("renu[kt]!=-1"));
+					ISSMERROR("renu[kt]!=-1");
 				}
 				renu[kt]=k++;
@@ -4435,5 +4428,5 @@
 		}
 		if (k != nbt){
-			ISSMERROR(exprintf("k != nbt"));
+			ISSMERROR("k != nbt");
 		}
 		// do the change on all the pointeur 
@@ -4562,5 +4555,5 @@
 	coefIcoor= (MaxICoor)/(Max(pmax.x-pmin.x,pmax.y-pmin.y));
 	if (coefIcoor<=0){
-		ISSMERROR(exprintf("coefIcoor should be positive, a problem in the geometry is likely"));
+		ISSMERROR("coefIcoor should be positive, a problem in the geometry is likely");
 	}
 
@@ -4583,8 +4576,8 @@
 				if(Nberr==1)
 				 if (strfrom){
-					 ISSMERROR(exprintf("Fatal error %s (SetInCoor) : area of Triangle %i < 0",strfrom,i));
+					 ISSMERROR("Fatal error %s (SetInCoor) : area of Triangle %i < 0",strfrom,i);
 				 }
 				 else{
-					 ISSMERROR(exprintf("Fatal error (SetInCoor) : area of Triangle %i < 0",i));
+					 ISSMERROR("Fatal error (SetInCoor) : area of Triangle %i < 0",i);
 				 }
 			}
@@ -4776,5 +4769,5 @@
 			register Triangle* t= vertices[i].t;
 			if (!t){
-				ISSMERROR(exprintf("!t"));
+				ISSMERROR("!t");
 			}
 			MeshVertex & vi = vertices[i];
@@ -4784,5 +4777,5 @@
 				ta=Previous(Adj(ta));
 				if (vertices+i != ta.EdgeVertex(1)){
-					ISSMERROR(exprintf("vertices+i != ta.EdgeVertex(1)"));
+					ISSMERROR("vertices+i != ta.EdgeVertex(1)");
 				}
 				MeshVertex & vj = *(ta.EdgeVertex(0));
@@ -4790,5 +4783,5 @@
 					j= &vj-vertices;
 					if (j<0 || j >= nbv){
-						ISSMERROR(exprintf("j<0 || j >= nbv"));
+						ISSMERROR("j<0 || j >= nbv");
 					}
 					R2 Aij = (R2) vj - (R2) vi;
@@ -4914,5 +4907,5 @@
 					// the first PB is to now a background edge between the 2 vertices
 					if (!edgesGtoB){
-						ISSMERROR(exprintf("!edgesGtoB"));
+						ISSMERROR("!edgesGtoB");
 					}
 					ong= ProjectOnCurve(*edgesGtoB[Gh.Number(edges[i].onGeometry)],
@@ -4986,5 +4979,5 @@
 			Triangle & t = triangles[i];
 			if (!t.link){
-				ISSMERROR(exprintf("!t.link"));
+				ISSMERROR("!t.link");
 			}
 			for(int j=0;j<3;j++)
@@ -5013,5 +5006,5 @@
 										||   (cc=Area2( t[0].r , t[1].r , A.r    )) < 0.0)){
 							printf("%i not in triangle %i In= %i %i %i %i %i\n",ke + nbvold,i,!!t.link,aa,bb,cc,dd);
-							ISSMERROR(exprintf("Number of triangles with P2 interpolation Problem"));
+							ISSMERROR("Number of triangles with P2 interpolation Problem");
 						}
 					}
@@ -5021,5 +5014,5 @@
 										||   (cc=Area2( tt[0].r , tt[1].r , A.r     )) < 0)){
 							printf("%i not in triangle %i In= %i %i %i %i %i\n",ke + nbvold,ii,!!tt.link,aa,bb,cc,dd);
-							ISSMERROR(exprintf("Number of triangles with P2 interpolation Problem"));
+							ISSMERROR("Number of triangles with P2 interpolation Problem");
 						}
 					} 
@@ -5069,5 +5062,5 @@
 						  } // tt 
 						else
-						 ISSMERROR(exprintf("Bug..."));
+						 ISSMERROR("Bug...");
 					  } // ke<0	       
 					else
@@ -5082,5 +5075,5 @@
 			  } 
 			if (nbinvisible>=2){
-				ISSMERROR(exprintf("nbinvisible>=2"));
+				ISSMERROR("nbinvisible>=2");
 			}
 			switch (nbsplitedge) {
@@ -5094,5 +5087,5 @@
 			} 
 			if (ksplit[i]<40){
-				ISSMERROR(exprintf("ksplit[i]<40"));
+				ISSMERROR("ksplit[i]<40");
 			}
 		  }
@@ -5111,5 +5104,5 @@
 			int  ke=(int) (ksplit[i]%10);
 			if (kk>=7 || kk<=0){
-				ISSMERROR(exprintf("kk>=7 || kk<=0"));
+				ISSMERROR("kk>=7 || kk<=0");
 			}
 
@@ -5128,5 +5121,5 @@
 
 			if (nbmkadj>=10){
-				ISSMERROR(exprintf("nbmkadj>=10"));
+				ISSMERROR("nbmkadj>=10");
 			}
 			// --------------------------
@@ -5146,5 +5139,5 @@
 							t1=t0;
 							if (kedge[3*i+i0]<0){
-								ISSMERROR(exprintf("kedge[3*i+i0]<0"));
+								ISSMERROR("kedge[3*i+i0]<0");
 							}
 							MeshVertex * v3 = vertices + kedge[3*i+k0];
@@ -5162,8 +5155,8 @@
 							t2=t1=t0;
 							if (kedge[3*i+k1]<0){
-								ISSMERROR(exprintf("kedge[3*i+k1]<0"));
+								ISSMERROR("kedge[3*i+k1]<0");
 							}
 							if (kedge[3*i+k2]<0){
-								ISSMERROR(exprintf("kedge[3*i+k2]<0"));
+								ISSMERROR("kedge[3*i+k2]<0");
 							}
 
@@ -5189,5 +5182,5 @@
 							t3=t2=t1=t0;
 							if (kedge[3*i+k0] <0 || kedge[3*i+k1]<0 || kedge[3*i+k2]<0){
-								ISSMERROR(exprintf("kedge[3*i+k0] <0 || kedge[3*i+k1]<0 || kedge[3*i+k2]<0"));
+								ISSMERROR("kedge[3*i+k0] <0 || kedge[3*i+k1]<0 || kedge[3*i+k2]<0");
 							}
 							MeshVertex * v12 = vertices + kedge[3*i+k0];
@@ -5263,5 +5256,5 @@
 				}
 			if (nbmkadj>13){// 13 = 6 + 4 +
-				ISSMERROR(exprintf("nbmkadj>13"));
+				ISSMERROR("nbmkadj>13");
 			}
 
@@ -5389,5 +5382,5 @@
 			quadtree->Add(vi);
 			if (!tcvi || tcvi->det<0){// internal
-				ISSMERROR(exprintf("!tcvi || tcvi->det < 0"));
+				ISSMERROR("!tcvi || tcvi->det < 0");
 			}
 			AddVertex(vi,tcvi,dete);
@@ -5426,5 +5419,5 @@
 
 		//check that the subdomain is not empty
-		if (!t0){ ISSMERROR(exprintf("At least one subdomain is empty"));}
+		if (!t0){ ISSMERROR("At least one subdomain is empty");}
 
 		//loop
@@ -5436,5 +5429,5 @@
 
 			//check that num is in [0 nbt[
-			if (num<0 || num>=nbt){ ISSMERROR(exprintf("num<0 || num>=nbt"));}
+			if (num<0 || num>=nbt){ ISSMERROR("num<0 || num>=nbt");}
 
 			//reft of this triangle is the subdomain number
@@ -5468,5 +5461,5 @@
 		int dir=0;
 		if (k<0){
-			ISSMERROR(exprintf("k<0"));
+			ISSMERROR("k<0");
 		}
 		int kkk=0;  
@@ -5476,5 +5469,5 @@
 			kkk++;
 			if (kkk>=1000){
-				ISSMERROR(exprintf("kkk>=1000"));
+				ISSMERROR("kkk>=1000");
 			}
 			MeshVertex  &vI =  *edge.EdgeVertex(0);
@@ -5493,5 +5486,5 @@
 							double IJ2 = IJ_IA + IJ_AJ;
 							if (IJ2==0){
-								ISSMERROR(exprintf("IJ2==0"));
+								ISSMERROR("IJ2==0");
 							}
 							a= IJ_AJ/IJ2;
@@ -5511,5 +5504,5 @@
 		//   int dir=0;
 		if (t->link != 0){
-			ISSMERROR(exprintf("t->link != 0"));
+			ISSMERROR("t->link != 0");
 		}
 		// to have a starting edges 
@@ -5583,5 +5576,5 @@
 		  }
 		if (cas ==-2){
-			ISSMERROR(exprintf("cas==-2"));
+			ISSMERROR("cas==-2");
 		}
 		// l1 = ||C s1||  , l0 = ||C s0||
@@ -5600,5 +5593,5 @@
 				kkk++;
 				if (edge.EdgeVertex(0)!=s && kkk>=10000){
-					ISSMERROR(exprintf("edge.EdgeVertex(0)!=s && kkk>=10000"));
+					ISSMERROR("edge.EdgeVertex(0)!=s && kkk>=10000");
 				}
 
@@ -5632,5 +5625,5 @@
 
 			if (!(Triangle *) er){
-				ISSMERROR(exprintf("!(Triangle *) er"));
+				ISSMERROR("!(Triangle *) er");
 			}
 			I2 A((I2)*er.EdgeVertex(0));
@@ -5656,5 +5649,5 @@
 	int NbSwap =0;
 	if (!a.t || !b.t){ // the 2 vertex is in a mesh
-		ISSMERROR(exprintf("!a.t || !b.t"));
+		ISSMERROR("!a.t || !b.t");
 	}
 	int k=0;
@@ -5673,5 +5666,5 @@
 		vbegin =v2;
 		if (!v2){
-			ISSMERROR(exprintf("!v2"));
+			ISSMERROR("!v2");
 		}
 		det2 = det(*v2,a,b);
@@ -5690,10 +5683,10 @@
 			tc = Previous(tc);
 			if (!v1 || !v2){
-				ISSMERROR(exprintf("!v1 || !v2"));
+				ISSMERROR("!v1 || !v2");
 			}
 			Icoor2 detss = 0,l=0,ks;
 			while ((ks=SwapForForcingEdge(  va,  vb, tc, detss, det1,det2,NbSwap)))
 			 if(l++ > 10000000) {
-				 ISSMERROR(exprintf("Loop in forcing Egde, nb de swap=%i, nb of try swap (%i) too big",NbSwap,l));
+				 ISSMERROR("Loop in forcing Egde, nb de swap=%i, nb of try swap (%i) too big",NbSwap,l);
 			 }
 			MeshVertex *aa = tc.EdgeVertex(0), *bb = tc.EdgeVertex(1);
@@ -5714,5 +5707,5 @@
 		k++;
 		if (k>=2000){
-			ISSMERROR(exprintf("k>=2000"));
+			ISSMERROR("k>=2000");
 		}
 		if ( vbegin == v2 ) return -1;// error 
@@ -5786,5 +5779,5 @@
 		short a1=tt1,a2=tt2;// les 2 numero de l arete dans les 2 triangles
 		if ( a1<0 || a1>=3 ){
-			ISSMERROR(exprintf("a1<0 || a1>=3"));
+			ISSMERROR("a1<0 || a1>=3");
 		}
 
@@ -5798,8 +5791,8 @@
 		Icoor2 detT = det1+det2;
 		if ((det1<=0 ) || (det2<=0)){
-			ISSMERROR(exprintf("(det1<=0 ) || (det2<=0)"));
+			ISSMERROR("(det1<=0 ) || (det2<=0)");
 		}
 		if ( (detsa>=0) || (detsb<=0) ){ // [a,b] cut infinite line va,bb
-			ISSMERROR(exprintf("(detsa>=0) || (detsb<=0)"));
+			ISSMERROR("(detsa>=0) || (detsb<=0)");
 		}
 		Icoor2 ndet1 = bamg::det(s1,sa,s2);
Index: /issm/trunk/src/c/BuildNodeSetsx/PartitionSets.cpp
===================================================================
--- /issm/trunk/src/c/BuildNodeSetsx/PartitionSets.cpp	(revision 3569)
+++ /issm/trunk/src/c/BuildNodeSetsx/PartitionSets.cpp	(revision 3570)
@@ -77,5 +77,5 @@
 				ccount++;
 			}
-			if (flags_b_local[i] && flags_c_local[i]) ISSMERROR(exprintf("%s%i%s"," for dof ",i,": breach of exclusive partitioning between sets"));
+			if (flags_b_local[i] && flags_c_local[i]) ISSMERROR("%s%i%s"," for dof ",i,": breach of exclusive partitioning between sets");
 			
 			acount++;
Index: /issm/trunk/src/c/ControlConstrainx/ControlConstrainx.cpp
===================================================================
--- /issm/trunk/src/c/ControlConstrainx/ControlConstrainx.cpp	(revision 3569)
+++ /issm/trunk/src/c/ControlConstrainx/ControlConstrainx.cpp	(revision 3570)
@@ -20,5 +20,5 @@
 		for(i=0;i<numdofnodes;i++){
 			if(isnan(p_g[i])){
-				ISSMERROR(exprintf("NaN found in parameter p_g[%i]",i));
+				ISSMERROR("NaN found in parameter p_g[%i]",i);
 			}
 			if(!isnan(cm_min)){
Index: /issm/trunk/src/c/DataSet/DataSet.cpp
===================================================================
--- /issm/trunk/src/c/DataSet/DataSet.cpp	(revision 3569)
+++ /issm/trunk/src/c/DataSet/DataSet.cpp	(revision 3570)
@@ -291,5 +291,5 @@
 		}
 		else{
-			ISSMERROR(exprintf("%s%i"," could not recognize enum type: ",enum_type));
+			ISSMERROR("%s%i"," could not recognize enum type: ",enum_type);
 		}
 
@@ -708,5 +708,5 @@
 	/*Carry out a binary search on the sorted_ids: */
 	if(!binary_search(&id_offset,eid, sorted_ids,objects.size())){
-		ISSMERROR(exprintf("%s%i"," could not find object with id ",eid));
+		ISSMERROR("%s%i"," could not find object with id ",eid);
 	}
 
@@ -1501,5 +1501,5 @@
 			if ((node1 && !node2) || (!node1 && node2)){
 				/*we are missing one node, not good!*/
-				ISSMERROR(exprintf("%s%p%s%p"," in Rgb, missing one node. node1: ",node1," node2: ",node2));
+				ISSMERROR("%s%p%s%p"," in Rgb, missing one node. node1: ",node1," node2: ",node2);
 			}
 
Index: /issm/trunk/src/c/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.cpp
===================================================================
--- /issm/trunk/src/c/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.cpp	(revision 3569)
+++ /issm/trunk/src/c/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.cpp	(revision 3570)
@@ -34,8 +34,8 @@
 	/*Checks*/
 	if (data_cols<=0){
-		ISSMERROR(exprintf("data provided has a negative number of columns"));
+		ISSMERROR("data provided has a negative number of columns");
 	}
 	if (data_rows!=nods_data && data_rows!=nels_data){
-		ISSMERROR(exprintf("data provided should have either %i or %i lines (not %i)",nods_data,nels_data,data_rows));
+		ISSMERROR("data provided should have either %i or %i lines (not %i)",nods_data,nels_data,data_rows);
 	}
 
@@ -101,5 +101,5 @@
 			for (j=0;j<data_cols;j++){
 				if (it<0 || it>=nels_data){
-					ISSMERROR(exprintf("Triangle number %i not in [0 %i], because not correctly implemented yet... interpolate on grid first",it,nels_data));
+					ISSMERROR("Triangle number %i not in [0 %i], because not correctly implemented yet... interpolate on grid first",it,nels_data);
 				}
 				data_interp[i*data_cols+j]=data[data_cols*it+j];
Index: /issm/trunk/src/c/ModelProcessorx/Control/CreateParametersControl.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 3569)
+++ /issm/trunk/src/c/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 3570)
@@ -46,5 +46,5 @@
 		if (strcmp(iomodel->control_type,"drag")==0)   param->SetDouble(0);
 		else if (strcmp(iomodel->control_type,"B")==0) param->SetDouble(1);
-		else ISSMERROR(exprintf("control_type %s not supported yet!",iomodel->control_type));
+		else ISSMERROR("control_type %s not supported yet!",iomodel->control_type);
 		parameters->AddObject(param);
 
Index: /issm/trunk/src/c/ModelProcessorx/CreateDataSets.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/CreateDataSets.cpp	(revision 3569)
+++ /issm/trunk/src/c/ModelProcessorx/CreateDataSets.cpp	(revision 3570)
@@ -110,5 +110,5 @@
 	else{
 
-		ISSMERROR(exprintf("%s%i%s%i%s"," analysis_type: ",iomodel->analysis_type," sub_analysis_type: ",iomodel->sub_analysis_type," not supported yet!"));
+		ISSMERROR("%s%i%s%i%s"," analysis_type: ",iomodel->analysis_type," sub_analysis_type: ",iomodel->sub_analysis_type," not supported yet!");
 
 	}
Index: /issm/trunk/src/c/ModelProcessorx/Partitioning.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Partitioning.cpp	(revision 3569)
+++ /issm/trunk/src/c/ModelProcessorx/Partitioning.cpp	(revision 3570)
@@ -207,5 +207,5 @@
 	}
 	else{
-		ISSMERROR(exprintf("not implemented yet"));
+		ISSMERROR("not implemented yet");
 	}
 
Index: /issm/trunk/src/c/ModelProcessorx/Prognostic2/CreateElementsNodesAndMaterialsPrognostic2.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Prognostic2/CreateElementsNodesAndMaterialsPrognostic2.cpp	(revision 3569)
+++ /issm/trunk/src/c/ModelProcessorx/Prognostic2/CreateElementsNodesAndMaterialsPrognostic2.cpp	(revision 3570)
@@ -68,5 +68,5 @@
 	}
 	else{ //	if (strcmp(meshtype,"2d")==0)
-		ISSMERROR(exprintf("not implemented yet"));
+		ISSMERROR("not implemented yet");
 	} //if (strcmp(meshtype,"2d")==0)
 
Index: /issm/trunk/src/c/ModelProcessorx/Prognostic2/CreateLoadsPrognostic2.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Prognostic2/CreateLoadsPrognostic2.cpp	(revision 3569)
+++ /issm/trunk/src/c/ModelProcessorx/Prognostic2/CreateLoadsPrognostic2.cpp	(revision 3570)
@@ -20,5 +20,5 @@
 
 	/*Output*/
-	DataSet*       loads        = NULL;
+	DataSet* loads=NULL;
 
 	/*numericalflux intermediary data: */
@@ -27,4 +27,5 @@
 	int  numericalflux_node_ids[MAX_NUMERICALFLUX_NODES];
 	int  numericalflux_elem_id;
+	double numericalflux_h[MAX_NUMERICALFLUX_NODES];
 
 	/*Create loads: */
@@ -34,4 +35,5 @@
 	IoModelFetchData(&iomodel->edges,&iomodel->numberofedges,NULL,iomodel_handle,"edges");
 	IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements");
+	IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness");
 
 	/*First load data:*/
@@ -72,4 +74,9 @@
 			numericalflux_node_ids[2]=3*(int)e2+pos2;           //ex: 1 2 3
 			numericalflux_node_ids[3]=3*(int)e2+((pos2+1)%3)+1; //ex: 3 1 2
+
+			numericalflux_h[0]=iomodel->thickness[(int)iomodel->elements[numericalflux_node_ids[0]-1] -1];
+			numericalflux_h[1]=iomodel->thickness[(int)iomodel->elements[numericalflux_node_ids[1]-1]-1];
+			numericalflux_h[2]=iomodel->thickness[(int)iomodel->elements[numericalflux_node_ids[2]-1]-1];
+			numericalflux_h[3]=iomodel->thickness[(int)iomodel->elements[numericalflux_node_ids[3]-1]-1];
 		}
 		else{
@@ -87,7 +94,12 @@
 			numericalflux_node_ids[0]=3*(int)e1+pos1;
 			numericalflux_node_ids[1]=3*(int)e1+(pos1%3)+1;
+
+			numericalflux_h[0]=iomodel->thickness[(int)iomodel->elements[numericalflux_node_ids[0]-1]-1];
+			numericalflux_h[1]=iomodel->thickness[(int)iomodel->elements[numericalflux_node_ids[1]-1]-1];
+			numericalflux_h[2]=UNDEF;
+			numericalflux_h[3]=UNDEF;
 		}
 
-		loads->AddObject(new Numericalflux(numericalflux_id,numericalflux_type,numericalflux_node_ids,numericalflux_elem_id));
+		loads->AddObject(new Numericalflux(numericalflux_id,numericalflux_type,numericalflux_node_ids,numericalflux_elem_id,numericalflux_h));
 	}
 
@@ -95,4 +107,5 @@
 	xfree((void**)&iomodel->edges);
 	xfree((void**)&iomodel->elements);
+	xfree((void**)&iomodel->thickness);
 
 	/*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these 
Index: /issm/trunk/src/c/ModelProcessorx/Thermal/CreateParametersThermal.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Thermal/CreateParametersThermal.cpp	(revision 3569)
+++ /issm/trunk/src/c/ModelProcessorx/Thermal/CreateParametersThermal.cpp	(revision 3570)
@@ -69,5 +69,5 @@
 		param= new Param(count,"t_g",DOUBLEVEC);
 		if(iomodel->temperature) param->SetDoubleVec(iomodel->temperature,iomodel->numberofvertices,1);
-		else ISSMERROR(exprintf("Missing initial temperature"));
+		else ISSMERROR("Missing initial temperature");
 		parameters->AddObject(param);
 
Index: /issm/trunk/src/c/NodeConnectivityx/NodeConnectivityx.cpp
===================================================================
--- /issm/trunk/src/c/NodeConnectivityx/NodeConnectivityx.cpp	(revision 3569)
+++ /issm/trunk/src/c/NodeConnectivityx/NodeConnectivityx.cpp	(revision 3570)
@@ -71,6 +71,5 @@
 	 * warn the user to increase the connectivity width: */
 	for(i=0;i<nods;i++){
-		if (*(connectivity+width*i+maxels)>maxels)ISSMERROR(exprintf("%s%g%s"," max connectivity width reached (",
-					*(connectivity+width*i+maxels),")! increase width of connectivity table"));
+		if (*(connectivity+width*i+maxels)>maxels)ISSMERROR("%s%g%s"," max connectivity width reached (",*(connectivity+width*i+maxels),")! increase width of connectivity table");
 	}
 
Index: /issm/trunk/src/c/Qmux/DakotaResponses.cpp
===================================================================
--- /issm/trunk/src/c/Qmux/DakotaResponses.cpp	(revision 3569)
+++ /issm/trunk/src/c/Qmux/DakotaResponses.cpp	(revision 3570)
@@ -328,5 +328,5 @@
 		else{
 			if(my_rank==0)printf("%s%s%s"," response descriptor : ",response_descriptor," not supported yet!");
-			ISSMERROR(exprintf("%s%s%s"," response descriptor : ",response_descriptor," not supported yet!"));
+			ISSMERROR("%s%s%s"," response descriptor : ",response_descriptor," not supported yet!");
 		}
 	}
Index: /issm/trunk/src/c/Qmux/SpawnCoreParallel.cpp
===================================================================
--- /issm/trunk/src/c/Qmux/SpawnCoreParallel.cpp	(revision 3569)
+++ /issm/trunk/src/c/Qmux/SpawnCoreParallel.cpp	(revision 3570)
@@ -154,5 +154,5 @@
 
 	}
-	else ISSMERROR(exprintf("%s%i%s%i%s"," analysis_type ",analysis_type," and sub_analysis_type ",sub_analysis_type," not supported yet!"));
+	else ISSMERROR("%s%i%s%i%s"," analysis_type ",analysis_type," and sub_analysis_type ",sub_analysis_type," not supported yet!");
 	
 		
Index: /issm/trunk/src/c/Solverx/Solverx.cpp
===================================================================
--- /issm/trunk/src/c/Solverx/Solverx.cpp	(revision 3569)
+++ /issm/trunk/src/c/Solverx/Solverx.cpp	(revision 3570)
@@ -102,5 +102,5 @@
 	KSPGetIterationNumber(ksp,&iteration_number);
 	if (iteration_number<0){
-		ISSMERROR(exprintf("%s%i"," Solver diverged at iteration number: ",-iteration_number));
+		ISSMERROR("%s%i"," Solver diverged at iteration number: ",-iteration_number);
 	}
 	else{
Index: /issm/trunk/src/c/include/macros.h
===================================================================
--- /issm/trunk/src/c/include/macros.h	(revision 3569)
+++ /issm/trunk/src/c/include/macros.h	(revision 3570)
@@ -20,5 +20,5 @@
 /*Assertion macro*/
 #define ISSMASSERT(statement)\
-  if (!(statement)) ISSMERROR(exprintf("Assertion \"%s\" failed, please report bug to an ISSM developer",#statement))
+  if (!(statement)) ISSMERROR("Assertion \"%s\" failed, please report bug to an ISSM developer",#statement)
 
 /*The following macros hide the error exception handling in a matlab module. Just put 
Index: /issm/trunk/src/c/io/FetchParams.cpp
===================================================================
--- /issm/trunk/src/c/io/FetchParams.cpp	(revision 3569)
+++ /issm/trunk/src/c/io/FetchParams.cpp	(revision 3570)
@@ -63,5 +63,5 @@
 
 			if (M==0 | N==0){
-				ISSMERROR(exprintf("%s%i (%s) %s%i%s%i%s","array in parameters structure field ",count,name," is of size (",M,",",N,")"));
+				ISSMERROR("%s%i (%s) %s%i%s%i%s","array in parameters structure field ",count,name," is of size (",M,",",N,")");
 			}
 
@@ -147,5 +147,5 @@
 
 		}
-		else ISSMERROR(exprintf("%s%i","unknow type in parameters structure field ",i));
+		else ISSMERROR("%s%i","unknow type in parameters structure field ",i);
 	}
 
Index: /issm/trunk/src/c/io/IoModelFetchData.cpp
===================================================================
--- /issm/trunk/src/c/io/IoModelFetchData.cpp	(revision 3569)
+++ /issm/trunk/src/c/io/IoModelFetchData.cpp	(revision 3570)
@@ -124,5 +124,5 @@
 	MPI_Bcast(&found,1,MPI_INT,0,MPI_COMM_WORLD); 
 
-	if(!found)ISSMERROR(exprintf("%s %s ","could not find data with name",data_name));
+	if(!found)ISSMERROR("%s %s ","could not find data with name",data_name);
 
 	return fid;
Index: /issm/trunk/src/c/io/ParameterInputsInit.cpp
===================================================================
--- /issm/trunk/src/c/io/ParameterInputsInit.cpp	(revision 3569)
+++ /issm/trunk/src/c/io/ParameterInputsInit.cpp	(revision 3570)
@@ -82,5 +82,5 @@
 				break;
 			default:
-				ISSMERROR(exprintf("%s%i"," unknow parameter input type ",type));
+				ISSMERROR("%s%i"," unknow parameter input type ",type);
 		}
 
Index: /issm/trunk/src/c/io/WriteParams.cpp
===================================================================
--- /issm/trunk/src/c/io/WriteParams.cpp	(revision 3569)
+++ /issm/trunk/src/c/io/WriteParams.cpp	(revision 3570)
@@ -142,5 +142,5 @@
 				break;
 			default:
-				ISSMERROR(exprintf("%s%i","unknown parameter type: ",param->GetType()));
+				ISSMERROR("%s%i","unknown parameter type: ",param->GetType());
 				break;
 		}
Index: /issm/trunk/src/c/io/pfclose.cpp
===================================================================
--- /issm/trunk/src/c/io/pfclose.cpp	(revision 3569)
+++ /issm/trunk/src/c/io/pfclose.cpp	(revision 3570)
@@ -18,5 +18,5 @@
 	extern int my_rank;
 	if(my_rank==0){
-		if(fclose(fid)!=0)ISSMERROR(exprintf("%s%s","could not close file ",filename));
+		if(fclose(fid)!=0)ISSMERROR("%s%s","could not close file ",filename);
 	}
 }
Index: /issm/trunk/src/c/io/pfopen.cpp
===================================================================
--- /issm/trunk/src/c/io/pfopen.cpp	(revision 3569)
+++ /issm/trunk/src/c/io/pfopen.cpp	(revision 3570)
@@ -21,5 +21,5 @@
 	if(my_rank==0){
 		fid=fopen(filename,format);
-		if(fid==NULL) ISSMERROR(exprintf("%s%s%s","could not open file ",filename," for binary reading or writing")); 
+		if(fid==NULL) ISSMERROR("%s%s%s","could not open file ",filename," for binary reading or writing"); 
 	}
 
Index: /issm/trunk/src/c/objects/BamgOpts.cpp
===================================================================
--- /issm/trunk/src/c/objects/BamgOpts.cpp	(revision 3569)
+++ /issm/trunk/src/c/objects/BamgOpts.cpp	(revision 3570)
@@ -41,20 +41,20 @@
 	int i;
 
-	if (bamgopts->coef==0) ISSMERROR(exprintf("'coef' should be positive"));
-	if (bamgopts->maxsubdiv<=1) ISSMERROR(exprintf("'maxsubdiv' should be >1"));
-	if (bamgopts->Crack!=0  && bamgopts->Crack!=1) ISSMERROR(exprintf("'Crack' supported options are 0 and 1"));
-	if (bamgopts->Hessiantype!=0  && bamgopts->Hessiantype!=1) ISSMERROR(exprintf("'Hessiantype' supported options are 0 and 1"));
-	if (bamgopts->Metrictype!=0   && bamgopts->Metrictype!=1 && bamgopts->Metrictype!=2) ISSMERROR(exprintf("'Metrictype' supported options are 0, 1 and 2"));
-	if (bamgopts->KeepVertices!=0 && bamgopts->KeepVertices!=1) ISSMERROR(exprintf("'KeepVertices' supported options are 0 and 1"));
-	if (bamgopts->errg<0) ISSMERROR(exprintf("'errg' option should be >0"));
-	if (bamgopts->nbjacobi<=0) ISSMERROR(exprintf("'nbjacobi' option should be >0"));
-	if (bamgopts->geometricalmetric!=0  && bamgopts->geometricalmetric!=1) ISSMERROR(exprintf("'geometricalmetric' supported options are 0 and 1"));
-	if (bamgopts->NbSmooth<=0) ISSMERROR(exprintf("'NbSmooth' option should be >0"));
-	if (bamgopts->maxnbv<3) ISSMERROR(exprintf("'maxnbv' option should be >3"));
-	if (bamgopts->hmin<=0) ISSMERROR(exprintf("'hmin' option should be >0"));
-	if (bamgopts->hmax<=0 || bamgopts->hmax<bamgopts->hmin) ISSMERROR(exprintf("'hmax' option should be between 0 and hmin=%g",bamgopts->hmin));
-	if (bamgopts->anisomax<1) ISSMERROR(exprintf("'anisomax' option should be >=1"));
-	if (bamgopts->gradation<1) ISSMERROR(exprintf("'gradation' option should be >=1"));
-	for (i=0;i<bamgopts->numfields;i++) {if (bamgopts->err[i]<=0) ISSMERROR(exprintf("'err' option should be >0"));};
+	if (bamgopts->coef==0) ISSMERROR("'coef' should be positive");
+	if (bamgopts->maxsubdiv<=1) ISSMERROR("'maxsubdiv' should be >1");
+	if (bamgopts->Crack!=0  && bamgopts->Crack!=1) ISSMERROR("'Crack' supported options are 0 and 1");
+	if (bamgopts->Hessiantype!=0  && bamgopts->Hessiantype!=1) ISSMERROR("'Hessiantype' supported options are 0 and 1");
+	if (bamgopts->Metrictype!=0   && bamgopts->Metrictype!=1 && bamgopts->Metrictype!=2) ISSMERROR("'Metrictype' supported options are 0, 1 and 2");
+	if (bamgopts->KeepVertices!=0 && bamgopts->KeepVertices!=1) ISSMERROR("'KeepVertices' supported options are 0 and 1");
+	if (bamgopts->errg<0) ISSMERROR("'errg' option should be >0");
+	if (bamgopts->nbjacobi<=0) ISSMERROR("'nbjacobi' option should be >0");
+	if (bamgopts->geometricalmetric!=0  && bamgopts->geometricalmetric!=1) ISSMERROR("'geometricalmetric' supported options are 0 and 1");
+	if (bamgopts->NbSmooth<=0) ISSMERROR("'NbSmooth' option should be >0");
+	if (bamgopts->maxnbv<3) ISSMERROR("'maxnbv' option should be >3");
+	if (bamgopts->hmin<=0) ISSMERROR("'hmin' option should be >0");
+	if (bamgopts->hmax<=0 || bamgopts->hmax<bamgopts->hmin) ISSMERROR("'hmax' option should be between 0 and hmin=%g",bamgopts->hmin);
+	if (bamgopts->anisomax<1) ISSMERROR("'anisomax' option should be >=1");
+	if (bamgopts->gradation<1) ISSMERROR("'gradation' option should be >=1");
+	for (i=0;i<bamgopts->numfields;i++) {if (bamgopts->err[i]<=0) ISSMERROR("'err' option should be >0");};
 
 }
Index: /issm/trunk/src/c/objects/Beam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Beam.cpp	(revision 3569)
+++ /issm/trunk/src/c/objects/Beam.cpp	(revision 3570)
@@ -384,8 +384,8 @@
 		}
 		else 
-			ISSMERROR(exprintf("%s%i%s\n","sub_analysis_type: ",sub_analysis_type," not supported yet"));
+			ISSMERROR("%s%i%s\n","sub_analysis_type: ",sub_analysis_type," not supported yet");
 	}
 	else{
-		ISSMERROR(exprintf("%s%i%s\n","analysis: ",analysis_type," not supported yet"));
+		ISSMERROR("%s%i%s\n","analysis: ",analysis_type," not supported yet");
 	}
 
@@ -435,8 +435,8 @@
 		}
 		else
-			ISSMERROR(exprintf("%s%i%s"," analysis ",analysis_type," not supported yet"));
+			ISSMERROR("%s%i%s"," analysis ",analysis_type," not supported yet");
 	}
 	else{
-		ISSMERROR(exprintf("%s%i%s"," analysis ",analysis_type," not supported yet"));
+		ISSMERROR("%s%i%s"," analysis ",analysis_type," not supported yet");
 	}
 
Index: /issm/trunk/src/c/objects/DofVec.cpp
===================================================================
--- /issm/trunk/src/c/objects/DofVec.cpp	(revision 3569)
+++ /issm/trunk/src/c/objects/DofVec.cpp	(revision 3570)
@@ -259,5 +259,5 @@
 	/*check we are not out of bounds: */
 	if (dof>=numdofs){
-		ISSMERROR(exprintf("%s%i%s%i\n"," error message: dof ",dof," requested is out of bounds for vector with number of dofs",this->numdofs));
+		ISSMERROR("%s%i%s%i\n"," error message: dof ",dof," requested is out of bounds for vector with number of dofs",this->numdofs);
 	}
 
@@ -284,5 +284,5 @@
 	/*check we are not out of bounds: */
 	if (dof>=numdofs){
-		ISSMERROR(exprintf("%s%i%s%i\n"," error message: dof ",dof," requested is out of bounds for vector with number of dofs",this->numdofs));
+		ISSMERROR("%s%i%s%i\n"," error message: dof ",dof," requested is out of bounds for vector with number of dofs",this->numdofs);
 	}
 
@@ -306,8 +306,8 @@
 	
 	/*check we are not out of bounds: */
-	if (requested_numdofs>=this->numdofs) ISSMERROR(exprintf("%s%i%s%i\n"," error message: requested dof list has size  ",requested_numdofs," which is out of bounds for vector with number of dofs",this->numdofs));
+	if (requested_numdofs>=this->numdofs) ISSMERROR("%s%i%s%i\n"," error message: requested dof list has size  ",requested_numdofs," which is out of bounds for vector with number of dofs",this->numdofs);
 
 	for(i=0;i<requested_numdofs;i++){
-		if (requested_doflist[i]>=this->numdofs)ISSMERROR(exprintf("%s%i%s%i\n"," error message: requested dof   ",requested_doflist[i]," in list, is out of bounds for vector with number of dofs",this->numdofs));
+		if (requested_doflist[i]>=this->numdofs)ISSMERROR("%s%i%s%i\n"," error message: requested dof   ",requested_doflist[i]," in list, is out of bounds for vector with number of dofs",this->numdofs);
 	}
 
@@ -335,8 +335,8 @@
 	
 	/*check we are not out of bounds: */
-	if (requested_numdofs>=this->numdofs) ISSMERROR(exprintf("%s%i%s%i\n"," error message: requested dof list has size  ",requested_numdofs," which is out of bounds for vector with number of dofs",this->numdofs));
+	if (requested_numdofs>=this->numdofs) ISSMERROR("%s%i%s%i\n"," error message: requested dof list has size  ",requested_numdofs," which is out of bounds for vector with number of dofs",this->numdofs);
 
 	for(i=0;i<requested_numdofs;i++){
-		if (requested_doflist[i]>=this->numdofs)ISSMERROR(exprintf("%s%i%s%i\n"," error message: requested dof   ",requested_doflist[i]," in list, is out of bounds for vector with number of dofs",this->numdofs));
+		if (requested_doflist[i]>=this->numdofs)ISSMERROR("%s%i%s%i\n"," error message: requested dof   ",requested_doflist[i]," in list, is out of bounds for vector with number of dofs",this->numdofs);
 	}
 
@@ -360,5 +360,5 @@
 
 	/*First thing, is the vector of the right size? :*/
-	if (vector_size!=requested_numdofs*this->numentries)ISSMERROR(exprintf("%s%i%s%i"," error message: input vector size ",vector_size," is not equal to the expected numdofs*numentries",requested_numdofs*this->numentries));
+	if (vector_size!=requested_numdofs*this->numentries)ISSMERROR("%s%i%s%i"," error message: input vector size ",vector_size," is not equal to the expected numdofs*numentries",requested_numdofs*this->numentries);
 
 	/*Create dofset: */
@@ -385,5 +385,5 @@
 
 	/*First thing, is the vector of the right size? :*/
-	if (vector_size!=requested_numdofs*this->numentries)ISSMERROR(exprintf("%s%i%s%i"," error message: input vector size ",vector_size," is not equal to the expected numdofs*numentries",requested_numdofs*this->numentries));
+	if (vector_size!=requested_numdofs*this->numentries)ISSMERROR("%s%i%s%i"," error message: input vector size ",vector_size," is not equal to the expected numdofs*numentries",requested_numdofs*this->numentries);
 
 	/*Create dofset: */
@@ -406,5 +406,5 @@
 
 	/*First thing, is the vector of the right size? :*/
-	if (vector_size!=requested_numdofs*this->numentries)ISSMERROR(exprintf("%s%i%s%i"," error message: input vector size ",vector_size," is not equal to the expected numdofs*numentries",requested_numdofs*this->numentries));
+	if (vector_size!=requested_numdofs*this->numentries)ISSMERROR("%s%i%s%i"," error message: input vector size ",vector_size," is not equal to the expected numdofs*numentries",requested_numdofs*this->numentries);
 
 	/*Create dofset: */
Index: /issm/trunk/src/c/objects/Hook.cpp
===================================================================
--- /issm/trunk/src/c/objects/Hook.cpp	(revision 3569)
+++ /issm/trunk/src/c/objects/Hook.cpp	(revision 3570)
@@ -216,5 +216,5 @@
 			this->objects[i]=(Object*)dataset->GetObjectById(this->offsets+i,this->ids[i]); //remember the offset for later on.
 			/*check the id is correct!: */
-			if (this->objects[i]->GetId()!=this->ids[i]) ISSMERROR(exprintf("%s%i%s%i%s"," wrong id: ",this->objects[i]->GetId()," vs ",this->ids[i],"  in resolved pointer!"));
+			if (this->objects[i]->GetId()!=this->ids[i]) ISSMERROR("%s%i%s%i%s"," wrong id: ",this->objects[i]->GetId()," vs ",this->ids[i],"  in resolved pointer!");
 		}
 	}
@@ -281,5 +281,5 @@
 	
 	/*first, check that we only have one T object in our object list: */
-	if (this->num!=1) ISSMERROR(exprintf("%s%i%s\n"," trying to delivery a single hook object when hook holds ",this->num," objects"));
+	if (this->num!=1) ISSMERROR("%s%i%s\n"," trying to delivery a single hook object when hook holds ",this->num," objects");
 
 	/*check NULL: */
Index: /issm/trunk/src/c/objects/Icefront.cpp
===================================================================
--- /issm/trunk/src/c/objects/Icefront.cpp	(revision 3569)
+++ /issm/trunk/src/c/objects/Icefront.cpp	(revision 3570)
@@ -17,5 +17,4 @@
 #include "../include/macros.h"
 #include "./Icefront.h"
-
 		
 /*Object constructors and destructor*/
@@ -130,5 +129,5 @@
 		}
 		else{
-			ISSMERROR(exprintf(" element type %i not supported yet",(int)*(iomodel->elements_type+2*element+0)));
+			ISSMERROR(" element type %i not supported yet",(int)*(iomodel->elements_type+2*element+0));
 		}
 	}
@@ -323,9 +322,9 @@
 
 		}
-		else ISSMERROR(exprintf("%s%i%s"," sub_analysis_type: ",sub_analysis_type," not supported yet"));
+		else ISSMERROR("%s%i%s"," sub_analysis_type: ",sub_analysis_type," not supported yet");
 
 	}
 	else{
-		ISSMERROR(exprintf("%s%i%s"," analysis ",analysis_type," not supported yet"));
+		ISSMERROR("%s%i%s"," analysis ",analysis_type," not supported yet");
 	}
 }
@@ -1479,5 +1478,5 @@
 		}
 		else{
-			ISSMERROR(exprintf("fill type %i not supported yet",fill));
+			ISSMERROR("fill type %i not supported yet",fill);
 		}
 
Index: /issm/trunk/src/c/objects/Input.cpp
===================================================================
--- /issm/trunk/src/c/objects/Input.cpp	(revision 3569)
+++ /issm/trunk/src/c/objects/Input.cpp	(revision 3570)
@@ -253,5 +253,5 @@
 	
 	if (!valuesin) ISSMERROR("valuesin has not been allocated properly (pointer is NULL)");
-	if (type!=DOUBLEVEC) ISSMERROR(exprintf("%s%i%s"," cannot recover values from a ",type," input type"));
+	if (type!=DOUBLEVEC) ISSMERROR("%s%i%s"," cannot recover values from a ",type," input type");
 	
 	/*Ok, we are trying to fill values. values is of size ndof*numnodes.  The dofs 
Index: /issm/trunk/src/c/objects/Node.cpp
===================================================================
--- /issm/trunk/src/c/objects/Node.cpp	(revision 3569)
+++ /issm/trunk/src/c/objects/Node.cpp	(revision 3570)
@@ -736,5 +736,5 @@
 			}
 		}
-		else ISSMERROR(exprintf("%s%s%s"," field ",field_name," not supported yet!"));
+		else ISSMERROR("%s%s%s"," field ",field_name," not supported yet!");
 
 	} //if (extrude)
Index: /issm/trunk/src/c/objects/Numericalflux.cpp
===================================================================
--- /issm/trunk/src/c/objects/Numericalflux.cpp	(revision 3569)
+++ /issm/trunk/src/c/objects/Numericalflux.cpp	(revision 3570)
@@ -26,5 +26,5 @@
 /*}}}*/
 /*FUNCTION Numericalflux::Numericalflux(char numericalflux_type[NUMERICALFLUXSTRING],int numericalflux_fill...){{{1*/
-Numericalflux::Numericalflux(int numericalflux_id,char numericalflux_type[NUMERICALFLUXSTRING], int numericalflux_node_ids[MAX_NUMERICALFLUX_NODES],int numericalflux_element_id){
+Numericalflux::Numericalflux(int numericalflux_id,char numericalflux_type[NUMERICALFLUXSTRING], int numericalflux_node_ids[MAX_NUMERICALFLUX_NODES],int numericalflux_element_id, double numericalflux_h[MAX_NUMERICALFLUX_NODES]){
 
 	int i;
@@ -41,4 +41,5 @@
 		node_offsets[i]=UNDEF;
 		nodes[i]=NULL;
+		h[i]=numericalflux_h[i];
 	}
 
@@ -81,4 +82,6 @@
 	for(i=0;i<MAX_NUMERICALFLUX_NODES;i++)nodes[i]=NULL;
 
+	memcpy(&h,marshalled_dataset,sizeof(h));marshalled_dataset+=sizeof(h);
+
 	/*return: */
 	*pmarshalled_dataset=marshalled_dataset;
@@ -110,4 +113,6 @@
 	memcpy(marshalled_dataset,&node_ids,sizeof(node_ids));marshalled_dataset+=sizeof(node_ids);
 	memcpy(marshalled_dataset,&node_offsets,sizeof(node_offsets));marshalled_dataset+=sizeof(node_offsets);
+
+	memcpy(marshalled_dataset,&h,sizeof(h));marshalled_dataset+=sizeof(h);
 
 	*pmarshalled_dataset=marshalled_dataset;
@@ -124,4 +129,5 @@
 		sizeof(node_ids)+
 		sizeof(node_offsets)+
+		sizeof(h)+
 		sizeof(int); //sizeof(int) for enum type
 }
@@ -443,4 +449,5 @@
 	double mean_vy;
 	double UdotN;
+	double thickness;
 	double dt;
 	int    dofs[1]={0};
@@ -489,6 +496,7 @@
 
 		//Get vx, vy and v.n
-		GetParameterValue(&vx, &vx_list[0],gauss_coord);
-		GetParameterValue(&vy, &vy_list[0],gauss_coord);
+		GetParameterValue(&vx,       &vx_list[0],gauss_coord);
+		GetParameterValue(&vy,       &vy_list[0],gauss_coord);
+		GetParameterValue(&thickness,&h[0],      gauss_coord);
 		UdotN=vx*normal[0]+vy*normal[1];
 
@@ -497,5 +505,5 @@
 
 		/*Compute DL*/
-		DL= - gauss_weight*Jdet*dt*UdotN;
+		DL= - gauss_weight*Jdet*dt*UdotN*thickness;
 
 		/* Add value into pe_g: */
@@ -530,11 +538,13 @@
 			if(nodes[i])nodes[i]->Echo();
 		}
+		printf("   h=[%i,%i,%i,%i]\n",h[0],h[1],h[2],h[3]);
 	}
 	else{
-		printf("   node_ids=[%i,%i,%i,%i]\n",node_ids[0],node_ids[1],node_ids[2],node_ids[3]);
-		printf("   node_offsets=[%i,%i,%i,%i]\n",node_offsets[0],node_offsets[1],node_offsets[2],node_offsets[3]);
+		printf("   node_ids=[%i,%i]\n",node_ids[0],node_ids[1]);
+		printf("   node_offsets=[%i,%i]\n",node_offsets[0],node_offsets[1]);
 		for(i=0;i<2;i++){
 			if(nodes[i])nodes[i]->Echo();
 		}
+		printf("   h=[%i,%i]\n",h[0],h[1]);
 	}
 	return;
@@ -559,8 +569,10 @@
 		printf("   node_ids=[%i,%i,%i,%i]\n",node_ids[0],node_ids[1],node_ids[2],node_ids[3]);
 		printf("   node_offsets=[%i,%i,%i,%i]\n",node_offsets[0],node_offsets[1],node_offsets[2],node_offsets[3]);
+		printf("   h=[%g,%g,%g,%g]\n",h[0],h[1],h[2],h[3]);
 	}
 	else{
 		printf("   node_ids=[%i,%i]\n",node_ids[0],node_ids[1]);
 		printf("   node_offsets=[%i,%i]\n",node_offsets[0],node_offsets[1]);
+		printf("   h=[%g,%g]\n",h[0],h[1]);
 	}
 
@@ -615,5 +627,5 @@
 		}
 	}
-	else ISSMERROR(exprintf("type %s not supported yet",type));
+	else ISSMERROR("type %s not supported yet",type);
 
 	/*Assign output pointers:*/
@@ -741,5 +753,5 @@
 void  Numericalflux::UpdateFromInputs(void* vinputs){
 
-	/*Do nothing...*/
-}
-/*}}}*/
+	/*Do nothing FOR NOW...*/
+}
+/*}}}*/
Index: /issm/trunk/src/c/objects/Numericalflux.h
===================================================================
--- /issm/trunk/src/c/objects/Numericalflux.h	(revision 3569)
+++ /issm/trunk/src/c/objects/Numericalflux.h	(revision 3570)
@@ -33,8 +33,11 @@
 		int   node_offsets[MAX_NUMERICALFLUX_NODES];
 
+		/*properties: */
+		double h[MAX_NUMERICALFLUX_NODES]; //thickness
+
 	public:
 
 		Numericalflux();
-		Numericalflux(int numericalflux_id,char numericalflux_type[NUMERICALFLUXSTRING], int numericalflux_node_ids[MAX_NUMERICALFLUX_NODES],int numericalflux_element_id);
+		Numericalflux(int numericalflux_id,char numericalflux_type[NUMERICALFLUXSTRING], int numericalflux_node_ids[MAX_NUMERICALFLUX_NODES],int numericalflux_element_id,double numericalflux_h[MAX_NUMERICALFLUX_NODES]);
 		Object* copy();
 		~Numericalflux();
Index: /issm/trunk/src/c/objects/Param.cpp
===================================================================
--- /issm/trunk/src/c/objects/Param.cpp	(revision 3569)
+++ /issm/trunk/src/c/objects/Param.cpp	(revision 3570)
@@ -28,5 +28,5 @@
 		(param_type!=DOUBLEVEC) & (param_type!=DOUBLEMAT) & (param_type!=PETSCVEC) & (param_type!=PETSCMAT) 
 		){
-		ISSMERROR(exprintf("%s%i"," unknow parameter type ",param_type));
+		ISSMERROR("%s%i"," unknow parameter type ",param_type);
 	}
 	stringarray=NULL;
@@ -92,5 +92,5 @@
 
 		default:
-			ISSMERROR(exprintf("%s%i","unknow parameter type ",type));
+			ISSMERROR("%s%i","unknow parameter type ",type);
 	}
 }
@@ -210,5 +210,5 @@
 
 		default:
-			ISSMERROR(exprintf("%s%i","unknown parameter type",type));
+			ISSMERROR("%s%i","unknown parameter type",type);
 	}
 
@@ -311,5 +311,5 @@
 		
 		default:
-			ISSMERROR(exprintf("%s%i","unknown parameter type",type));
+			ISSMERROR("%s%i","unknown parameter type",type);
 			break;
 	}
@@ -366,5 +366,5 @@
 
 		default:
-			ISSMERROR(exprintf("%s%i","unknown parameter type",type));
+			ISSMERROR("%s%i","unknown parameter type",type);
 	}
 
@@ -430,5 +430,5 @@
 
 		default:
-			ISSMERROR(exprintf("%s%i","unknow parameter type ",type));
+			ISSMERROR("%s%i","unknow parameter type ",type);
 	}
 }
@@ -490,5 +490,5 @@
 
 		default:
-			ISSMERROR(exprintf("%s%i","unknow parameter type ",type));
+			ISSMERROR("%s%i","unknow parameter type ",type);
 	}
 }	
@@ -518,5 +518,5 @@
 	Mat  outmat=NULL;
 	
-	if(type!=PETSCMAT)  ISSMERROR(exprintf("%s%i"," error message: trying to recover a Petsc mat from a param with type",type));
+	if(type!=PETSCMAT)  ISSMERROR("%s%i"," error message: trying to recover a Petsc mat from a param with type",type);
 	
 	if(mat){
@@ -539,5 +539,5 @@
 void  Param::GetParameterValue(double* pdouble){
 
-	if(type!=DOUBLE)ISSMERROR(exprintf("%s%i"," error message: trying to recover a double from a param with type",type));
+	if(type!=DOUBLE)ISSMERROR("%s%i"," error message: trying to recover a double from a param with type",type);
 	*pdouble=ddouble;
 }
@@ -546,5 +546,5 @@
 void  Param::GetParameterValue(int* pinteger){
 	
-	if(type!=DOUBLE)ISSMERROR(exprintf("%s%i"," error message: trying to recover an integer from a param with type",type));
+	if(type!=DOUBLE)ISSMERROR("%s%i"," error message: trying to recover an integer from a param with type",type);
 	*pinteger=(int)ddouble;
 }
@@ -555,5 +555,5 @@
 	char*  outstring=NULL;
 	
-	if(type!=STRING)ISSMERROR(exprintf("%s%i"," error message: trying to recover a string from a param with type",type));
+	if(type!=STRING)ISSMERROR("%s%i"," error message: trying to recover a string from a param with type",type);
 	outstring=(char*)xmalloc((strlen(string)+1)*sizeof(char));
 	strcpy(outstring,string);
@@ -566,5 +566,5 @@
 
 	int i;
-	if(type!=STRINGARRAY)ISSMERROR(exprintf("%s%i"," error message: trying to recover a string array from a param with type",type));
+	if(type!=STRINGARRAY)ISSMERROR("%s%i"," error message: trying to recover a string array from a param with type",type);
 
 	char**  outstringarray=NULL;
@@ -585,5 +585,5 @@
 	double* outdoublearray=NULL;
 	
-	if((type!=DOUBLEVEC) & (type!=DOUBLEMAT)) ISSMERROR(exprintf("%s%i"," error message: trying to recover a double array from a param with type",type));
+	if((type!=DOUBLEVEC) & (type!=DOUBLEMAT)) ISSMERROR("%s%i"," error message: trying to recover a double array from a param with type",type);
 	
 	if(type==DOUBLEVEC){
@@ -611,5 +611,5 @@
 	Vec  outvec=NULL;
 	
-	if(type!=PETSCVEC)  ISSMERROR(exprintf("%s%i"," error message: trying to recover a Petsc vec from a param with type",type));
+	if(type!=PETSCVEC)  ISSMERROR("%s%i"," error message: trying to recover a Petsc vec from a param with type",type);
 
 	if(vec){
@@ -636,5 +636,5 @@
 /*FUNCTION Param::SetDouble(double value) {{{1*/
 void  Param::SetDouble(double value){
-	if (type!=DOUBLE) ISSMERROR(exprintf("%s%i"," trying to set double for type",type));
+	if (type!=DOUBLE) ISSMERROR("%s%i"," trying to set double for type",type);
 	ddouble=value;
 }
@@ -642,5 +642,5 @@
 /*FUNCTION Param::SetDouble(int value) {{{1*/
 void  Param::SetDouble(int value){
-	if (type!=DOUBLE) ISSMERROR(exprintf("%s%i"," trying to set double for type",type));
+	if (type!=DOUBLE) ISSMERROR("%s%i"," trying to set double for type",type);
 	ddouble=(double)value;
 }
@@ -649,5 +649,5 @@
 void  Param::SetDoubleMat(double* value,int pM,int pN){
 	
-	if (type!=DOUBLEMAT) ISSMERROR(exprintf("%s%i"," trying to set doublematrix type",type));
+	if (type!=DOUBLEMAT) ISSMERROR("%s%i"," trying to set doublematrix type",type);
 
 	this->M=pM;
@@ -661,5 +661,5 @@
 /*FUNCTION Param::SetDoubleVec(double* value,int size) {{{1*/
 void  Param::SetDoubleVec(double* value,int size){
-	if (type!=DOUBLEVEC) ISSMERROR(exprintf("%s%i"," trying to set doublevecfor type",type));
+	if (type!=DOUBLEVEC) ISSMERROR("%s%i"," trying to set doublevecfor type",type);
 	
 	M=size;
@@ -677,5 +677,5 @@
 /*FUNCTION Param::SetDoubleVec(double* value,int size, int numberofdofs) {{{1*/
 void  Param::SetDoubleVec(double* value,int size, int numberofdofs){
-	if (type!=DOUBLEVEC) ISSMERROR(exprintf("%s%i"," trying to set doublevecfor type",type));
+	if (type!=DOUBLEVEC) ISSMERROR("%s%i"," trying to set doublevecfor type",type);
 	
 	M=size;
@@ -689,5 +689,5 @@
 /*FUNCTION Param::SetString {{{1*/
 void  Param::SetString(char* value){
-	if (type!=STRING) ISSMERROR(exprintf("%s%i"," trying to set string for type",type));
+	if (type!=STRING) ISSMERROR("%s%i"," trying to set string for type",type);
 	strcpy(string,value);
 }
@@ -697,5 +697,5 @@
 	
 	int i;
-	if (type!=STRINGARRAY) ISSMERROR(exprintf("%s%i"," trying to set string for type",type));
+	if (type!=STRINGARRAY) ISSMERROR("%s%i"," trying to set string for type",type);
 	M=size;
 	stringarray=(char**)xmalloc(M*sizeof(char*));
Index: /issm/trunk/src/c/objects/ParameterInputs.cpp
===================================================================
--- /issm/trunk/src/c/objects/ParameterInputs.cpp	(revision 3569)
+++ /issm/trunk/src/c/objects/ParameterInputs.cpp	(revision 3570)
@@ -354,5 +354,5 @@
 			/*Now, pick up the parameter corresponding to root: */
 			found=parameters->FindParam(&parameter,NULL,NULL,root);
-			if(!found)ISSMERROR(exprintf("%s%s%s"," could not find parameter ",root," for Dakota input update"));
+			if(!found)ISSMERROR("%s%s%s"," could not find parameter ",root," for Dakota input update");
 			
 			/*We've got the parameter, we need to update it using qmu_part (a partitioning vector), and the distributed_values: */
Index: /issm/trunk/src/c/objects/Pengrid.cpp
===================================================================
--- /issm/trunk/src/c/objects/Pengrid.cpp	(revision 3569)
+++ /issm/trunk/src/c/objects/Pengrid.cpp	(revision 3570)
@@ -273,5 +273,5 @@
 	}
 	else{
-		ISSMERROR(exprintf("%s%i%s%i%s","analysis: ",analysis_type," and sub_analysis_type: ",sub_analysis_type," not supported yet"));
+		ISSMERROR("%s%i%s%i%s","analysis: ",analysis_type," and sub_analysis_type: ",sub_analysis_type," not supported yet");
 	}
 
@@ -377,5 +377,5 @@
 	}
 	else{
-		ISSMERROR(exprintf("%s%i%s%i%s","analysis: ",analysis_type," and sub_analysis_type: ",sub_analysis_type," not supported yet"));
+		ISSMERROR("%s%i%s%i%s","analysis: ",analysis_type," and sub_analysis_type: ",sub_analysis_type," not supported yet");
 	}
 
@@ -517,5 +517,5 @@
 	}
 	else{
-		ISSMERROR(exprintf("%s%i%s%i%s","analysis: ",analysis_type," and sub_analysis_type: ",sub_analysis_type," not supported yet"));
+		ISSMERROR("%s%i%s%i%s","analysis: ",analysis_type," and sub_analysis_type: ",sub_analysis_type," not supported yet");
 	}
 
Index: /issm/trunk/src/c/objects/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Penta.cpp	(revision 3569)
+++ /issm/trunk/src/c/objects/Penta.cpp	(revision 3570)
@@ -575,5 +575,5 @@
 
 		}
-		else ISSMERROR(exprintf("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet"));
+		else ISSMERROR("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet");
 	}
 	else if (analysis_type==SlopecomputeAnalysisEnum){
@@ -602,5 +602,5 @@
 	}
 	else{
-		ISSMERROR(exprintf("%s%i%s\n","analysis: ",analysis_type," not supported yet"));
+		ISSMERROR("%s%i%s\n","analysis: ",analysis_type," not supported yet");
 	}
 
@@ -1701,5 +1701,5 @@
 			CreatePVectorDiagnosticStokes( pg,inputs,analysis_type,sub_analysis_type);
 		}
-		else ISSMERROR(exprintf("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet"));
+		else ISSMERROR("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet");
 	}
 	else if (analysis_type==SlopecomputeAnalysisEnum){
@@ -1728,5 +1728,5 @@
 	}
 	else{
-		ISSMERROR(exprintf("%s%i%s\n","analysis: ",analysis_type," not supported yet"));
+		ISSMERROR("%s%i%s\n","analysis: ",analysis_type," not supported yet");
 	}	
 
@@ -2764,5 +2764,5 @@
 
 		}
-		else ISSMERROR(exprintf("%s%s%s"," field ",field_name," not supported yet!"));
+		else ISSMERROR("%s%s%s"," field ",field_name," not supported yet!");
 
 	} //if (extrude)
@@ -3338,5 +3338,5 @@
 
 	if(*Jdet<0){
-		ISSMERROR(exprintf("%s%i","negative jacobian determinant on element ",id)); 
+		ISSMERROR("%s%i","negative jacobian determinant on element ",id); 
 	}
 }
@@ -4042,5 +4042,5 @@
 		GradjB( grad_g, inputs,analysis_type,sub_analysis_type);
 	}
-	else ISSMERROR(exprintf("%s%s","control type not supported yet: ",control_type));
+	else ISSMERROR("%s%s","control type not supported yet: ",control_type);
 }
 /*}}}*/
@@ -4075,5 +4075,5 @@
 		return;
 	}
-	else ISSMERROR(exprintf("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet"));
+	else ISSMERROR("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet");
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/Riftfront.cpp
===================================================================
--- /issm/trunk/src/c/objects/Riftfront.cpp	(revision 3569)
+++ /issm/trunk/src/c/objects/Riftfront.cpp	(revision 3570)
@@ -747,5 +747,5 @@
 		else if(fill==MelangeEnum){ //icefront finding itself against another icefront (pressure imbalance is fully compensated, ice vs ice)
 			
-			if(!shelf) ISSMERROR(exprintf("%s%i%s","fill type ",fill," not supported on ice sheets yet."));
+			if(!shelf) ISSMERROR("%s%i%s","fill type ",fill," not supported on ice sheets yet.");
 
 			pressure_litho=rho_ice*gravity*pow(thickness,(double)2)/(double)2;
@@ -757,5 +757,5 @@
 		}
 		else{
-			ISSMERROR(exprintf("%s%i%s","fill type ",fill," not supported yet."));
+			ISSMERROR("%s%i%s","fill type ",fill," not supported yet.");
 		}
 
Index: /issm/trunk/src/c/objects/Sing.cpp
===================================================================
--- /issm/trunk/src/c/objects/Sing.cpp	(revision 3569)
+++ /issm/trunk/src/c/objects/Sing.cpp	(revision 3570)
@@ -354,5 +354,5 @@
 	}
 	else{
-		ISSMERROR(exprintf("%s%i%s%i%s\n","analysis: ",analysis_type," and sub_analysis_type: ",sub_analysis_type," not supported yet"));
+		ISSMERROR("%s%i%s%i%s\n","analysis: ",analysis_type," and sub_analysis_type: ",sub_analysis_type," not supported yet");
 	}
 
@@ -391,5 +391,5 @@
 	}
 	else{
-		ISSMERROR(exprintf("%s%i%s"," analysis ",analysis_type," not supported yet"));
+		ISSMERROR("%s%i%s"," analysis ",analysis_type," not supported yet");
 	}
 
Index: /issm/trunk/src/c/objects/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Tria.cpp	(revision 3569)
+++ /issm/trunk/src/c/objects/Tria.cpp	(revision 3570)
@@ -550,5 +550,5 @@
 		}
 		else{
-			ISSMERROR(exprintf("%s%s","unsupported control type: ",numpar->control_type));
+			ISSMERROR("%s%s","unsupported control type: ",numpar->control_type);
 		}
 
@@ -579,5 +579,5 @@
 			CreateKMatrixDiagnosticHoriz( Kgg,inputs,analysis_type,sub_analysis_type);
 		}
-		else ISSMERROR(exprintf("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet"));
+		else ISSMERROR("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet");
 
 	}
@@ -604,5 +604,5 @@
 	else{
 
-		ISSMERROR(exprintf("%s%i%s\n","analysis: ",analysis_type," not supported yet"));
+		ISSMERROR("%s%i%s\n","analysis: ",analysis_type," not supported yet");
 	}
 
@@ -2187,5 +2187,5 @@
 			CreatePVectorDiagnosticHoriz( pg,inputs,analysis_type,sub_analysis_type);
 		}
-		else ISSMERROR(exprintf("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet"));
+		else ISSMERROR("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet");
 	}
 	else if (analysis_type==SlopecomputeAnalysisEnum){
@@ -2210,5 +2210,5 @@
 	}
 	else{
-		ISSMERROR(exprintf("%s%i%s"," analysis ",analysis_type," not supported yet"));
+		ISSMERROR("%s%i%s"," analysis ",analysis_type," not supported yet");
 	}
 
@@ -3544,5 +3544,5 @@
 	else{
 		/*Not supported yet! : */
-		ISSMERROR(exprintf("%s%g","unsupported type of fit: ",fit));
+		ISSMERROR("%s%g","unsupported type of fit: ",fit);
 	}
 
@@ -3675,5 +3675,5 @@
 		return 1-((x-x3)*(y2-y3)-(x2-x3)*(y-y3))/area -((x1-x3)*(y-y3)-(x-x3)*(y1-y3))/area;
 	}
-	else ISSMERROR(exprintf("%s%i%s\n"," error message: area coordinate ",which_one," done not exist!"));
+	else ISSMERROR("%s%i%s\n"," error message: area coordinate ",which_one," done not exist!");
 }
 /*}}}*/
@@ -4217,5 +4217,5 @@
 		GradjB( grad_g,inputs,analysis_type,sub_analysis_type);
 	}
-	else ISSMERROR(exprintf("%s%s","control type not supported yet: ",control_type));
+	else ISSMERROR("%s%s","control type not supported yet: ",control_type);
 }
 /*}}}*/
@@ -4916,5 +4916,5 @@
 
 	/*First off, check that this segment belongs to this element: */
-	if ((int)*(segment+4)!=this->id)ISSMERROR(exprintf("%s%i%s%i","error message: segment with id ",(int)*(segment+4)," does not belong to element with id:",this->id));
+	if ((int)*(segment+4)!=this->id)ISSMERROR("%s%i%s%i","error message: segment with id ",(int)*(segment+4)," does not belong to element with id:",this->id);
 
 	/*Recover segment node locations: */
@@ -5132,5 +5132,5 @@
 	else{
 		/*Not supported yet! : */
-		ISSMERROR(exprintf("%s%g","unsupported type of fit: ",fit));
+		ISSMERROR("%s%g","unsupported type of fit: ",fit);
 	}
 
Index: /issm/trunk/src/c/parallel/WriteLockFile.cpp
===================================================================
--- /issm/trunk/src/c/parallel/WriteLockFile.cpp	(revision 3569)
+++ /issm/trunk/src/c/parallel/WriteLockFile.cpp	(revision 3570)
@@ -17,8 +17,8 @@
 	if(my_rank==0){
 		fid=fopen(filename,"w");
-		if(fid==NULL) ISSMERROR(exprintf("%s%s","error message: could not open lock file ",filename));
+		if(fid==NULL) ISSMERROR("%s%s","error message: could not open lock file ",filename);
 
 		/*Close file: */
-		if(fclose(fid)!=0) ISSMERROR(exprintf("%s%s","could not close lock file ",filename));
+		if(fclose(fid)!=0) ISSMERROR("%s%s","could not close lock file ",filename);
 	}
 
Index: /issm/trunk/src/c/parallel/transient_core.cpp
===================================================================
--- /issm/trunk/src/c/parallel/transient_core.cpp	(revision 3569)
+++ /issm/trunk/src/c/parallel/transient_core.cpp	(revision 3570)
@@ -26,5 +26,5 @@
 		transient_core_3d(results,model,inputs);
 	}
-	else ISSMERROR(exprintf("%s%i%s"," dimension ",dim," not supported yet!"));
+	else ISSMERROR("%s%i%s"," dimension ",dim," not supported yet!");
 
 }
Index: /issm/trunk/src/c/shared/Dofs/DistributeNumDofs.cpp
===================================================================
--- /issm/trunk/src/c/shared/Dofs/DistributeNumDofs.cpp	(revision 3569)
+++ /issm/trunk/src/c/shared/Dofs/DistributeNumDofs.cpp	(revision 3570)
@@ -62,5 +62,5 @@
 		numdofs=1;
 	}
-	else ISSMERROR(exprintf("%s%i%s"," analysis type: ",analysis_type,"  not implemented yet!"));
+	else ISSMERROR("%s%i%s"," analysis type: ",analysis_type,"  not implemented yet!");
 
 	/*Assign output pointers:*/
Index: /issm/trunk/src/c/shared/Elements/ResolvePointers.cpp
===================================================================
--- /issm/trunk/src/c/shared/Elements/ResolvePointers.cpp	(revision 3569)
+++ /issm/trunk/src/c/shared/Elements/ResolvePointers.cpp	(revision 3570)
@@ -50,5 +50,5 @@
 			objects[i]=(Object*)dataset->GetObjectById(object_offsets+i,object_ids[i]); //remember the offset for later on.
 			/*check the id is correct!: */
-			if (objects[i]->GetId()!=object_ids[i])ISSMERROR(exprintf("%s%i%s%i%s"," wrong id: ",objects[i]->GetId()," vs ",object_ids[i],"  in resolved pointer!"));
+			if (objects[i]->GetId()!=object_ids[i])ISSMERROR("%s%i%s%i%s"," wrong id: ",objects[i]->GetId()," vs ",object_ids[i],"  in resolved pointer!");
 		}
 	}
Index: /issm/trunk/src/c/shared/Exceptions/exprintf.cpp
===================================================================
--- /issm/trunk/src/c/shared/Exceptions/exprintf.cpp	(revision 3569)
+++ /issm/trunk/src/c/shared/Exceptions/exprintf.cpp	(revision 3570)
@@ -3,5 +3,5 @@
  * Instead of returning an int, it will return the char* itself.
  * The advantage is to be able to do things like: 
- * ISSMERROR(exprintf("%s%i\n","test failed for id:",id));
+ * ErrorException(exprintf("%s%i\n","test failed for id:",id));
  */ 
 
Index: /issm/trunk/src/c/shared/Exp/DomainOutlineRead.cpp
===================================================================
--- /issm/trunk/src/c/shared/Exp/DomainOutlineRead.cpp	(revision 3569)
+++ /issm/trunk/src/c/shared/Exp/DomainOutlineRead.cpp	(revision 3570)
@@ -37,5 +37,5 @@
 	/*open domain outline file for reading: */
 	if ((fid=fopen(domainname,"r"))==NULL){
-		ISSMERROR(exprintf("%s%s","could not find domain file ",domainname)); 
+		ISSMERROR("%s%s","could not find domain file ",domainname); 
 		noerr=0; goto cleanupandreturn;
 	}
Index: /issm/trunk/src/c/shared/Matrix/MatrixUtils.cpp
===================================================================
--- /issm/trunk/src/c/shared/Matrix/MatrixUtils.cpp	(revision 3569)
+++ /issm/trunk/src/c/shared/Matrix/MatrixUtils.cpp	(revision 3570)
@@ -270,5 +270,5 @@
 
 	if (!b && nvec) {
-		ISSMERROR(exprintf("No right-hand side for nvec=%d.",nvec));
+		ISSMERROR("No right-hand side for nvec=%d.",nvec);
 		noerr=0;
 		return noerr;
@@ -304,5 +304,5 @@
 			xfree((void **)&pivrc);
 			xfree((void **)&pindx);
-			ISSMERROR(exprintf("Pivot %f less than machine epsilon",pivot));
+			ISSMERROR("Pivot %f less than machine epsilon",pivot);
 			noerr=0;
 			return noerr;
Index: /issm/trunk/src/c/shared/Numerics/GaussPoints.cpp
===================================================================
--- /issm/trunk/src/c/shared/Numerics/GaussPoints.cpp	(revision 3569)
+++ /issm/trunk/src/c/shared/Numerics/GaussPoints.cpp	(revision 3570)
@@ -393,5 +393,5 @@
 		if (iter >= MAX_GAUS_ITER) {
 			xfree((void **)&work);
-			ISSMERROR(exprintf("%s%i"," Max iterations exceeded for l=",MAX_GAUS_ITER));
+			ISSMERROR("%s%i"," Max iterations exceeded for l=",MAX_GAUS_ITER);
 		}
 	}
Index: /issm/trunk/src/c/toolkits/petsc/patches/NewMat.cpp
===================================================================
--- /issm/trunk/src/c/toolkits/petsc/patches/NewMat.cpp	(revision 3569)
+++ /issm/trunk/src/c/toolkits/petsc/patches/NewMat.cpp	(revision 3570)
@@ -58,6 +58,5 @@
 		/*Same as above, except we bypass the default sparsity: */
 		if(pconnectivity || pnumberofdofspernode)
-			ISSMERROR(exprintf("%s%p%s%p%s%p","cannot determine logic with following set of pointers-> sparsity: ",
-						psparsity," connectivity: ",pconnectivity," numberofdofspernode: ",pnumberofdofspernode));
+			ISSMERROR("%s%p%s%p%s%p","cannot determine logic with following set of pointers-> sparsity: ", psparsity," connectivity: ",pconnectivity," numberofdofspernode: ",pnumberofdofspernode);
 
 		sparsity=*psparsity;
@@ -75,6 +74,5 @@
 		 *present per row: */
 
-		if(psparsity) ISSMERROR(exprintf("%s%p%s%p%s%p","cannot determine logic with following set of pointers-> sparsity: ",
-						psparsity," connectivity: ",pconnectivity," numberofdofspernode: ",pnumberofdofspernode));
+		if(psparsity) ISSMERROR("%s%p%s%p%s%p","cannot determine logic with following set of pointers-> sparsity: ", psparsity," connectivity: ",pconnectivity," numberofdofspernode: ",pnumberofdofspernode);
 
 		connectivity=*pconnectivity;
@@ -89,8 +87,6 @@
 	}
 	else{
-		ISSMERROR(exprintf("%s%p%s%p%s%p","cannot determine logic with following set of pointers-> sparsity: ",
-						psparsity," connectivity: ",pconnectivity," numberofdofspernode: ",pnumberofdofspernode));
+		ISSMERROR("%s%p%s%p%s%p","cannot determine logic with following set of pointers-> sparsity: ", psparsity," connectivity: ",pconnectivity," numberofdofspernode: ",pnumberofdofspernode);
 	}
-
 
 	return outmatrix;
Index: /issm/trunk/src/c/toolkits/petsc/patches/PetscOptionsDetermineSolverType.cpp
===================================================================
--- /issm/trunk/src/c/toolkits/petsc/patches/PetscOptionsDetermineSolverType.cpp	(revision 3569)
+++ /issm/trunk/src/c/toolkits/petsc/patches/PetscOptionsDetermineSolverType.cpp	(revision 3570)
@@ -76,5 +76,5 @@
 			if(first[0]!='-'){
 				/*This is not good, the option does not have '-'! Get out*/
-				ISSMERROR(exprintf("%s%s%s","Option ",first," should be preceded by '-'!"));
+				ISSMERROR("%s%s%s","Option ",first," should be preceded by '-'!");
 			}
 			break;
Index: /issm/trunk/src/c/toolkits/petsc/patches/PetscOptionsInsertMultipleString.cpp
===================================================================
--- /issm/trunk/src/c/toolkits/petsc/patches/PetscOptionsInsertMultipleString.cpp	(revision 3569)
+++ /issm/trunk/src/c/toolkits/petsc/patches/PetscOptionsInsertMultipleString.cpp	(revision 3570)
@@ -55,5 +55,5 @@
 			if(first[0]!='-'){
 				/*This is not good, the option does not have '-'! Get out*/
-				ISSMERROR(exprintf("%s%s%s","Option ",first," should be preceded by '-'!"));
+				ISSMERROR("%s%s%s","Option ",first," should be preceded by '-'!");
 			}
 			/*Reduce first to bare option value*/
Index: /issm/trunk/src/c/toolkits/petsc/patches/VecMerge.cpp
===================================================================
--- /issm/trunk/src/c/toolkits/petsc/patches/VecMerge.cpp	(revision 3569)
+++ /issm/trunk/src/c/toolkits/petsc/patches/VecMerge.cpp	(revision 3570)
@@ -63,5 +63,5 @@
 		/*Now, modify idxm using the partition vector, and plug values into A*/
 		for (i=0;i<range;i++){
-			*(idxm+i)=*(row_partition_vector+lower_row+i)-1; //-1 because partition vector comes from Matlab, where indices start at 1.
+			*(idxm+i)=(int)*(row_partition_vector+lower_row+i)-1; //-1 because partition vector comes from Matlab, where indices start at 1.
 		}
 		VecSetValues(A,range,idxm,values,INSERT_VALUES);
