Index: /issm/trunk/src/c/modules/BamgConvertMeshx/BamgConvertMeshx.cpp
===================================================================
--- /issm/trunk/src/c/modules/BamgConvertMeshx/BamgConvertMeshx.cpp	(revision 5207)
+++ /issm/trunk/src/c/modules/BamgConvertMeshx/BamgConvertMeshx.cpp	(revision 5208)
@@ -21,4 +21,5 @@
 	/*Options*/
 	BamgOpts* bamgopts=NULL;
+	bamgopts=new BamgOpts();
 
 	// read mesh
Index: /issm/trunk/src/c/objects/Bamg/Geometry.cpp
===================================================================
--- /issm/trunk/src/c/objects/Bamg/Geometry.cpp	(revision 5207)
+++ /issm/trunk/src/c/objects/Bamg/Geometry.cpp	(revision 5208)
@@ -48,9 +48,9 @@
 	Geometry::~Geometry() {
 		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/~Geometry)*/
-		ISSMASSERT(NbRef<=0);
-		if(vertices)  delete [] vertices;   vertices=0;
-		if(edges)     delete [] edges;      edges=0;
-		if(quadtree)  delete  quadtree;     quadtree=0;
-		if(curves)    delete  []curves;     curves=0;nbcurves=0;
+		if(NbRef>0)    ISSMERROR("Trying to delete geometry and NbRef>0");
+		if(vertices)   delete [] vertices;  vertices=0;
+		if(edges)      delete [] edges;     edges=0;
+		if(quadtree)   delete    quadtree;  quadtree=0;
+		if(curves)     delete [] curves;    curves=0;nbcurves=0;
 		if(subdomains) delete [] subdomains;subdomains=0;
 		Init();
Index: /issm/trunk/src/c/objects/Bamg/Mesh.cpp
===================================================================
--- /issm/trunk/src/c/objects/Bamg/Mesh.cpp	(revision 5207)
+++ /issm/trunk/src/c/objects/Bamg/Mesh.cpp	(revision 5208)
@@ -2324,4 +2324,28 @@
 		//Reset BamgVertex to On
 		SetVertexFieldOn();
+
+	}
+	/*}}}1*/
+	/*FUNCTION Mesh::Echo{{{1*/
+	void Mesh::Echo(void) {
+
+		int i;
+
+		printf("Mesh Echo:\n");
+		printf("   nbv = %i\n",nbv);
+		printf("   nbt = %i\n",nbt);
+		printf("   nbe = %i\n",nbe);
+		printf("   nbq = %i\n",nbq);
+		printf("   index:\n");
+		for (i=0;i<nbt;i++){
+			printf("   %4i: [%4i %4i %4i]\n",i+1,
+						((BamgVertex *)triangles[i](0))?GetId(triangles[i][0])+1:0,
+						((BamgVertex *)triangles[i](1))?GetId(triangles[i][1])+1:0,
+						((BamgVertex *)triangles[i](2))?GetId(triangles[i][2])+1:0);
+		}
+		printf("   coordinates:\n");
+		for (i=0;i<nbv;i++){
+			printf("   %4i: [%g %g]\n",i+1,vertices[i].r.x,vertices[i].r.y);
+		}
 
 	}
@@ -2550,7 +2574,5 @@
 					// see routine MakeGeometricalEdgeToEdge
 					Edge &e = *GeometricalEdgetoEdge[Gh.GetId(eg)];
-					if (&e==NULL){
-						ISSMERROR("&e==NULL");
-					}
+					ISSMASSERT(&e);
 					BamgVertex * v0 =  e(0),*v1 = e(1);
 					Triangle *t  = v0->t;
@@ -2560,14 +2582,10 @@
 					subdomains[i].direction = direction;
 					subdomains[i].edge = &e;
-					if (!t || !direction){
-						ISSMERROR("!t || !direction");
-					}
+					ISSMASSERT(t && direction);
 
 					AdjacentTriangle  ta(t,EdgesVertexTriangle[v0->vint][0]);// previous edges
 
 					while (1) {
-						if ( v0 != ta.EdgeVertex(1) ){
-							ISSMERROR("v0 != ta.EdgeVertex(1)");
-						}
+						ISSMASSERT(v0==ta.EdgeVertex(1));
 						if (ta.EdgeVertex(0) == v1) { // ok we find the edge
 							if (direction>0)  
@@ -4841,5 +4859,5 @@
 
 			//check that num is in [0 nbt[
-			if (num<0 || num>=nbt){ ISSMERROR("num<0 || num>=nbt");}
+			ISSMASSERT(num>=0 && num<nbt);
 
 			//reft of this triangle is the subdomain number
Index: /issm/trunk/src/c/objects/Bamg/Mesh.h
===================================================================
--- /issm/trunk/src/c/objects/Bamg/Mesh.h	(revision 5207)
+++ /issm/trunk/src/c/objects/Bamg/Mesh.h	(revision 5208)
@@ -78,4 +78,5 @@
 			void AddVertex(BamgVertex & s,Triangle * t,Icoor2 *  =0) ;
 			void Insert();
+			void Echo(void);
 			void ForceBoundary();
 			void FindSubDomain(int OutSide=0);
Index: /issm/trunk/src/m/classes/public/bamg.m
===================================================================
--- /issm/trunk/src/m/classes/public/bamg.m	(revision 5207)
+++ /issm/trunk/src/m/classes/public/bamg.m	(revision 5208)
@@ -86,4 +86,5 @@
 		bamg_geometry.Vertices=[bamg_geometry.Vertices; [domain(i).x(1:nods) domain(i).y(1:nods) ones(nods,1)]];
 		bamg_geometry.Edges   =[bamg_geometry.Edges;    [transpose(count+1:count+nods) transpose([count+2:count+nods count+1])  1*ones(nods,1)]];
+		if i>1, bamg_geometry.SubDomains=[2 count+1 1 1];
 
 		%update counter
Index: /issm/trunk/src/m/utils/Model/loadmodel.m
===================================================================
--- /issm/trunk/src/m/utils/Model/loadmodel.m	(revision 5207)
+++ /issm/trunk/src/m/utils/Model/loadmodel.m	(revision 5208)
@@ -19,5 +19,5 @@
 [stat,mess]=fileattrib(path);
 if( stat==0 | mess.UserRead~=1),
-	error(['loadmodel error message: file ' path ' is not readable (permission dinied).']);
+	%error(['loadmodel error message: file ' path ' is not readable (permission denied).']);
 end
 %check number of variables
