Index: /issm/trunk/src/c/Bamgx/Bamgx.h
===================================================================
--- /issm/trunk/src/c/Bamgx/Bamgx.h	(revision 2813)
+++ /issm/trunk/src/c/Bamgx/Bamgx.h	(revision 2814)
@@ -12,4 +12,2 @@
 
 #endif  /* _BAMGX_H */
-	
-
Index: /issm/trunk/src/c/Bamgx/Mesh2.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/Mesh2.cpp	(revision 2813)
+++ /issm/trunk/src/c/Bamgx/Mesh2.cpp	(revision 2814)
@@ -239,29 +239,4 @@
 		}
 
-		TriangleAdjacent Triangle::FindBoundaryEdge(int i) const
-		{
-			// turn around  the vertex ns[i] also call  s
-			Triangle   *t = (Triangle *) this , *ttc;
-			int k=0,j = EdgesVertexTriangle[i][0],jc;
-			int exterieur  = !link  ;
-
-			do 
-			{
-				int exterieurp = exterieur;
-				k++; 
-				ttc =  t->at[j];
-				exterieur = !ttc->link;
-				if (exterieur+exterieurp == 1) 
-					return TriangleAdjacent(t,j);
-				jc = NextEdge[t->aa[j]&3];
-				t = ttc;
-				j = NextEdge[jc];
-				assert(k<2000);
-			} while ( (this!= t)); 
-			return TriangleAdjacent(0,0);
-
-		}
-
-
 		TriangleAdjacent CloseBoundaryEdgeV2(I2 C,Triangle *t, double &a,double &b) 
 		{ 
@@ -431,5 +406,4 @@
 				const R2 &A,const R2  &B,int nbegin)
 		{ //  SplitEdge
-			//  if(SHOW)  cout << " splitedge " << A << B << " " <<  nbegin << endl;
 			Triangle *tbegin, *t;
 
@@ -454,6 +428,4 @@
 				init();
 				t=tbegin = Bh.FindTriangleContening(a,deta);
-				//    if(SHOW) cout <<t << " " << Real8(deta[0])/t->det<< " " << Real8(deta[1])/t->det
-				//		  << " " << Real8(deta[2])/t->det << endl;
 				if( t->det>=0)
 					ilast=NewItem(t,Real8(deta[0])/t->det,Real8(deta[1])/t->det,Real8(deta[2])/t->det);
@@ -489,9 +461,4 @@
 					deti = bamg::det(a,b,vi);
 					detj = bamg::det(a,b,vj);
-					//  if(SHOW) {  penthickness(3);
-					// 	Move(vi);Line(vj);CurrentTh->inquire();penthickness(1);
-					//         cout << Bh.Number(tbegin) << " " << Bh.Number(t) << " i= " << i <<" j= " <<  j << " k=" << k 
-					//       	   << " deti= " << deti << " detj= " << detj 
-					// 	     << " v = " << Bh.Number((*t)[i]) << (*t)[i].r <<  " " << Bh.Number((*t)[j]) << (*t)[j].r  << endl;}
 					if (deti>0) // go to  i direction on gamma
 						ocut = PreviousEdge[ocut];      
@@ -537,5 +504,4 @@
 					ba[i] = -deti/dij;
 					ba[k] = 0;
-					// 	if(SHOW) cout << i << " " << j << " " << k << " " << ba[i] << " " << ba[j] << endl;
 					ilast=NewItem(t,ba[0],ba[1],ba[2]); }
 			}  //  outside departure
Index: /issm/trunk/src/c/Bamgx/Mesh2.h
===================================================================
--- /issm/trunk/src/c/Bamgx/Mesh2.h	(revision 2813)
+++ /issm/trunk/src/c/Bamgx/Mesh2.h	(revision 2814)
@@ -50,15 +50,9 @@
 #endif
 
-extern int SHOW;
 #include "meshtype.h"
-
 #include "error.hpp"
-
-
 #include "R2.h"
 
 namespace bamg {
-
-
 
 const  double Pi =  3.14159265358979323846264338328;
@@ -66,5 +60,4 @@
 
 extern int hinterpole;
-
 
 typedef P2<Icoor1,Icoor2> I2;
@@ -82,5 +75,4 @@
 typedef P2xP2<Int2,Int4> I2xI2;
 typedef P2<Real4,Real8> R2xR2;
-
 }
 
@@ -98,5 +90,4 @@
   register  Icoor2 cax = c.x - a.x ,cay = c.y - a.y; 
   return  bax*cay - bay*cax;}
-
 
 
@@ -835,5 +826,4 @@
   void BoundAnisotropy(Real8 anisomax,double hminaniso= 1e-100) ;
   void MaxSubDivision(Real8 maxsubdiv);
-  void WriteMetric(std::ostream &,int iso) ;
   Edge** MakeGeometricalEdgeToEdge();
   void  SetVertexFieldOn();  
@@ -873,4 +863,5 @@
 
   void ReadMetric(BamgOpts* bamgopts,const Real8 hmin,const Real8 hmax,const Real8 coef);
+  void WriteMetric(BamgOpts* bamgopts);
   void IntersectConsMetric(const double * s,const Int4 nbsol,const int * typsols,
 			   const  Real8 hmin,const Real8 hmax, const Real8 coef,
Index: /issm/trunk/src/c/Bamgx/Triangle.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/Triangle.cpp	(revision 2814)
+++ /issm/trunk/src/c/Bamgx/Triangle.cpp	(revision 2814)
@@ -0,0 +1,41 @@
+#include "../shared/shared.h"
+#include "../include/macros.h"
+#include "../toolkits/toolkits.h"
+
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+#include "Mesh2.h"
+#include "QuadTree.h"
+#include "SetOfE4.h"
+
+namespace bamg {
+
+	/*Others*/
+	/*FUNCTION Triangle::FindBoundaryEdge{{{1*/
+	TriangleAdjacent Triangle::FindBoundaryEdge(int i) const
+	  {
+		// turn around  the vertex ns[i] also call  s
+		Triangle   *t = (Triangle *) this , *ttc;
+		int k=0,j = EdgesVertexTriangle[i][0],jc;
+		int exterieur  = !link  ;
+
+		do 
+		  {
+			int exterieurp = exterieur;
+			k++; 
+			ttc =  t->at[j];
+			exterieur = !ttc->link;
+			if (exterieur+exterieurp == 1) 
+			 return TriangleAdjacent(t,j);
+			jc = NextEdge[t->aa[j]&3];
+			t = ttc;
+			j = NextEdge[jc];
+			assert(k<2000);
+		  } while ( (this!= t)); 
+		return TriangleAdjacent(0,0);
+	  }
+	/*}}}1*/
+
+}
Index: /issm/trunk/src/c/Bamgx/Triangles.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/Triangles.cpp	(revision 2813)
+++ /issm/trunk/src/c/Bamgx/Triangles.cpp	(revision 2814)
@@ -697,23 +697,23 @@
 	}
 	/*}}}1*/
-	/*FUNCTION Triangles::WriteMetric TO UPDATE{{{1*/
-	void Triangles::WriteMetric(ostream & f,int iso) {
-		if (iso)
-		  {
-			f <<  nbv <<" " << 1 << endl ;
-			for (Int4 iv=0;iv<nbv;iv++)
-			  {
-				MatVVP2x2 V=vertices[iv].m;
-				f <<  V.hmin()  << endl;
-			  }
-		  }
-		else
-		  {
-			f <<  nbv <<" " << 3 << endl ;
-			for (Int4 iv=0;iv<nbv;iv++)
-			 f <<  vertices[iv].m.a11 << " " 
-				<<  vertices[iv].m.a21 << " " 
-				<<  vertices[iv].m.a22 << endl;
-		  }
+	/*FUNCTION Triangles::WriteMetric{{{1*/
+	void Triangles::WriteMetric(BamgOpts* bamgopts) {
+		int i;
+		xfree((void**)&bamgopts->metric);
+		if (bamgopts->iso){
+			bamgopts->metric=(double*)xmalloc(1*nbv*sizeof(double));
+			for (i=0;i<nbv;i++){
+				MatVVP2x2 V=vertices[i].m;
+				bamgopts->metric[i]=V.hmin();
+			}
+		}
+		else {
+			bamgopts->metric=(double*)xmalloc(3*nbv*sizeof(double));
+			for (i=0;i<nbv;i++){
+				bamgopts->metric[i*3+0]=vertices[i].m.a11;
+				bamgopts->metric[i*3+1]=vertices[i].m.a21;
+				bamgopts->metric[i*3+2]=vertices[i].m.a22;
+			}
+		}
 	}
 	/*}}}1*/
Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 2813)
+++ /issm/trunk/src/c/Makefile.am	(revision 2814)
@@ -325,4 +325,5 @@
 					./Bamgx/meshtype.h \
 					./Bamgx/Triangles.cpp	\
+					./Bamgx/Triangle.cpp	\
 					./Bamgx/Geometry.cpp	\
 					./Bamgx/Metric.cpp \
@@ -664,4 +665,5 @@
 					./Bamgx/meshtype.h \
 					./Bamgx/Triangles.cpp	\
+					./Bamgx/Triangle.cpp	\
 					./Bamgx/Geometry.cpp	\
 					./Bamgx/Metric.cpp \
