Index: /issm/trunk-jpl/src/c/objects/Bamg/Mesh.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Bamg/Mesh.cpp	(revision 11583)
+++ /issm/trunk-jpl/src/c/objects/Bamg/Mesh.cpp	(revision 11584)
@@ -1028,8 +1028,10 @@
 				Triangle &t=triangles[i];
 				if (t.det>0 && !(t.Hidden(0)||t.Hidden(1) || t.Hidden(2) )){
-					index[num*3+0]=GetId(t[0])+1; //back to M indexing
-					index[num*3+1]=GetId(t[1])+1; //back to M indexing
-					index[num*3+2]=GetId(t[2])+1; //back to M indexing
-					num=num+1;
+					if(t.Anisotropy()<2 & t.Length()<1.e+5){
+						index[num*3+0]=GetId(t[0])+1; //back to M indexing
+						index[num*3+1]=GetId(t[1])+1; //back to M indexing
+						index[num*3+2]=GetId(t[2])+1; //back to M indexing
+						num=num+1;
+					}
 				}
 			}
@@ -1038,5 +1040,5 @@
 		/*Assign output pointers*/
 		*pindex=index;
-		*pnels=k;
+		*pnels=num;
 	}
 	/*}}}1*/
Index: /issm/trunk-jpl/src/c/objects/Bamg/Triangle.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Bamg/Triangle.cpp	(revision 11583)
+++ /issm/trunk-jpl/src/c/objects/Bamg/Triangle.cpp	(revision 11584)
@@ -50,4 +50,55 @@
 	AdjacentTriangle Triangle::Adj(int i)  const {
 		return AdjacentTriangle(adj[i],AdjEdgeIndex[i]&3);
+	};/*}}}*/
+	/*FUNCTION Triangle::Anisotropy{{{1*/
+	double Triangle::Anisotropy() const{
+
+		double lmin,lmax;
+
+		/*Get three vertices A,B and C*/
+		R2 A=*this->vertices[0];
+		R2 B=*this->vertices[1];
+		R2 C=*this->vertices[2];
+
+		/*Compute edges*/
+		R2 e1=B-A;
+		R2 e2=C-A;
+		R2 e3=B-C;
+
+		/*Compute edge length*/
+		double l1=Norme2(e1);
+		double l2=Norme2(e2);
+		double l3=Norme2(e3);
+
+		lmin=l1;
+		lmin=min(lmin,l2);
+		lmin=min(lmin,l3);
+		lmax=l1;
+		lmax=max(lmax,l2);
+		lmax=max(lmax,l3);
+
+		return lmax/lmin;
+	};/*}}}*/
+	/*FUNCTION Triangle::Length{{{1*/
+	double Triangle::Length() const{
+
+		double l;
+
+		/*Get three vertices A,B and C*/
+		R2 A=*this->vertices[0];
+		R2 B=*this->vertices[1];
+		R2 C=*this->vertices[2];
+
+		/*Compute edges*/
+		R2 e1=B-A;
+		R2 e2=C-A;
+		R2 e3=B-C;
+
+		/*Compute edge length*/
+		l=Norme2(e1);
+		l=max(l,Norme2(e2));
+		l=max(l,Norme2(e3));
+
+		return l;
 	};/*}}}*/
 	/*FUNCTION Triangle::Echo {{{1*/
Index: /issm/trunk-jpl/src/c/objects/Bamg/Triangle.h
===================================================================
--- /issm/trunk-jpl/src/c/objects/Bamg/Triangle.h	(revision 11583)
+++ /issm/trunk-jpl/src/c/objects/Bamg/Triangle.h	(revision 11584)
@@ -41,4 +41,6 @@
 			//Methods
 			void              Echo();
+			double            Anisotropy() const;
+			double            Length() const;
 			int               swap(short a1,int=0);
 			long              Optim(short a,int =0);
