Index: /issm/trunk/src/m/classes/@bamgmesh/bamgmesh.m
===================================================================
--- /issm/trunk/src/m/classes/@bamgmesh/bamgmesh.m	(revision 3312)
+++ /issm/trunk/src/m/classes/@bamgmesh/bamgmesh.m	(revision 3313)
@@ -12,5 +12,5 @@
 	bm.Triangles=[];
 	bm.Quadrilaterals=[];
-	bm.AllEdges=[];
+	bm.ElementEdges=[];
 	bm.Segments=[];
 	bm.VerticesOnGeometricVertex=[];
Index: /issm/trunk/src/mex/Bamg/Bamg.cpp
===================================================================
--- /issm/trunk/src/mex/Bamg/Bamg.cpp	(revision 3312)
+++ /issm/trunk/src/mex/Bamg/Bamg.cpp	(revision 3313)
@@ -26,26 +26,26 @@
 	/*create bamg geometry input*/
 	BamgGeomInit(&bamggeom_in);
-	FetchData(&bamggeom_in.Vertices,&bamggeom_in.NumVertices,NULL,mxGetField(BAMGGEOMETRY,0,"Vertices"));
-	FetchData(&bamggeom_in.Edges,&bamggeom_in.NumEdges,NULL,mxGetField(BAMGGEOMETRY,0,"Edges"));
-	FetchData(&bamggeom_in.Corners,&bamggeom_in.NumCorners,NULL,mxGetField(BAMGGEOMETRY,0,"Corners"));
-	FetchData(&bamggeom_in.RequiredVertices,&bamggeom_in.NumRequiredVertices,NULL,mxGetField(BAMGGEOMETRY,0,"RequiredVertices"));
-	FetchData(&bamggeom_in.RequiredEdges,&bamggeom_in.NumRequiredEdges,NULL,mxGetField(BAMGGEOMETRY,0,"RequiredEdges"));
+	FetchData(&bamggeom_in.Vertices,        &bamggeom_in.VerticesSize[0],        &bamggeom_in.VerticesSize[1],        mxGetField(BAMGGEOMETRY,0,"Vertices"));
+	FetchData(&bamggeom_in.Edges,           &bamggeom_in.EdgesSize[0],           &bamggeom_in.EdgesSize[1],           mxGetField(BAMGGEOMETRY,0,"Edges"));
+	FetchData(&bamggeom_in.Corners,         &bamggeom_in.CornersSize[0],         &bamggeom_in.CornersSize[1],         mxGetField(BAMGGEOMETRY,0,"Corners"));
+	FetchData(&bamggeom_in.RequiredVertices,&bamggeom_in.RequiredVerticesSize[0],&bamggeom_in.RequiredVerticesSize[1],mxGetField(BAMGGEOMETRY,0,"RequiredVertices"));
+	FetchData(&bamggeom_in.RequiredEdges,   &bamggeom_in.RequiredEdgesSize[0],   &bamggeom_in.RequiredEdgesSize[1],   mxGetField(BAMGGEOMETRY,0,"RequiredEdges"));
+	FetchData(&bamggeom_in.CrackedEdges,    &bamggeom_in.CrackedEdgesSize[0],    &bamggeom_in.CrackedEdgesSize[1],    mxGetField(BAMGGEOMETRY,0,"CrackedEdges"));
+	FetchData(&bamggeom_in.SubDomains,      &bamggeom_in.SubDomainsSize[0],      &bamggeom_in.SubDomainsSize[1],      mxGetField(BAMGGEOMETRY,0,"SubDomains"));
 	FetchData(&bamggeom_in.hVertices,&lines,&cols,mxGetField(BAMGGEOMETRY,0,"hVertices"));
-	FetchData(&bamggeom_in.CrackedEdges,&bamggeom_in.NumCrackedEdges,NULL,mxGetField(BAMGGEOMETRY,0,"CrackedEdges"));
-	FetchData(&bamggeom_in.SubDomains,&bamggeom_in.NumSubDomains,NULL,mxGetField(BAMGGEOMETRY,0,"SubDomains"));
-	if (bamggeom_in.hVertices && (cols!=1 || lines!=bamggeom_in.NumVertices)){throw ErrorException(__FUNCT__,exprintf("the size of 'hVertices' should be [%i %i]",bamggeom_in.NumVertices,1));}
+	if (bamggeom_in.hVertices && (cols!=1 || lines!=bamggeom_in.VerticesSize[0])){throw ErrorException(__FUNCT__,exprintf("the size of 'hVertices' should be [%i %i]",bamggeom_in.VerticesSize[0],1));}
 
 	/*create bamg mesh input*/
 	BamgMeshInit(&bamgmesh_in);
-	FetchData(&bamgmesh_in.Vertices,&bamgmesh_in.NumVertices,NULL,mxGetField(BAMGMESH,0,"Vertices"));
-	FetchData(&bamgmesh_in.Triangles,&bamgmesh_in.NumTriangles,NULL,mxGetField(BAMGMESH,0,"Triangles"));
+	FetchData(&bamgmesh_in.Triangles,&bamgmesh_in.TrianglesSize[0],&bamgmesh_in.TrianglesSize[1],mxGetField(BAMGMESH,0,"Triangles"));
+	FetchData(&bamgmesh_in.Vertices, &bamgmesh_in.VerticesSize[0], &bamgmesh_in.VerticesSize[1], mxGetField(BAMGMESH,0,"Vertices"));
+	FetchData(&bamgmesh_in.Edges,    &bamgmesh_in.EdgesSize[0],    &bamgmesh_in.EdgesSize[1],    mxGetField(BAMGMESH,0,"Edges"));
+	FetchData(&bamgmesh_in.Segments, &bamgmesh_in.SegmentsSize[0], &bamgmesh_in.SegmentsSize[1], mxGetField(BAMGMESH,0,"Segments"));
+	FetchData(&bamgmesh_in.CrackedEdges,&bamgmesh_in.CrackedEdgesSize[0],&bamgmesh_in.CrackedEdgesSize[1],mxGetField(BAMGMESH,0,"CrackedEdges"));
+	FetchData(&bamgmesh_in.EdgesOnGeometricEdge,&bamgmesh_in.EdgesOnGeometricEdgeSize[0],&bamgmesh_in.EdgesOnGeometricEdgeSize[1],mxGetField(BAMGMESH,0,"EdgesOnGeometricEdge"));
+	FetchData(&bamgmesh_in.VerticesOnGeometricEdge,&bamgmesh_in.VerticesOnGeometricEdgeSize[0],&bamgmesh_in.VerticesOnGeometricEdgeSize[1],mxGetField(BAMGMESH,0,"VerticesOnGeometricEdge"));
+	FetchData(&bamgmesh_in.VerticesOnGeometricVertex,&bamgmesh_in.VerticesOnGeometricVertexSize[0],&bamgmesh_in.VerticesOnGeometricVertexSize[1],mxGetField(BAMGMESH,0,"VerticesOnGeometricVertex"));
 	FetchData(&bamgmesh_in.hVertices,&lines,&cols,mxGetField(BAMGMESH,0,"hVertices"));
-	FetchData(&bamgmesh_in.Segments,&bamgmesh_in.NumSegments,NULL,mxGetField(BAMGMESH,0,"Segments"));
-	FetchData(&bamgmesh_in.CrackedEdges,&bamgmesh_in.NumCrackedEdges,NULL,mxGetField(BAMGMESH,0,"CrackedEdges"));
-	FetchData(&bamgmesh_in.Edges,&bamgmesh_in.NumEdges,NULL,mxGetField(BAMGMESH,0,"Edges"));
-	FetchData(&bamgmesh_in.EdgesOnGeometricEdge,&bamgmesh_in.NumEdgesOnGeometricEdge,NULL,mxGetField(BAMGMESH,0,"EdgesOnGeometricEdge"));
-	FetchData(&bamgmesh_in.VerticesOnGeometricEdge,&bamgmesh_in.NumVerticesOnGeometricEdge,NULL,mxGetField(BAMGMESH,0,"VerticesOnGeometricEdge"));
-	FetchData(&bamgmesh_in.VerticesOnGeometricVertex,&bamgmesh_in.NumVerticesOnGeometricVertex,NULL,mxGetField(BAMGMESH,0,"VerticesOnGeometricVertex"));
-	if (bamgmesh_in.hVertices && (cols!=1 || lines!=bamgmesh_in.NumVertices)){throw ErrorException(__FUNCT__,exprintf("the size of 'hVertices' should be [%i %i]",bamgmesh_in.NumVertices,1));}
+	if (bamgmesh_in.hVertices && (cols!=1 || lines!=bamgmesh_in.VerticesSize[0])){throw ErrorException(__FUNCT__,exprintf("the size of 'hVertices' should be [%i %i]",bamgmesh_in.VerticesSize[0],1));}
 
 	/*create bamg options input*/
@@ -72,11 +72,11 @@
 	FetchData(&bamgopts.MaximalAngleOfCorner,mxGetField(BAMGOPTIONS,0,"MaximalAngleOfCorner"));
 	FetchData(&bamgopts.hminVertices,&lines,&cols,mxGetField(BAMGOPTIONS,0,"hminVertices"));
-	if (bamgopts.hminVertices && (cols!=1 || lines!=bamgmesh_in.NumVertices)){throw ErrorException(__FUNCT__,exprintf("the size of 'hminVertices' should be [%i %i]",bamgmesh_in.NumVertices,1));}
+	if (bamgopts.hminVertices && (cols!=1 || lines!=bamgmesh_in.VerticesSize[0])){throw ErrorException(__FUNCT__,exprintf("the size of 'hminVertices' should be [%i %i]",bamgmesh_in.VerticesSize[0],1));}
 	FetchData(&bamgopts.hmaxVertices,&lines,&cols,mxGetField(BAMGOPTIONS,0,"hmaxVertices"));
-	if (bamgopts.hmaxVertices && (cols!=1 || lines!=bamgmesh_in.NumVertices)){throw ErrorException(__FUNCT__,exprintf("the size of 'hmaxVertices' should be [%i %i]",bamgmesh_in.NumVertices,1));}
+	if (bamgopts.hmaxVertices && (cols!=1 || lines!=bamgmesh_in.VerticesSize[0])){throw ErrorException(__FUNCT__,exprintf("the size of 'hmaxVertices' should be [%i %i]",bamgmesh_in.VerticesSize[0],1));}
 	FetchData(&bamgopts.metric,&lines,&cols,mxGetField(BAMGOPTIONS,0,"metric"));
-	if (bamgopts.metric && (cols!=3 || lines!=bamgmesh_in.NumVertices)){throw ErrorException(__FUNCT__,exprintf("the size of 'metric' should be [%i %i]",bamgmesh_in.NumVertices,3));}
+	if (bamgopts.metric && (cols!=3 || lines!=bamgmesh_in.VerticesSize[0])){throw ErrorException(__FUNCT__,exprintf("the size of 'metric' should be [%i %i]",bamgmesh_in.VerticesSize[0],3));}
 	FetchData(&bamgopts.field,&lines,&bamgopts.numfields,mxGetField(BAMGOPTIONS,0,"field"));
-	if (bamgopts.field && lines!=bamgmesh_in.NumVertices){throw ErrorException(__FUNCT__,exprintf("the size of 'field' should be [%i %i]",bamgmesh_in.NumVertices,bamgopts.numfields));}
+	if (bamgopts.field && lines!=bamgmesh_in.VerticesSize[0]){throw ErrorException(__FUNCT__,exprintf("the size of 'field' should be [%i %i]",bamgmesh_in.VerticesSize[0],bamgopts.numfields));}
 	FetchData(&bamgopts.err,NULL,&cols,mxGetField(BAMGOPTIONS,0,"err"));
 	if (bamgopts.numfields!=0 && cols!=bamgopts.numfields){throw ErrorException(__FUNCT__,exprintf("the size of 'err' should be the same as 'field'"));}
